Changeset b18285ae5a92…
Parent 3f6b65783816…
by
Changes to 2 files · Browse files at b18285ae5a92 Showing diff from parent 3f6b65783816 Diff from another changeset...
|
@@ -8,6 +8,7 @@ import cStringIO
import os
+from mercurial import hg, util, patch
from hgext import record
from tortoisehg.util import hglib
@@ -28,6 +29,7 @@ showMessage = pyqtSignal(QString)
chunksSelected = pyqtSignal(bool)
fileSelected = pyqtSignal(bool)
+ fileModified = pyqtSignal()
def __init__(self, repo, parent):
QWidget.__init__(self, parent)
@@ -94,7 +96,44 @@ wctxactions.edit(self, self.repo.ui, self.repo, [path])
def deleteSelectedChunks(self):
- pass
+ 'delete currently selected chunks'
+ repo = self.repo
+ chunks = self.diffbrowse.curchunks
+ dchunks = [c for c in chunks[1:] if c.selected]
+ if not dchunks:
+ self.showMessage.emit(_('No deletable chunks'))
+ return
+ kchunks = [c for c in chunks[1:] if not c.selected]
+ revertall = False
+ if not kchunks and qtlib.QuestionMsgBox(_('No chunks remain'),
+ _('Remove all file changes?')):
+ revertall = True
+ ctx = self.filelistmodel._ctx
+ if isinstance(ctx, patchctx):
+ raise 'unimplemented'
+ else:
+ path = repo.wjoin(self.currentFile)
+ if not os.path.exists(path):
+ self.showMessage.emit(_('file hsa been deleted, refresh'))
+ return
+ if self.mtime != os.path.getmtime(path):
+ self.showMessage.emit(_('file hsa been modified, refresh'))
+ return
+ if revertall:
+ hg.revert(repo, repo.dirstate.parents()[0],
+ lambda a: a == self.currentFile)
+ else:
+ repo.wopener(self.currentFile, 'wb').write(
+ self.diffbrowse.origcontents)
+ fp = cStringIO.StringIO()
+ chunks[0].write(fp)
+ for c in kchunks:
+ c.write(fp)
+ fp.seek(0)
+ pfiles = {}
+ patch.internalpatch(fp, repo.ui, 1, repo.root, files=pfiles,
+ eolmode=None)
+ self.fileModified.emit()
def addFile(self, wfile, chunks):
pass
@@ -118,6 +157,10 @@ self.fileSelected.emit(False)
def setContext(self, ctx):
+ if self.filelist.model() is not None:
+ f = self.filelist.currentFile()
+ else:
+ f = None
self.fileSelected.emit(False)
self.filelistmodel = filelistmodel.HgFileListModel(self.repo, self)
self.filelist.setModel(self.filelistmodel)
@@ -125,6 +168,8 @@ self.filelist.clearDisplay.connect(self.diffbrowse.clearDisplay)
self.diffbrowse.setContext(ctx)
self.filelistmodel.setContext(ctx)
+ if f and f in ctx:
+ self.filelist.selectFile(f)
def refresh(self):
f = self.filelist.currentFile()
@@ -331,6 +376,7 @@ else:
self.sci.markerAdd(start+i, self.vertical)
start += len(chunk.lines)
+ self.origcontents = fd.olddata
self.curchunks = chunks
self.countselected = 0
self.updateSummary()
|
@@ -100,6 +100,7 @@ self.lefttbar = QToolBar(_('Left Toolbar'), objectName='lefttbar')
self.addToolBar(self.lefttbar)
self.deletea = a = QAction(_('Deleted selected chunks'), self)
+ self.deletea.triggered.connect(self.browsea.deleteSelectedChunks)
a.setIcon(qtlib.geticon('delfilesleft'))
self.lefttbar.addAction(self.deletea)
self.allright = a = QAction(_('Move all files right'), self)
@@ -130,6 +131,7 @@ a.setIcon(qtlib.geticon('media-seek-backward'))
self.righttbar.addAction(self.allleft)
self.deleteb = a = QAction(_('Deleted selected chunks'), self)
+ self.deleteb.triggered.connect(self.browseb.deleteSelectedChunks)
a.setIcon(qtlib.geticon('delfilesright'))
self.righttbar.addAction(self.deleteb)
@@ -140,10 +142,12 @@ self.browsea.chunksSelected.connect(self.deletea.setEnabled)
self.browsea.fileSelected.connect(self.fileright.setEnabled)
self.browsea.fileSelected.connect(self.editfilea.setEnabled)
+ self.browsea.fileModified.connect(self.refreshCombos)
self.browseb.chunksSelected.connect(self.chunksleft.setEnabled)
self.browseb.chunksSelected.connect(self.deleteb.setEnabled)
self.browseb.fileSelected.connect(self.fileleft.setEnabled)
self.browseb.fileSelected.connect(self.editfileb.setEnabled)
+ self.browseb.fileModified.connect(self.refreshCombos)
self.statusbar = cmdui.ThgStatusBar(self)
self.setStatusBar(self.statusbar)
|
Loading...