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

HgFileListView, ChunksWidget, ShelveDialog: allow multiple file selection and operations

Changeset 7e256fd179a1

Parent e9a74148270f

by patrice.lacouture@gmail.com

Changes to 4 files · Browse files at 7e256fd179a1 Showing diff from parent e9a74148270f Diff from another changeset...

 
38
39
40
41
 
42
43
44
 
45
46
47
 
55
56
57
58
 
59
60
61
 
215
216
217
 
 
 
218
219
220
 
38
39
40
 
41
42
43
44
45
46
47
48
 
56
57
58
 
59
60
61
62
 
216
217
218
219
220
221
222
223
224
@@ -38,10 +38,11 @@
    contextmenu = None   - def __init__(self, repo, parent): + def __init__(self, repo, parent, multiselectable):   QWidget.__init__(self, parent)     self.repo = repo + self.multiselectable = multiselectable   self.currentFile = None     layout = QVBoxLayout(self) @@ -55,7 +56,7 @@
  self.splitter.setChildrenCollapsible(False)   self.layout().addWidget(self.splitter)   - self.filelist = filelistview.HgFileListView(repo, self) + self.filelist = filelistview.HgFileListView(repo, self, multiselectable)   self.filelistmodel = filelistmodel.HgFileListModel(self)   self.filelist.setModel(self.filelistmodel)   self.filelist.setContextMenuPolicy(Qt.CustomContextMenu) @@ -215,6 +216,9 @@
  return self.currentFile, [chunks[0]] + dchunks   else:   return self.currentFile, [] + + def getSelectedFiles(self): + return self.filelist.getSelectedFiles()     def deleteSelectedChunks(self):   'delete currently selected chunks'
 
32
33
34
35
 
36
37
 
38
39
40
41
42
 
 
 
 
43
44
45
 
59
60
61
62
 
 
 
 
 
 
 
63
64
65
 
32
33
34
 
35
36
37
38
39
40
41
42
 
43
44
45
46
47
48
49
 
63
64
65
 
66
67
68
69
70
71
72
73
74
75
@@ -32,14 +32,18 @@
  linkActivated = pyqtSignal(QString)   clearDisplay = pyqtSignal()   - def __init__(self, repo, parent): + def __init__(self, repo, parent, multiselectable):   QTableView.__init__(self, parent)   self.repo = repo + self.multiselectable = multiselectable   self.setShowGrid(False)   self.horizontalHeader().hide()   self.verticalHeader().hide()   self.verticalHeader().setDefaultSectionSize(20) - self.setSelectionMode(QAbstractItemView.SingleSelection) + if multiselectable: + self.setSelectionMode(QAbstractItemView.ExtendedSelection) + else: + self.setSelectionMode(QAbstractItemView.SingleSelection)   self.setSelectionBehavior(QAbstractItemView.SelectRows)   self.setTextElideMode(Qt.ElideLeft)   @@ -59,7 +63,13 @@
  def currentFile(self):   index = self.currentIndex()   return self.model().fileFromIndex(index) - + + def getSelectedFiles(self): + model = self.model() + sf = [model.fileFromIndex(eachIndex) + for eachIndex in self.selectedRows()] + return sf +   def layoutChanged(self):   'file model has new contents'   index = self.currentIndex()
 
92
93
94
95
 
96
97
98
 
92
93
94
 
95
96
97
98
@@ -92,7 +92,7 @@
    self.filelisttbar = QToolBar(_('File List Toolbar'))   self.filelisttbar.setIconSize(QSize(16,16)) - self.filelist = HgFileListView(self.repo, self) + self.filelist = HgFileListView(self.repo, self, False)   self.filelist.linkActivated.connect(self.linkActivated)   self.filelist.setContextMenuPolicy(Qt.CustomContextMenu)   self.filelist.customContextMenuRequested.connect(self.menuRequest)
 
72
73
74
75
 
76
77
78
 
101
102
103
104
 
105
106
107
 
194
195
196
197
198
199
200
 
 
 
 
201
202
203
204
205
206
207
 
 
 
 
208
209
210
 
72
73
74
 
75
76
77
78
 
101
102
103
 
104
105
106
107
 
194
195
196
 
 
 
 
197
198
199
200
201
202
203
 
 
 
 
204
205
206
207
208
209
210
@@ -72,7 +72,7 @@
  ahbox.addWidget(self.clearShelfButtonA)   ahbox.addWidget(self.delShelfButtonA)   - self.browsea = chunks.ChunksWidget(repo, self) + self.browsea = chunks.ChunksWidget(repo, self, True)   self.browsea.splitter.splitterMoved.connect(self.linkSplitters)   self.browsea.linkActivated.connect(self.linkActivated)   self.browsea.showMessage.connect(self.showMessage) @@ -101,7 +101,7 @@
  bhbox.addWidget(self.clearShelfButtonB)   bhbox.addWidget(self.delShelfButtonB)   - self.browseb = chunks.ChunksWidget(repo, self) + self.browseb = chunks.ChunksWidget(repo, self, True)   self.browseb.splitter.splitterMoved.connect(self.linkSplitters)   self.browseb.linkActivated.connect(self.linkActivated)   self.browseb.showMessage.connect(self.showMessage) @@ -194,17 +194,17 @@
  def moveFileRight(self):   if self.combob.currentIndex() == -1:   self.newShelf(False) - file, _ = self.browsea.getSelectedFileAndChunks() - chunks = self.browsea.getChunksForFile(file) - if self.browseb.mergeChunks(file, chunks): - self.browsea.removeFile(file) + for file in self.browsea.getSelectedFiles(): + chunks = self.browsea.getChunksForFile(file) + if self.browseb.mergeChunks(file, chunks): + self.browsea.removeFile(file)     @pyqtSlot()   def moveFileLeft(self): - file, _ = self.browseb.getSelectedFileAndChunks() - chunks = self.browseb.getChunksForFile(file) - if self.browsea.mergeChunks(file, chunks): - self.browseb.removeFile(file) + for file in self.browseb.getSelectedFiles(): + chunks = self.browseb.getChunksForFile(file) + if self.browsea.mergeChunks(file, chunks): + self.browseb.removeFile(file)     @pyqtSlot()   def moveFilesRight(self):