Skip to content

Commit a0d7541

Browse files
author
Kai Willadsen
committed
Refactor glade support to remove some unused/obsolete code
svn path=/trunk/; revision=1024
1 parent c1ff226 commit a0d7541

4 files changed

Lines changed: 28 additions & 98 deletions

File tree

dirdiff.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ def __init__(self, prefs, num_panes):
222222
self.toolbar = self.ui.get_widget('/DirdiffToolbar')
223223
self.dirdiff.pack_start(self.toolbar, False, True, 0)
224224
self.toolbar.set_style( self.prefs.get_toolbar_style() )
225-
self._map_widgets_into_lists( ["treeview", "fileentry", "diffmap", "scrolledwindow", "linkmap"] )
225+
self.map_widgets_into_lists( ["treeview", "fileentry", "diffmap", "scrolledwindow", "linkmap"] )
226226
self.popup_menu = self.ui.get_widget('/DirdiffPopup')
227227
self.popup_menu.connect("deactivate", self.on_popup_deactivate_event)
228228
self.set_num_panes(num_panes)

filediff.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ def __init__(self, prefs, num_panes):
8888
override["GtkTextView"] = gsv.SourceView
8989
override["GtkTextBuffer"] = gsv.SourceBuffer
9090
gnomeglade.Component.__init__(self, paths.share_dir("glade2/filediff.glade"), "filediff", override)
91-
self._map_widgets_into_lists( ["textview", "fileentry", "diffmap", "scrolledwindow", "linkmap", "statusimage"] )
91+
self.map_widgets_into_lists( ["textview", "fileentry", "diffmap", "scrolledwindow", "linkmap", "statusimage"] )
9292
self._update_regexes()
9393
self.warned_bad_comparison = False
9494
if sourceview_available:

gnomeglade.py

Lines changed: 11 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
### Copyright (C) 2002-2006 Stephen Kennedy <stevek@gnome.org>
1+
### Copyright (C) 2002-2008 Stephen Kennedy <stevek@gnome.org>
22

33
### This program is free software; you can redistribute it and/or modify
44
### it under the terms of the GNU General Public License as published by
@@ -14,21 +14,19 @@
1414
### along with this program; if not, write to the Free Software
1515
### Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
1616

17-
"""Utility classes for working with glade files.
18-
17+
"""Utility class for working with glade files.
1918
"""
2019

2120
import gtk
2221
import gtk.glade
23-
import gnome
22+
# FIXME: remove once there are no GnomeUI-based widgets in the glade file
2423
import gnome.ui
25-
import gettext
2624

27-
class Base(object):
25+
class Component(object):
2826
"""Base class for all glade objects.
2927
30-
This class handles loading the xml glade file and connects
31-
all methods name 'on_*' to the signals in the glade file.
28+
This class handles loading the xml glade file and autoconnects
29+
all signals in the glade file.
3230
3331
The handle to the xml file is stored in 'self.xml'. The
3432
toplevel widget is stored in 'self.widget'.
@@ -38,16 +36,11 @@ class Base(object):
3836
object, which is sadly sometimes necessary.
3937
"""
4038

41-
def __init__(self, file, root, override={}):
42-
"""Load the widgets from the node 'root' in file 'file'.
43-
44-
Automatically connects signal handlers named 'on_*'.
39+
def __init__(self, filename, root, override={}):
40+
"""Load the widgets from the node 'root' in file 'filename'.
4541
"""
46-
self.xml = gtk.glade.XML(file, root, typedict=override)
47-
handlers = {}
48-
for h in filter(lambda x:x.startswith("on_"), dir(self.__class__)):
49-
handlers[h] = getattr(self, h)
50-
self.xml.signal_autoconnect( handlers )
42+
self.xml = gtk.glade.XML(filename, root, typedict=override)
43+
self.xml.signal_autoconnect(self)
5144
self.widget = getattr(self, root)
5245
self.widget.set_data("pyobject", self)
5346

@@ -60,13 +53,7 @@ def __getattr__(self, key):
6053
return widget
6154
raise AttributeError(key)
6255

63-
def flushevents(self):
64-
"""Handle all the events currently in the main queue and return.
65-
"""
66-
while gtk.events_pending():
67-
gtk.main_iteration();
68-
69-
def _map_widgets_into_lists(self, widgetnames):
56+
def map_widgets_into_lists(self, widgetnames):
7057
"""Put sequentially numbered widgets into lists.
7158
7259
e.g. If an object had widgets self.button0, self.button1, ...,
@@ -86,59 +73,6 @@ def _map_widgets_into_lists(self, widgetnames):
8673
lst.append(val)
8774
i += 1
8875

89-
90-
class Component(Base):
91-
"""A convenience base class for widgets which use glade.
92-
"""
93-
94-
def __init__(self, file, root, override={}):
95-
Base.__init__(self, file, root, override)
96-
97-
98-
class GtkApp(Base):
99-
"""A convenience base class for gtk+ apps created in glade.
100-
"""
101-
102-
def __init__(self, file, root=None):
103-
Base.__init__(self, file, root)
104-
105-
def main(self):
106-
"""Enter the gtk main loop.
107-
"""
108-
gtk.main()
109-
110-
def quit(self, *args):
111-
"""Signal the gtk main loop to quit.
112-
"""
113-
gtk.main_quit()
114-
115-
116-
class GnomeApp(GtkApp):
117-
"""A convenience base class for apps created in glade.
118-
"""
119-
120-
def __init__(self, name, version, file, root):
121-
"""Initialise program 'name' and version from 'file' containing root node 'root'.
122-
"""
123-
self.program = gnome.program_init(name, version)
124-
GtkApp.__init__(self,file,root)
125-
if 0:
126-
self.client = gnome.ui.Client()
127-
self.client.disconnect()
128-
def connected(*args):
129-
print "CONNECTED", args
130-
def cb(name):
131-
def cb2(*args):
132-
print name, args, "\n"
133-
return cb2
134-
self.client.connect("connect", cb("CON"))
135-
self.client.connect("die", cb("DIE"))
136-
self.client.connect("disconnect", cb("DIS"))
137-
self.client.connect("save-yourself", cb("SAVE"))
138-
self.client.connect("shutdown-cancelled", cb("CAN"))
139-
self.client.connect_to_session_manager()
140-
141-
14276
def load_pixbuf(fname, size=0):
14377
"""Load an image from a file as a pixbuf, with optional resizing.
14478
"""
@@ -150,9 +84,3 @@ def load_pixbuf(fname, size=0):
15084
image = image.scale_simple(size, int(aspect*size), 2)
15185
return image
15286

153-
def url_show(url):
154-
return gnome.url_show(url)
155-
156-
def FileEntry(*args):
157-
return gnome.ui.FileEntry(*args)
158-

meldapp.py

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import gtk.glade
2424
import gobject
2525
import pango
26+
import gnome
2627

2728
# project
2829
import paths
@@ -63,7 +64,7 @@ class NewDocDialog(gnomeglade.Component):
6364
def __init__(self, parentapp, type):
6465
self.parentapp = parentapp
6566
gnomeglade.Component.__init__(self, paths.share_dir("glade2/meldapp.glade"), "newdialog")
66-
self._map_widgets_into_lists( ("fileentry", "direntry", "vcentry", "three_way_compare", "tablabel") )
67+
self.map_widgets_into_lists( ("fileentry", "direntry", "vcentry", "three_way_compare", "tablabel") )
6768
self.entrylists = self.fileentry, self.direntry, self.vcentry
6869
self.widget.set_transient_for(parentapp.widget)
6970
cur_page = type // 2
@@ -227,7 +228,7 @@ def __init__(self, parentapp):
227228
self.model.append( (label,) )
228229
self.prefs = parentapp.prefs
229230
# editor
230-
self._map_widgets_into_lists( ["editor_command"] )
231+
self.map_widgets_into_lists( ["editor_command"] )
231232
if self.prefs.use_custom_font:
232233
self.radiobutton_custom_font.set_active(1)
233234
else:
@@ -242,8 +243,8 @@ def __init__(self, parentapp):
242243
self.gnome_default_editor_label.set_text( "(%s)" % " ".join(self.prefs.get_gnome_editor_command([])) )
243244
self.custom_edit_command_entry.set_text( " ".join(self.prefs.get_custom_editor_command([])) )
244245
# display
245-
self._map_widgets_into_lists( ["draw_style"] )
246-
self._map_widgets_into_lists( ["toolbar_style"] )
246+
self.map_widgets_into_lists( ["draw_style"] )
247+
self.map_widgets_into_lists( ["toolbar_style"] )
247248
self.draw_style[self.prefs.draw_style].set_active(1)
248249
self.toolbar_style[self.prefs.toolbar_style].set_active(1)
249250
# file filters
@@ -258,7 +259,7 @@ def __init__(self, parentapp):
258259
self.checkbutton_ignore_blank_lines.set_active( self.prefs.ignore_blank_lines )
259260
# encoding
260261
self.entry_text_codecs.set_text( self.prefs.text_codecs )
261-
self._map_widgets_into_lists( ["save_encoding"] )
262+
self.map_widgets_into_lists( ["save_encoding"] )
262263
self.save_encoding[self.prefs.save_encoding].set_active(1)
263264
self.treeview.set_cursor(0)
264265
#
@@ -507,7 +508,7 @@ def get_custom_editor_command(self, files):
507508
# MeldApp
508509
#
509510
################################################################################
510-
class MeldApp(gnomeglade.GnomeApp):
511+
class MeldApp(gnomeglade.Component):
511512

512513
#
513514
# init
@@ -522,7 +523,8 @@ def __init__(self):
522523
"}\n"
523524
"widget \"*.meld-tab-close-button\" style \"meld-tab-close-button-style\"")
524525
gladefile = paths.share_dir("glade2/meldapp.glade")
525-
gnomeglade.GnomeApp.__init__(self, "meld", version, gladefile, "meldapp")
526+
self.program = gnome.program_init("meld", version)
527+
gnomeglade.Component.__init__(self, gladefile, "meldapp")
526528

527529
actions = (
528530
("FileMenu", None, "_File"),
@@ -571,7 +573,7 @@ def __init__(self):
571573
self.toolbar = self.ui.get_widget('/Toolbar')
572574
self.appvbox.pack_start(self.menubar, expand=False)
573575
self.appvbox.pack_start(self.toolbar, expand=False)
574-
self._map_widgets_into_lists( "settings_drawstyle".split() )
576+
self.map_widgets_into_lists( "settings_drawstyle".split() )
575577
self.statusbar = MeldStatusBar(self.task_progress, self.task_status, self.doc_status)
576578
self.prefs = MeldPreferences()
577579
if not developer:#hide magic testing button
@@ -683,7 +685,7 @@ def on_menu_quit_activate(self, *extra):
683685
break
684686
for c in self.notebook.get_children():
685687
c.get_data("pyobject").on_quit_event()
686-
self.quit()
688+
gtk.main_quit()
687689
return gtk.RESPONSE_CLOSE
688690

689691
#
@@ -732,13 +734,13 @@ def on_menu_preferences_activate(self, item):
732734
# Toolbar and menu items (help)
733735
#
734736
def on_menu_meld_home_page_activate(self, button):
735-
gnomeglade.url_show("http://meld.sourceforge.net")
737+
gnome.url_show("http://meld.sourceforge.net")
736738

737739
def on_menu_help_bug_activate(self, button):
738-
gnomeglade.url_show("http://bugzilla.gnome.org/buglist.cgi?product=meld")
740+
gnome.url_show("http://bugzilla.gnome.org/buglist.cgi?product=meld")
739741

740742
def on_menu_users_manual_activate(self, button):
741-
gnomeglade.url_show("ghelp:///"+os.path.abspath(paths.help_dir("C/meld.xml") ))
743+
gnome.url_show("ghelp:///"+os.path.abspath(paths.help_dir("C/meld.xml") ))
742744

743745
def on_menu_about_activate(self, *extra):
744746
about = gtk.glade.XML(paths.share_dir("glade2/meldapp.glade"),"about").get_widget("about")
@@ -928,5 +930,5 @@ def cleanup():
928930

929931
if tab:
930932
tab.set_labels( options.label )
931-
app.main()
933+
gtk.main()
932934

0 commit comments

Comments
 (0)