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

workbench: have one commit widget per disk-repo

not per repo tab.

Moving the revisions splitter and the stacked widget from
repowidget to workbench and have the repowidget's add their
revDetailsWidget's to that single stacked widget.

Multiple repo tabs (if they show the same on-disk repo) may
now use the same commit widget.

As a side effect, the position of the horizontal splitter is
now the same, no matter which repo tab is active.

Changeset fb7dd75e314b

Parent ecd4fda6bfee

by Adrian Buehlmann

Changes to 4 files · Browse files at fb7dd75e314b Showing diff from parent ecd4fda6bfee Diff from another changeset...

 
26
27
28
29
30
31
32
 
40
41
42
43
 
44
 
 
45
46
47
48
49
50
51
52
53
 
 
 
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
 
82
83
84
85
86
87
88
89
 
 
90
91
92
 
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
 
258
259
260
261
 
262
263
264
265
 
 
266
267
268
 
308
309
310
 
 
 
 
311
312
313
 
331
332
333
 
334
 
26
27
28
 
29
30
31
 
39
40
41
 
42
43
44
45
46
 
 
47
 
48
49
 
50
51
52
53
54
55
56
57
 
58
 
 
 
 
59
60
61
62
 
 
63
64
65
 
75
76
77
 
 
 
 
 
78
79
80
81
82
 
84
85
86
 
 
87
88
89
 
 
 
 
 
 
 
90
91
92
 
239
240
241
 
242
243
244
 
 
245
246
247
248
249
 
289
290
291
292
293
294
295
296
297
298
 
316
317
318
319
320
@@ -26,7 +26,6 @@
 from tortoisehg.hgqt.manifestdialog import ManifestDialog    from repoview import HgRepoView -from commit import CommitWidget  from revdetailswidget import RevDetailsWidget     @@ -40,33 +39,27 @@
  showMessageSignal = QtCore.pyqtSignal(str)   switchToSignal = QtCore.pyqtSignal(QtGui.QWidget)   - def __init__(self, repo): + def __init__(self, repo, stackedWidget, commitWidget):   self.repo = repo + self.stackedWidget = stackedWidget + self.commitWidget = commitWidget   self._closed_branch_supp = has_closed_branch_support(self.repo) - - # these are used to know where to go after a reload   self._reload_rev = '.' -   self._loading = True   self._scanForRepoChanges = True -   self.splitternames = [] + self.disab_shortcuts = [] + self.currentMessage = '' + self.currenWidget = None     QtGui.QWidget.__init__(self)     self.load_config() -   self.setupUi() - self.disab_shortcuts = [] - - self.currentMessage = '' -   self.createActions()     connect(self.repoview, SIGNAL('showMessage'), self.showMessage)   -# self.revdisplay.commitsignal.connect(self.commit) -   self.setupModels()   self.setupRevisionTable()   @@ -82,11 +75,8 @@
  self.hbox.setSpacing(0)   self.hbox.setMargin(0)   - self.revisions_splitter = QtGui.QSplitter(self) - self.splitternames.append('revisions_splitter') - self.revisions_splitter.setOrientation(Qt.Vertical) - - self.repoview = HgRepoView(self.revisions_splitter) + self.repoview = HgRepoView() + self.hbox.addWidget(self.repoview)   sp = SP(SP.Expanding, SP.Expanding)   sp.setHorizontalStretch(0)   sp.setVerticalStretch(1) @@ -94,18 +84,9 @@
  self.repoview.setSizePolicy(sp)   self.repoview.setFrameShape(QtGui.QFrame.StyledPanel)   - self.stackedWidget = QtGui.QStackedWidget(self.revisions_splitter) -   self.revDetailsWidget = RevDetailsWidget(self.repo, self.repoview)   self.stackedWidget.addWidget(self.revDetailsWidget)   - pats = {} - opts = {} - self.commitWidget = CommitWidget(pats, opts, root=self.repo.root) - self.stackedWidget.addWidget(self.commitWidget) - - self.hbox.addWidget(self.revisions_splitter) -   def load_config(self):   cfg = HgConfig(self.repo.ui)   fontstr = cfg.getFont() @@ -258,11 +239,11 @@
  ctx = self.repomodel.repo.changectx(rev)   if ctx.rev() is None:   # working copy - curridx = 1 + self.currenWidget = self.commitWidget   else:   self.revDetailsWidget.revision_selected(rev) - curridx = 0 - self.stackedWidget.setCurrentIndex(curridx) + self.currenWidget = self.revDetailsWidget + self.stackedWidget.setCurrentWidget(self.currenWidget)     def goto(self, rev):   if len(self.repoview.model().graph): @@ -308,6 +289,10 @@
    def switchTo(self):   self.switchToSignal.emit(self) + + def switchedTo(self): + if self.currenWidget: + self.stackedWidget.setCurrentWidget(self.currenWidget)     def storeSettings(self):   s = QtCore.QSettings() @@ -331,4 +316,5 @@
  if self.isVisible():   # assuming here that there is at most one RepoWidget visible   self.storeSettings() + self.stackedWidget.removeWidget(self.revDetailsWidget)   return True
 
28
29
30
 
31
32
33
 
52
53
54
 
 
55
56
57
 
 
 
 
58
59
60
 
123
124
125
 
126
127
 
 
128
129
130
131
132
133
134
 
 
 
 
 
 
 
 
 
 
 
135
136
137
 
28
29
30
31
32
33
34
 
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
 
130
131
132
133
134
135
136
137
138
139
140
141
142
143
 
144
145
146
147
148
149
150
151
152
153
154
155
156
157
@@ -28,6 +28,7 @@
 from tortoisehg.hgqt.dialogmixin import HgDialogMixin  from tortoisehg.hgqt.quickbar import FindInGraphlogQuickBar  from tortoisehg.hgqt.repowidget import RepoWidget +from tortoisehg.hgqt.commit import CommitWidget    from tortoisehg.util import paths   @@ -52,9 +53,15 @@
  self._scanForRepoChanges = True   self._searchWidgets = []   + self.commitwidgets = {} # key: reporoot +   QtGui.QMainWindow.__init__(self)   HgDialogMixin.__init__(self, ui)   + self.dummywidget = QtGui.QWidget() + self.stackedWidget.addWidget(self.dummywidget) + self.stackedWidget.setCurrentWidget(self.dummywidget) +   self.setWindowTitle('TortoiseHg Workbench')     if repo: @@ -123,15 +130,28 @@
  mode = w.getMode()   ann = w.getAnnotate()   tags = w.repo.tags().keys() + w.switchedTo()   else:   self.actionDiffMode.setEnabled(False) + self.stackedWidget.setCurrentWidget(self.dummywidget) +   self.actionDiffMode.setChecked(mode == 'diff')   self.actionAnnMode.setChecked(ann)     def addRepoTab(self, repo):   '''opens the given repo in a new tab'''   reponame = os.path.basename(repo.root) - rw = RepoWidget(repo) + + if repo.root in self.commitwidgets: + cw = self.commitwidgets[repo.root] + else: + pats = {} + opts = {} + cw = CommitWidget(pats, opts, root=repo.root) + self.commitwidgets[repo.root] = cw + self.stackedWidget.addWidget(cw) + + rw = RepoWidget(repo, self.stackedWidget, cw)   rw.showMessageSignal.connect(self.showMessage)   rw.switchToSignal.connect(self.switchTo)   tw = self.repoTabsWidget
 
6
7
8
9
10
 
 
11
12
13
 
18
19
20
21
22
23
24
 
25
26
27
 
38
39
40
41
 
42
43
 
44
45
46
47
48
49
 
 
50
51
52
 
 
53
54
55
56
57
58
59
60
61
62
63
64
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
66
67
 
72
73
74
75
 
76
77
78
 
6
7
8
 
 
9
10
11
12
13
 
18
19
20
 
 
 
 
21
22
23
24
 
35
36
37
 
38
39
 
40
41
42
43
44
 
 
45
46
47
 
 
48
49
50
 
 
 
 
 
 
 
 
 
 
 
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
 
97
98
99
 
100
101
102
103
@@ -6,8 +6,8 @@
  <rect>   <x>0</x>   <y>0</y> - <width>671</width> - <height>669</height> + <width>685</width> + <height>721</height>   </rect>   </property>   <property name="windowTitle"> @@ -18,10 +18,7 @@
  <normaloff>:/icons/log.svg</normaloff>:/icons/log.svg</iconset>   </property>   <widget class="QWidget" name="centralwidget"> - <layout class="QHBoxLayout" name="horizontalLayout"> - <property name="spacing"> - <number>0</number> - </property> + <layout class="QVBoxLayout" name="verticalLayout_2">   <property name="margin">   <number>0</number>   </property> @@ -38,30 +35,58 @@
  </sizepolicy>   </property>   </widget> - <widget class="QTabWidget" name="repoTabsWidget"> + <widget class="QFrame" name="repoframe">   <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred">   <horstretch>1</horstretch>   <verstretch>0</verstretch>   </sizepolicy>   </property> - <property name="currentIndex"> - <number>0</number> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum>   </property> - <property name="documentMode"> - <bool>true</bool> + <property name="frameShadow"> + <enum>QFrame::Raised</enum>   </property> - <property name="tabsClosable"> - <bool>true</bool> - </property> - <property name="movable"> - <bool>true</bool> - </property> - <widget class="QWidget" name="firstRepoTab"> - <attribute name="title"> - <string>repo1</string> - </attribute> - </widget> + <layout class="QVBoxLayout" name="verticalLayout"> + <property name="margin"> + <number>0</number> + </property> + <item> + <widget class="QSplitter" name="repotabssplitter"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <widget class="QTabWidget" name="repoTabsWidget"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <horstretch>1</horstretch> + <verstretch>1</verstretch> + </sizepolicy> + </property> + <property name="currentIndex"> + <number>0</number> + </property> + <property name="documentMode"> + <bool>true</bool> + </property> + <property name="tabsClosable"> + <bool>true</bool> + </property> + <property name="movable"> + <bool>true</bool> + </property> + <widget class="QWidget" name="firstRepoTab"> + <attribute name="title"> + <string>repo1</string> + </attribute> + </widget> + </widget> + <widget class="QStackedWidget" name="stackedWidget"> + </widget> + </widget> + </item> + </layout>   </widget>   </widget>   </item> @@ -72,7 +97,7 @@
  <rect>   <x>0</x>   <y>0</y> - <width>671</width> + <width>685</width>   <height>19</height>   </rect>   </property>
 
2
3
4
5
 
6
7
8
 
12
13
14
15
 
16
17
18
19
20
21
22
23
24
 
 
 
25
26
27
 
32
33
34
35
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
37
38
 
39
40
41
 
45
46
47
48
 
 
 
 
49
50
51
 
52
53
54
 
2
3
4
 
5
6
7
8
 
12
13
14
 
15
16
17
18
19
20
 
 
 
 
21
22
23
24
25
26
 
31
32
33
 
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 
52
53
54
55
 
59
60
61
 
62
63
64
65
66
67
 
68
69
70
71
@@ -2,7 +2,7 @@
   # Form implementation generated from reading ui file 'C:\Users\adi\hgrepos\thg-qt\tortoisehg\hgqt\workbench.ui'  # -# Created: Tue May 18 01:00:57 2010 +# Created: Sun May 23 21:33:00 2010  # by: PyQt4 UI code generator 4.7.3  #  # WARNING! All changes made in this file will be lost! @@ -12,16 +12,15 @@
 class Ui_MainWindow(object):   def setupUi(self, MainWindow):   MainWindow.setObjectName("MainWindow") - MainWindow.resize(671, 669) + MainWindow.resize(685, 721)   icon = QtGui.QIcon()   icon.addPixmap(QtGui.QPixmap(":/icons/log.svg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)   MainWindow.setWindowIcon(icon)   self.centralwidget = QtGui.QWidget(MainWindow)   self.centralwidget.setObjectName("centralwidget") - self.horizontalLayout = QtGui.QHBoxLayout(self.centralwidget) - self.horizontalLayout.setSpacing(0) - self.horizontalLayout.setMargin(0) - self.horizontalLayout.setObjectName("horizontalLayout") + self.verticalLayout_2 = QtGui.QVBoxLayout(self.centralwidget) + self.verticalLayout_2.setMargin(0) + self.verticalLayout_2.setObjectName("verticalLayout_2")   self.reporegistry_splitter = QtGui.QSplitter(self.centralwidget)   self.reporegistry_splitter.setOrientation(QtCore.Qt.Horizontal)   self.reporegistry_splitter.setObjectName("reporegistry_splitter") @@ -32,10 +31,25 @@
  sizePolicy.setHeightForWidth(self.reporegistry.sizePolicy().hasHeightForWidth())   self.reporegistry.setSizePolicy(sizePolicy)   self.reporegistry.setObjectName("reporegistry") - self.repoTabsWidget = QtGui.QTabWidget(self.reporegistry_splitter) + self.repoframe = QtGui.QFrame(self.reporegistry_splitter) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(1) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.repoframe.sizePolicy().hasHeightForWidth()) + self.repoframe.setSizePolicy(sizePolicy) + self.repoframe.setFrameShape(QtGui.QFrame.StyledPanel) + self.repoframe.setFrameShadow(QtGui.QFrame.Raised) + self.repoframe.setObjectName("repoframe") + self.verticalLayout = QtGui.QVBoxLayout(self.repoframe) + self.verticalLayout.setMargin(0) + self.verticalLayout.setObjectName("verticalLayout") + self.repotabssplitter = QtGui.QSplitter(self.repoframe) + self.repotabssplitter.setOrientation(QtCore.Qt.Vertical) + self.repotabssplitter.setObjectName("repotabssplitter") + self.repoTabsWidget = QtGui.QTabWidget(self.repotabssplitter)   sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)   sizePolicy.setHorizontalStretch(1) - sizePolicy.setVerticalStretch(0) + sizePolicy.setVerticalStretch(1)   sizePolicy.setHeightForWidth(self.repoTabsWidget.sizePolicy().hasHeightForWidth())   self.repoTabsWidget.setSizePolicy(sizePolicy)   self.repoTabsWidget.setDocumentMode(True) @@ -45,10 +59,13 @@
  self.firstRepoTab = QtGui.QWidget()   self.firstRepoTab.setObjectName("firstRepoTab")   self.repoTabsWidget.addTab(self.firstRepoTab, "") - self.horizontalLayout.addWidget(self.reporegistry_splitter) + self.stackedWidget = QtGui.QStackedWidget(self.repotabssplitter) + self.stackedWidget.setObjectName("stackedWidget") + self.verticalLayout.addWidget(self.repotabssplitter) + self.verticalLayout_2.addWidget(self.reporegistry_splitter)   MainWindow.setCentralWidget(self.centralwidget)   self.menubar = QtGui.QMenuBar(MainWindow) - self.menubar.setGeometry(QtCore.QRect(0, 0, 671, 19)) + self.menubar.setGeometry(QtCore.QRect(0, 0, 685, 19))   self.menubar.setObjectName("menubar")   self.menuFile = QtGui.QMenu(self.menubar)   self.menuFile.setObjectName("menuFile")