Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 1.9.2, 1.9.3, and 2.0

shelve: convert ShelveDialog to an actual QDialog

cons:
* no more floating toolbars
* menus (if we add any) will have to be done by hand
pros:
* the shelve tool can safely be used as a modal dialog from anywhere

Changeset 5291df35db36

Parent 51c2cb07ac33

by Steve Borho

Changes to 6 files · Browse files at 5291df35db36 Showing diff from parent 51c2cb07ac33 Diff from another changeset...

 
1014
1015
1016
1017
1018
1019
 
 
 
 
 
1020
1021
1022
 
1014
1015
1016
 
1017
 
1018
1019
1020
1021
1022
1023
1024
1025
@@ -1014,9 +1014,12 @@
  from tortoisehg.hgqt.run import qtrun   qtrun(run, ui.ui(), root=link[8:])   if link.startswith('shelve:'): - from tortoisehg.hgqt import run   repo = self.commit.repo - run.shelve(repo.ui, repo=repo) + from tortoisehg.hgqt import shelve + dlg = shelve.ShelveDialog(repo, self) + dlg.finished.connect(dlg.deleteLater) + dlg.exec_() + self.refresh()     def setButtonName(self, name):   self.bb.button(QDialogButtonBox.Ok).setText(name)
 
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
 
 
 
 
416
417
418
 
399
400
401
 
 
 
 
 
 
 
 
402
 
 
 
 
 
403
404
405
406
407
408
409
@@ -399,20 +399,11 @@
  dlg.exec_()   self.check_status()   elif cmd == 'shelve': - def finished(): - self.wizard().setWindowModality(Qt.ApplicationModal) - self.wizard().setEnabled(True) - self.shelvedlg.setWindowModality(Qt.NonModal) - self.shelvedlg.hide() - self.check_status() - self.wizard().setWindowModality(Qt.NonModal) - self.wizard().setEnabled(False)   from tortoisehg.hgqt import shelve - self.shelvedlg = dlg = shelve.ShelveDialog(repo) - dlg.finished.connect(finished) - dlg.show() - dlg.raise_() - dlg.setWindowModality(Qt.ApplicationModal) + dlg = shelve.ShelveDialog(repo, self.wizard()) + dlg.finished.connect(dlg.deleteLater) + dlg.exec_() + self.check_status()   elif cmd.startswith('discard'):   if cmd != 'discard:noconfirm':   labels = [(QMessageBox.Yes, _('&Discard')),
 
20
21
22
23
 
24
25
26
 
211
212
213
214
215
216
217
218
219
220
 
221
222
223
 
446
447
448
449
450
 
 
 
 
451
452
453
 
20
21
22
 
23
24
25
26
 
211
212
213
 
 
 
214
215
216
 
217
218
219
220
 
443
444
445
 
 
446
447
448
449
450
451
452
@@ -20,7 +20,7 @@
 from tortoisehg.hgqt import cmdui, update, tag, backout, merge, visdiff  from tortoisehg.hgqt import archive, thgimport, thgstrip, run, purge, bookmark  from tortoisehg.hgqt import bisect, rebase, resolve, thgrepo, compress -from tortoisehg.hgqt import qdelete, qreorder, qrename, qfold +from tortoisehg.hgqt import qdelete, qreorder, qrename, qfold, shelve    from tortoisehg.hgqt.repofilter import RepoFilterBar  from tortoisehg.hgqt.repoview import HgRepoView @@ -211,13 +211,10 @@
    @pyqtSlot(unicode)   def _openLink(self, link): - def launchShelve(param): - run.shelve(self.repo.ui, repo=self.repo) -   link = unicode(link)   handlers = {'cset': self.goto,   'subrepo': self.repoLinkClicked.emit, - 'shelve' : launchShelve} + 'shelve' : self.shelve}   if ':' in link:   scheme, param = link.split(':', 1)   hdr = handlers.get(scheme) @@ -446,8 +443,10 @@
  dlg.setfilepaths(paths)   dlg.exec_()   - def shelve(self): - run.shelve(self.repo.ui, repo=self.repo) + def shelve(self, arg=None): + dlg = shelve.ShelveDialog(self.repo, self) + dlg.finished.connect(dlg.deleteLater) + dlg.exec_()     def verify(self):   cmdline = ['--repository', self.repo.root, 'verify', '--verbose']
 
16
17
18
19
 
20
21
22
23
24
25
26
 
 
27
28
29
30
31
 
 
 
 
 
 
 
 
 
 
32
33
34
35
36
 
37
38
39
 
86
87
88
89
 
90
91
92
 
98
99
100
101
 
102
103
104
 
120
121
122
123
 
 
124
125
126
 
158
159
160
161
 
162
163
164
 
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
 
 
406
407
408
 
411
412
413
414
 
 
16
17
18
 
19
20
21
 
22
23
 
 
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 
45
46
47
48
 
95
96
97
 
98
99
100
101
 
107
108
109
 
110
111
112
113
 
129
130
131
 
132
133
134
135
136
 
168
169
170
 
171
172
173
174
 
390
391
392
 
393
394
395
396
397
398
 
399
400
401
402
403
 
 
 
404
 
 
 
 
 
 
405
406
407
408
409
 
412
413
414
 
415
@@ -16,24 +16,33 @@
 from PyQt4.QtCore import *  from PyQt4.QtGui import *   -class ShelveDialog(QMainWindow): +class ShelveDialog(QDialog):     finished = pyqtSignal(int) -   wdir = _('Working Directory')   - def __init__(self, repo): - QMainWindow.__init__(self) + def __init__(self, repo, parent): + QDialog.__init__(self, parent)     self.repo = repo   self.shelves = []   self.patches = []   + layout = QVBoxLayout() + layout.setContentsMargins(2, 2, 2, 2) + layout.setSpacing(0) + self.setLayout(layout) + + self.tbarhbox = hbox = QHBoxLayout() + hbox.setContentsMargins(0, 0, 0, 0) + hbox.setSpacing(0) + self.layout().addLayout(self.tbarhbox) +   self.splitter = QSplitter(self)   self.splitter.setOrientation(Qt.Horizontal)   self.splitter.setChildrenCollapsible(False)   self.splitter.setObjectName('splitter') - self.setCentralWidget(self.splitter) + self.layout().addWidget(self.splitter, 1)     aframe = QFrame(self.splitter)   avbox = QVBoxLayout() @@ -86,7 +95,7 @@
  bvbox.addWidget(self.browseb)     self.rbar = QToolBar(_('Refresh Toolbar'), objectName='rbar') - self.addToolBar(self.rbar) + self.tbarhbox.addWidget(self.rbar)   self.refreshAction = a = QAction(_('Refresh'), self)   a.setIcon(qtlib.geticon('reload'))   a.setShortcut(QKeySequence.Refresh) @@ -98,7 +107,7 @@
  self.rbar.addAction(self.actionNew)     self.lefttbar = QToolBar(_('Left Toolbar'), objectName='lefttbar') - self.addToolBar(self.lefttbar) + self.tbarhbox.addWidget(self.lefttbar)   self.deletea = a = QAction(_('Deleted selected chunks'), self)   self.deletea.triggered.connect(self.browsea.deleteSelectedChunks)   a.setIcon(qtlib.geticon('delfilesleft')) @@ -120,7 +129,8 @@
  self.lefttbar.addAction(self.chunksright)     self.righttbar = QToolBar(_('Right Toolbar'), objectName='righttbar') - self.addToolBar(self.righttbar) + self.tbarhbox.addStretch(1) + self.tbarhbox.addWidget(self.righttbar)   self.chunksleft = a = QAction(_('Move selected chunks left'), self)   self.chunksleft.triggered.connect(self.moveChunksLeft)   a.setIcon(qtlib.geticon('chunk2left')) @@ -158,7 +168,7 @@
  self.browseb.fileModelEmpty.connect(self.allleft.setDisabled)     self.statusbar = cmdui.ThgStatusBar(self) - self.setStatusBar(self.statusbar) + self.layout().addWidget(self.statusbar)     self.refreshCombos()   repo.repositoryChanged.connect(self.refreshCombos) @@ -380,29 +390,20 @@
  s = QSettings()   wb = "shelve/"   s.setValue(wb + 'geometry', self.saveGeometry()) - s.setValue(wb + 'windowState', self.saveState())   s.setValue(wb + 'filesplitter', self.browsea.splitter.saveState())     def restoreSettings(self):   s = QSettings()   wb = "shelve/"   self.restoreGeometry(s.value(wb + 'geometry').toByteArray()) - self.restoreState(s.value(wb + 'windowState').toByteArray())   self.browsea.splitter.restoreState(   s.value(wb + 'filesplitter').toByteArray())   self.browseb.splitter.restoreState(   s.value(wb + 'filesplitter').toByteArray())   - def safeToExit(self): - return True -   def closeEvent(self, event): - if not self.safeToExit(): - event.ignore() - else: - self.storeSettings() - # mimic QDialog exit - self.finished.emit(0) + self.storeSettings() + super(ShelveDialog, self).closeEvent(event)    def run(ui, *pats, **opts):   if 'repo' in opts: @@ -411,4 +412,4 @@
  from tortoisehg.util import paths   from tortoisehg.hgqt import thgrepo   repo = thgrepo.repository(ui, path=paths.find_root()) - return ShelveDialog(repo) + return ShelveDialog(repo, None)
 
702
703
704
705
706
 
 
 
 
 
707
708
709
 
702
703
704
 
 
705
706
707
708
709
710
711
712
@@ -702,8 +702,11 @@
  link = unicode(link)   repo = self.stwidget.repo   if link.startswith('shelve:'): - from tortoisehg.hgqt import run - run.shelve(repo.ui, repo=repo) + from tortoisehg.hgqt import shelve + dlg = shelve.ShelveDialog(self.stwidget.repo, self) + dlg.finished.connect(dlg.deleteLater) + dlg.exec_() + self.stwidget.refreshWctx()     def keyPressEvent(self, event):   if event.matches(QKeySequence.Refresh):
 
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
 
 
 
265
266
267
 
250
251
252
 
 
 
 
 
253
 
 
 
 
 
 
254
255
256
257
258
259
@@ -250,18 +250,10 @@
  if buttons['discard'] == clicked:   cmdline.append('--clean')   elif buttons['shelve'] == clicked: - def finished(): - self.setWindowModality(Qt.ApplicationModal) - self.shelvedlg.setWindowModality(Qt.NonModal) - self.shelvedlg.hide() - self.update()   from tortoisehg.hgqt import shelve - self.shelvedlg = dlg = shelve.ShelveDialog(self.repo) - dlg.finished.connect(finished) - dlg.show() - dlg.raise_() - dlg.setWindowModality(Qt.ApplicationModal) - self.setWindowModality(Qt.NonModal) + dlg = shelve.ShelveDialog(self.repo, self) + dlg.finished.connect(dlg.deleteLater) + dlg.exec_()   return   elif buttons['merge'] == clicked:   pass # no args