Kiln » TortoiseHg » TortoiseHg
Clone URL:  
branchop.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# branchop.py - branch operations dialog for TortoiseHg commit tool # # Copyright 2010 Steve Borho <steve@borho.org> # # This software may be used and distributed according to the terms of the # GNU General Public License version 2, incorporated herein by reference. import os from PyQt4.QtCore import * from PyQt4.QtGui import * from tortoisehg.hgqt.i18n import _ from tortoisehg.util import hglib from tortoisehg.hgqt import qtlib class BranchOpDialog(QDialog): 'Dialog for manipulating wctx.branch()' def __init__(self, repo, oldbranchop, parent=None): QDialog.__init__(self, parent) self.setWindowTitle(_('%s - branch operation') % repo.displayname) self.setWindowIcon(qtlib.geticon('branch')) layout = QVBoxLayout() self.setLayout(layout) wctx = repo[None] if len(wctx.parents()) == 2: lbl = QLabel('<b>'+_('Select branch of merge commit')+'</b>') layout.addWidget(lbl) branchCombo = QComboBox() # If both parents belong to the same branch, do not duplicate the # branch name in the branch select combo branchlist = [p.branch() for p in wctx.parents()] if branchlist[0] == branchlist[1]: branchlist = [branchlist[0]] for b in branchlist: branchCombo.addItem(hglib.tounicode(b)) layout.addWidget(branchCombo) else: text = '<b>'+_('Changes take effect on next commit')+'</b>' lbl = QLabel(text) layout.addWidget(lbl) grid = QGridLayout() nochange = QRadioButton(_('No branch changes')) newbranch = QRadioButton(_('Open a new named branch')) closebranch = QRadioButton(_('Close current branch')) branchCombo = QComboBox() branchCombo.setEditable(True) wbu = hglib.tounicode(wctx.branch()) for name in repo.namedbranches: if name == wbu: continue branchCombo.addItem(name) branchCombo.activated.connect(self.accept) grid.addWidget(nochange, 0, 0) grid.addWidget(newbranch, 1, 0) grid.addWidget(branchCombo, 1, 1) grid.addWidget(closebranch, 2, 0) grid.setColumnStretch(0, 0) grid.setColumnStretch(1, 1) layout.addLayout(grid) layout.addStretch() newbranch.toggled.connect(branchCombo.setEnabled) branchCombo.setEnabled(False) if oldbranchop is None: nochange.setChecked(True) elif oldbranchop == False: closebranch.setChecked(True) else: assert type(oldbranchop) == QString bc = branchCombo names = [bc.itemText(i) for i in xrange(bc.count())] if oldbranchop in names: bc.setCurrentIndex(names.index(oldbranchop)) else: bc.addItem(oldbranchop) bc.setCurrentIndex(len(names)) newbranch.setChecked(True) self.closebranch = closebranch BB = QDialogButtonBox bb = QDialogButtonBox(BB.Ok|BB.Cancel) bb.accepted.connect(self.accept) bb.rejected.connect(self.reject) bb.button(BB.Ok).setAutoDefault(True) layout.addWidget(bb) self.bb = bb self.branchCombo = branchCombo QShortcut(QKeySequence('Ctrl+Return'), self, self.accept) QShortcut(QKeySequence('Ctrl+Enter'), self, self.accept) QShortcut(QKeySequence('Escape'), self, self.reject) def accept(self): '''Branch operation is one of: None - leave wctx branch name untouched False - close current branch QString - open new named branch ''' if self.branchCombo.isEnabled(): self.branchop = self.branchCombo.currentText() elif self.closebranch.isChecked(): self.branchop = False else: self.branchop = None QDialog.accept(self)