# HG changeset patch
# User Adrian Buehlmann <adr...@cadifra.com>
# Date 1253526067 -7200
# Node ID 0e85f465d8b3f972b99a3df03788fb445e83e234
# Parent  5765a07702fd4bc2924fc1ca430760a335c5c33b
status: refactoring: assign internal names to diff_notbook pages

This allows to refer to tab pages by names internally instead of
by numbers

diff --git a/tortoisehg/hgtk/status.py b/tortoisehg/hgtk/status.py
--- a/tortoisehg/hgtk/status.py
+++ b/tortoisehg/hgtk/status.py
@@ -316,6 +316,7 @@ class GStatus(gdialog.GDialog):
 
         self.diff_notebook = gtk.Notebook()
         self.diff_notebook.set_tab_pos(gtk.POS_BOTTOM)
+        self.diff_notebook_pages = {}
 
         self.difffont = pango.FontDescription(self.fontlist)
 
@@ -327,7 +328,7 @@ class GStatus(gdialog.GDialog):
         scroller = gtk.ScrolledWindow()
         scroller.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
         scroller.add(self.diff_text)
-        self.diff_notebook.append_page(scroller, gtk.Label(_('Text Diff')))
+        self.append_page('text-diff', scroller, gtk.Label(_('Text Diff')))
 
         if self.merging:
             difftree = None
@@ -383,8 +384,8 @@ class GStatus(gdialog.GDialog):
             scroller = gtk.ScrolledWindow()
             scroller.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
             scroller.add(difftree)
-            self.diff_notebook.append_page(
-                scroller, gtk.Label(_('Hunk Selection')))
+            self.append_page('hunk-selection', scroller, 
+                gtk.Label(_('Hunk Selection')))
 
             # Add a page for commit preview
             self.preview_text = gtk.TextView()
@@ -395,7 +396,8 @@ class GStatus(gdialog.GDialog):
             scroller.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
             scroller.add(self.preview_text)
             self.preview_tab_name_label = 
gtk.Label(self.get_preview_tab_name())
-            self.diff_notebook.append_page(scroller, 
self.preview_tab_name_label)
+            self.append_page('commit-preview', scroller, 
+                self.preview_tab_name_label)
 
         diff_frame.add(self.diff_notebook)
 
@@ -417,6 +419,10 @@ class GStatus(gdialog.GDialog):
                                    sel, difftree)
         return self.diffpane
 
+    def append_page(self, name, child, label):
+        num = self.diff_notebook.append_page(child,  label)
+        self.diff_notebook_pages[num] = name
+
     def page_switched(self, notebook, page, page_num, filesel, difftree):
         self.tree_sel_changed(filesel, difftree, page_num)
 
@@ -919,23 +925,33 @@ class GStatus(gdialog.GDialog):
         # if a non-MAR file is selected
         status = model[row][FM_STATUS]
         enable = (status in 'MAR')
-        for pn in [0, 1]:
-            child = self.diff_notebook.get_nth_page(pn)
-            if child:
-                child.set_sensitive(enable)
-                lb = self.diff_notebook.get_tab_label(child)
-                lb.set_sensitive(enable)
+        for pn in self.diff_notebook_pages:
+            pname = self.get_page_name(pn)
+            if pname == 'text-diff' or pname == 'hunk-selection':
+                child = self.diff_notebook.get_nth_page(pn)
+                if child:
+                    child.set_sensitive(enable)
+                    lb = self.diff_notebook.get_tab_label(child)
+                    lb.set_sensitive(enable)
 
         if page_num is None:
             page_num = self.diff_notebook.get_current_page()
-        if page_num == 0:
+
+        pname = self.get_page_name(page_num)
+        if pname == 'text-diff':
             buf = self.generate_text_diffs(row)
             self.diff_text.set_buffer(buf)
-        elif page_num == 1:
+        elif pname == 'hunk-selection':
             self.update_hunk_model(row, tree)
-        elif page_num == 2:
+        elif pname == 'commit-preview':
             self.update_commit_preview()
 
+    def get_page_name(self, num):
+        try:
+            return self.diff_notebook_pages[num]
+        except KeyError:
+            return ''
+
     def update_commit_preview(self):
         buf = cStringIO.StringIO()
         dmodel = self.diffmodel

------------------------------------------------------------------------------
Come build with us! The BlackBerry&reg; 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&#45;12, 2009. Register now&#33;
http://p.sf.net/sfu/devconf
_______________________________________________
Tortoisehg-develop mailing list
Tortoisehg-develop@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tortoisehg-develop

Reply via email to