Changeset faf83e25708a…
Parent 8db65cfc4e1f…
by
Changes to 3 files · Browse files at faf83e25708a Showing diff from parent 8db65cfc4e1f Diff from another changeset...
@@ -184,21 +184,11 @@
def accept(self):
self._writesettings()
- try:
- self.repo.incrementBusyCount()
- lines = []
- for i in xrange(self.alw.count()-1, -1, -1):
- item = self.alw.item(i)
- lines.append(item.patchname)
- for i in xrange(self.ulw.count()-1, -1, -1):
- item = self.ulw.item(i)
- lines.append(item.patchname)
- if lines:
- fp = self.repo.mq.opener('series', 'wb')
- fp.write('\n'.join(lines))
- fp.close()
- finally:
- self.repo.decrementBusyCount()
+ applied = [self.alw.item(x).patchname
+ for x in xrange(self.alw.count())]
+ unapplied = [self.ulw.item(x).patchname
+ for x in xrange(self.ulw.count())]
+ writeSeries(self.repo, applied, unapplied)
QDialog.accept(self)
def reject(self):
@@ -217,6 +207,19 @@ s = QSettings()
s.setValue('qreorder/geom', self.saveGeometry())
+def writeSeries(repo, applied, unapplied):
+ try:
+ repo.incrementBusyCount()
+ # The series file stores the oldest unapplied patch at the bottom, and
+ # the first applied patch at the top
+ lines = reversed(unapplied + applied)
+ if lines:
+ fp = repo.mq.opener('series', 'wb')
+ fp.write('\n'.join(lines))
+ fp.close()
+ finally:
+ repo.decrementBusyCount()
+
def run(ui, *pats, **opts):
repo = thgrepo.repository(None, paths.find_root())
if hasattr(repo, 'mq'):
|
@@ -21,6 +21,7 @@ from tortoisehg.hgqt.graph import Graph
from tortoisehg.hgqt.graph import revision_grapher
from tortoisehg.hgqt import qtlib
+from tortoisehg.hgqt.qreorder import writeSeries
from tortoisehg.hgqt.i18n import _
@@ -29,6 +30,8 @@
nullvariant = QVariant()
+mqpatchmimetype = 'application/thg-mqunappliedpatch'
+
# TODO: Remove these two when we adopt GTK author color scheme
COLORS = [ "blue", "darkgreen", "red", "green", "darkblue", "purple",
"cyan", Qt.darkYellow, "magenta", "darkred", "darkmagenta",
@@ -459,17 +462,56 @@ def flags(self, index):
if not index.isValid():
return Qt.ItemFlags(0)
- if not self.revset:
- return Qt.ItemIsSelectable | Qt.ItemIsEnabled
row = index.row()
self.ensureBuilt(row=row)
gnode = self.graph[row]
ctx = self.repo.changectx(gnode.rev)
+ dragflags = Qt.ItemFlags(0)
+ if ctx.thgmqunappliedpatch():
+ dragflags = Qt.ItemIsDragEnabled | Qt.ItemIsDropEnabled
+ if not self.revset:
+ return Qt.ItemIsSelectable | Qt.ItemIsEnabled | dragflags
if ctx.rev() not in self.revset:
return Qt.ItemFlags(0)
- return Qt.ItemIsSelectable | Qt.ItemIsEnabled
+ return Qt.ItemIsSelectable | Qt.ItemIsEnabled | dragflags
+
+ def mimeTypes(self):
+ return QStringList([mqpatchmimetype])
+
+ def supportedDropActions(self):
+ return Qt.MoveAction
+
+ def mimeData(self, indexes):
+ data = set()
+ for index in indexes:
+ row = str(index.row())
+ if row not in data:
+ data.add(row)
+ qmd = QMimeData()
+ bytearray = QByteArray(','.join(sorted(data, reverse=True)))
+ qmd.setData(mqpatchmimetype, bytearray)
+ return qmd
+
+ def dropMimeData(self, data, action, row, column, parent):
+ if mqpatchmimetype not in data.formats():
+ return False
+ dragrows = [int(r) for r in str(data.data(mqpatchmimetype)).split(',')]
+ destrow = parent.row() - len([r for r in dragrows if r < parent.row()])
+ if destrow < 0:
+ return False
+ unapplied = self.repo.thgmqunappliedpatches[::-1]
+ applied = [p.name for p in self.repo.mq.applied[::-1]]
+ if max(dragrows) >= len(unapplied):
+ return False
+ dragpatches = [unapplied[d] for d in dragrows]
+ for i in dragrows:
+ unapplied.pop(i)
+ for p in dragpatches:
+ unapplied.insert(destrow, p)
+ writeSeries(self.repo, applied, unapplied)
+ return True
def headerData(self, section, orientation, role):
if orientation == Qt.Horizontal:
|
@@ -61,6 +61,12 @@ self.standardDelegate = self.itemDelegate()
self.htmlDelegate = htmldelegate.HTMLDelegate(self)
+ self.setAcceptDrops(True)
+ self.setDefaultDropAction(Qt.MoveAction)
+ self.setDragEnabled(True)
+ self.setDropIndicatorShown(True)
+ self.setDragDropMode(QAbstractItemView.InternalMove)
+
self.setSelectionMode(QAbstractItemView.ExtendedSelection)
self.setSelectionBehavior(QAbstractItemView.SelectRows)
|
Loading...