[conduit] Port to gtkbuilder



commit 92d3989ae151bd43866b74babf65f05f98d4b0c2
Author: John Stowers <john stowers gmail com>
Date:   Sat Nov 21 14:05:06 2009 +0100

    Port to gtkbuilder

 conduit/gtkui/Canvas.py            |   34 +-
 conduit/gtkui/ConflictResolver.py  |   20 +-
 conduit/gtkui/UI.py                |  126 ++++--
 data/Makefile.am                   |    2 +-
 data/{conduit.glade => conduit.ui} |  886 +++++++++++++++++-------------------
 5 files changed, 527 insertions(+), 541 deletions(-)
---
diff --git a/conduit/gtkui/Canvas.py b/conduit/gtkui/Canvas.py
index 8aafa96..b34f581 100644
--- a/conduit/gtkui/Canvas.py
+++ b/conduit/gtkui/Canvas.py
@@ -150,7 +150,7 @@ class Canvas(goocanvas.Canvas, _StyleMixin):
     ]
 
     WELCOME_MESSAGE = _("Drag a Data Provider here to continue")
-    def __init__(self, parentWindow, typeConverter, syncManager, dataproviderMenu, conduitMenu, msg):
+    def __init__(self, parentWindow, typeConverter, syncManager, gtkbuilder, msg):
         """
         Draws an empty canvas of the appropriate size
         """
@@ -173,7 +173,7 @@ class Canvas(goocanvas.Canvas, _StyleMixin):
 
         self.configurator = WindowConfigurator.WindowConfigurator(self.parentWindow)
 
-        self._setup_popup_menus(dataproviderMenu, conduitMenu)
+        self._setup_popup_menus(gtkbuilder)
 
         #set up DND from the treeview
         self.drag_dest_set(  gtk.gdk.BUTTON1_MASK | gtk.gdk.BUTTON3_MASK,
@@ -256,7 +256,7 @@ class Canvas(goocanvas.Canvas, _StyleMixin):
                 )
         self._changing_style = False
 
-    def _setup_popup_menus(self, dataproviderPopupXML, conduitPopupXML):
+    def _setup_popup_menus(self, gtkbuilder):
         """
         Sets up the popup menus and their callbacks
 
@@ -268,31 +268,35 @@ class Canvas(goocanvas.Canvas, _StyleMixin):
         @type dataproviderPopupXML: C{gtk.glade.XML}
         """
 
-        self.dataproviderMenu = dataproviderPopupXML.get_widget("DataProviderMenu")
-        self.configureMenuItem = dataproviderPopupXML.get_widget("configure")
+        self.dataproviderMenu = gtkbuilder.get_object("DataProviderMenu")
+        self.conduitMenu = gtkbuilder.get_object("ConduitMenu")
 
-        self.conduitMenu = conduitPopupXML.get_widget("ConduitMenu")
-        self.twoWayMenuItem = conduitPopupXML.get_widget("two_way_sync")
-        self.slowSyncMenuItem = conduitPopupXML.get_widget("slow_sync")
-        self.autoSyncMenuItem = conduitPopupXML.get_widget("auto_sync")
+        self.configureMenuItem = gtkbuilder.get_object("configure_dataprovider")
 
+        self.twoWayMenuItem = gtkbuilder.get_object("two_way_sync")
+        self.slowSyncMenuItem = gtkbuilder.get_object("slow_sync")
+        self.autoSyncMenuItem = gtkbuilder.get_object("auto_sync")
+
+        #connect the toggled signals
         self.twoWayMenuItem.connect("toggled", self.on_two_way_sync_toggle)
         self.slowSyncMenuItem.connect("toggled", self.on_slow_sync_toggle)
         self.autoSyncMenuItem.connect("toggled", self.on_auto_sync_toggle)
 
+        #connect the dataprovider and conduit menu signals
+        for widget in ( "delete_dataprovider", "configure_dataprovider",
+                        "refresh_dataprovider", "delete_conduit", 
+                        "synchronize_conduit", "refresh_conduit"):
+            gtkbuilder.get_object(widget).connect("activate", getattr(self, "on_%s_clicked" % widget))
+
         #connect the conflict popups
         self.policyWidgets = {}
         for policyName in Conduit.CONFLICT_POLICY_NAMES:
             for policyValue in Conduit.CONFLICT_POLICY_VALUES:
                 widgetName = "%s_%s" % (policyName,policyValue)
                 #store the widget and connect to toggled signal
-                widget = conduitPopupXML.get_widget(widgetName)
+                widget = gtkbuilder.get_object(widgetName)
                 widget.connect("toggled", self.on_policy_toggle, policyName, policyValue)
                 self.policyWidgets[widgetName] = widget
-                
-        #connect the menu callbacks
-        conduitPopupXML.signal_autoconnect(self)
-        dataproviderPopupXML.signal_autoconnect(self)
 
     def _delete_welcome(self):
         idx = self.root.find_child(self.welcome)
@@ -383,7 +387,7 @@ class Canvas(goocanvas.Canvas, _StyleMixin):
 
         self.selectedDataproviderItem = selected_dataprovider
         self.selectedConduitItem = selected_conduit
-        
+
     def get_selected_conduit(self):
         if self.selectedConduitItem:
             return self.selectedConduitItem.model
diff --git a/conduit/gtkui/ConflictResolver.py b/conduit/gtkui/ConflictResolver.py
index e3a2ba9..119a02d 100644
--- a/conduit/gtkui/ConflictResolver.py
+++ b/conduit/gtkui/ConflictResolver.py
@@ -45,7 +45,7 @@ class ConflictResolver:
     Manages a gtk.TreeView which is used for asking the user what they  
     wish to do in the case of a conflict
     """
-    def __init__(self, widgets):
+    def __init__(self, gtkbuilder):
         self.model = gtk.TreeStore( gobject.TYPE_PYOBJECT,  #Conflict
                                     gobject.TYPE_INT        #Resolved direction
                                     )
@@ -58,18 +58,18 @@ class ConflictResolver:
 
         #Connect up the GUI
         #this is the scrolled window in the bottom of the main gui
-        self.expander = widgets.get_widget("conflictExpander")
+        self.expander = gtkbuilder.get_object("conflictExpander")
         self.expander.connect("activate", self.on_expand)
-        self.vpane = widgets.get_widget("vpaned1")
+        self.vpane = gtkbuilder.get_object("vpaned1")
         self.expander.set_sensitive(False)
-        self.fullscreenButton = widgets.get_widget("conflictFullscreenButton")
+        self.fullscreenButton = gtkbuilder.get_object("conflictFullscreenButton")
         self.fullscreenButton.connect("toggled", self.on_fullscreen_toggled)
-        self.conflictScrolledWindow = widgets.get_widget("conflictExpanderVBox")
-        widgets.get_widget("conflictScrolledWindow").add(self.view)
+        self.conflictScrolledWindow = gtkbuilder.get_object("conflictExpanderVBox")
+        gtkbuilder.get_object("conflictScrolledWindow").add(self.view)
         #this is a stand alone window for showing conflicts in an easier manner
         self.standalone = gtk.Window()
         self.standalone.set_title("Conflicts")
-        self.standalone.set_transient_for(widgets.get_widget("MainWindow"))
+        self.standalone.set_transient_for(gtkbuilder.get_object("MainWindow"))
         self.standalone.set_position(gtk.WIN_POS_CENTER_ON_PARENT)
         self.standalone.set_destroy_with_parent(True)
         self.standalone.set_default_size(-1, 200)
@@ -77,10 +77,10 @@ class ConflictResolver:
         #self.standalone.add(self.conflictScrolledWindow)
         self.standalone.connect("delete-event", self.on_standalone_closed)
         #the button callbacks are shared
-        widgets.get_widget("conflictCancelButton").connect("clicked", self.on_cancel_conflicts)
-        widgets.get_widget("conflictResolveButton").connect("clicked", self.on_resolve_conflicts)
+        gtkbuilder.get_object("conflictCancelButton").connect("clicked", self.on_cancel_conflicts)
+        gtkbuilder.get_object("conflictResolveButton").connect("clicked", self.on_resolve_conflicts)
         #the state of the compare button is managed by the selection changed callback
-        self.compareButton = widgets.get_widget("conflictCompareButton")
+        self.compareButton = gtkbuilder.get_object("conflictCompareButton")
         self.compareButton.connect("clicked", self.on_compare_conflicts)
         self.compareButton.set_sensitive(False)
 
diff --git a/conduit/gtkui/UI.py b/conduit/gtkui/UI.py
index 2dbf2a0..54fc483 100644
--- a/conduit/gtkui/UI.py
+++ b/conduit/gtkui/UI.py
@@ -8,7 +8,7 @@ License: GPLv2
 """
 import thread
 import gobject
-import gtk, gtk.glade
+import gtk
 import os.path
 import gettext
 import threading
@@ -38,7 +38,7 @@ DEVELOPER_WEB_LINKS = (
 )
 
 #set up the gettext system and locales
-for module in gtk.glade, gettext:
+for module in (gettext,):
     module.bindtextdomain('conduit', conduit.LOCALE_DIR)
     module.textdomain('conduit')
     if hasattr(module, 'bind_textdomain_codeset'):
@@ -85,11 +85,51 @@ class _PreconfiguredConduitMenu:
     def _dp_removed(self, manager, dpw):
         self.menu.remove(self._items[dpw])
 
+class _GtkBuilderWrapper(gtk.Builder):
+    def __init__(self, *path):
+        gtk.Builder.__init__(self)
+        self.add_from_file(os.path.join(*path))
+        self._resources = {}
+
+    def set_instance_resources(self, obj, *resources):
+        for r in resources:
+            setattr(obj, "_%s" % r.lower(), self.get_resource(r))
+
+    def get_object(self, name):
+        if name not in self._resources:
+            w = gtk.Builder.get_object(self,name)
+            if not w:
+                raise Exception("Could not find widget: %s" % name)
+            self._resources[name] = w
+
+        return self._resources[name]
+
+    def connect_signals(self, obj):
+        #FIXME: connect_signals seems to be only able to be called once
+        missing = gtk.Builder.connect_signals(self, obj)
+        if missing:
+            log.critical("Failed to connect signals: %s" % ",".join(missing))
+
 class PreferencesWindow:
-    def __init__(self, widgets):
-        self._widgets = widgets
+
+    NOTEBOOK_FIXED_PAGES = 3
+
+    def __init__(self, gtkbuilder):
+        self._gtkbuilder = gtkbuilder
+        self._extra_pages = []
+        self._notebook = self._gtkbuilder.get_object("prop_notebook")
         self._autostartmanager = AutostartManager.AutostartManager()
 
+    def _add_page(self, widget, label):
+        self._notebook.append_page(widget,label)
+        self._extra_pages.append(widget)
+
+    def _remove_extra_pages(self):
+        for w in self._extra_pages:
+            pn = self._notebook.page_num(w)
+            if pn >= self.NOTEBOOK_FIXED_PAGES:
+                self._notebook.remove_page( pn )
+
     def show(self, parent):
         def on_clear_button_clicked(sender, treeview, sqliteListStore):
             treeview.set_model(None)
@@ -100,6 +140,9 @@ class PreferencesWindow:
         CONVERT_FROM_MESSAGE = _("Convert from")
         CONVERT_INTO_MESSAGE = _("into")
 
+        #reset the prefs window, removing all dynamically added pages
+        self._remove_extra_pages()
+
         convertables = conduit.GLOBALS.typeConverter.get_convertables_list()
         converterListStore = gtk.ListStore( str )
         for froms,tos in convertables:
@@ -113,10 +156,6 @@ class PreferencesWindow:
         for f in conduit.GLOBALS.moduleManager.invalidFiles:
             dataProviderListStore.append(("Error loading file: %s" % f, False))
 
-        #construct the dialog
-        tree = gtk.glade.XML(self._widgets, "PreferencesDialog")
-        notebook = tree.get_widget("prop_notebook")
-
         #Show the DB contents to help debugging
         if conduit.IS_DEVELOPMENT_VERSION:
             vbox = gtk.VBox(False,5)
@@ -149,15 +188,15 @@ class PreferencesWindow:
             clear.connect("clicked", on_clear_button_clicked, treeview, store)
             vbox.pack_start(clear, False, False)
 
-            notebook.append_page(vbox,gtk.Label(_('Relationship Database')))
+            self._add_page(vbox,gtk.Label(_('Relationship Database')))
         
-        converterTreeView = tree.get_widget("dataConversionsTreeView")
+        converterTreeView = self._gtkbuilder.get_object("dataConversionsTreeView")
         converterTreeView.set_model(converterListStore)
         converterTreeView.append_column(gtk.TreeViewColumn(_("Conversions Available"), 
                                         gtk.CellRendererText(), 
                                         text=0)
                                         )
-        dataproviderTreeView = tree.get_widget("dataProvidersTreeView")
+        dataproviderTreeView = self._gtkbuilder.get_object("dataProvidersTreeView")
         dataproviderTreeView.set_model(dataProviderListStore)
         dataproviderTreeView.append_column(gtk.TreeViewColumn(_("Name"), 
                                         gtk.CellRendererText(), 
@@ -169,18 +208,18 @@ class PreferencesWindow:
                                         )                                        
                                         
         #fill out the configuration tab
-        save_settings_check = tree.get_widget("save_settings_check")
+        save_settings_check = self._gtkbuilder.get_object("save_settings_check")
         save_settings_check.set_active(conduit.GLOBALS.settings.get("save_on_exit"))
-        status_icon_check = tree.get_widget("status_icon_check")
+        status_icon_check = self._gtkbuilder.get_object("status_icon_check")
         status_icon_check.set_active(conduit.GLOBALS.settings.get("show_status_icon")) 
-        minimize_to_tray_check = tree.get_widget("minimize_to_tray_check")
+        minimize_to_tray_check = self._gtkbuilder.get_object("minimize_to_tray_check")
         minimize_to_tray_check.set_active(conduit.GLOBALS.settings.get("gui_minimize_to_tray")) 
-        show_hints_check = tree.get_widget("show_hints_check")
+        show_hints_check = self._gtkbuilder.get_object("show_hints_check")
         show_hints_check.set_active(conduit.GLOBALS.settings.get("gui_show_hints"))
 
         #special case start at login. Because we copy the desktop file from the
         #system to ~/.config/autostart, we require conduit to be installed
-        start_at_login_check = tree.get_widget("start_at_login")
+        start_at_login_check = self._gtkbuilder.get_object("start_at_login")
         if conduit.IS_INSTALLED:
             start_at_login_check.set_active(self._autostartmanager.is_start_at_login_enabled())
         else:
@@ -191,7 +230,7 @@ class PreferencesWindow:
             currentValue = conduit.GLOBALS.settings.get("default_policy_%s" % policyName)
             for policyValue in Conduit.CONFLICT_POLICY_VALUES:
                 name = "%s_%s" % (policyName,policyValue)
-                widget = tree.get_widget(name+"_radio")
+                widget = self._gtkbuilder.get_object(name+"_radio")
                 widget.set_image(
                         gtk.image_new_from_icon_name(
                                 Conduit.CONFLICT_POLICY_VALUE_ICONS[name],
@@ -204,12 +243,12 @@ class PreferencesWindow:
         for i in conduit.GLOBALS.moduleManager.dataproviderFactories:#get_modules_by_type("dataprovider-factory"):
             widget = i.setup_configuration_widget()
             if widget:
-                notebook.append_page(
+                self._add_page(
                             widget,
                             gtk.Label(i.get_name()))
 
         #Show the dialog
-        dialog = tree.get_widget("PreferencesDialog")
+        dialog = self._gtkbuilder.get_object("PreferencesDialog")
         dialog.show_all()
         dialog.set_transient_for(parent)
 
@@ -224,7 +263,7 @@ class PreferencesWindow:
             for policyName in Conduit.CONFLICT_POLICY_NAMES:
                 for policyValue in Conduit.CONFLICT_POLICY_VALUES:
                     name = "%s_%s" % (policyName,policyValue)
-                    if tree.get_widget(name+"_radio").get_active() == True:
+                    if self._gtkbuilder.get_object(name+"_radio").get_active() == True:
                         conduit.GLOBALS.settings.set(
                                 "default_policy_%s" % policyName,
                                 policyValue)
@@ -233,7 +272,7 @@ class PreferencesWindow:
         for factory in conduit.GLOBALS.moduleManager.dataproviderFactories:
             factory.save_configuration(response == gtk.RESPONSE_OK)
 
-        dialog.destroy()                
+        dialog.hide()                
 
 class MainWindow:
     """
@@ -256,11 +295,8 @@ class MainWindow:
             gtk.icon_theme_get_default().prepend_search_path(i)
         gtk.window_set_default_icon_name("conduit")
 
-        self.conduitApplication = conduitApplication
-        self.gladeFile = os.path.join(conduit.SHARED_DATA_DIR, "conduit.glade")
-        self.widgets = gtk.glade.XML(self.gladeFile, "MainWindow")
-        
-        dic = { "on_mainwindow_delete" : self.on_window_closed,
+        signals = { 
+                "on_mainwindow_delete" : self.on_window_closed,
                 "on_mainwindow_state_event" : self.on_window_state_event,
                 "on_synchronize_activate" : self.on_synchronize_all_clicked,
                 "on_cancel_activate" : self.on_cancel_all_clicked,  
@@ -270,16 +306,18 @@ class MainWindow:
                 "on_about_activate" : self.on_about_conduit,
                 "on_contents_activate" : self.on_help,
                 "on_save1_activate" : self.save_settings,
-                None : None
                 }
-        self.widgets.signal_autoconnect(dic)
+
+        self.conduitApplication = conduitApplication
+        self.builder = _GtkBuilderWrapper(conduit.SHARED_DATA_DIR, "conduit.ui")
+        self.builder.connect_signals(signals)
 
         #type converter and sync manager
         self.type_converter = typeConverter
         self.sync_manager = syncManager
         
         #Initialize the mainWindow
-        self.mainWindow = self.widgets.get_widget("MainWindow")
+        self.mainWindow = self.builder.get_object("MainWindow")
         #Enable RGBA colormap
         if conduit.GLOBALS.settings.get("gui_use_rgba_colormap") == True:
             screen = self.mainWindow.get_screen()
@@ -295,18 +333,17 @@ class MainWindow:
         self.mainWindow.set_title(title)
 
         #Configure canvas
-        self.canvasSW = self.widgets.get_widget("canvasScrolledWindow")
-        self.hpane = self.widgets.get_widget("hpaned1")
+        self.canvasSW = self.builder.get_object("canvasScrolledWindow")
+        self.hpane = self.builder.get_object("hpaned1")
 
         #start up the canvas
         msg = MsgArea.MsgAreaController()
-        self.widgets.get_widget("mainVbox").pack_start(msg, False, False)
+        self.builder.get_object("mainVbox").pack_start(msg, False, False)
         self.canvas = Canvas.Canvas(
                         parentWindow=self.mainWindow,
                         typeConverter=self.type_converter,
                         syncManager=self.sync_manager,
-                        dataproviderMenu=gtk.glade.XML(self.gladeFile, "DataProviderMenu"),
-                        conduitMenu=gtk.glade.XML(self.gladeFile, "ConduitMenu"),
+                        gtkbuilder=self.builder,
                         msg=msg
                         )
         self.canvasSW.add(self.canvas)
@@ -315,27 +352,27 @@ class MainWindow:
         
         # Populate the tree model
         self.dataproviderTreeModel = Tree.DataProviderTreeModel() 
-        dataproviderScrolledWindow = self.widgets.get_widget("scrolledwindow2")
+        dataproviderScrolledWindow = self.builder.get_object("scrolledwindow2")
         self.dataproviderTreeView = Tree.DataProviderTreeView(self.dataproviderTreeModel)
         dataproviderScrolledWindow.add(self.dataproviderTreeView)
 
         #Set up the expander used for resolving sync conflicts
-        self.conflictResolver = ConflictResolver.ConflictResolver(self.widgets)
+        self.conflictResolver = ConflictResolver.ConflictResolver(self.builder)
 
         #Preferences manager
-        self.preferences = PreferencesWindow(self.gladeFile)
+        self.preferences = PreferencesWindow(self.builder)
         
         #add the preconfigured Conduit menu
         if conduit.GLOBALS.settings.get("gui_show_hints"):
             self.preconfiguredConduitsMenu = _PreconfiguredConduitMenu()
-            self.widgets.get_widget("file_menu").insert(self.preconfiguredConduitsMenu.item, 3)
+            self.builder.get_object("file_menu").insert(self.preconfiguredConduitsMenu.item, 3)
         else:
             self.preconfiguredConduitsMenu = None
 
         #if running a development version, add some developer specific links
         #to the help menu
         if conduit.IS_DEVELOPMENT_VERSION:
-            helpMenu = self.widgets.get_widget("help_menu")
+            helpMenu = self.builder.get_object("help_menu")
             developersMenuItem = gtk.ImageMenuItem(_("Developers"))
             developersMenuItem.set_image(
                                 gtk.image_new_from_icon_name(
@@ -354,11 +391,20 @@ class MainWindow:
                 developersMenu.append(item)
 
         #final GUI setup
-        self.cancelSyncButton = self.widgets.get_widget('cancel')
+        self.cancelSyncButton = self.builder.get_object('cancel')
         self.hpane.set_position(conduit.GLOBALS.settings.get("gui_hpane_postion"))
         self.dataproviderTreeView.set_expand_rows()
         self.window_state = 0                
         log.info("Main window constructed  (thread: %s)" % thread.get_ident())
+
+    def _ui_get_resource(self, name):
+        if name not in self.builder_resources:
+            w = self.builder.get_object(name)
+            if not w:
+                raise Exception("Could not find widget: %s" % name)
+            self.builder_resources[name] = w
+
+        return self.builder_resources[name]
                 
     def on_developer_menu_item_clicked(self, menuitem, name, url):
         threading.Thread(
diff --git a/data/Makefile.am b/data/Makefile.am
index 32de9e8..c6b7a91 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -34,7 +34,7 @@ update-icon-cache:
 
 resourcesdir = $(pkgdatadir)
 resources_DATA = \
-	conduit.glade \
+	conduit.ui \
 	backpack.png \
 	evolution-tasks.png \
 	evolution-memos.png \
diff --git a/data/conduit.glade b/data/conduit.ui
similarity index 62%
rename from data/conduit.glade
rename to data/conduit.ui
index ad834ba..285fb4f 100644
--- a/data/conduit.glade
+++ b/data/conduit.ui
@@ -1,772 +1,660 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--*- mode: xml -*-->
-<glade-interface>
-  <widget class="GtkWindow" id="MainWindow">
+<?xml version="1.0"?>
+<interface>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkWindow" id="MainWindow">
     <property name="title" translatable="yes">Title</property>
-    <accessibility>
-      <atkproperty name="AtkObject::accessible_name" translatable="yes">Editor</atkproperty>
-    </accessibility>
-    <signal name="size_allocate" handler="on_mainwindow_resized"/>
+    <child internal-child="accessible">
+      <object class="AtkObject" id="MainWindow-atkobject">
+        <property name="AtkObject::accessible-name" translatable="yes">Editor</property>
+      </object>
+    </child>
     <signal name="delete_event" handler="on_mainwindow_delete"/>
     <signal name="window_state_event" handler="on_mainwindow_state_event"/>
     <child>
-      <widget class="GtkVBox" id="vbox1">
+      <object class="GtkVBox" id="vbox1">
         <property name="visible">True</property>
+        <property name="orientation">vertical</property>
         <child>
-          <widget class="GtkMenuBar" id="menubar1">
+          <object class="GtkMenuBar" id="menubar1">
             <property name="visible">True</property>
             <child>
-              <widget class="GtkMenuItem" id="file_menu_item">
+              <object class="GtkMenuItem" id="file_menu_item">
                 <property name="visible">True</property>
                 <property name="label" translatable="yes">_File</property>
                 <property name="use_underline">True</property>
-                <child>
-                  <widget class="GtkMenu" id="file_menu">
+                <child type="submenu">
+                  <object class="GtkMenu" id="file_menu">
                     <child>
-                      <widget class="GtkImageMenuItem" id="save1">
-                        <property name="visible">True</property>
+                      <object class="GtkImageMenuItem" id="save1">
                         <property name="label">gtk-save</property>
+                        <property name="visible">True</property>
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
                         <signal name="activate" handler="on_save1_activate"/>
-                      </widget>
+                      </object>
                     </child>
                     <child>
-                      <widget class="GtkImageMenuItem" id="synchronize">
+                      <object class="GtkImageMenuItem" id="synchronize">
+                        <property name="label">Synchronize All</property>
                         <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">Synchronizes all groups</property>
-                        <property name="label" translatable="yes">Synchronize All</property>
-                        <property name="use_underline">True</property>
+                        <property name="image">image7</property>
+                        <property name="use_stock">False</property>
                         <signal name="activate" handler="on_synchronize_activate"/>
-                        <child internal-child="image">
-                          <widget class="GtkImage" id="image67">
-                            <property name="visible">True</property>
-                            <property name="stock">gtk-execute</property>
-                            <property name="icon_size">1</property>
-                          </widget>
-                        </child>
-                      </widget>
+                      </object>
                     </child>
                     <child>
-                      <widget class="GtkImageMenuItem" id="cancel">
+                      <object class="GtkImageMenuItem" id="cancel">
+                        <property name="label">Cancel Synchronization</property>
                         <property name="visible">True</property>
                         <property name="sensitive">False</property>
                         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="tooltip" translatable="yes">Cancel currently-synchronizing groups</property>
-                        <property name="label" translatable="yes">Cancel Synchronization</property>
-                        <property name="use_underline">True</property>
+                        <property name="image">image8</property>
+                        <property name="use_stock">False</property>
                         <signal name="activate" handler="on_cancel_activate"/>
-                        <child internal-child="image">
-                          <widget class="GtkImage" id="menu-item-image10">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                            <property name="stock">gtk-cancel</property>
-                          </widget>
-                        </child>
-                      </widget>
+                      </object>
                     </child>
                     <child>
-                      <widget class="GtkSeparatorMenuItem" id="separator7">
+                      <object class="GtkSeparatorMenuItem" id="separator7">
                         <property name="visible">True</property>
-                      </widget>
+                      </object>
                     </child>
                     <child>
-                      <widget class="GtkImageMenuItem" id="quit">
-                        <property name="visible">True</property>
+                      <object class="GtkImageMenuItem" id="quit">
                         <property name="label">gtk-quit</property>
+                        <property name="visible">True</property>
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
                         <signal name="activate" handler="on_quit_activate"/>
-                      </widget>
+                      </object>
                     </child>
-                  </widget>
+                  </object>
                 </child>
-              </widget>
+              </object>
             </child>
             <child>
-              <widget class="GtkMenuItem" id="edit_menu_item">
+              <object class="GtkMenuItem" id="edit_menu_item">
                 <property name="visible">True</property>
                 <property name="label" translatable="yes">_Edit</property>
                 <property name="use_underline">True</property>
-                <child>
-                  <widget class="GtkMenu" id="edit_menu">
+                <child type="submenu">
+                  <object class="GtkMenu" id="edit_menu">
                     <child>
-                      <widget class="GtkImageMenuItem" id="clear_canvas">
+                      <object class="GtkImageMenuItem" id="clear_canvas">
+                        <property name="label">Clear Canvas</property>
                         <property name="visible">True</property>
-                        <property name="label" translatable="yes">Clear Canvas</property>
-                        <property name="use_underline">True</property>
+                        <property name="image">image9</property>
+                        <property name="use_stock">False</property>
                         <signal name="activate" handler="on_clear_canvas_activate"/>
-                        <child internal-child="image">
-                          <widget class="GtkImage" id="image68">
-                            <property name="visible">True</property>
-                            <property name="stock">gtk-clear</property>
-                            <property name="icon_size">1</property>
-                          </widget>
-                        </child>
-                      </widget>
+                      </object>
                     </child>
                     <child>
-                      <widget class="GtkSeparatorMenuItem" id="separator2">
+                      <object class="GtkSeparatorMenuItem" id="separator2">
                         <property name="visible">True</property>
-                      </widget>
+                      </object>
                     </child>
                     <child>
-                      <widget class="GtkImageMenuItem" id="preferences">
-                        <property name="visible">True</property>
+                      <object class="GtkImageMenuItem" id="preferences">
                         <property name="label">gtk-preferences</property>
+                        <property name="visible">True</property>
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
                         <signal name="activate" handler="on_preferences_activate"/>
-                      </widget>
+                      </object>
                     </child>
-                  </widget>
+                  </object>
                 </child>
-              </widget>
+              </object>
             </child>
             <child>
-              <widget class="GtkMenuItem" id="help_menu_item">
+              <object class="GtkMenuItem" id="help_menu_item">
                 <property name="visible">True</property>
                 <property name="label" translatable="yes">_Help</property>
                 <property name="use_underline">True</property>
-                <child>
-                  <widget class="GtkMenu" id="help_menu">
+                <child type="submenu">
+                  <object class="GtkMenu" id="help_menu">
                     <child>
-                      <widget class="GtkImageMenuItem" id="contents">
+                      <object class="GtkImageMenuItem" id="contents">
+                        <property name="label">gtk-help</property>
                         <property name="visible">True</property>
-                        <property name="label" translatable="yes">Contents</property>
                         <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
                         <signal name="activate" handler="on_contents_activate"/>
-                        <child internal-child="image">
-                          <widget class="GtkImage" id="image69">
-                            <property name="visible">True</property>
-                            <property name="stock">gtk-help</property>
-                            <property name="icon_size">1</property>
-                          </widget>
-                        </child>
-                      </widget>
+                      </object>
                     </child>
                     <child>
-                      <widget class="GtkImageMenuItem" id="about">
-                        <property name="visible">True</property>
+                      <object class="GtkImageMenuItem" id="about">
                         <property name="label">gtk-about</property>
+                        <property name="visible">True</property>
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
                         <signal name="activate" handler="on_about_activate"/>
-                      </widget>
+                      </object>
                     </child>
-                  </widget>
+                  </object>
                 </child>
-              </widget>
+              </object>
             </child>
-          </widget>
+          </object>
           <packing>
             <property name="expand">False</property>
             <property name="fill">False</property>
+            <property name="position">0</property>
           </packing>
         </child>
         <child>
-          <widget class="GtkHPaned" id="hpaned1">
+          <object class="GtkHPaned" id="hpaned1">
             <property name="visible">True</property>
             <property name="can_focus">True</property>
-            <signal name="size_request" handler="on_hpane_move_handle"/>
             <child>
-              <widget class="GtkVBox" id="vbox3">
+              <object class="GtkVBox" id="vbox3">
                 <property name="width_request">250</property>
                 <property name="visible">True</property>
+                <property name="orientation">vertical</property>
                 <child>
-                  <widget class="GtkLabel" id="label1">
+                  <object class="GtkLabel" id="label1">
                     <property name="visible">True</property>
                     <property name="label" translatable="yes">Data Providers</property>
-                  </widget>
+                  </object>
                   <packing>
                     <property name="expand">False</property>
+                    <property name="position">0</property>
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkScrolledWindow" id="scrolledwindow2">
+                  <object class="GtkScrolledWindow" id="scrolledwindow2">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
-                    <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                    <property name="shadow_type">GTK_SHADOW_IN</property>
+                    <property name="hscrollbar_policy">automatic</property>
+                    <property name="vscrollbar_policy">automatic</property>
+                    <property name="shadow_type">in</property>
                     <child>
                       <placeholder/>
                     </child>
-                  </widget>
+                  </object>
                   <packing>
                     <property name="position">1</property>
                   </packing>
                 </child>
-              </widget>
+              </object>
               <packing>
                 <property name="resize">False</property>
                 <property name="shrink">False</property>
               </packing>
             </child>
             <child>
-              <widget class="GtkVPaned" id="vpaned1">
+              <object class="GtkVPaned" id="vpaned1">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
+                <property name="orientation">vertical</property>
                 <child>
-                  <widget class="GtkVBox" id="mainVbox">
+                  <object class="GtkVBox" id="mainVbox">
                     <property name="visible">True</property>
+                    <property name="orientation">vertical</property>
                     <child>
-                      <widget class="GtkScrolledWindow" id="canvasScrolledWindow">
+                      <object class="GtkScrolledWindow" id="canvasScrolledWindow">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
-                        <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                        <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                        <property name="hscrollbar_policy">never</property>
+                        <property name="vscrollbar_policy">automatic</property>
                         <child>
                           <placeholder/>
                         </child>
-                      </widget>
+                      </object>
+                      <packing>
+                        <property name="position">0</property>
+                      </packing>
                     </child>
-                  </widget>
+                  </object>
                   <packing>
                     <property name="resize">False</property>
                     <property name="shrink">False</property>
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkExpander" id="conflictExpander">
+                  <object class="GtkExpander" id="conflictExpander">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <child>
-                      <widget class="GtkVBox" id="conflictExpanderVBox">
+                      <object class="GtkVBox" id="conflictExpanderVBox">
                         <property name="visible">True</property>
+                        <property name="orientation">vertical</property>
                         <child>
-                          <widget class="GtkScrolledWindow" id="conflictScrolledWindow">
+                          <object class="GtkScrolledWindow" id="conflictScrolledWindow">
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
-                            <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
-                            <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                            <property name="hscrollbar_policy">never</property>
+                            <property name="vscrollbar_policy">automatic</property>
                             <child>
                               <placeholder/>
                             </child>
-                          </widget>
+                          </object>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
                         </child>
                         <child>
-                          <widget class="GtkHBox" id="hbox20">
+                          <object class="GtkHBox" id="hbox20">
                             <property name="visible">True</property>
                             <child>
-                              <widget class="GtkHButtonBox" id="hbuttonbox13">
+                              <object class="GtkHButtonBox" id="hbuttonbox13">
                                 <property name="visible">True</property>
-                                <property name="layout_style">GTK_BUTTONBOX_END</property>
+                                <property name="layout_style">end</property>
                                 <child>
-                                  <widget class="GtkButton" id="conflictCompareButton">
+                                  <object class="GtkButton" id="conflictCompareButton">
                                     <property name="visible">True</property>
                                     <property name="can_focus">True</property>
                                     <property name="can_default">True</property>
-                                    <property name="response_id">0</property>
+                                    <property name="receives_default">False</property>
                                     <child>
-                                      <widget class="GtkAlignment" id="alignment15">
+                                      <object class="GtkAlignment" id="alignment15">
                                         <property name="visible">True</property>
                                         <property name="xscale">0</property>
                                         <property name="yscale">0</property>
                                         <child>
-                                          <widget class="GtkHBox" id="hbox21">
+                                          <object class="GtkHBox" id="hbox21">
                                             <property name="visible">True</property>
                                             <property name="spacing">2</property>
                                             <child>
-                                              <widget class="GtkImage" id="image75">
+                                              <object class="GtkImage" id="image75">
                                                 <property name="visible">True</property>
                                                 <property name="stock">gtk-find</property>
-                                              </widget>
+                                              </object>
                                               <packing>
                                                 <property name="expand">False</property>
                                                 <property name="fill">False</property>
+                                                <property name="position">0</property>
                                               </packing>
                                             </child>
                                             <child>
-                                              <widget class="GtkLabel" id="label79">
+                                              <object class="GtkLabel" id="label79">
                                                 <property name="visible">True</property>
                                                 <property name="label" translatable="yes">Compare</property>
                                                 <property name="use_underline">True</property>
-                                              </widget>
+                                              </object>
                                               <packing>
                                                 <property name="expand">False</property>
                                                 <property name="fill">False</property>
                                                 <property name="position">1</property>
                                               </packing>
                                             </child>
-                                          </widget>
+                                          </object>
                                         </child>
-                                      </widget>
+                                      </object>
                                     </child>
-                                  </widget>
+                                  </object>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">0</property>
+                                  </packing>
                                 </child>
                                 <child>
-                                  <widget class="GtkButton" id="conflictCancelButton">
+                                  <object class="GtkButton" id="conflictCancelButton">
+                                    <property name="label">gtk-cancel</property>
                                     <property name="visible">True</property>
                                     <property name="can_focus">True</property>
                                     <property name="can_default">True</property>
-                                    <property name="label">gtk-cancel</property>
+                                    <property name="receives_default">False</property>
                                     <property name="use_stock">True</property>
-                                    <property name="response_id">0</property>
-                                  </widget>
+                                  </object>
                                   <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
                                     <property name="position">1</property>
                                   </packing>
                                 </child>
                                 <child>
-                                  <widget class="GtkButton" id="conflictResolveButton">
+                                  <object class="GtkButton" id="conflictResolveButton">
                                     <property name="visible">True</property>
                                     <property name="can_focus">True</property>
                                     <property name="can_default">True</property>
-                                    <property name="response_id">0</property>
+                                    <property name="receives_default">False</property>
                                     <child>
-                                      <widget class="GtkAlignment" id="alignment13">
+                                      <object class="GtkAlignment" id="alignment13">
                                         <property name="visible">True</property>
                                         <property name="xscale">0</property>
                                         <property name="yscale">0</property>
                                         <child>
-                                          <widget class="GtkHBox" id="hbox20">
+                                          <object class="GtkHBox" id="hbox111">
                                             <property name="visible">True</property>
                                             <property name="spacing">2</property>
                                             <child>
-                                              <widget class="GtkImage" id="image73">
+                                              <object class="GtkImage" id="image73">
                                                 <property name="visible">True</property>
                                                 <property name="stock">gtk-apply</property>
-                                              </widget>
+                                              </object>
                                               <packing>
                                                 <property name="expand">False</property>
                                                 <property name="fill">False</property>
+                                                <property name="position">0</property>
                                               </packing>
                                             </child>
                                             <child>
-                                              <widget class="GtkLabel" id="label75">
+                                              <object class="GtkLabel" id="label75">
                                                 <property name="visible">True</property>
                                                 <property name="label" translatable="yes">Resolve Conflicts</property>
                                                 <property name="use_underline">True</property>
-                                              </widget>
+                                              </object>
                                               <packing>
                                                 <property name="expand">False</property>
                                                 <property name="fill">False</property>
                                                 <property name="position">1</property>
                                               </packing>
                                             </child>
-                                          </widget>
+                                          </object>
                                         </child>
-                                      </widget>
+                                      </object>
                                     </child>
-                                  </widget>
+                                  </object>
                                   <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
                                     <property name="position">2</property>
                                   </packing>
                                 </child>
-                              </widget>
+                              </object>
+                              <packing>
+                                <property name="position">0</property>
+                              </packing>
                             </child>
                             <child>
-                              <widget class="GtkToggleButton" id="conflictFullscreenButton">
+                              <object class="GtkToggleButton" id="conflictFullscreenButton">
                                 <property name="height_request">36</property>
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
                                 <property name="border_width">3</property>
-                                <property name="response_id">0</property>
                                 <child>
-                                  <widget class="GtkImage" id="image74">
+                                  <object class="GtkImage" id="image74">
                                     <property name="visible">True</property>
                                     <property name="stock">gtk-fullscreen</property>
-                                  </widget>
+                                  </object>
                                 </child>
-                              </widget>
+                              </object>
                               <packing>
                                 <property name="expand">False</property>
                                 <property name="fill">False</property>
                                 <property name="position">1</property>
                               </packing>
                             </child>
-                          </widget>
+                          </object>
                           <packing>
                             <property name="expand">False</property>
                             <property name="fill">False</property>
                             <property name="position">1</property>
                           </packing>
                         </child>
-                      </widget>
+                      </object>
                     </child>
-                    <child>
-                      <widget class="GtkLabel" id="label74">
+                    <child type="label">
+                      <object class="GtkLabel" id="label74">
                         <property name="visible">True</property>
                         <property name="label" translatable="yes">Conflicts</property>
-                      </widget>
-                      <packing>
-                        <property name="type">label_item</property>
-                      </packing>
+                      </object>
                     </child>
-                  </widget>
+                  </object>
                   <packing>
                     <property name="resize">False</property>
                     <property name="shrink">False</property>
                   </packing>
                 </child>
-              </widget>
+              </object>
               <packing>
                 <property name="resize">False</property>
                 <property name="shrink">False</property>
               </packing>
             </child>
-          </widget>
+          </object>
           <packing>
             <property name="position">1</property>
           </packing>
         </child>
         <child>
-          <widget class="GtkStatusbar" id="statusbar1">
+          <object class="GtkStatusbar" id="statusbar1">
             <property name="visible">True</property>
-          </widget>
+          </object>
           <packing>
             <property name="expand">False</property>
             <property name="fill">False</property>
             <property name="position">2</property>
           </packing>
         </child>
-      </widget>
+      </object>
     </child>
-  </widget>
-  <widget class="GtkMenu" id="ConduitMenu">
+  </object>
+  <object class="GtkMenu" id="ConduitMenu">
     <child>
-      <widget class="GtkImageMenuItem" id="refresh_group">
+      <object class="GtkImageMenuItem" id="refresh_conduit">
+        <property name="label">Regresh Group</property>
         <property name="visible">True</property>
-        <property name="label" translatable="yes">Refresh Group</property>
-        <property name="use_underline">True</property>
-        <signal name="activate" handler="on_refresh_conduit_clicked"/>
-        <child internal-child="image">
-          <widget class="GtkImage" id="image86">
-            <property name="visible">True</property>
-            <property name="stock">gtk-refresh</property>
-            <property name="icon_size">1</property>
-          </widget>
-        </child>
-      </widget>
+        <property name="image">image1</property>
+        <property name="use_stock">False</property>
+      </object>
     </child>
     <child>
-      <widget class="GtkImageMenuItem" id="synchronize_group">
+      <object class="GtkImageMenuItem" id="synchronize_conduit">
+        <property name="label">Synchronize Group</property>
         <property name="visible">True</property>
-        <property name="tooltip" translatable="yes">Synchronize group</property>
-        <property name="label" translatable="yes">Synchronize Group</property>
-        <property name="use_underline">True</property>
-        <signal name="activate" handler="on_synchronize_conduit_clicked"/>
-        <child internal-child="image">
-          <widget class="GtkImage" id="image87">
-            <property name="visible">True</property>
-            <property name="stock">gtk-execute</property>
-            <property name="icon_size">1</property>
-          </widget>
-        </child>
-      </widget>
+        <property name="image">image2</property>
+        <property name="use_stock">False</property>
+      </object>
     </child>
     <child>
-      <widget class="GtkSeparatorMenuItem" id="separator6">
+      <object class="GtkSeparatorMenuItem" id="separator6">
         <property name="visible">True</property>
-      </widget>
+      </object>
     </child>
     <child>
-      <widget class="GtkImageMenuItem" id="delete_group">
+      <object class="GtkImageMenuItem" id="delete_conduit">
+        <property name="label">Delete Group</property>
         <property name="visible">True</property>
-        <property name="label" translatable="yes">Delete Group</property>
-        <property name="use_underline">True</property>
-        <signal name="activate" handler="on_delete_conduit_clicked"/>
-        <child internal-child="image">
-          <widget class="GtkImage" id="image88">
-            <property name="visible">True</property>
-            <property name="stock">gtk-delete</property>
-            <property name="icon_size">1</property>
-          </widget>
-        </child>
-      </widget>
+        <property name="image">image3</property>
+        <property name="use_stock">False</property>
+      </object>
     </child>
     <child>
-      <widget class="GtkSeparatorMenuItem" id="separator8">
+      <object class="GtkSeparatorMenuItem" id="separator8">
         <property name="visible">True</property>
-      </widget>
+      </object>
     </child>
     <child>
-      <widget class="GtkMenuItem" id="sync_options">
+      <object class="GtkMenuItem" id="sync_options">
         <property name="visible">True</property>
         <property name="label" translatable="yes">Synchronization Options</property>
         <property name="use_underline">True</property>
-        <child>
-          <widget class="GtkMenu" id="sync_options_menu">
+        <child type="submenu">
+          <object class="GtkMenu" id="sync_options_menu">
             <child>
-              <widget class="GtkCheckMenuItem" id="slow_sync">
+              <object class="GtkCheckMenuItem" id="slow_sync">
                 <property name="visible">True</property>
                 <property name="label" translatable="yes">Slow Synchronization</property>
                 <property name="use_underline">True</property>
-                <signal name="activate" handler="on_slow_sync_activate"/>
-              </widget>
+              </object>
             </child>
             <child>
-              <widget class="GtkCheckMenuItem" id="two_way_sync">
+              <object class="GtkCheckMenuItem" id="two_way_sync">
                 <property name="visible">True</property>
                 <property name="label" translatable="yes">Two-Way Synchronization</property>
                 <property name="use_underline">True</property>
-                <signal name="activate" handler="on_two_way_sync_group_clicked"/>
-              </widget>
+              </object>
             </child>
             <child>
-              <widget class="GtkCheckMenuItem" id="auto_sync">
+              <object class="GtkCheckMenuItem" id="auto_sync">
                 <property name="visible">True</property>
                 <property name="label" translatable="yes">Always Up-To-Date</property>
                 <property name="use_underline">True</property>
-                <signal name="activate" handler="on_autosync_clicked"/>
-              </widget>
+              </object>
             </child>
-          </widget>
+          </object>
         </child>
-      </widget>
+      </object>
     </child>
     <child>
-      <widget class="GtkMenuItem" id="conflict">
+      <object class="GtkMenuItem" id="conflict">
         <property name="visible">True</property>
-        <property name="tooltip" translatable="yes">When there is a conflict...</property>
         <property name="label" translatable="yes">Conflict Options</property>
         <property name="use_underline">True</property>
-        <child>
-          <widget class="GtkMenu" id="conflict_menu">
+        <child type="submenu">
+          <object class="GtkMenu" id="conflict_menu">
             <child>
-              <widget class="GtkRadioMenuItem" id="conflict_ask">
+              <object class="GtkRadioMenuItem" id="conflict_ask">
                 <property name="visible">True</property>
                 <property name="label" translatable="yes">Ask Me What to Do</property>
                 <property name="use_underline">True</property>
                 <property name="draw_as_radio">True</property>
-              </widget>
+              </object>
             </child>
             <child>
-              <widget class="GtkRadioMenuItem" id="conflict_replace">
+              <object class="GtkRadioMenuItem" id="conflict_replace">
                 <property name="visible">True</property>
                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                 <property name="label" translatable="yes">Replace the Older Item</property>
                 <property name="use_underline">True</property>
                 <property name="draw_as_radio">True</property>
                 <property name="group">conflict_ask</property>
-              </widget>
+              </object>
             </child>
             <child>
-              <widget class="GtkRadioMenuItem" id="conflict_skip">
+              <object class="GtkRadioMenuItem" id="conflict_skip">
                 <property name="visible">True</property>
                 <property name="label" translatable="yes">Skip</property>
                 <property name="use_underline">True</property>
                 <property name="draw_as_radio">True</property>
                 <property name="group">conflict_ask</property>
-              </widget>
+              </object>
             </child>
-          </widget>
+          </object>
         </child>
-      </widget>
+      </object>
     </child>
     <child>
-      <widget class="GtkMenuItem" id="deleted">
+      <object class="GtkMenuItem" id="deleted">
         <property name="visible">True</property>
         <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="tooltip" translatable="yes">When an item is deleted...</property>
         <property name="label" translatable="yes">Delete Options</property>
         <property name="use_underline">True</property>
-        <child>
-          <widget class="GtkMenu" id="deleted_menu">
+        <child type="submenu">
+          <object class="GtkMenu" id="deleted_menu">
             <property name="visible">True</property>
             <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
             <child>
-              <widget class="GtkRadioMenuItem" id="deleted_ask">
+              <object class="GtkRadioMenuItem" id="deleted_ask">
                 <property name="visible">True</property>
                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                 <property name="label" translatable="yes">Ask Me What to Do</property>
                 <property name="use_underline">True</property>
                 <property name="draw_as_radio">True</property>
-              </widget>
+              </object>
             </child>
             <child>
-              <widget class="GtkRadioMenuItem" id="deleted_replace">
+              <object class="GtkRadioMenuItem" id="deleted_replace">
                 <property name="visible">True</property>
                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                 <property name="label" translatable="yes">Delete the Corresponding Item</property>
                 <property name="use_underline">True</property>
                 <property name="draw_as_radio">True</property>
                 <property name="group">deleted_ask</property>
-              </widget>
+              </object>
             </child>
             <child>
-              <widget class="GtkRadioMenuItem" id="deleted_skip">
+              <object class="GtkRadioMenuItem" id="deleted_skip">
                 <property name="visible">True</property>
                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                 <property name="label" translatable="yes">Skip</property>
                 <property name="use_underline">True</property>
                 <property name="draw_as_radio">True</property>
                 <property name="group">deleted_ask</property>
-              </widget>
+              </object>
             </child>
-          </widget>
+          </object>
         </child>
-      </widget>
+      </object>
     </child>
-  </widget>
-  <widget class="GtkMenu" id="DataProviderMenu">
+  </object>
+  <object class="GtkMenu" id="DataProviderMenu">
     <child>
-      <widget class="GtkImageMenuItem" id="refresh_item">
+      <object class="GtkImageMenuItem" id="refresh_dataprovider">
+        <property name="label">Refresh Item</property>
         <property name="visible">True</property>
-        <property name="label" translatable="yes">Refresh Item</property>
-        <property name="use_underline">True</property>
-        <signal name="activate" handler="on_refresh_dataprovider_clicked"/>
-        <child internal-child="image">
-          <widget class="GtkImage" id="image81">
-            <property name="visible">True</property>
-            <property name="stock">gtk-refresh</property>
-            <property name="icon_size">1</property>
-          </widget>
-        </child>
-      </widget>
+        <property name="image">image4</property>
+        <property name="use_stock">False</property>
+      </object>
     </child>
     <child>
-      <widget class="GtkImageMenuItem" id="configure">
+      <object class="GtkImageMenuItem" id="configure_dataprovider">
+        <property name="label">Configure Item</property>
         <property name="visible">True</property>
-        <property name="tooltip" translatable="yes">Configure the synchronization settings for this item</property>
-        <property name="label" translatable="yes">Configure Item</property>
-        <property name="use_underline">True</property>
-        <signal name="activate" handler="on_configure_dataprovider_clicked"/>
-        <child internal-child="image">
-          <widget class="GtkImage" id="image82">
-            <property name="visible">True</property>
-            <property name="stock">gtk-preferences</property>
-            <property name="icon_size">1</property>
-          </widget>
-        </child>
-      </widget>
+        <property name="image">image5</property>
+        <property name="use_stock">False</property>
+      </object>
     </child>
     <child>
-      <widget class="GtkSeparatorMenuItem" id="separator5">
+      <object class="GtkSeparatorMenuItem" id="separator5">
         <property name="visible">True</property>
-      </widget>
+      </object>
     </child>
     <child>
-      <widget class="GtkImageMenuItem" id="delete_item">
-        <property name="visible">True</property>
-        <property name="label" translatable="yes">Delete Item</property>
-        <property name="use_underline">True</property>
-        <signal name="activate" handler="on_delete_dataprovider_clicked"/>
-        <child internal-child="image">
-          <widget class="GtkImage" id="image83">
-            <property name="visible">True</property>
-            <property name="stock">gtk-delete</property>
-            <property name="icon_size">1</property>
-          </widget>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="GtkDialog" id="DataProviderConfigDialog">
-    <property name="visible">True</property>
-    <property name="title">dialog1</property>
-    <property name="resizable">False</property>
-    <property name="modal">True</property>
-    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
-    <signal name="close" handler="on_dialog_close"/>
-    <child internal-child="vbox">
-      <widget class="GtkVBox" id="configVBox">
+      <object class="GtkImageMenuItem" id="delete_dataprovider">
+        <property name="label">Delete Item</property>
         <property name="visible">True</property>
-        <property name="spacing">8</property>
-        <child>
-          <placeholder/>
-        </child>
-        <child internal-child="action_area">
-          <widget class="GtkHButtonBox" id="dialog-action_area1">
-            <property name="visible">True</property>
-            <property name="layout_style">GTK_BUTTONBOX_END</property>
-            <child>
-              <widget class="GtkButton" id="helpbutton">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="label">gtk-help</property>
-                <property name="use_stock">True</property>
-                <property name="response_id">-11</property>
-                <signal name="clicked" handler="on_helpbutton_clicked"/>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkButton" id="cancelbutton">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="label">gtk-cancel</property>
-                <property name="use_stock">True</property>
-                <property name="response_id">-6</property>
-                <signal name="clicked" handler="on_cancelbutton_clicked"/>
-              </widget>
-              <packing>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkButton" id="okbutton">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="label">gtk-ok</property>
-                <property name="use_stock">True</property>
-                <property name="response_id">-5</property>
-                <signal name="clicked" handler="on_okbutton_clicked"/>
-              </widget>
-              <packing>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
-          </packing>
-        </child>
-      </widget>
+        <property name="image">image6</property>
+        <property name="use_stock">False</property>
+      </object>
     </child>
-  </widget>
-  <widget class="GtkDialog" id="PreferencesDialog">
-    <property name="visible">True</property>
+  </object>
+  <object class="GtkDialog" id="PreferencesDialog">
     <property name="title" translatable="yes">Conduit Preferences</property>
     <property name="default_width">350</property>
     <property name="default_height">450</property>
-    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+    <property name="type_hint">dialog</property>
     <child internal-child="vbox">
-      <widget class="GtkVBox" id="dialog-vbox1">
+      <object class="GtkVBox" id="dialog-vbox1">
         <property name="visible">True</property>
+        <property name="orientation">vertical</property>
         <child>
-          <widget class="GtkNotebook" id="prop_notebook">
+          <object class="GtkNotebook" id="prop_notebook">
             <property name="visible">True</property>
             <property name="can_focus">True</property>
             <child>
-              <widget class="GtkVBox" id="vbox28">
+              <object class="GtkVBox" id="vbox28">
                 <property name="visible">True</property>
+                <property name="orientation">vertical</property>
                 <child>
-                  <widget class="GtkFrame" id="frame5">
+                  <object class="GtkFrame" id="frame5">
                     <property name="visible">True</property>
                     <property name="label_xalign">0</property>
-                    <property name="shadow_type">GTK_SHADOW_NONE</property>
+                    <property name="shadow_type">none</property>
                     <child>
-                      <widget class="GtkAlignment" id="alignment12">
+                      <object class="GtkAlignment" id="alignment12">
                         <property name="visible">True</property>
                         <property name="left_padding">12</property>
                         <child>
-                          <widget class="GtkVBox" id="vbox29">
+                          <object class="GtkVBox" id="vbox29">
                             <property name="visible">True</property>
+                            <property name="orientation">vertical</property>
                             <property name="spacing">5</property>
                             <child>
-                              <widget class="GtkCheckButton" id="start_at_login">
+                              <object class="GtkCheckButton" id="start_at_login">
+                                <property name="label" translatable="yes">Start Conduit at login</property>
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
-                                <property name="label" translatable="yes">Start Conduit at login</property>
-                                <property name="response_id">0</property>
+                                <property name="receives_default">False</property>
                                 <property name="draw_indicator">True</property>
-                              </widget>
+                              </object>
+                              <packing>
+                                <property name="position">0</property>
+                              </packing>
                             </child>
                             <child>
-                              <widget class="GtkCheckButton" id="save_settings_check">
+                              <object class="GtkCheckButton" id="save_settings_check">
+                                <property name="label" translatable="yes">Save settings on exit</property>
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
-                                <property name="label" translatable="yes">Save settings on exit</property>
+                                <property name="receives_default">False</property>
                                 <property name="use_underline">True</property>
-                                <property name="response_id">0</property>
                                 <property name="draw_indicator">True</property>
-                              </widget>
+                              </object>
                               <packing>
                                 <property name="expand">False</property>
                                 <property name="fill">False</property>
@@ -774,14 +662,14 @@
                               </packing>
                             </child>
                             <child>
-                              <widget class="GtkCheckButton" id="status_icon_check">
+                              <object class="GtkCheckButton" id="status_icon_check">
+                                <property name="label" translatable="yes">Show status icon</property>
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
-                                <property name="label" translatable="yes">Show status icon</property>
+                                <property name="receives_default">False</property>
                                 <property name="use_underline">True</property>
-                                <property name="response_id">0</property>
                                 <property name="draw_indicator">True</property>
-                              </widget>
+                              </object>
                               <packing>
                                 <property name="expand">False</property>
                                 <property name="fill">False</property>
@@ -789,14 +677,14 @@
                               </packing>
                             </child>
                             <child>
-                              <widget class="GtkCheckButton" id="minimize_to_tray_check">
+                              <object class="GtkCheckButton" id="minimize_to_tray_check">
+                                <property name="label" translatable="yes">Minimize to notification area</property>
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
-                                <property name="label" translatable="yes">Minimize to notification area</property>
+                                <property name="receives_default">False</property>
                                 <property name="use_underline">True</property>
-                                <property name="response_id">0</property>
                                 <property name="draw_indicator">True</property>
-                              </widget>
+                              </object>
                               <packing>
                                 <property name="expand">False</property>
                                 <property name="fill">False</property>
@@ -804,91 +692,93 @@
                               </packing>
                             </child>
                             <child>
-                              <widget class="GtkCheckButton" id="show_hints_check">
+                              <object class="GtkCheckButton" id="show_hints_check">
+                                <property name="label" translatable="yes">Show Hints</property>
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
-                                <property name="label" translatable="yes">Show Hints</property>
-                                <property name="response_id">0</property>
+                                <property name="receives_default">False</property>
                                 <property name="draw_indicator">True</property>
-                              </widget>
+                              </object>
                               <packing>
                                 <property name="position">4</property>
                               </packing>
                             </child>
-                          </widget>
+                          </object>
                         </child>
-                      </widget>
+                      </object>
                     </child>
-                    <child>
-                      <widget class="GtkLabel" id="label66">
+                    <child type="label">
+                      <object class="GtkLabel" id="label66">
                         <property name="visible">True</property>
                         <property name="label" translatable="yes">&lt;b&gt;General&lt;/b&gt;</property>
                         <property name="use_markup">True</property>
-                      </widget>
-                      <packing>
-                        <property name="type">label_item</property>
-                      </packing>
+                      </object>
                     </child>
-                  </widget>
+                  </object>
                   <packing>
                     <property name="expand">False</property>
+                    <property name="position">0</property>
                   </packing>
                 </child>
                 <child>
-                  <widget class="GtkFrame" id="frame6">
+                  <object class="GtkFrame" id="frame6">
                     <property name="visible">True</property>
                     <property name="label_xalign">0</property>
-                    <property name="shadow_type">GTK_SHADOW_NONE</property>
+                    <property name="shadow_type">none</property>
                     <child>
-                      <widget class="GtkAlignment" id="alignment14">
+                      <object class="GtkAlignment" id="alignment14">
                         <property name="visible">True</property>
                         <property name="left_padding">12</property>
                         <child>
-                          <widget class="GtkVBox" id="vbox34">
+                          <object class="GtkVBox" id="vbox34">
                             <property name="visible">True</property>
+                            <property name="orientation">vertical</property>
                             <property name="spacing">5</property>
                             <child>
-                              <widget class="GtkLabel" id="label78">
+                              <object class="GtkLabel" id="label78">
                                 <property name="visible">True</property>
                                 <property name="xalign">0</property>
                                 <property name="label" translatable="yes">When an item has been deleted:</property>
-                              </widget>
+                              </object>
                               <packing>
                                 <property name="expand">False</property>
                                 <property name="fill">False</property>
+                                <property name="position">0</property>
                               </packing>
                             </child>
                             <child>
-                              <widget class="GtkHBox" id="hbox1">
+                              <object class="GtkHBox" id="hbox1">
                                 <property name="visible">True</property>
                                 <child>
-                                  <widget class="GtkVBox" id="vbox2">
+                                  <object class="GtkVBox" id="vbox2">
                                     <property name="visible">True</property>
+                                    <property name="orientation">vertical</property>
                                     <property name="spacing">5</property>
                                     <child>
-                                      <widget class="GtkRadioButton" id="deleted_ask_radio">
+                                      <object class="GtkRadioButton" id="deleted_ask_radio">
+                                        <property name="label" translatable="yes">Ask me what to do</property>
                                         <property name="visible">True</property>
                                         <property name="can_focus">True</property>
-                                        <property name="label" translatable="yes">Ask me what to do</property>
+                                        <property name="receives_default">False</property>
                                         <property name="use_underline">True</property>
-                                        <property name="response_id">0</property>
                                         <property name="draw_indicator">True</property>
-                                      </widget>
+                                      </object>
                                       <packing>
                                         <property name="expand">False</property>
                                         <property name="fill">False</property>
+                                        <property name="position">0</property>
                                       </packing>
                                     </child>
                                     <child>
-                                      <widget class="GtkRadioButton" id="deleted_replace_radio">
+                                      <object class="GtkRadioButton" id="deleted_replace_radio">
+                                        <property name="label" translatable="yes">Delete from the corresponding sink</property>
                                         <property name="visible">True</property>
                                         <property name="can_focus">True</property>
-                                        <property name="label" translatable="yes">Delete from the corresponding sink</property>
+                                        <property name="receives_default">False</property>
                                         <property name="use_underline">True</property>
-                                        <property name="response_id">0</property>
                                         <property name="draw_indicator">True</property>
                                         <property name="group">deleted_ask_radio</property>
-                                      </widget>
+                                      </object>
                                       <packing>
                                         <property name="expand">False</property>
                                         <property name="fill">False</property>
@@ -896,39 +786,40 @@
                                       </packing>
                                     </child>
                                     <child>
-                                      <widget class="GtkRadioButton" id="deleted_skip_radio">
+                                      <object class="GtkRadioButton" id="deleted_skip_radio">
+                                        <property name="label" translatable="yes">Skip</property>
                                         <property name="visible">True</property>
                                         <property name="can_focus">True</property>
-                                        <property name="label" translatable="yes">Skip</property>
+                                        <property name="receives_default">False</property>
                                         <property name="use_underline">True</property>
-                                        <property name="response_id">0</property>
                                         <property name="draw_indicator">True</property>
                                         <property name="group">deleted_ask_radio</property>
-                                      </widget>
+                                      </object>
                                       <packing>
                                         <property name="expand">False</property>
                                         <property name="fill">False</property>
                                         <property name="position">2</property>
                                       </packing>
                                     </child>
-                                  </widget>
+                                  </object>
                                   <packing>
                                     <property name="expand">False</property>
                                     <property name="padding">12</property>
+                                    <property name="position">0</property>
                                   </packing>
                                 </child>
-                              </widget>
+                              </object>
                               <packing>
                                 <property name="expand">False</property>
                                 <property name="position">1</property>
                               </packing>
                             </child>
                             <child>
-                              <widget class="GtkLabel" id="label77">
+                              <object class="GtkLabel" id="label77">
                                 <property name="visible">True</property>
                                 <property name="xalign">0</property>
                                 <property name="label" translatable="yes">When there is a two-way conflict:</property>
-                              </widget>
+                              </object>
                               <packing>
                                 <property name="expand">False</property>
                                 <property name="fill">False</property>
@@ -936,36 +827,38 @@
                               </packing>
                             </child>
                             <child>
-                              <widget class="GtkHBox" id="hbox2">
+                              <object class="GtkHBox" id="hbox2">
                                 <property name="visible">True</property>
                                 <child>
-                                  <widget class="GtkVBox" id="vbox4">
+                                  <object class="GtkVBox" id="vbox4">
                                     <property name="visible">True</property>
+                                    <property name="orientation">vertical</property>
                                     <property name="spacing">5</property>
                                     <child>
-                                      <widget class="GtkRadioButton" id="conflict_ask_radio">
+                                      <object class="GtkRadioButton" id="conflict_ask_radio">
+                                        <property name="label" translatable="yes">Ask me what to do</property>
                                         <property name="visible">True</property>
                                         <property name="can_focus">True</property>
-                                        <property name="label" translatable="yes">Ask me what to do</property>
+                                        <property name="receives_default">False</property>
                                         <property name="use_underline">True</property>
-                                        <property name="response_id">0</property>
                                         <property name="draw_indicator">True</property>
-                                      </widget>
+                                      </object>
                                       <packing>
                                         <property name="expand">False</property>
                                         <property name="fill">False</property>
+                                        <property name="position">0</property>
                                       </packing>
                                     </child>
                                     <child>
-                                      <widget class="GtkRadioButton" id="conflict_replace_radio">
+                                      <object class="GtkRadioButton" id="conflict_replace_radio">
+                                        <property name="label" translatable="yes">Replace the older item</property>
                                         <property name="visible">True</property>
                                         <property name="can_focus">True</property>
-                                        <property name="label" translatable="yes">Replace the older item</property>
+                                        <property name="receives_default">False</property>
                                         <property name="use_underline">True</property>
-                                        <property name="response_id">0</property>
                                         <property name="draw_indicator">True</property>
                                         <property name="group">conflict_ask_radio</property>
-                                      </widget>
+                                      </object>
                                       <packing>
                                         <property name="expand">False</property>
                                         <property name="fill">False</property>
@@ -973,155 +866,198 @@
                                       </packing>
                                     </child>
                                     <child>
-                                      <widget class="GtkRadioButton" id="conflict_skip_radio">
+                                      <object class="GtkRadioButton" id="conflict_skip_radio">
+                                        <property name="label" translatable="yes">Skip</property>
                                         <property name="visible">True</property>
                                         <property name="can_focus">True</property>
-                                        <property name="label" translatable="yes">Skip</property>
+                                        <property name="receives_default">False</property>
                                         <property name="use_underline">True</property>
-                                        <property name="response_id">0</property>
                                         <property name="draw_indicator">True</property>
                                         <property name="group">conflict_ask_radio</property>
-                                      </widget>
+                                      </object>
                                       <packing>
                                         <property name="expand">False</property>
                                         <property name="fill">False</property>
                                         <property name="position">2</property>
                                       </packing>
                                     </child>
-                                  </widget>
+                                  </object>
                                   <packing>
                                     <property name="expand">False</property>
                                     <property name="padding">12</property>
+                                    <property name="position">0</property>
                                   </packing>
                                 </child>
-                              </widget>
+                              </object>
                               <packing>
                                 <property name="expand">False</property>
                                 <property name="position">3</property>
                               </packing>
                             </child>
-                          </widget>
+                          </object>
                         </child>
-                      </widget>
+                      </object>
                     </child>
-                    <child>
-                      <widget class="GtkLabel" id="label76">
+                    <child type="label">
+                      <object class="GtkLabel" id="label76">
                         <property name="visible">True</property>
                         <property name="label" translatable="yes">&lt;b&gt;Default Synchronization Options&lt;/b&gt;</property>
                         <property name="use_markup">True</property>
-                      </widget>
-                      <packing>
-                        <property name="type">label_item</property>
-                      </packing>
+                      </object>
                     </child>
-                  </widget>
+                  </object>
                   <packing>
                     <property name="position">1</property>
                   </packing>
                 </child>
-              </widget>
+              </object>
             </child>
-            <child>
-              <widget class="GtkLabel" id="label65">
+            <child type="tab">
+              <object class="GtkLabel" id="label65">
                 <property name="visible">True</property>
                 <property name="label" translatable="yes">Configuration</property>
-              </widget>
+              </object>
               <packing>
-                <property name="type">tab</property>
                 <property name="tab_fill">False</property>
               </packing>
             </child>
             <child>
-              <widget class="GtkScrolledWindow" id="scrolledwindow9">
+              <object class="GtkScrolledWindow" id="scrolledwindow9">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <child>
-                  <widget class="GtkTreeView" id="dataProvidersTreeView">
+                  <object class="GtkTreeView" id="dataProvidersTreeView">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
-                  </widget>
+                  </object>
                 </child>
-              </widget>
+              </object>
               <packing>
                 <property name="position">1</property>
               </packing>
             </child>
-            <child>
-              <widget class="GtkLabel" id="label37">
+            <child type="tab">
+              <object class="GtkLabel" id="label37">
                 <property name="visible">True</property>
                 <property name="label" translatable="yes">Data Providers</property>
-              </widget>
+              </object>
               <packing>
-                <property name="type">tab</property>
                 <property name="position">1</property>
                 <property name="tab_fill">False</property>
               </packing>
             </child>
             <child>
-              <widget class="GtkScrolledWindow" id="scrolledwindow11">
+              <object class="GtkScrolledWindow" id="scrolledwindow11">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <child>
-                  <widget class="GtkTreeView" id="dataConversionsTreeView">
+                  <object class="GtkTreeView" id="dataConversionsTreeView">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
-                  </widget>
+                  </object>
                 </child>
-              </widget>
+              </object>
               <packing>
                 <property name="position">2</property>
               </packing>
             </child>
-            <child>
-              <widget class="GtkLabel" id="label39">
+            <child type="tab">
+              <object class="GtkLabel" id="label39">
                 <property name="visible">True</property>
                 <property name="label" translatable="yes">Data Conversions</property>
-              </widget>
+              </object>
               <packing>
-                <property name="type">tab</property>
                 <property name="position">2</property>
                 <property name="tab_fill">False</property>
               </packing>
             </child>
-          </widget>
+          </object>
           <packing>
             <property name="position">2</property>
           </packing>
         </child>
         <child internal-child="action_area">
-          <widget class="GtkHButtonBox" id="dialog-action_area2">
+          <object class="GtkHButtonBox" id="dialog-action_area2">
             <property name="visible">True</property>
-            <property name="layout_style">GTK_BUTTONBOX_END</property>
+            <property name="layout_style">end</property>
             <child>
-              <widget class="GtkButton" id="helpbutton1">
+              <object class="GtkButton" id="helpbutton1">
+                <property name="label">gtk-cancel</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="can_default">True</property>
-                <property name="label">gtk-cancel</property>
+                <property name="receives_default">False</property>
                 <property name="use_stock">True</property>
-                <property name="response_id">-6</property>
-              </widget>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
             </child>
             <child>
-              <widget class="GtkButton" id="button30">
+              <object class="GtkButton" id="button30">
+                <property name="label">gtk-ok</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="can_default">True</property>
-                <property name="label">gtk-ok</property>
+                <property name="receives_default">False</property>
                 <property name="use_stock">True</property>
-                <property name="response_id">-5</property>
-              </widget>
+              </object>
               <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
                 <property name="position">1</property>
               </packing>
             </child>
-          </widget>
+          </object>
           <packing>
             <property name="expand">False</property>
-            <property name="pack_type">GTK_PACK_END</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
           </packing>
         </child>
-      </widget>
+      </object>
     </child>
-  </widget>
-</glade-interface>
+    <action-widgets>
+      <action-widget response="-6">helpbutton1</action-widget>
+      <action-widget response="-5">button30</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkImage" id="image1">
+    <property name="visible">True</property>
+    <property name="stock">gtk-refresh</property>
+  </object>
+  <object class="GtkImage" id="image2">
+    <property name="visible">True</property>
+    <property name="stock">gtk-execute</property>
+  </object>
+  <object class="GtkImage" id="image3">
+    <property name="visible">True</property>
+    <property name="stock">gtk-delete</property>
+  </object>
+  <object class="GtkImage" id="image4">
+    <property name="visible">True</property>
+    <property name="stock">gtk-refresh</property>
+  </object>
+  <object class="GtkImage" id="image5">
+    <property name="visible">True</property>
+    <property name="stock">gtk-preferences</property>
+  </object>
+  <object class="GtkImage" id="image6">
+    <property name="visible">True</property>
+    <property name="stock">gtk-delete</property>
+  </object>
+  <object class="GtkImage" id="image7">
+    <property name="visible">True</property>
+    <property name="stock">gtk-execute</property>
+  </object>
+  <object class="GtkImage" id="image8">
+    <property name="visible">True</property>
+    <property name="stock">gtk-cancel</property>
+  </object>
+  <object class="GtkImage" id="image9">
+    <property name="visible">True</property>
+    <property name="stock">gtk-clear</property>
+  </object>
+</interface>



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