Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 2.1, 2.1.1, and 2.1.2

Merge with stable

Changeset 198b2599029e

Parents b3dcc064467a

Parents aa60c11b8ae3

by Adrian Buehlmann

Changes to 15 files · Browse files at 198b2599029e Showing diff from parent b3dcc064467a aa60c11b8ae3 Diff from another changeset...

 
261
262
263
 
264
265
266
 
261
262
263
264
265
266
267
@@ -261,6 +261,7 @@
  self._apis = QsciAPIs(self.msgte.lexer())   tokens = set()   for e in self.stwidget.getChecked(): + e = hglib.tounicode(e)   tokens.add(e)   tokens.add(os.path.basename(e))   tokens.add(wfile)
 
310
311
312
 
313
314
315
 
310
311
312
313
314
315
316
@@ -310,6 +310,7 @@
  sci.setLexer(self.lexer)     sci.setReadOnly(True) + sci.setUtf8(True)   lay.addWidget(sci)     # hide margin 0 (markers)
 
71
72
73
74
75
 
 
76
77
78
 
 
79
80
81
 
216
217
218
219
220
221
222
223
224
225
226
227
228
 
71
72
73
 
 
74
75
76
 
 
77
78
79
80
81
 
216
217
218
 
219
220
221
222
223
 
224
225
226
@@ -71,11 +71,11 @@
  for act in ['diff', 'revert']:   self._actions[act].setEnabled(real or wd)   if len(ctx.parents()) == 2: - self.actionShowAllMerge.setVisible(True) - self.actionSecondParent.setVisible(True) + self.actionShowAllMerge.setEnabled(True) + self.actionSecondParent.setEnabled(True)   else: - self.actionShowAllMerge.setVisible(False) - self.actionSecondParent.setVisible(False) + self.actionShowAllMerge.setEnabled(False) + self.actionSecondParent.setEnabled(False)     def currentFile(self):   index = self.currentIndex() @@ -216,13 +216,11 @@
  _('Toggle display of all files and the direction they were merged'))   self.actionShowAllMerge.setCheckable(True)   self.actionShowAllMerge.setChecked(False) - self.actionShowAllMerge.setVisible(False)   self.actionSecondParent = QAction(_('Other'), self)   self.actionSecondParent.setToolTip(   _('Toggle display of diffs to second (other) parent'))   self.actionSecondParent.setCheckable(True)   self.actionSecondParent.setChecked(False) - self.actionSecondParent.setVisible(False)   self.actionSecondParent.setEnabled(False)     self._actions = {}
 
30
31
32
 
 
33
34
35
 
30
31
32
33
34
35
36
37
@@ -30,6 +30,8 @@
  (Passed as `hg email --bundle --rev {rev}`)   """   super(EmailDialog, self).__init__(parent) + self.setWindowFlags((self.windowFlags() | Qt.WindowMinimizeButtonHint) + & ~Qt.WindowContextHelpButtonHint)   self._repo = repo   self._outgoing = outgoing   self._outgoingrevs = outgoingrevs or []
 
13
14
15
 
 
 
16
17
18
 
13
14
15
16
17
18
19
20
21
@@ -13,6 +13,9 @@
  <property name="windowTitle">   <string>Email</string>   </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property>   <layout class="QVBoxLayout" name="verticalLayout_5">   <item>   <widget class="QTabWidget" name="main_tabs">
 
22
23
24
25
 
26
27
28
 
129
130
131
132
 
133
134
135
 
137
138
139
140
 
141
142
143
 
175
176
177
178
 
179
180
181
 
299
300
301
302
 
303
304
305
306
 
307
308
309
 
312
313
314
315
 
316
317
318
 
339
340
341
342
 
343
344
345
346
347
348
349
 
350
351
352
 
358
359
360
361
 
362
363
364
 
372
373
374
375
 
376
377
378
 
401
402
403
404
 
405
406
407
 
435
436
437
438
 
439
440
441
 
458
459
460
461
 
462
463
464
 
535
536
537
538
 
539
540
541
 
22
23
24
 
25
26
27
28
 
129
130
131
 
132
133
134
135
 
137
138
139
 
140
141
142
143
 
175
176
177
 
178
179
180
181
 
299
300
301
 
302
303
304
305
 
306
307
308
309
 
312
313
314
 
315
316
317
318
 
339
340
341
 
342
343
344
345
346
347
348
 
349
350
351
352
 
358
359
360
 
361
362
363
364
 
372
373
374
 
375
376
377
378
 
401
402
403
 
404
405
406
407
 
435
436
437
 
438
439
440
441
 
458
459
460
 
461
462
463
464
 
535
536
537
 
538
539
540
541
@@ -22,7 +22,7 @@
   class PatchBranchWidget(QWidget):   ''' - A widget that show the patch graph and provide actions + A widget that show the patch graph and provide actions   for the pbranch extension   '''   output = pyqtSignal(QString, QString) @@ -129,7 +129,7 @@
    # compute model data   self.patchlistmodel.setModel( - self.compute_model(), + self.compute_model(),   self.repo.changectx('.').branch() )     # restore patch selection @@ -137,7 +137,7 @@
  selinxs = self.patchlistmodel.match(   self.patchlistmodel.index(0, patchnamecol),   Qt.DisplayRole, - selname, + selname,   flags = Qt.MatchExactly)   if len(selinxs) > 0:   self.patchlist.setCurrentIndex(selinxs[0]) @@ -175,7 +175,7 @@
  parents = graph.deps(name)     # Node properties - if name in dep_list: + if name in dep_list:   node_column = dep_list.index(name)   else:   node_column = len(dep_list) @@ -299,11 +299,11 @@
  return False   self.pnew(hglib.fromunicode(new_name))   return True - +   def pnew(self, patch_name):   """   [pbranch] Execute 'pnew' command. - +   :param patch_name: Name of new patch-branch   """   if self.pbranch is None: @@ -312,7 +312,7 @@
  self.pbranch.cmdnew(self.repo.ui, self.repo, patch_name)   self.repo.decrementBusyCount()   return True - +   def pmerge(self, patch_name=None):   """   [pbranch] Execute 'pmerge' command. @@ -339,14 +339,14 @@
    def is_patch(self, branch_name):   """ return True if branch is a patch. This excludes root branches - and internal diff base branches (for patches with multiple + and internal diff base branches (for patches with multiple   dependencies. """   return self.has_pbranch() and self.pgraph().ispatch(branch_name)     def cur_branch(self):   """ Return branch that workdir belongs to. """   return self.repo.dirstate.branch() - +   ### internal functions ###     def update_sensitivity(self): @@ -358,7 +358,7 @@
  self.actionReapply.setEnabled(True)   self.actionPNew.setEnabled(not is_merge)   self.actionEditPGraph.setEnabled(True) - +   def selected_patch(self):   C_NAME = PatchBranchModel._columns.index('Name')   indexes = self.patchlist.selectedIndexes() @@ -372,7 +372,7 @@
  patchname = self.selected_patch()   if not patchname:   return - +   menu = QMenu(self)   def append(label, handler):   menu.addAction(label).triggered.connect(handler) @@ -401,7 +401,7 @@
  def contextMenuEvent(self, event):   if self.patchlist.geometry().contains(event.pos()):   self.show_patch_cmenu(event.globalPos()) - +   def commandFinished(self, ret):   self.repo.decrementBusyCount()   self.refresh() @@ -435,7 +435,7 @@
  no_editor_configured =(os.environ.get("HGEDITOR") or   self.repo.ui.config("ui", "editor") or   os.environ.get("VISUAL") or - os.environ.get("EDITOR","editor-not-configured") + os.environ.get("EDITOR","editor-not-configured")   == "editor-not-configured")   if no_editor_configured:   qtlib.ErrorMsgBox(_('No editor found'), @@ -458,7 +458,7 @@
  def goto_activated(self):   branch = self.selected_patch()   # TODO: Fetch list of heads of branch - # - use a list of revs if more than one found + # - use a list of revs if more than one found   dlg = update.UpdateDialog(self.repo, branch, self)   dlg.output.connect(self.output)   dlg.makeLogVisible.connect(self.makeLogVisible) @@ -535,7 +535,7 @@
  Model used to list patch branches   TODO: Should be extended to list all branches   """ - _columns = ('Graph', 'Name', 'Status', 'Title', 'Message',) + _columns = ['Graph', 'Name', 'Status', 'Title', 'Message',]     def __init__(self, model, wd_branch="", parent=None):   QAbstractTableModel.__init__(self, parent)
 
153
154
155
 
156
157
158
 
153
154
155
156
157
158
159
@@ -153,6 +153,7 @@
  w.revisionSelected.connect(self.repoview.goto)   w.grepRequested.connect(self.grep)   w.showMessage.connect(self.showMessage) + w.updateToRevision.connect(lambda rev: self.updateToRevision())   self.logTabIndex = idx = tt.addTab(w, qtlib.geticon('hg-log'), '')   tt.setTabToolTip(idx, _("Revision details"))  
 
23
24
25
 
26
27
28
 
61
62
63
64
 
65
66
67
 
85
86
87
88
89
 
 
90
91
92
 
100
101
102
103
 
104
105
106
 
176
177
178
179
180
 
 
 
 
 
 
 
181
182
183
 
23
24
25
26
27
28
29
 
62
63
64
 
65
66
67
68
 
86
87
88
 
 
89
90
91
92
93
 
101
102
103
 
104
105
106
107
 
177
178
179
 
 
180
181
182
183
184
185
186
187
188
189
@@ -23,6 +23,7 @@
  linkActivated = pyqtSignal(unicode)   grepRequested = pyqtSignal(unicode, dict)   revisionSelected = pyqtSignal(int) + updateToRevision = pyqtSignal(int)     def __init__(self, repo):   QWidget.__init__(self) @@ -61,7 +62,7 @@
  # + revisiondetails_layout -----------------------------------------+   # |+ filelist_splitter ........ |   # | + tbarFileListFrame (vbox)| + cset_and_file_details_frame (vbox)| - # | + mergeToolbar | + revpanel | + # | + filelistToolbar | + revpanel |   # +---------------------------+-------------------------------------+   # | + filelist | + message_splitter |   # | | :+ message | @@ -85,8 +86,8 @@
  self.filelist_splitter.setOrientation(Qt.Horizontal)   self.filelist_splitter.setChildrenCollapsible(False)   - self.mergeToolBar = QToolBar(_('Merge Toolbar')) - self.mergeToolBar.setIconSize(QSize(16,16)) + self.filelistToolbar = QToolBar(_('File List Toolbar')) + self.filelistToolbar.setIconSize(QSize(16,16))   self.filelist = HgFileListView()     self.tbarFileListFrame = QFrame(self.filelist_splitter) @@ -100,7 +101,7 @@
  vbox = QVBoxLayout()   vbox.setSpacing(0)   vbox.setMargin(0) - vbox.addWidget(self.mergeToolBar) + vbox.addWidget(self.filelistToolbar)   vbox.addWidget(self.filelist)   self.tbarFileListFrame.setLayout(vbox)   @@ -176,8 +177,13 @@
  self.actionActivateFileAlt.setShortcuts([Qt.ALT+Qt.Key_Return,   Qt.ALT+Qt.Key_Enter])   self.actionActivateFileAlt.triggered.connect(fileActivated) - self.mergeToolBar.addAction(self.filelist.actionShowAllMerge) - self.mergeToolBar.addAction(self.filelist.actionSecondParent) + + self.actionUpdate = a = self.filelistToolbar.addAction( + geticon('hg-update'), _('Update to this revision')) + a.triggered.connect(lambda: self.updateToRevision.emit(self._last_rev)) + self.filelistToolbar.addSeparator() + self.filelistToolbar.addAction(self.filelist.actionShowAllMerge) + self.filelistToolbar.addAction(self.filelist.actionSecondParent)     self.actionNextLine = QAction('Next line', self)   self.actionNextLine.setShortcut(Qt.SHIFT + Qt.Key_Down)
 
50
51
52
53
 
54
55
56
 
50
51
52
 
53
54
55
56
@@ -50,7 +50,7 @@
  'HideMenuOutsideRepo':   [False, THGKEY, REG_SZ, is_true, one_str, 'hidecmenu'],   PROMOTEDITEMS: - ['commit', THGKEY, REG_SZ, noop, noop, None], + ['commit,workbench', THGKEY, REG_SZ, noop, noop, None],   'ShowUnversionedOverlay':   [True, OVLKEY, REG_DWORD, nonzero, one_int, 'enableUnversionedHandler'],   'ShowIgnoredOverlay':
 
75
76
77
 
78
79
80
 
302
303
304
305
 
 
 
306
307
308
 
75
76
77
78
79
80
81
 
303
304
305
 
306
307
308
309
310
311
@@ -75,6 +75,7 @@
  self.opts = {}   self.cmenu = None   self.embedded = bool(parent) + self.targetargs = []     self.repo.configChanged.connect(self.configChanged)   @@ -302,7 +303,9 @@
    def applyTargetOption(self, cmdline):   if self.embedded and self.targetcheckbox.isChecked(): - cmdline += self.targetargs[self.targetcombo.currentIndex()] + idx = self.targetcombo.currentIndex() + if idx != -1 and idx < len(self.targetargs): + cmdline += self.targetargs[idx]   return cmdline     def configChanged(self):
 
563
564
565
566
 
567
568
569
 
563
564
565
 
566
567
568
569
@@ -563,7 +563,7 @@
  summary = lines and lines[0] or ''     if summary and len(lines) > 1: - summary += '...' + summary += u' \u2026' # ellipsis ...     return summary  
 
622
623
624
625
 
626
627
628
 
632
633
634
635
 
636
637
638
 
622
623
624
 
625
626
627
628
 
632
633
634
 
635
636
637
638
@@ -622,7 +622,7 @@
  tw = self.repoTabsWidget   for idx in range(tw.count()):   rw = tw.widget(idx) - repostosave.append(rw.repo.root) + repostosave.append(hglib.tounicode(rw.repo.root))   s.setValue(wb + 'openrepos', (',').join(repostosave))     def restoreSettings(self): @@ -632,7 +632,7 @@
  self.restoreState(s.value(wb + 'windowState').toByteArray())   save = s.value(wb + 'saveRepos').toBool()   self.actionSaveRepos.setChecked(save) - for path in str(s.value(wb + 'openrepos').toString()).split(','): + for path in hglib.fromunicode(s.value(wb + 'openrepos').toString()).split(','):   self._openRepo(path)   # Allow repo registry to assemble itself before toggling path state   sp = s.value(wb + 'showPaths').toBool()
 
139
140
141
142
 
143
144
145
 
139
140
141
 
142
143
144
145
@@ -139,7 +139,7 @@
  summary = lines and lines[0] or ''     if summary and len(lines) > 1: - summary += '...' + summary += u' \u2026' # ellipsis ...     return summary  
 
793
794
795
796
 
797
798
799
 
793
794
795
 
796
797
798
799
@@ -793,7 +793,7 @@
  TDEBUG_TRACE("RunDialog: THG root is empty");   return;   } - std::string hgcmd = dir + "\\thg.exe"; + std::string hgcmd = dir + "\\thgw.exe";     WIN32_FIND_DATAA data;   HANDLE hfind = FindFirstFileA(hgcmd.c_str(), &data);
 
49
50
51
 
 
 
 
52
53
54
 
49
50
51
52
53
54
55
56
57
58
@@ -49,6 +49,10 @@
  <File Name="libsvn_subr-1.dll" />   <File Name="libsvn_wc-1.dll" />   <File Name="libsvn_swig_py-1.dll" /> + <?if $(var.Platform) = "x86" ?> + <File Name="intl3_svn.dll" /> + <File Name="libdb44.dll" /> + <?endif?>   <File Name="select.pyd" />   <File Name="sip.pyd" />   <File Name="unicodedata.pyd" />