Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 2.0.4, 2.0.5, and 2.1

stable manifestmodel: add QCompleter-variant which uses ManifestModel as a data source

QCompleter uses model data of Qt.EditRole.

Also set the default revision of ManifestModel to working-copy.

Changeset 55a9702a7126

Parent d4fc350ab1d2

by Yuya Nishihara

Changes to one file · Browse files at 55a9702a7126 Showing diff from parent d4fc350ab1d2 Diff from another changeset...

 
26
27
28
29
 
30
31
32
 
45
46
47
48
 
49
50
51
 
288
289
290
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
27
28
 
29
30
31
32
 
45
46
47
 
48
49
50
51
 
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
@@ -26,7 +26,7 @@
  StatusRole = Qt.UserRole + 1   """Role for file change status"""   - def __init__(self, repo, rev, statusfilter='MAC', parent=None): + def __init__(self, repo, rev=None, statusfilter='MAC', parent=None):   QAbstractItemModel.__init__(self, parent)     self._repo = repo @@ -45,7 +45,7 @@
  return self.fileStatus(index)     e = index.internalPointer() - if role == Qt.DisplayRole: + if role in (Qt.DisplayRole, Qt.EditRole):   return e.name     def filePath(self, index): @@ -288,3 +288,27 @@
  self._nameindex.sort(   key=lambda s: '%s%s' % (self[s] and 'D' or 'F', s),   reverse=reverse) + +class ManifestCompleter(QCompleter): + """QCompleter for ManifestModel""" + + def splitPath(self, path): + """ + >>> c = ManifestCompleter() + >>> c.splitPath(QString('foo/bar')) + [u'foo', u'bar'] + + trailing slash appends extra '', so that QCompleter can descend to + next level: + >>> c.splitPath(QString('foo/')) + [u'foo', u''] + """ + return unicode(path).split('/') + + def pathFromIndex(self, index): + if not index.isValid(): + return '' + m = self.model() + if not m: + return '' + return m.filePath(index)