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

workbench: store/restore states of repowidgets

the settings of the current repo tab win on closing

Changeset 1a9ab68f463a

Parent 8a4715695ed0

by Adrian Buehlmann

Changes to 2 files · Browse files at 1a9ab68f463a Showing diff from parent 8a4715695ed0 Diff from another changeset...

 
87
88
89
 
 
 
 
 
 
 
 
 
 
90
91
92
 
450
451
452
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
453
454
455
 
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
 
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
@@ -87,6 +87,16 @@
  self._repodate = self._getrepomtime()   self._watchrepotimer = self.startTimer(500)   + # restore settings + s = QtCore.QSettings() + wb = "RepoWidget/" + self.splitternames = [] + sn = ('revisions', 'filelist', 'message') + for n in sn: + n += '_splitter' + self.splitternames.append(n) + getattr(self, n).restoreState(s.value(wb + n).toByteArray()) +   def showMessage(self, msg):   self.currentMessage = msg   if self.isVisible(): @@ -450,6 +460,27 @@
  self.repomodel.setRepo(self.repo, branch=branch, fromhead=startrev,   follow=follow)   + def okToContinue(self): + ''' + returns False if there is unsaved data + + If there is unsaved data, present a dialog asking the user if it is ok to + discard the changes made. + ''' + return True # TODO: check if there is an unsaved commit message + + def closeRepoWidget(self): + '''returns False if close should be aborted''' + if not self.okToContinue(): + return False + if self.isVisible(): + # assuming here that there is at most one RepoWidget visible + s = QtCore.QSettings() + wb = "RepoWidget/" + for n in self.splitternames: + s.setValue(wb + n, getattr(self, n).saveState()) + return True +  def run(ui, *pats, **opts):   repo = None   root = paths.find_root()
 
83
84
85
86
87
88
89
90
91
92
93
94
95
96
 
424
425
426
 
427
428
429
430
431
432
433
434
 
 
 
 
 
 
 
 
 
 
 
 
435
436
437
 
83
84
85
 
 
 
 
 
 
 
 
86
87
88
 
416
417
418
419
420
421
422
423
 
 
 
 
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
@@ -83,14 +83,6 @@
  wb = "Workbench/"   self.restoreGeometry(s.value(wb + 'geometry').toByteArray())   self.restoreState(s.value(wb + 'windowState').toByteArray()) - ''' - self.splitternames = [] - sn = ('revisions', 'filelist', 'message') - for n in sn: - n += '_splitter' - self.splitternames.append(n) - getattr(self, n).restoreState(s.value(wb + n).toByteArray()) - '''     self.setAcceptDrops(True)   @@ -424,14 +416,23 @@
  def closeEvent(self, event):   if not self.okToContinue():   event.ignore() +   s = QtCore.QSettings()   wb = "Workbench/"   s.setValue(wb + 'geometry', self.saveGeometry())   s.setValue(wb + 'windowState', self.saveState()) - ''' - for n in self.splitternames: - s.setValue(wb + n, getattr(self, n).saveState()) - ''' + + if not self.closeRepoTabs(): + event.ignore() + + def closeRepoTabs(self): + '''returns False if close should be aborted''' + tw = self.repoTabsWidget + for idx in range(tw.count()): + rw = tw.widget(idx) + if not rw.closeRepoWidget(): + return False + return True    def run(ui, *pats, **opts):   repo = None