Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 0.9, 0.9.1, and 0.9.1.1

history: add dialog for selecting a revision

Changeset fb27c925ab8b

Parent 7a580a1a2d7b

by Adrian Buehlmann

Changes to 2 files · Browse files at fb27c925ab8b Showing diff from parent 7a580a1a2d7b Diff from another changeset...

Change 1 of 1 Show Entire File hggtk/​gorev.py Stacked
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
@@ -0,0 +1,57 @@
+# gorev.py - TortoiseHg's dialog for selecting a revision +# +# Copyright 2007 TK Soh <teekaysoh@gmail.com> +# Copyright 2007 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 +import gtk +import gobject +import mercurial + +from thgutil.i18n import _ +from hggtk import gtklib, gdialog + + +class GotoRevDialog(gtk.Dialog): + 'Dialog for selecting a revision' + def __init__(self, gotofunc): + super(GotoRevDialog, self).__init__(flags=gtk.DIALOG_MODAL) + gtklib.set_tortoise_icon(self, 'menulog.ico') + gtklib.set_tortoise_keys(self) + + self._btn_goto = gtk.Button(_('Select')) + self._btn_goto.connect('clicked', self._btn_goto_clicked) + self.action_area.pack_end(self._btn_goto) + + self.set_title(_('Select Revision')) + + self.gotofunc = gotofunc + + self.tips = gtk.Tooltips() + + hbox = gtk.HBox() + self.revEntry = gtk.Entry() + self.revEntry.connect('activate', self._btn_goto_clicked) + hbox.pack_start(self.revEntry, True, True, 4) + eventbox = gtk.EventBox() + eventbox.add(hbox) + self.tips.set_tip( + eventbox, _('revision number, changeset ID, branch or tag')) + self.vbox.pack_start(eventbox, False, False, 4) + + self.revEntry.grab_focus() + + self.show_all() + + def _btn_goto_clicked(self, button, data=None): + try: + revision = self.revEntry.get_text() + if self.gotofunc: + self.gotofunc(revision) + except mercurial.error.RepoError, e: + gdialog.Prompt(_('Invalid Revision'), str(e), self).run() + self.revEntry.grab_focus() + return
Change 1 of 4 Show Entire File hggtk/​history.py Stacked
 
20
21
22
23
 
24
25
26
 
65
66
67
68
 
 
 
 
 
 
69
70
71
 
452
453
454
 
455
456
457
 
540
541
542
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
543
544
545
 
20
21
22
 
23
24
25
26
 
65
66
67
 
68
69
70
71
72
73
74
75
76
 
457
458
459
460
461
462
463
 
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
@@ -20,7 +20,7 @@
 from hggtk.logview import treemodel  from hggtk.logview.treeview import TreeView as LogTreeView   -from hggtk import gdialog, gtklib, hgcmd, datamine, logfilter +from hggtk import gdialog, gtklib, hgcmd, datamine, logfilter, gorev  from hggtk import backout, status, hgemail, tagadd, update, merge, archive  from hggtk import changeset   @@ -65,7 +65,12 @@
  _('_DataMine'),   self.datamine_clicked,   tip=_('Search Repository History')), - gtk.SeparatorToolItem() + gtk.SeparatorToolItem(), + self.make_toolbutton(gtk.STOCK_JUMP_TO, + _('Select Revision'), + self.goto_clicked, + tip=_('Select revision')), + gtk.SeparatorToolItem(),   ] + self.changeview.get_tbbuttons()   if not self.opts.get('from-synch'):   self.synctb = self.make_toolbutton(gtk.STOCK_NETWORK, @@ -452,6 +457,7 @@
    def get_body(self):   self.filter_dialog = None + self.gorev_dialog = None   self._menu = self.tree_context_menu()   self._menu2 = self.tree_diff_context_menu()   @@ -540,6 +546,37 @@
  parent = self.repo['.'].rev()   self.graphview.set_revision_id(parent)   + def goto_clicked(self, toolbutton, data=None): + if self.gorev_dialog: + self.gorev_dialog.show() + self.gorev_dialog.present() + else: + self.show_goto_dialog() + + def show_goto_dialog(self): + 'Launch a modeless goto revision dialog' + def goto_rev_(rev): + self.goto_rev(rev) + + def close_filter_dialog(dialog, response_id): + dialog.hide() + + def delete_event(dialog, event, data=None): + # return True to prevent the dialog from being destroyed + return True + + dlg = gorev.GotoRevDialog(goto_rev_) + dlg.connect('response', close_filter_dialog) + dlg.connect('delete-event', delete_event) + dlg.set_modal(False) + dlg.show() + + self.gorev_dialog = dlg + + def goto_rev(self, revision): + rid = self.repo[revision].rev() + self.graphview.set_revision_id(rid, load=True) +   def strip_rev(self, menuitem):   rev = self.currow[treemodel.REVID]   res = gdialog.Confirm(_('Confirm Strip Revision(s)'), [], self,