[meld/deprecation-cleanup] meldwindow, ui.notebook: Update containers to handle actual GtkWidgets



commit 9fd5f4ce7b7b352faf503cef59f9a51c1d516ddb
Author: Kai Willadsen <kai willadsen gmail com>
Date:   Tue Dec 4 05:56:49 2018 +1000

    meldwindow, ui.notebook: Update containers to handle actual GtkWidgets
    
    MeldWindow currently expects to create, and MeldNotebook to contain,
    just gnomeglade.Component subclasses. Since the idea of moving to
    template loading is to make things more normal, Component is going away.
    
    This commit just makes it so that these places can accept an actual
    widget instead of a special Python object that wraps the widget in a
    known way.

 meld/meldwindow.py  | 25 ++++++++++++++++---------
 meld/ui/notebook.py |  5 ++++-
 2 files changed, 20 insertions(+), 10 deletions(-)
---
diff --git a/meld/meldwindow.py b/meld/meldwindow.py
index d19a1548..c3968fcd 100644
--- a/meld/meldwindow.py
+++ b/meld/meldwindow.py
@@ -37,6 +37,13 @@ from meld.vcview import VcView
 from meld.windowstate import SavedWindowState
 
 
+def tab_widget(widget):
+    try:
+        return widget.widget
+    except RuntimeError:
+        return widget
+
+
 @Template(resource_path='/org/gnome/meld/ui/appwindow.ui')
 class MeldWindow(Gtk.ApplicationWindow):
 
@@ -268,7 +275,7 @@ class MeldWindow(Gtk.ApplicationWindow):
         # control page is open in the far left page, it will be closed last.
         for c in reversed(self.notebook.get_children()):
             page = c.pyobject
-            self.notebook.set_current_page(self.notebook.page_num(page.widget))
+            self.notebook.set_current_page(self.notebook.page_num(tab_widget(page)))
             response = page.on_delete_event()
             if response == Gtk.ResponseType.CANCEL:
                 should_cancel = True
@@ -341,7 +348,7 @@ class MeldWindow(Gtk.ApplicationWindow):
             self.actiongroup.get_action("SaveAs").set_sensitive(True)
 
         if newdoc:
-            nbl = self.notebook.get_tab_label(newdoc.widget)
+            nbl = self.notebook.get_tab_label(tab_widget(newdoc))
             self.set_title(nbl.get_label_text())
         else:
             self.set_title("Meld")
@@ -474,7 +481,7 @@ class MeldWindow(Gtk.ApplicationWindow):
         if hasattr(page, 'scheduler'):
             self.scheduler.remove_scheduler(page.scheduler)
 
-        page_num = self.notebook.page_num(page.widget)
+        page_num = self.notebook.page_num(tab_widget(page))
 
         if self.notebook.get_current_page() == page_num:
             self.handle_current_doc_switch(page)
@@ -507,7 +514,7 @@ class MeldWindow(Gtk.ApplicationWindow):
 
     def _append_page(self, page, icon):
         nbl = NotebookLabel(icon, "", lambda b: page.on_delete_event())
-        self.notebook.append_page(page.widget, nbl)
+        self.notebook.append_page(tab_widget(page), nbl)
 
         # Change focus to the newly created page only if the user is on a
         # DirDiff or VcView page, or if it's a new tab page. This prevents
@@ -515,7 +522,7 @@ class MeldWindow(Gtk.ApplicationWindow):
         if isinstance(self.current_doc(), DirDiff) or \
            isinstance(self.current_doc(), VcView) or \
            isinstance(page, NewDiffTab):
-            self.notebook.set_current_page(self.notebook.page_num(page.widget))
+            self.notebook.set_current_page(self.notebook.page_num(tab_widget(page)))
 
         if hasattr(page, 'scheduler'):
             self.scheduler.add_scheduler(page.scheduler)
@@ -526,7 +533,7 @@ class MeldWindow(Gtk.ApplicationWindow):
             page.connect("state-changed", self.on_page_state_changed)
         page.connect("close", self.page_removed)
 
-        self.notebook.set_tab_reorderable(page.widget, True)
+        self.notebook.set_tab_reorderable(tab_widget(page), True)
 
     def append_new_comparison(self):
         doc = NewDiffTab(self)
@@ -535,7 +542,7 @@ class MeldWindow(Gtk.ApplicationWindow):
 
         def diff_created_cb(doc, newdoc):
             doc.on_delete_event()
-            idx = self.notebook.page_num(newdoc.widget)
+            idx = self.notebook.page_num(tab_widget(newdoc))
             self.notebook.set_current_page(idx)
 
         doc.connect("diff-created", diff_created_cb)
@@ -615,7 +622,7 @@ class MeldWindow(Gtk.ApplicationWindow):
             RecentType.VersionControl: self.append_vcview,
         }
         tab = comparison_method[comparison_type](gfiles)
-        self.notebook.set_current_page(self.notebook.page_num(tab.widget))
+        self.notebook.set_current_page(self.notebook.page_num(tab_widget(tab)))
         recent_comparisons.add(tab)
         return tab
 
@@ -650,7 +657,7 @@ class MeldWindow(Gtk.ApplicationWindow):
             recent_comparisons.add(tab)
             if focus:
                 self.notebook.set_current_page(
-                    self.notebook.page_num(tab.widget))
+                    self.notebook.page_num(tab_widget(tab)))
 
         return tab
 
diff --git a/meld/ui/notebook.py b/meld/ui/notebook.py
index 850a547c..4fd23339 100644
--- a/meld/ui/notebook.py
+++ b/meld/ui/notebook.py
@@ -156,7 +156,10 @@ class MeldNotebook(Gtk.Notebook):
         child.pyobject.disconnect_by_func(self.on_label_changed)
 
     def on_label_changed(self, component, text, tooltip):
-        page = component.widget
+        try:
+            page = component.widget
+        except RuntimeError:
+            page = component
         nbl = self.get_tab_label(page)
         nbl.set_label_text(text)
         nbl.set_tooltip_text(tooltip)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]