# 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® 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/devconf _______________________________________________ Tortoisehg-develop mailing list Tortoisehg-develop@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tortoisehg-develop