Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 0.8, 0.8.1, and 0.8.2

hggtk: standardize module run() functions

All take the same arguments: run(ui, *pats, **opts)
The dialogs use os.getcwd() and hglib.rootpath() to find their repository root

Remove all of the "main" functions. The dialogs can't be used outside of the
context of hgtk anymore (this may seem arbritrary now, but there will soon be
reasons for this requirement).

Changeset aa5e7a24100e

Parent 0ca65325372d

by Steve Borho

Changes to 28 files · Browse files at aa5e7a24100e Showing diff from parent 0ca65325372d Diff from another changeset...

Change 1 of 1 Show Entire File hggtk/​about.py Stacked
 
84
85
86
87
 
88
89
90
91
92
93
94
95
96
 
84
85
86
 
87
88
89
90
91
92
93
 
 
 
@@ -84,13 +84,10 @@
  # close the About dialog...   self.connect('response', gtk.main_quit)   -def run(*args, **opts): +def run(_ui, *pats, **opts):   dialog = AboutDialog()   dialog.show_all()   gtk.gdk.threads_init()   gtk.gdk.threads_enter()   gtk.main()   gtk.gdk.threads_leave() - -if __name__ == "__main__": - run()
Change 1 of 1 Show Entire File hggtk/​backout.py Stacked
 
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
 
102
103
104
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
@@ -102,21 +102,3 @@
  dlg.hide()   if self.notify_func:   self.notify_func(self.notify_args) - -def run(root='', **opts): - # This dialog is intended to be launched by the changelog browser - # It's not expected to be used from hgtk. I leave this path in - # place for testing purposes. - dialog = BackoutDialog(root, 'tip') - dialog.show_all() - dialog.connect('destroy', gtk.main_quit) - gtk.gdk.threads_init() - gtk.gdk.threads_enter() - gtk.main() - gtk.gdk.threads_leave() - -if __name__ == "__main__": - import sys - opts = {} - opts['root'] = len(sys.argv) > 1 and sys.argv[1] or os.getcwd() - run(**opts)
 
55
56
57
58
59
60
 
 
61
62
63
64
65
66
67
68
69
70
71
 
55
56
57
 
 
 
58
59
60
61
62
63
64
 
 
 
 
 
 
@@ -55,17 +55,10 @@
  textview.get_buffer().set_text(text)   return vbox   - -def run(**opts): - dialog = BugReport(ui.ui(), None, None, None, opts, True) +def run(_ui, *pats, **opts): + dialog = BugReport(_ui, None, None, None, opts, True)   gtk.gdk.threads_init()   gtk.gdk.threads_enter()   dialog.display()   gtk.main()   gtk.gdk.threads_leave() - -if __name__ == "__main__": - opts = {} - opts['cmd'] = 'command' - opts['error'] = 'test error' - run(**opts)
 
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
 
705
706
707
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
@@ -705,23 +705,3 @@
  dlg.run()   dlg.hide()   shell_notify([self.curfile]) - -def run(root='', cwd='', files=[], **opts): - u = ui.ui() - u.updateopts(debug=False, traceback=False) - repo = hg.repository(u, path=root) - - dialog = ChangeSet(u, repo, cwd, files, opts, True) - dialog.display() - - gtk.gdk.threads_init() - gtk.gdk.threads_enter() - gtk.main() - gtk.gdk.threads_leave() - -if __name__ == "__main__": - import sys - opts = {} - opts['root'] = len(sys.argv) > 1 and sys.argv[1] or os.getcwd() - opts['rev'] = ['750'] - run(**opts)
Change 1 of 2 Show Entire File hggtk/​clone.py Stacked
 
16
17
18
19
 
20
21
 
22
23
24
25
26
27
28
 
320
321
322
323
324
 
 
325
326
327
328
329
330
331
332
333
334
335
336
 
16
17
18
 
19
20
21
22
23
 
 
 
24
25
26
 
318
319
320
 
 
321
322
323
324
325
326
327
 
 
 
 
 
 
 
@@ -16,13 +16,11 @@
   class CloneDialog(gtk.Window):   """ Dialog to add tag to Mercurial repo """ - def __init__(self, cwd='', repos=[]): + def __init__(self, repos=[]):   """ Initialize the Dialog """   gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL) + shlib.set_tortoise_icon(self, 'menuclone.ico')   - shlib.set_tortoise_icon(self, 'menuclone.ico') - if cwd: os.chdir(cwd) -   # set dialog title   title = 'hg clone'   self.set_title(title) @@ -320,17 +318,10 @@
  self._add_src_to_recent(src)   self._add_dest_to_recent(dest)   -def run(cwd='', files=[], **opts): - dialog = CloneDialog(cwd, repos=files) +def run(_ui, *pats, **opts): + dialog = CloneDialog(pats)   dialog.show_all()   gtk.gdk.threads_init()   gtk.gdk.threads_enter()   gtk.main()   gtk.gdk.threads_leave() - -if __name__ == "__main__": - import sys - opts = {} - opts['cwd'] = os.getcwd() - opts['files'] = sys.argv[1:] - run(**opts)
Change 1 of 3 Show Entire File hggtk/​commit.py Stacked
 
558
559
560
561
 
562
563
564
 
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
 
674
675
676
 
680
681
682
683
 
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
 
 
 
 
 
558
559
560
 
561
562
563
564
 
649
650
651
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
652
653
654
655
 
659
660
661
 
662
663
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
664
665
666
667
@@ -558,7 +558,7 @@
  # But since we can't be sure they will do it right, we will   # have them to retry, to re-trigger the checking mechanism.   from thgconfig import ConfigDialog - dlg = ConfigDialog(self.repo.root, False) + dlg = ConfigDialog(False)   dlg.show_all()   dlg.focus_field('ui.username')   dlg.run() @@ -649,28 +649,7 @@
  self.reload_status()   self.qnew_name.grab_focus() # set focus back   -def launch(root='', files=[], cwd='', main=True, **opts): - u = ui.ui() - u.updateopts(debug=False, traceback=False) - repo = hg.repository(u, path=root) - - # move cwd to repo root if repo is merged, so we can show - # all the changed files - if len(repo.changectx(None).parents()) > 1 and repo.root != cwd: - cwd = repo.root - repo = hg.repository(u, path=cwd) - files = [cwd] - - ct = repo.ui.config('tortoisehg', 'extcommit', None) - if ct == 'qct': - from hglib import thgdispatch - args = ['--repository', root, ct] - try: - thgdispatch(repo.ui, args=args) - except SystemExit: - pass - return - +def run(_ui, *pats, **opts):   cmdoptions = {   'user':opts.get('user', ''), 'date':opts.get('date', ''),   'logfile':'', 'message':'', @@ -680,25 +659,9 @@
  'check': True, 'git':False, 'addremove':False,   }   - dialog = GCommit(u, repo, cwd, files, cmdoptions, main) + dialog = GCommit(_ui, None, None, pats, cmdoptions, True)   dialog.display() - return dialog - -def run(root='', files=[], cwd='', **opts): - # If no files or directories were selected, take current dir - # TODO: Not clear if this is best; user may expect repo wide - if not files and cwd: - files = [cwd] - if launch(root, files, cwd, True, **opts): - gtk.gdk.threads_init() - gtk.gdk.threads_enter() - gtk.main() - gtk.gdk.threads_leave() - -if __name__ == "__main__": - import sys - from hglib import rootpath - opts = {} - opts['cwd'] = len(sys.argv) > 1 and sys.argv[1] or os.getcwd() - opts['root'] = rootpath(opts['cwd']) - run(**opts) + gtk.gdk.threads_init() + gtk.gdk.threads_enter() + gtk.main() + gtk.gdk.threads_leave()
Change 1 of 2 Show Entire File hggtk/​datamine.py Stacked
 
47
48
49
50
 
 
 
 
 
 
 
 
 
 
 
 
 
51
52
53
 
684
685
686
687
688
689
690
691
 
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
 
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
 
47
48
49
 
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
 
696
697
698
 
 
 
 
 
699
700
701
702
703
704
705
 
 
 
 
 
 
 
 
 
 
706
707
 
 
 
 
 
 
708
709
710
711
 
 
 
 
 
 
 
 
@@ -47,7 +47,19 @@
  ]     def prepare_display(self): - os.chdir(self.repo.root) + root = self.repo.root + cf = [] + for f in self.pats: + if os.path.isfile(f): + cf.append(util.canonpath(root, self.cwd, f)) + elif os.path.isdir(f): + Prompt(_('Invalid path'), + _('Cannot annotate directory: %s') % f, None).run() + for f in cf: + self.add_annotate_page(f, '.') + if not self.notebook.get_n_pages(): + self.add_search_page() + os.chdir(root)     def save_settings(self):   settings = GDialog.save_settings(self) @@ -684,43 +696,16 @@
  menuitem.set_border_width(1)   return menuitem   -def run(root='', cwd='', files=[], **opts): - u = ui.ui() - u.updateopts(debug=False, traceback=False) - repo = hg.repository(u, path=root) - +def run(ui, *pats, **opts):   cmdoptions = {   'follow':False, 'follow-first':False, 'copies':False, 'keyword':[],   'limit':0, 'rev':[], 'removed':False, 'no_merges':False, 'date':None,   'only_merges':None, 'prune':[], 'git':False, 'verbose':False,   'include':[], 'exclude':[]   } - - cf = [] - for f in files: - if os.path.isfile(f): - cf.append(util.canonpath(root, cwd, f)) - elif os.path.isdir(f): - Prompt(_('Invalid path'), - _('Cannot annotate directory: %s') % f, None).run() - - dialog = DataMineDialog(u, repo, cwd, files, cmdoptions, True) + dialog = DataMineDialog(ui, None, None, pats, cmdoptions, True)   dialog.display() - - for f in cf: - dialog.add_annotate_page(f, '.') - if not dialog.notebook.get_n_pages(): - dialog.add_search_page() -   gtk.gdk.threads_init()   gtk.gdk.threads_enter()   gtk.main()   gtk.gdk.threads_leave() - -if __name__ == "__main__": - import sys - opts = {} - opts['cwd'] = os.getcwd() - opts['root'] = rootpath() - opts['files'] = sys.argv[1:] or [] - run(**opts)
Change 1 of 3 Show Entire File hggtk/​gdialog.py Stacked
 
91
92
93
94
 
95
96
97
 
98
99
100
 
333
334
335
336
 
 
337
338
339
 
415
416
417
418
 
419
420
421
 
91
92
93
 
94
95
96
 
97
98
99
100
 
333
334
335
 
336
337
338
339
340
 
416
417
418
 
419
420
421
422
@@ -91,10 +91,10 @@
    def __init__(self, ui, repo, cwd, pats, opts, main):   gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL) - self.cwd = cwd + self.cwd = cwd or os.getcwd()   self.ui = ui   self.ui.interactive=False - self.repo = repo + self.repo = repo or hg.repository(ui, path=hglib.rootpath())   self.pats = pats   self.opts = opts   self.main = main @@ -333,7 +333,8 @@
  prompttext += errors.getvalue()   errors.close()   if len(prompttext) > 1: - Prompt(title + _(' Messages and Errors'), prompttext, self).run() + Prompt(title + _(' Messages and Errors'), + prompttext, self).run()     return True, textout   @@ -415,7 +416,7 @@
  from thgconfig import ConfigDialog   Prompt(_('No visual editor configured'),   _('Please configure a visual editor.'), self).run() - dlg = ConfigDialog(self.repo.root, False) + dlg = ConfigDialog(False)   dlg.show_all()   dlg.focus_field('tortoisehg.editor')   dlg.run()
Change 1 of 2 Show Entire File hggtk/​guess.py Stacked
 
36
37
38
39
 
40
41
42
43
44
 
45
46
 
47
48
49
 
366
367
368
369
370
 
 
371
372
373
374
375
376
377
378
379
380
 
36
37
38
 
39
40
41
42
43
 
44
45
 
46
47
48
49
 
366
367
368
 
 
369
370
371
372
373
374
375
376
 
 
 
 
@@ -36,14 +36,14 @@
   class DetectRenameDialog(gtk.Window):   'Detect renames after they occur' - def __init__(self, root=''): + def __init__(self):   'Initialize the Dialog'   gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)   set_tortoise_icon(self, 'detect_rename.ico')   - self.root = root + self.root = rootpath()   self.notify_func = None - path = toutf(os.path.basename(root)) + path = toutf(os.path.basename(self.root))   self.set_title(_('Detect Copies/Renames in ') + path)   settings = shlib.Settings('rename')   dims = settings.get_value('dims', (800, 600)) @@ -366,15 +366,11 @@
  line = diffexpand(line)   buf.insert(bufiter, line)   -def run(root='', **opts): - dialog = DetectRenameDialog(root) +def run(ui, *pats, **opts): + dialog = DetectRenameDialog()   dialog.show_all()   dialog.connect('destroy', gtk.main_quit)   gtk.gdk.threads_init()   gtk.gdk.threads_enter()   gtk.main()   gtk.gdk.threads_leave() - -if __name__ == "__main__": - opts['root'] = rootpath() - run(**opts)
Change 1 of 1 Show Entire File hggtk/​hgcmd.py Stacked
 
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
 
158
159
160
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
@@ -158,22 +158,3 @@
  return self.hgthread.return_code()   else:   return False - -def run(cmdline=[], gui=True, **opts): - if not gui: - q = Queue.Queue() - hgcmd_toq(None, q, *cmdline[1:]) - return - - dlg = CmdDialog(cmdline) - dlg.connect('response', gtk.main_quit) - dlg.show_all() - gtk.gdk.threads_init() - gtk.gdk.threads_enter() - gtk.main() - gtk.gdk.threads_leave() - -if __name__ == "__main__": - import sys - run(sys.argv) -
Change 1 of 4 Show Entire File hggtk/​hgemail.py Stacked
 
16
17
18
19
20
21
22
 
261
262
263
264
 
 
265
266
267
 
303
304
305
 
306
307
308
 
309
310
311
 
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
 
16
17
18
 
19
20
21
 
260
261
262
 
263
264
265
266
267
 
303
304
305
306
307
308
 
309
310
311
312
 
360
361
362
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
@@ -16,7 +16,6 @@
 from mercurial import hg, ui, extensions  from mercurial.i18n import _  from hglib import RepoError, fromutf, toutf -from thgconfig import ConfigDialog  from hgcmd import CmdDialog    class EmailDialog(gtk.Window): @@ -261,7 +260,8 @@
  self._diffstat.set_sensitive(False)     def _on_conf_clicked(self, button): - dlg = ConfigDialog(self.root, False) + from thgconfig import ConfigDialog + dlg = ConfigDialog(False)   dlg.show_all()   dlg.focus_field('email.from')   dlg.run() @@ -303,9 +303,10 @@
    if self.repo.ui.config('email', 'method', 'smtp') == 'smtp' and not test:   if not self.repo.ui.config('smtp', 'host'): + from thgconfig import ConfigDialog   info_dialog(self, _('Info required'),   _('You must configure SMTP')) - dlg = ConfigDialog(self.root, False) + dlg = ConfigDialog(False)   dlg.show_all()   dlg.focus_field('smtp.host')   dlg.run() @@ -359,20 +360,3 @@
  if oldpager:   os.environ['PAGER'] = oldpager   os.unlink(tmpfile) - -def run(root='', **opts): - # In most use cases, this dialog will be launched by other - # hggtk tools like glog and synch. It's not expected to be - # used from hgtk. I leave this path in place for testing purposes. - dialog = EmailDialog(root, ['tip']) - dialog.show_all() - dialog.connect('destroy', gtk.main_quit) - gtk.gdk.threads_init() - gtk.gdk.threads_enter() - gtk.main() - gtk.gdk.threads_leave() - -if __name__ == "__main__": - opts = {} - opts['root'] = len(sys.argv) > 1 and sys.argv[1] or os.getcwd() - run(**opts)
Change 1 of 6 Show Entire File hggtk/​hgignore.py Stacked
 
7
8
9
 
 
10
11
12
13
14
 
15
16
17
18
 
19
20
21
22
23
24
 
 
25
26
27
 
38
39
40
41
 
42
43
44
 
138
139
140
141
 
142
143
144
145
146
147
 
148
149
150
 
165
166
167
168
 
169
170
171
 
176
177
178
179
 
180
181
182
 
195
196
197
198
199
 
 
 
 
200
201
202
203
204
205
206
207
208
209
210
 
7
8
9
10
11
12
13
 
 
 
14
15
16
17
 
18
19
20
21
22
 
 
23
24
25
26
27
 
38
39
40
 
41
42
43
44
 
138
139
140
 
141
142
143
144
145
146
 
147
148
149
150
 
165
166
167
 
168
169
170
171
 
176
177
178
 
179
180
181
182
 
195
196
197
 
 
198
199
200
201
202
203
204
205
206
207
 
 
 
 
 
@@ -7,21 +7,21 @@
 import os  import gtk  import gobject +from mercurial import hg, ui, match +from mercurial.i18n import _  from dialog import *  from shlib import shell_notify, set_tortoise_icon -from hglib import fromutf, toutf -from mercurial import hg, ui, match -from mercurial.i18n import _ +import hglib    class HgIgnoreDialog(gtk.Window):   'Edit a reposiory .hgignore file' - def __init__(self, root='', fileglob=''): + def __init__(self, fileglob='', *pats):   'Initialize the Dialog'   gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)   set_tortoise_icon(self, 'ignore.ico')   - self.root = root - self.set_title(_('Ignore filter for ') + os.path.basename(root)) + self.root = hglib.rootpath() + self.set_title(_('Ignore filter for ') + os.path.basename(self.root))   self.set_default_size(630, 400)   self.notify_func = None   @@ -38,7 +38,7 @@
  hbox.pack_start(glob_button, False, False, 4)   glob_button.connect('clicked', self.add_glob, glob_entry)   glob_entry.connect('activate', self.add_glob, glob_entry) - glob_entry.set_text(toutf(fileglob)) + glob_entry.set_text(hglib.toutf(fileglob))   self.glob_entry = glob_entry   mainvbox.pack_start(hbox, False, False)   @@ -138,13 +138,13 @@
  self.glob_entry.set_text(model[paths][0])     def add_glob(self, widget, glob_entry): - newglob = fromutf(glob_entry.get_text()) + newglob = hglib.fromutf(glob_entry.get_text())   self.ignorelines.append('glob:' + newglob)   self.write_ignore_lines()   self.refresh()     def add_regexp(self, widget, regexp_entry): - newregexp = fromutf(regexp_entry.get_text()) + newregexp = hglib.fromutf(regexp_entry.get_text())   self.ignorelines.append('regexp:' + newregexp)   self.write_ignore_lines()   self.refresh() @@ -165,7 +165,7 @@
  deleted, unknown, ignored, clean) = changes   self.unkmodel.clear()   for u in unknown: - self.unkmodel.append([toutf(u), u]) + self.unkmodel.append([hglib.toutf(u), u])   try:   l = open(repo.wjoin('.hgignore'), 'rb').readlines()   self.doseoln = l[0].endswith('\r\n') @@ -176,7 +176,7 @@
  model = gtk.ListStore(str)   self.ignorelines = []   for line in l: - model.append([toutf(line.strip())]) + model.append([hglib.toutf(line.strip())])   self.ignorelines.append(line.strip())   self.pattree.set_model(model)   self.repo = repo @@ -195,16 +195,13 @@
  shell_notify(self.repo.wjoin('.hgignore'))   if self.notify_func: self.notify_func()   -def run(root='', fileglob='', **opts): - dialog = HgIgnoreDialog(root, fileglob) +def run(_ui, *pats, **opts): + if pats and pats[0].endswith('.hgignore'): + pats = [] + dialog = HgIgnoreDialog(*pats)   dialog.show_all()   dialog.connect('destroy', gtk.main_quit)   gtk.gdk.threads_init()   gtk.gdk.threads_enter()   gtk.main()   gtk.gdk.threads_leave() - -if __name__ == "__main__": - import hglib - opts = {'root' : hglib.rootpath()} - run(**opts)
Change 1 of 2 Show Entire File hggtk/​hginit.py Stacked
 
15
16
17
18
 
19
20
21
 
164
165
166
167
168
 
 
169
170
171
172
173
174
175
176
177
178
179
180
 
15
16
17
 
18
19
20
21
 
164
165
166
 
 
167
168
169
170
171
172
173
 
 
 
 
 
 
 
@@ -15,7 +15,7 @@
   class InitDialog(gtk.Window):   """ Dialog to add tag to Mercurial repo """ - def __init__(self, cwd='', repos=[]): + def __init__(self, repos=[]):   """ Initialize the Dialog """   gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)   @@ -164,17 +164,10 @@
  info_dialog(self, _('New repository created'),   _('in directory %s') % toutf(os.path.abspath(dest)))   -def run(cwd='', files=[], **opts): - dialog = InitDialog(cwd, repos=files) +def run(ui, *pats, **opts): + dialog = InitDialog(repos=pats)   dialog.show_all()   gtk.gdk.threads_init()   gtk.gdk.threads_enter()   gtk.main()   gtk.gdk.threads_leave() - -if __name__ == "__main__": - import sys - opts = {} - opts['cwd'] = os.getcwd() - opts['files'] = sys.argv[1:] - run(**opts)
Change 1 of 3 Show Entire File hggtk/​hgtk.py Stacked
 
35
36
37
38
 
39
40
41
 
164
165
166
167
 
168
169
170
171
172
173
174
 
175
176
177
178
 
179
180
181
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
182
183
184
 
185
186
187
188
189
190
 
191
192
 
193
194
195
 
 
196
197
198
199
200
201
 
 
202
203
204
205
206
207
208
209
 
210
211
212
213
214
 
215
216
217
218
219
220
221
 
222
223
224
225
226
227
228
 
229
230
 
231
232
233
234
235
 
236
237
238
239
240
241
 
242
243
244
 
245
246
 
247
248
249
250
251
 
252
253
254
255
256
257
 
258
259
260
261
262
263
 
264
265
 
266
267
268
 
269
270
271
272
273
274
 
275
276
 
277
278
279
 
281
282
283
284
 
285
286
 
287
288
289
 
290
291
292
293
294
 
295
296
297
 
35
36
37
 
38
39
40
41
 
164
165
166
 
167
168
169
170
171
172
173
 
174
175
176
 
 
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
 
 
197
198
199
200
201
 
 
202
203
 
204
205
206
 
207
208
209
210
211
212
 
 
213
214
215
216
217
218
219
220
 
 
221
222
223
224
225
 
226
227
228
229
230
 
 
 
231
232
233
234
235
 
 
 
236
237
 
238
239
240
 
 
 
241
242
243
244
245
 
 
246
247
248
 
249
250
 
251
252
253
254
255
 
256
257
258
259
260
 
 
261
262
263
264
265
 
 
266
267
 
268
269
270
 
271
272
273
274
275
 
 
276
277
 
278
279
280
281
 
283
284
285
 
286
287
 
288
289
290
 
291
292
293
294
295
 
296
297
298
299
@@ -35,7 +35,7 @@
  pdb.post_mortem(sys.exc_info()[2])   error = traceback.format_exc()   from bugreport import run - run(**{'cmd':' '.join(sys.argv[1:]), 'error':error}) + run(u, **{'cmd':' '.join(sys.argv[1:]), 'error':error})    def get_list_from_file(filename):   try: @@ -164,116 +164,118 @@
 def about(ui, *pats, **opts):   """about TortoiseHg"""   from hggtk.about import run - run(**opts) + run(ui, *pats, **opts)    def add(ui, *pats, **opts):   """add files"""   from mercurial import dispatch   dispatch.dispatch(['add'] + list(pats))   -def clone(ui, source=None, dest=None, **opts): +def clone(ui, *pats, **opts):   """clone tool"""   from hggtk.clone import run - opts['files'] = [os.path.abspath(x) for x in (source, dest) if x] - run(**opts) + run(ui, *pats, **opts)    def commit(ui, *pats, **opts):   """commit tool""" + ct = ui.config('tortoisehg', 'extcommit', None) + if ct == 'qct': + from hglib import thgdispatch + args = ['--repository', root, ct] + try: + thgdispatch(repo.ui, args=args) + except SystemExit: + pass + return + # move cwd to repo root if repo is merged, so we can show + # all the changed files + repo = hg.repository(ui, path=hglib.rootpath()) + if len(repo.changectx(None).parents()) > 1: + os.chdir(repo.root) + pats = []   from hggtk.commit import run - opts['files'] = [os.path.abspath(x) for x in pats] - run(**opts) + run(ui, *pats, **opts)    def shelve(ui, *pats, **opts):   """shelve/unshelve tool"""   from hggtk.thgshelve import run - opts['files'] = [os.path.abspath(x) for x in pats] - run(**opts) + run(ui, *pats, **opts)   -def userconfig(ui, **opts): +def userconfig(ui, *pats, **opts):   """user configuration editor"""   from hggtk.thgconfig import run - run(**opts) + opts['repomode'] = False + run(ui, *pats, **opts)    def repoconfig(ui, *pats, **opts):   """repository configuration editor"""   from hggtk.thgconfig import run - opts['files'] = opts['root'] - run(**opts) + opts['repomode'] = True + run(ui, *pats, **opts)    def rename(ui, *pats, **opts):   """rename a single file or directory"""   from hggtk.rename import run   if not pats or len(pats) > 2:   raise util.Abort(_('rename takes one or two path arguments')) - opts['files'] = pats - run(**opts) + run(ui, *pats, **opts)    def guess(ui, *pats, **opts):   """guess previous renames or copies"""   from hggtk.guess import run - run(**opts) + run(ui, *pats, **opts)    def datamine(ui, *pats, **opts):   """repository search and annotate tool"""   from hggtk.datamine import run - opts['files'] = pats or [] - opts['cwd'] = os.getcwd() - run(**opts) + run(ui, *pats, **opts)    def hgignore(ui, *pats, **opts):   """ignore filter editor"""   from hggtk.hgignore import run - if pats and not pats[0].endswith('.hgignore'): - opts['fileglob'] = pats[0] - run(**opts) + run(ui, *pats, **opts)   -def hginit(ui, dest=None, **opts): +def hginit(ui, *pats, **opts):   """repository initialization tool"""   from hggtk.hginit import run - if dest: - opts['files'] = [dest] - run(**opts) + run(ui, *pats, **opts)    def log(ui, *pats, **opts):   """changelog viewer"""   from hggtk.history import run - opts['files'] = [os.path.abspath(x) for x in pats] - run(**opts) + run(ui, *pats, **opts)    def merge(ui, node=None, rev=None, **opts): - """merge tool """ + """merge tool"""   from hggtk.merge import run - run(**opts) + run(ui, *pats, **opts)    def recovery(ui, *pats, **opts):   """recover, rollback & verify"""   from hggtk.recovery import run - run(**opts) + run(ui, *pats, **opts)    def remove(ui, *pats, **opts):   """file status viewer in remove mode"""   from hggtk.status import run - opts['files'] = [os.path.abspath(x) for x in pats] - run(**opts) + run(ui, *pats, **opts)    def revert(ui, *pats, **opts):   """file status viewer in revert mode"""   from hggtk.status import run - opts['files'] = [os.path.abspath(x) for x in pats] - run(**opts) + run(ui, *pats, **opts)   -def serve(ui, **opts): +def serve(ui, *pats, **opts):   """web server"""   from hggtk.serve import run - run(**opts) + run(ui, *pats, **opts)    def status(ui, *pats, **opts):   """file status viewer"""   from hggtk.status import run - opts['files'] = [os.path.abspath(x) for x in pats] - run(**opts) + run(ui, *pats, **opts)   -def synch(ui, **opts): +def synch(ui, *pats, **opts):   """repository synchronization tool"""   from hggtk.synch import run   cmd = sys.argv[1] @@ -281,17 +283,17 @@
  opts['pushmode'] = True   else:   opts['pushmode'] = False - run(**opts) + run(ui, *pats, **opts)   -def update(ui, **opts): +def update(ui, *pats, **opts):   """update/checkout tool"""   from hggtk.update import run - run(**opts) + run(ui, *pats, **opts)    def vdiff(ui, *pats, **opts):   """launch configured visual diff tool"""   from hggtk.visdiff import run - run(pats, **opts) + run(ui, *pats, **opts)    ### help management, adapted from mercurial.commands.help_()  def help_(ui, name=None, with_version=False):
Change 1 of 3 Show Entire File hggtk/​history.py Stacked
 
634
635
636
637
 
638
639
640
 
651
652
653
654
 
655
656
657
 
726
727
728
729
730
731
732
733
734
735
 
736
737
738
739
740
 
 
 
741
742
743
744
 
745
746
747
748
749
750
751
752
753
754
755
756
757
758
 
634
635
636
 
637
638
639
640
 
651
652
653
 
654
655
656
657
 
726
727
728
 
 
 
 
 
 
 
729
730
731
 
 
 
732
733
734
735
736
 
 
737
738
739
740
741
742
 
 
 
 
 
 
 
 
 
@@ -634,7 +634,7 @@
  from update import UpdateDialog   rev = self.currow[treemodel.REVID]   parents = [x.node() for x in self.repo.changectx(None).parents()] - dialog = UpdateDialog(self.cwd, rev) + dialog = UpdateDialog(rev)   dialog.set_transient_for(self)   dialog.show_all()   dialog.set_notify_func(self.checkout_completed, parents) @@ -651,7 +651,7 @@
  rev = self.currow[treemodel.REVID]   parents = [x.node() for x in self.repo.changectx(None).parents()]   node = short(self.repo.changelog.node(rev)) - dialog = MergeDialog(self.repo.root, self.cwd, node) + dialog = MergeDialog(self.repo.root, node)   dialog.set_transient_for(self)   dialog.show_all()   dialog.set_notify_func(self.merge_completed, parents) @@ -726,33 +726,17 @@
  self._menu.get_children()[0].activate()   return True   -def run(root='', cwd='', files=[], limit='', **opts): - u = ui.ui() - u.updateopts(debug=False, traceback=False) - repo = hg.repository(u, path=root) - - files = [util.canonpath(root, cwd, f) for f in files] - +def run(ui, *pats, **opts):   cmdoptions = {   'follow':False, 'follow-first':False, 'copies':False, 'keyword':[], - 'limit':limit, 'rev':[], 'removed':False, 'no_merges':False, 'date':None, - 'only_merges':None, 'prune':[], 'git':False, 'verbose':False, - 'include':[], 'exclude':[] + 'limit':limit, 'rev':[], 'removed':False, 'no_merges':False, + 'date':None, 'only_merges':None, 'prune':[], 'git':False, + 'verbose':False, 'include':[], 'exclude':[]   }   - dialog = GLog(u, repo, cwd, files, cmdoptions, True) - + dialog = GLog(u, None, None, pats, cmdoptions, True)   gtk.gdk.threads_init()   gtk.gdk.threads_enter()   dialog.display()   gtk.main()   gtk.gdk.threads_leave() - -if __name__ == "__main__": - import sys - opts = {} - path = len(sys.argv) > 1 and sys.argv[1] or os.getcwd() - opts['root'] = os.path.abspath(path) - opts['files'] = [opts['root']] - opts['limit'] = '' - run(**opts)
 
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
 
249
250
251
252
253
254
255
256
257
 
232
233
234
 
 
 
 
 
 
 
 
 
235
236
237
 
240
241
242
 
 
 
 
 
 
@@ -232,15 +232,6 @@
  return True   return False   -def run(root='', files=[], **opts): - dialog = HistoryDialog(root=root, files=files) - dialog.show_all() - dialog.connect('response', gtk.main_quit) - gtk.gdk.threads_init() - gtk.gdk.threads_enter() - gtk.main() - gtk.gdk.threads_leave() -  def select(root='', files=[]):   dialog = HistoryDialog(root=root, files=files, select=True)   resp = dialog.run() @@ -249,9 +240,3 @@
  rev = dialog.selected[1]   dialog.hide()   return rev - -if __name__ == "__main__": - import sys - opts = {} - opts['root'] = len(sys.argv) > 1 and sys.argv[1:] or [] - run(**opts)
 
230
231
232
233
234
235
236
237
238
239
240
241
242
243
 
230
231
232
 
 
 
 
 
 
 
 
 
 
 
@@ -230,14 +230,3 @@
  dlg = CmdDialog(['hg', 'help', 'dates'], False)   dlg.run()   dlg.hide() - -if __name__ == "__main__": - # this dialog is not designed for standalone use - # this is for debugging only - dialog = FilterDialog() - dialog.show_all() - dialog.connect('response', gtk.main_quit) - gtk.gdk.threads_init() - gtk.gdk.threads_enter() - gtk.main() - gtk.gdk.threads_leave()
Change 1 of 5 Show Entire File hggtk/​merge.py Stacked
 
11
12
13
14
15
16
17
 
18
19
20
21
 
22
23
24
 
28
29
30
31
32
 
33
34
35
 
125
126
127
128
 
129
130
131
 
207
208
209
210
 
211
212
213
 
231
232
233
234
 
235
236
237
238
239
240
 
 
241
242
243
244
245
246
247
248
249
250
251
252
 
11
12
13
 
14
15
16
17
18
19
20
 
21
22
23
24
 
28
29
30
 
 
31
32
33
34
 
124
125
126
 
127
128
129
130
 
206
207
208
 
209
210
211
212
 
230
231
232
 
233
234
235
236
237
 
 
238
239
240
241
242
243
244
245
 
 
 
 
 
 
@@ -11,14 +11,14 @@
 from mercurial.node import *  from mercurial.i18n import _  from mercurial import util, hg, ui -from hglib import RepoError  from hgcmd import CmdDialog  from shlib import set_tortoise_icon, shell_notify  import histselect +import hglib    class MergeDialog(gtk.Window):   """ Dialog to merge revisions of a Mercurial repo """ - def __init__(self, root='', cwd='', rev=''): + def __init__(self, root='', rev=''):   """ Initialize the Dialog """   gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)   @@ -28,8 +28,7 @@
  if root: title += " - %s" % root   self.set_title(title)   - self.root = root - self.cwd = cwd or root + self.root = root or hglib.rootpath()   self.rev = rev   self.repo = None   self.notify_func = None @@ -125,7 +124,7 @@
  # FIXME: force hg to refresh parents info   del self.repo   self.repo = hg.repository(ui.ui(), path=self.root) - except RepoError: + except hglib.RepoError:   return None     # populate parent rev data @@ -207,7 +206,7 @@
  dlg.hide()   if self.notify_func:   self.notify_func(self.notify_args) - shell_notify([self.cwd]) + shell_notify([self.root])   self._refresh()     def _do_merge(self): @@ -231,22 +230,16 @@
  dlg = CmdDialog(cmdline)   dlg.run()   dlg.hide() - shell_notify([self.cwd]) + shell_notify([self.root])   if self.notify_func:   self.notify_func(self.notify_args)   self._refresh()   -def run(root='', cwd='', rev='', **opts): - dialog = MergeDialog(root, cwd, rev) +def run(ui, *pats, **opts): + dialog = MergeDialog()   dialog.connect('destroy', gtk.main_quit)   dialog.show_all()   gtk.gdk.threads_init()   gtk.gdk.threads_enter()   gtk.main()   gtk.gdk.threads_leave() - -if __name__ == "__main__": - import sys - opts = {} - opts['root'] = len(sys.argv) > 1 and sys.argv[1] or '' - run(**opts)
Change 1 of 3 Show Entire File hggtk/​recovery.py Stacked
 
15
16
17
18
 
19
20
21
22
23
 
24
25
26
27
28
29
 
30
31
32
 
129
130
131
132
 
133
134
135
 
208
209
210
211
212
 
 
213
214
215
216
217
218
219
220
221
 
15
16
17
 
18
19
20
21
22
 
23
24
25
26
27
 
 
28
29
30
31
 
128
129
130
 
131
132
133
134
 
207
208
209
 
 
210
211
212
213
214
215
216
 
 
 
 
@@ -15,18 +15,17 @@
 from mercurial.i18n import _  from mercurial import hg, ui, util  from dialog import error_dialog, question_dialog -from hglib import HgThread, toutf, RepoError +from hglib import HgThread, toutf, RepoError, rootpath  from shlib import set_tortoise_icon, shell_notify  import gtklib    class RecoveryDialog(gtk.Window): - def __init__(self, cwd='', root=''): + def __init__(self):   """ Initialize the Dialog. """   gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)     set_tortoise_icon(self, 'general.ico') - self.root = root - self.cwd = cwd + self.root = rootpath()   self.selected_path = None   self.hgthread = None   self.connect('delete-event', self._delete) @@ -129,7 +128,7 @@
  def _notify(self, ret, *args):   import time   time.sleep(0.5) # give fs some time to pick up changes - shell_notify([self.cwd]) + shell_notify([self.root])     def _rollback_clicked(self, toolbutton, data=None):   response = question_dialog(self, _('Rollback repository'), @@ -208,14 +207,10 @@
  self.write(_('[command interrupted]'))   return False # Stop polling this function   -def run(cwd='', root='', **opts): - dialog = RecoveryDialog(cwd, root) +def run(ui, *pats, **opts): + dialog = RecoveryDialog(root)   dialog.show_all()   gtk.gdk.threads_init()   gtk.gdk.threads_enter()   gtk.main()   gtk.gdk.threads_leave() - -if __name__ == "__main__": - import sys - run(*sys.argv[1:])
Change 1 of 2 Show Entire File hggtk/​rename.py Stacked
 
14
15
16
17
18
 
19
20
21
22
 
 
23
24
25
 
76
77
78
79
80
81
82
83
84
85
86
87
88
 
14
15
16
 
 
17
18
19
 
 
20
21
22
23
24
 
75
76
77
 
 
 
 
 
 
 
 
 
 
@@ -14,12 +14,11 @@
 from hglib import toutf, fromutf, rootpath, RepoError  import gtklib   -def run(files = [], root='', cwd='', **opts): - if cwd: os.chdir(cwd) +def run(ui, *pats, **opts):   fname, target = '', ''   try: - fname = files[0] - target = files[1] + fname = pats[0] + target = pats[1]   except IndexError:   pass   from dialog import entry_dialog @@ -76,13 +75,3 @@
  error_dialog(None, _('rename error'), textout)   elif toquit:   gtk.main_quit() - -if __name__ == "__main__": - if '--detect' in sys.argv: - opts['root'] = rootpath() - opts['detect'] = True - elif len(sys.argv) == 3: - opts = {'files' : sys.argv[1:2] } - else: - opts = {'files' : [sys.argv[1]] } - run(**opts)
Change 1 of 4 Show Entire File hggtk/​serve.py Stacked
 
27
28
29
30
 
31
32
33
 
44
45
46
47
 
48
49
50
51
52
53
54
 
202
203
204
205
 
206
207
208
 
344
345
346
347
348
349
 
 
350
351
352
353
354
355
356
357
358
359
360
361
362
363
 
27
28
29
 
30
31
32
33
 
44
45
46
 
47
48
 
 
 
49
50
51
 
199
200
201
 
202
203
204
205
 
341
342
343
 
 
 
344
345
346
347
348
349
350
 
 
 
 
 
 
 
 
 
@@ -27,7 +27,7 @@
 gservice = None  class ServeDialog(gtk.Window):   """ Dialog to run web server""" - def __init__(self, cwd='', root='', webdir_conf=''): + def __init__(self, webdir_conf):   """ Initialize the Dialog """   gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)   @@ -44,11 +44,8 @@
  commands.table.update(thg_serve_cmd)     self._url = None - self._root = root + self._root = hglib.rootpath()   self._webdirconf = webdir_conf - if cwd: - os.chdir(cwd) -   self._get_config()   self.set_default_size(500, 300)   @@ -202,7 +199,7 @@
    def _on_conf_clicked(self, *args):   from thgconfig import ConfigDialog - dlg = ConfigDialog(self._root, True) + dlg = ConfigDialog(True)   dlg.show_all()   dlg.focus_field('web.name')   dlg.run() @@ -344,20 +341,10 @@
  ('', 'certificate', '', _('SSL certificate file'))],   _('hg serve [OPTION]...'))}   - -def run(cwd='', root='', webdir_conf='', **opts): - dialog = ServeDialog(cwd, root, webdir_conf) +def run(ui, *pats, **opts): + dialog = ServeDialog(opts.get('webdir_conf'))   dialog.show_all()   gtk.gdk.threads_init()   gtk.gdk.threads_enter()   gtk.main()   gtk.gdk.threads_leave() - -if __name__ == "__main__": - opts = {} - opts['cwd'] = os.getcwd() - if len(sys.argv) == 2 and sys.argv[1].endswith('.conf'): - opts['webdir_conf'] = sys.argv[1] - else: - opts['root'] = len(sys.argv) > 1 and sys.argv[1] or '' - run(**opts)
Change 1 of 2 Show Entire File hggtk/​status.py Stacked
 
9
10
11
12
13
14
15
 
1311
1312
1313
1314
1315
1316
1317
1318
1319
 
 
1320
1321
1322
1323
1324
1325
1326
1327
1328
 
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
 
9
10
11
 
12
13
14
 
1310
1311
1312
 
 
 
 
 
 
1313
1314
1315
1316
1317
1318
1319
1320
 
 
 
1321
1322
1323
1324
1325
1326
 
 
 
 
 
 
@@ -9,7 +9,6 @@
   import os  import cStringIO -  import pygtk  import gtk  import pango @@ -1311,29 +1310,17 @@
  menu.get_children()[0].activate()   return True   -def run(root='', cwd='', files=[], **opts): - u = ui.ui() - u.updateopts(debug=False, traceback=False, quiet=True) - repo = hg.repository(u, path=root) - - showclean = files and True or False +def run(ui, *pats, **opts): + showclean = pats and True or False   cmdoptions = {   'all':False, 'clean':showclean, 'ignored':False, 'modified':True,   'added':True, 'removed':True, 'deleted':True, 'unknown':True, 'rev':[],   'exclude':[], 'include':[], 'debug':True, 'verbose':True, 'git':False,   'check':True   } - - dialog = GStatus(u, repo, cwd, files, cmdoptions, True) - + dialog = GStatus(ui, None, None, pats, cmdoptions, True)   gtk.gdk.threads_init()   gtk.gdk.threads_enter()   dialog.display()   gtk.main()   gtk.gdk.threads_leave() - -if __name__ == "__main__": - import sys - opts = {} - opts['root'] = len(sys.argv) > 1 and sys.argv[1] or '' - run(**opts)
Change 1 of 5 Show Entire File hggtk/​synch.py Stacked
 
20
21
22
23
 
24
25
26
27
28
29
 
30
31
32
 
43
44
45
46
 
47
48
49
 
300
301
302
303
 
304
305
306
 
446
447
448
449
 
450
451
452
 
617
618
619
620
621
 
 
622
623
624
625
626
627
628
629
 
20
21
22
 
23
24
25
26
27
 
 
28
29
30
31
 
42
43
44
 
45
46
47
48
 
299
300
301
 
302
303
304
305
 
445
446
447
 
448
449
450
451
 
616
617
618
 
 
619
620
621
622
623
624
625
 
 
 
@@ -20,13 +20,12 @@
 import urllib    class SynchDialog(gtk.Window): - def __init__(self, cwd='', root = '', repos=[], pushmode=False): + def __init__(self, repos=[], pushmode=False):   """ Initialize the Dialog. """   gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)     shlib.set_tortoise_icon(self, 'menusynch.ico') - self.root = root - self.cwd = cwd + self.root = rootpath()   self.selected_path = None   self.hgthread = None   @@ -43,7 +42,7 @@
  extensions.load(self.ui, 'fetch', None)   extensions.load(self.ui, 'rebase', None)   - name = self.repo.ui.config('web', 'name') or os.path.basename(root) + name = self.repo.ui.config('web', 'name') or os.path.basename(self.root)   self.set_title(_('TortoiseHg Synchronize - ') + name)     self.connect('delete-event', self._delete) @@ -300,7 +299,7 @@
  from history import GLog   countpulled = len(self.repo.changelog) - self.origchangecount   opts = {'limit' : countpulled } - dialog = GLog(self.ui, self.repo, self.cwd, [], opts, False) + dialog = GLog(self.ui, None, None, [], opts, False)   dialog.display()     def _update_to_tip(self, button): @@ -446,7 +445,7 @@
  newpath = None   break   from thgconfig import ConfigDialog - dlg = ConfigDialog(self.root, True) + dlg = ConfigDialog(True)   dlg.show_all()   if newpath:   dlg.new_path(newpath) @@ -617,13 +616,10 @@
  value = getattr(getattr(self, member), 'get_%s'%attr)()   set_value(key, value)   -def run(cwd='', root='', files=[], pushmode=False, **opts): - dialog = SynchDialog(cwd, root, files, pushmode) +def run(ui, *pats, **opts): + dialog = SynchDialog(pats, opts.get('pushmode') or False)   dialog.show_all()   gtk.gdk.threads_init()   gtk.gdk.threads_enter()   gtk.main()   gtk.gdk.threads_leave() - -if __name__ == "__main__": - run(**{})
Change 1 of 1 Show Entire File hggtk/​tagadd.py Stacked
 
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
 
236
237
238
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
@@ -236,24 +236,3 @@
  message = _('Removed tag %s') % name   r = self.repo.changectx(nullid).node()   self.repo.tag(name, r, message, local, user, date) - -def run(root='', tag='', rev='', **opts): - dialog = TagAddDialog(root, tag, rev) - - # the dialog maybe called by another window/dialog, so we only - # enable the close dialog handler if dialog is run as mainapp - dialog.connect('destroy', gtk.main_quit) - - dialog.show_all() - gtk.gdk.threads_init() - gtk.gdk.threads_enter() - gtk.main() - gtk.gdk.threads_leave() - -if __name__ == "__main__": - import sys - opts = {} - opts['root'] = len(sys.argv) > 1 and sys.argv[1] or '' - #opts['tag'] = 'mytag' - #opts['rev'] = '-1' - run(**opts)
 
13
14
15
16
 
17
18
19
 
337
338
339
340
341
342
343
 
344
345
346
347
348
349
350
 
351
352
353
 
990
991
992
993
994
 
 
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
 
13
14
15
 
16
17
18
19
 
337
338
339
 
 
 
 
340
341
342
343
344
345
346
 
347
348
349
350
 
987
988
989
 
 
990
991
992
993
 
 
 
994
995
996
997
 
 
 
 
 
 
 
 
 
 
 
@@ -13,7 +13,7 @@
 from mercurial.i18n import _  from mercurial import hg, ui, util, url  from dialog import error_dialog, question_dialog -from hglib import RepoError, toutf, fromutf +from hglib import RepoError, toutf, fromutf, rootpath  import shlib  import iniparse   @@ -337,17 +337,14 @@
  return ret    class ConfigDialog(gtk.Dialog): - def __init__(self, root='', - configrepo=False, - focusfield=None, - newpath=None): + def __init__(self, configrepo=False, focusfield=None, newpath=None):   """ Initialize the Dialog. """   gtk.Dialog.__init__(self, parent=None, flags=0,   buttons=(gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE))     self.ui = ui.ui()   try: - repo = hg.repository(self.ui, path=root) + repo = hg.repository(self.ui, path=rootpath())   except RepoError:   repo = None   if configrepo: @@ -990,25 +987,11 @@
  self.dirty = False   return 0   -def run(root='', cmdline=[], files=[], **opts): - dialog = ConfigDialog(root, bool(files)) +def run(ui, *pats, **opts): + dialog = ConfigDialog(opts.get('repomode') or False)   dialog.show_all()   dialog.connect('response', gtk.main_quit) - if '--focusfield' in cmdline: - field = cmdline[cmdline.index('--focusfield')+1] - dialog.focus_field(field)   gtk.gdk.threads_init()   gtk.gdk.threads_enter()   gtk.main()   gtk.gdk.threads_leave() - -if __name__ == "__main__": - # example command lines - # python hggtk/thgconfig.py --focusfield ui.editor - # python hggtk/thgconfig.py --focusfield paths.default --configrepo - import sys - opts = {} - opts['root'] = os.getcwd() - opts['cmdline'] = sys.argv - opts['files'] = '--configrepo' in sys.argv and ['.'] or [] - run(**opts)
 
208
209
210
 
 
 
 
 
 
 
 
 
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
 
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
 
 
 
 
 
208
209
210
211
212
213
214
215
216
217
218
219
220
 
 
 
 
 
 
 
 
 
 
 
 
 
 
221
222
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
223
224
225
226
@@ -208,40 +208,19 @@
  self._activate_shelve_buttons(True)   return True   +def run(_ui, *pats, **opts): + cmdoptions = { + 'user':opts.get('user', ''), 'date':opts.get('date', ''), + 'logfile':'', 'message':'', + 'modified':True, 'added':True, 'removed':True, 'deleted':True, + 'unknown':True, 'ignored':False, + 'exclude':[], 'include':[], + 'check': True, 'git':False, 'addremove':False, + }   -def launch(root='', files=[], cwd='', main=True): - u = ui.ui() - u.updateopts(debug=False, traceback=False) - repo = hg.repository(u, path=root) - - cmdoptions = { - 'user':'', 'date':'', - 'modified':True, 'added':True, 'removed':True, 'deleted':True, - 'unknown':False, 'ignored':False, - 'exclude':[], 'include':[], - 'check': True, 'git':False, 'logfile':'', 'addremove':False, - } - - dialog = GShelve(u, repo, cwd, files, cmdoptions, main) + dialog = GShelve(_ui, None, None, pats, cmdoptions, True)   dialog.display() - return dialog - -def run(root='', files=[], cwd='', **opts): - # If no files or directories were selected, take current dir - # TODO: Not clear if this is best; user may expect repo wide - if not files and cwd: - files = [cwd] - if launch(root, files, cwd, True): - gtk.gdk.threads_init() - gtk.gdk.threads_enter() - gtk.main() - gtk.gdk.threads_leave() - -if __name__ == "__main__": - import sys - from hglib import rootpath - - opts = {} - opts['cwd'] = len(sys.argv) > 1 and sys.argv[1] or os.getcwd() - opts['root'] = rootpath(opts['cwd']) - run(**opts) + gtk.gdk.threads_init() + gtk.gdk.threads_enter() + gtk.main() + gtk.gdk.threads_leave()
Change 1 of 3 Show Entire File hggtk/​update.py Stacked
 
17
18
19
20
 
21
22
23
24
25
 
26
27
28
 
33
34
35
36
 
37
38
39
 
179
180
181
182
 
183
184
185
 
 
186
187
188
189
190
191
192
193
194
195
196
197
198
 
17
18
19
 
20
21
22
23
 
 
24
25
26
27
 
32
33
34
 
35
36
37
38
 
178
179
180
 
181
182
 
 
183
184
185
186
187
188
189
190
 
 
 
 
 
 
 
@@ -17,12 +17,11 @@
   class UpdateDialog(gtk.Window):   """ Dialog to update Mercurial repo """ - def __init__(self, cwd='', rev=None): + def __init__(self, rev=None):   """ Initialize the Dialog """   gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)   set_tortoise_icon(self, 'menucheckout.ico') - self.cwd = cwd or os.getcwd() - self.root = rootpath(self.cwd) + self.root = rootpath()   self.rev = rev   self.notify_func = None   @@ -33,7 +32,7 @@
  return None     # set dialog title - title = "hg update - %s" % toutf(self.cwd) + title = "hg update - %s" % toutf(self.root)   self.set_title(title)     self._create() @@ -179,20 +178,13 @@
  if self.notify_func:   self.notify_func(self.notify_args)   self._refresh() - shell_notify([self.cwd]) + shell_notify([self.root])   -def run(cwd='', rev=None, **opts): - dialog = UpdateDialog(cwd, rev) +def run(ui, *pats, **opts): + dialog = UpdateDialog()   dialog.connect('destroy', gtk.main_quit)   dialog.show_all()   gtk.gdk.threads_init()   gtk.gdk.threads_enter()   gtk.main()   gtk.gdk.threads_leave() - -if __name__ == "__main__": - import sys - opts = {} - opts['cwd'] = len(sys.argv) > 1 and sys.argv[1] or '' - #opts['rev'] = 123 - run(**opts)
Change 1 of 3 Show Entire File hggtk/​visdiff.py Stacked
 
47
48
49
50
 
51
52
53
 
121
122
123
124
 
125
126
127
 
256
257
258
259
260
 
 
 
 
 
 
261
262
263
 
47
48
49
 
50
51
52
53
 
121
122
123
 
124
125
126
127
 
256
257
258
 
 
259
260
261
262
263
264
265
266
267
@@ -47,7 +47,7 @@
   class FileSelectionDialog(gtk.Dialog):   'Dialog for selecting visual diff candidates' - def __init__(self, pats, opts): + def __init__(self, canonpats, opts):   'Initialize the Dialog'   gtk.Dialog.__init__(self)   self.set_title('Visual Diffs') @@ -121,7 +121,7 @@
  cwd = os.getcwd()   try:   os.chdir(repo.root) - self.find_files(repo, pats, opts, model) + self.find_files(repo, canonpats, opts, model)   finally:   os.chdir(cwd)   else: @@ -256,8 +256,12 @@
  Prompt(_('Tool launch failure'),   _('%s : %s') % (self.diffpath, str(e)), None).run()   -def run(pats, **opts): - dialog = FileSelectionDialog(pats, opts) +def run(ui, *pats, **opts): + root = rootpath() + canonpats = [] + for f in pats: + canonpats.append(util.canonpath(root, os.getcwd(), f)) + dialog = FileSelectionDialog(canonpats, opts)   dialog.connect('destroy', gtk.main_quit)   dialog.show_all()   gtk.gdk.threads_init()