Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Steve Borho,                
Steve Borho,                
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)