# HG changeset patch
# User Adrian Buehlmann <adr...@cadifra.com>
# Date 1255558750 -7200
# Node ID 7fbd6594aa3f14aae28edf5f1c5f6ff092ad8453
# Parent  3c6800bfc863a9ec3f8dde48438044586b780927
changeset: add "Diff to second Parent" checkbutton

The checkbutton is placed at the bottom of the files pane and
only visible if a merge changeset has been selected.

Removing the previous "Other Parent" button and menu entry
in log viewer.

diff --git a/tortoisehg/hgtk/changeset.py b/tortoisehg/hgtk/changeset.py
--- a/tortoisehg/hgtk/changeset.py
+++ b/tortoisehg/hgtk/changeset.py
@@ -27,6 +27,7 @@ class ChangeSet(gdialog.GDialog):
         self.stbar = stbar
         self.glog_parent = None
         self.bfile = None
+        self.nothing_loaded = True
 
     def get_title(self):
         title = _('%s changeset ') % self.get_reponame()
@@ -41,24 +42,15 @@ class ChangeSet(gdialog.GDialog):
         return 'menushowchanged.ico'
 
     def get_tbbuttons(self):
-        self.parent_toggle = gtk.ToggleToolButton(gtk.STOCK_UNDO)
-        self.parent_toggle.set_use_underline(True)
-        self.parent_toggle.set_label(_('_Other Parent'))
-        self.parent_toggle.set_tooltip(self.tooltips, _('diff other parent'))
-        self.parent_toggle.set_sensitive(False)
-        self.parent_toggle.set_active(False)
-        self.parent_toggle.connect('toggled', self.parent_toggled)
-        return [self.parent_toggle]
+        return []
 
     def parent_toggled(self, button):
-        self.glog_parent.cmd_set_active(
-            'other-parent', self.parent_toggle.get_active())
         self.load_details(self.currev)
 
     def prepare_display(self):
         self.currow = None
         self.graphview = None
-        self.glog_parent = None
+        self.glog_parent = NoneY
         node0, node1 = cmdutil.revpair(self.repo, self.opts.get('rev'))
         self.load_details(self.repo.changelog.rev(node0))
 
@@ -81,28 +73,33 @@ class ChangeSet(gdialog.GDialog):
         if not ctx:
             return
 
+        if self.nothing_loaded:
+            self.other_parent_box.pack_start(
+                self.other_parent_checkbutton, False, False)
+            self.nothing_loaded = False
+
         parents = ctx.parents()
         title = self.get_title()
         if len(parents) == 2:
-            self.parent_toggle.set_sensitive(True)
-            if self.parent_toggle.get_active():
+            self.other_parent_box.show_all()
+            if self.other_parent_checkbutton.get_active():
                 title += ':' + str(parents[1].rev())
             else:
                 title += ':' + str(parents[0].rev())
         else:
-            self.parent_toggle.set_sensitive(False)
-            if self.parent_toggle.get_active():
+            self.other_parent_box.hide_all()
+            if self.other_parent_checkbutton.get_active():
                 # Parent button must be pushed out, but this
                 # will cause load_details to be called again
                 # so we exit out to prevent recursion.
-                self.parent_toggle.set_active(False)
+                self.other_parent_checkbutton.set_active(False)
                 return
 
         if self.clipboard:
             self.clipboard.set_text(str(ctx))
 
         self.set_title(title)
-        if self.parent_toggle.get_active():
+        if self.other_parent_checkbutton.get_active():
             parent = parents[1].node()
         elif parents:
             parent = parents[0].node()
@@ -271,7 +268,7 @@ class ChangeSet(gdialog.GDialog):
 
         ismerge = (len(ctx.parents()) == 2)
 
-        if ismerge and self.parent_toggle.get_active():
+        if ismerge and self.other_parent_checkbutton.get_active():
             parentindex = 1 
         else:
             parentindex = 0
@@ -579,7 +576,17 @@ class ChangeSet(gdialog.GDialog):
         scroller = gtk.ScrolledWindow()
         scroller.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
         scroller.add(filelist_tree)
-        list_frame.add(scroller)
+        flbox = gtk.VBox()
+        flbox.pack_start(scroller)
+        list_frame.add(flbox)
+
+        self.other_parent_box = gtk.HBox()
+        flbox.pack_start(self.other_parent_box, False, False)
+
+        btn = gtk.CheckButton(_('Diff to second Parent'))
+        btn.connect('toggled', self.parent_toggled)
+        # don't pack btn yet to keep it initially invisible
+        self.other_parent_checkbutton = btn
 
         self._hpaned = gtk.HPaned()
         self._hpaned.pack1(list_frame, True, True)
diff --git a/tortoisehg/hgtk/history.py b/tortoisehg/hgtk/history.py
--- a/tortoisehg/hgtk/history.py
+++ b/tortoisehg/hgtk/history.py
@@ -158,10 +158,6 @@ class GLog(gdialog.GDialog):
                 func=self.toggle_show_filterbar, check=self.show_filterbar),
             ] + mq_item + [
             dict(text='----'),
-            dict(text=_('Other Parent'), name='other-parent', 
-                ascheck=True, check=False,  sensitive=False,
-                func=self.parent_toggled),
-            dict(text='----'),
             dict(text=_('Refresh'), func=refresh, args=[False],
                 icon=gtk.STOCK_REFRESH),
             dict(text=_('Reset Marks'), func=refresh, args=[True],
@@ -213,10 +209,6 @@ class GLog(gdialog.GDialog):
                 ])
             ]
 
-    def parent_toggled(self, item):
-        self.changeview.parent_toggle.set_active(item.get_active())
-        self.changeview.parent_toggled(None)
-
     def synch_clicked(self, toolbutton, data):
         def sync_closed(dialog):
             self.cmd_set_sensitive('synchronize', True)
@@ -287,10 +279,6 @@ class GLog(gdialog.GDialog):
             self.lastrevid = self.currevid
             self.changeview.opts['rev'] = [str(self.currevid)]
             self.changeview.load_details(self.currevid)
-            btn = self.changeview.parent_toggle
-            cmd = 'other-parent'
-            self.cmd_set_sensitive(cmd, btn.get_property('sensitive'))
-            self.cmd_set_active(cmd, btn.get_active())
         return False
 
     def revisions_loaded(self, graphview):
@@ -1625,7 +1613,7 @@ class GLog(gdialog.GDialog):
         rev = self.currevid
         statopts = self.merge_opts(commands.table['^status|st'][1],
                 ('include', 'exclude', 'git'))
-        if self.changeview.parent_toggle.get_active():
+        if self.changeview.other_parent_checkbutton.get_active():
             parent = self.repo[rev].parents()[1].rev()
         else:
             parent = self.repo[rev].parents()[0].rev()

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Tortoisehg-develop mailing list
Tortoisehg-develop@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tortoisehg-develop

Reply via email to