[meld] Remove libglade-style override mechanism



commit d495b25199b880ae1239dece66f70884e1fbd1d1
Author: Kai Willadsen <kai willadsen gmail com>
Date:   Fri Sep 3 18:42:21 2010 +1000

    Remove libglade-style override mechanism
    
    filediff.ui: Replace GtkTextView objects with MeldSourceView, our
                 sourceviewer compatibility shim
    
    filediff.py: Remove use of Glade-based overriding
    
    gladesupport.py: Include support for our gtk.TextView proxy
    
    gnomeglade.py: Remove the custom-handler goop
    
    sourceviewer.py: Remove the now-unused override mechanism, and provide
                     a gtk.TextView subclass that can be constructed by
                     the builder.

 data/ui/filediff.ui       |    8 ++++----
 meld/filediff.py          |    4 ++--
 meld/ui/gladesupport.py   |    1 +
 meld/ui/gnomeglade.py     |   13 ++-----------
 meld/util/sourceviewer.py |    6 +++---
 5 files changed, 12 insertions(+), 20 deletions(-)
---
diff --git a/data/ui/filediff.ui b/data/ui/filediff.ui
index 59d486b..af838c4 100644
--- a/data/ui/filediff.ui
+++ b/data/ui/filediff.ui
@@ -73,7 +73,7 @@
                     <property name="window_placement">GTK_CORNER_TOP_RIGHT</property>
                     <property name="window_placement_set">True</property>
                     <child>
-                      <object class="GtkTextView" id="textview0">
+                      <object class="MeldSourceView" id="textview0">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="can_default">True</property>
@@ -149,7 +149,7 @@
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <child>
-                      <object class="GtkTextView" id="textview2">
+                      <object class="MeldSourceView" id="textview2">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <signal handler="on_textview_button_press_event" name="button_press_event"/>
@@ -185,7 +185,7 @@
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <child>
-                      <object class="GtkTextView" id="textview1">
+                      <object class="MeldSourceView" id="textview1">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <signal handler="on_textview_button_press_event" name="button_press_event"/>
@@ -468,7 +468,7 @@ Which ones would you like to save?&lt;/span&gt;</property>
             <property name="can_focus">True</property>
             <property name="shadow_type">GTK_SHADOW_IN</property>
             <child>
-              <object class="GtkTextView" id="textview">
+              <object class="MeldSourceView" id="textview">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="accepts_tab">False</property>
diff --git a/meld/filediff.py b/meld/filediff.py
index 8ec350d..bcde5de 100644
--- a/meld/filediff.py
+++ b/meld/filediff.py
@@ -116,7 +116,7 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component):
         """Start up an filediff with num_panes empty contents.
         """
         melddoc.MeldDoc.__init__(self, prefs)
-        gnomeglade.Component.__init__(self, paths.ui_dir("filediff.ui"), "filediff", srcviewer.override)
+        gnomeglade.Component.__init__(self, paths.ui_dir("filediff.ui"), "filediff")
         self.map_widgets_into_lists(["textview", "fileentry", "diffmap", "scrolledwindow", "linkmap", "statusimage", "msgarea_mgr", "vbox"])
         self._update_regexes()
         self.warned_bad_comparison = False
@@ -1048,7 +1048,7 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component):
 
     def make_patch(self, *extra):
         fontdesc = pango.FontDescription(self.prefs.get_current_font())
-        dialog = gnomeglade.Component(paths.ui_dir("filediff.ui"), "patchdialog", srcviewer.override)
+        dialog = gnomeglade.Component(paths.ui_dir("filediff.ui"), "patchdialog")
         dialog.widget.set_transient_for( self.widget.get_toplevel() )
         texts = [b.get_text(*b.get_bounds()).split("\n") for b in self.textbuffer]
         texts[0] = [l+"\n" for l in texts[0]]
diff --git a/meld/ui/gladesupport.py b/meld/ui/gladesupport.py
index b087032..6a14f3d 100644
--- a/meld/ui/gladesupport.py
+++ b/meld/ui/gladesupport.py
@@ -2,3 +2,4 @@
 import historyentry
 import msgarea
 import meld.diffmap
+import meld.util.sourceviewer
diff --git a/meld/ui/gnomeglade.py b/meld/ui/gnomeglade.py
index 777c513..6edb64b 100644
--- a/meld/ui/gnomeglade.py
+++ b/meld/ui/gnomeglade.py
@@ -22,12 +22,6 @@ import sys
 import gtk
 import re
 
-def custom_handler( glade, module_function_name, widget_name, str1, str2, int1, int2):
-    assert module_function_name.find(".") != -1, "%s should contain a ." % module_function_name
-    module, function_name = module_function_name.rsplit(".",1)
-    __import__(module)
-    return getattr(sys.modules[module], function_name)(str1, str2, int1, int2)
-
 class Component(object):
     """Base class for all glade objects.
 
@@ -42,14 +36,11 @@ class Component(object):
     object, which is sadly sometimes necessary.
     """
 
-    def __init__(self, filename, root, override=None):
+    def __init__(self, filename, root):
         """Load the widgets from the node 'root' in file 'filename'.
         """
-        gtk.glade.set_custom_handler(custom_handler)
-        if override is None:
-            override = {}
         self.builder = gtk.Builder()
-        self.builder.add_objects_from_file(filename, [root]) # FIXME: override doesn't work
+        self.builder.add_objects_from_file(filename, [root])
         self.builder.connect_signals(self)
         self.widget = getattr(self, root)
         self.widget.set_data("pyobject", self)
diff --git a/meld/util/sourceviewer.py b/meld/util/sourceviewer.py
index eccfaa2..f1be1fc 100644
--- a/meld/util/sourceviewer.py
+++ b/meld/util/sourceviewer.py
@@ -33,9 +33,6 @@ class _srcviewer(object):
         self.GtkTextView = None
         self.GtkTextBuffer = None
         self.overrides()
-        self.override = {}
-        self.override["GtkTextView"] = self.GtkTextView
-        self.override["GtkTextBuffer"] = self.GtkTextBuffer
 
     def version_check(self):
         raise NotImplementedError
@@ -192,3 +189,6 @@ def _get_srcviewer():
     return nullsourceview()
 
 srcviewer = _get_srcviewer()
+
+class MeldSourceView(srcviewer.GtkTextView):
+    __gtype_name__ = "MeldSourceView"



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