meld r1023 - in trunk: . glade2



Author: kaiw
Date: Wed Jul 16 17:17:55 2008
New Revision: 1023
URL: http://svn.gnome.org/viewvc/meld?rev=1023&view=rev

Log:
Port to gtk.UIManager, and remove menu/toolbar definitions from the glade files

Added:
   trunk/glade2/dirdiff-ui.xml
   trunk/glade2/filediff-ui.xml
   trunk/glade2/meldapp-ui.xml
   trunk/glade2/vcview-ui.xml
Modified:
   trunk/GNUmakefile
   trunk/dirdiff.py
   trunk/filediff.py
   trunk/glade2/dirdiff.glade
   trunk/glade2/filediff.glade
   trunk/glade2/meldapp.glade
   trunk/glade2/vcview.glade
   trunk/meldapp.py
   trunk/vcview.py

Modified: trunk/GNUmakefile
==============================================================================
--- trunk/GNUmakefile	(original)
+++ trunk/GNUmakefile	Wed Jul 16 17:17:55 2008
@@ -63,6 +63,9 @@
 		glade2/*.glade \
 		$(DESTDIR)$(sharedir_)/glade2
 	install -m 644 \
+		glade2/*.xml \
+		$(DESTDIR)$(sharedir_)/glade2
+	install -m 644 \
 		glade2/pixmaps/*.xpm \
 		glade2/pixmaps/*.png \
 		$(DESTDIR)$(sharedir_)/glade2/pixmaps

Modified: trunk/dirdiff.py
==============================================================================
--- trunk/dirdiff.py	(original)
+++ trunk/dirdiff.py	Wed Jul 16 17:17:55 2008
@@ -164,31 +164,6 @@
 
 ################################################################################
 #
-# DirDiffMenu
-#
-################################################################################
-class DirDiffMenu(gnomeglade.Component):
-    def __init__(self, app):
-        gladefile = paths.share_dir("glade2/dirdiff.glade")
-        gnomeglade.Component.__init__(self, gladefile, "popup")
-        self.parent = app
-    def popup_in_pane( self, pane ):
-        self.copy_left.set_sensitive( pane > 0 )
-        self.copy_right.set_sensitive( pane+1 < self.parent.num_panes )
-        self.widget.popup( None, None, None, 3, gtk.get_current_event_time() )
-    def on_popup_compare_activate(self, menuitem):
-        self.parent.launch_comparisons_on_selected()
-    def on_popup_copy_left_activate(self, menuitem):
-        self.parent.on_button_copy_left_clicked( None )
-    def on_popup_copy_right_activate(self, menuitem):
-        self.parent.on_button_copy_right_clicked( None )
-    def on_popup_delete_activate(self, menuitem):
-        self.parent.on_button_delete_clicked( None )
-    def on_popup_edit_activate(self, menuitem):
-        self.parent.on_button_edit_clicked( None )
-
-################################################################################
-#
 # TypeFilter
 #
 ################################################################################
@@ -212,10 +187,52 @@
     def __init__(self, prefs, num_panes):
         melddoc.MeldDoc.__init__(self, prefs)
         gnomeglade.Component.__init__(self, paths.share_dir("glade2/dirdiff.glade"), "dirdiff")
+
+        actions = (
+            ("DirCompare",   gtk.STOCK_DIALOG_INFO,  _("_Compare"), None, _("Compare selected"), self.on_button_diff_clicked),
+            # FIXME: the glade files were inconsistent: GO_BACK vs GOTO_FIRST, "Left" vs "Copy To Left"
+            ("DirCopyLeft",  gtk.STOCK_GO_BACK,      _("Left"),     None, _("Copy To Left"), self.on_button_copy_left_clicked),
+            # FIXME: the glade files were inconsistent: GO_FORWARD vs GOTO_LAST, "Right" vs "Copy To Right"
+            ("DirCopyRight", gtk.STOCK_GO_FORWARD,   _("Right"),    None, _("Copy To Right"), self.on_button_copy_right_clicked),
+            ("DirDelete",    gtk.STOCK_DELETE,        None,         None, _("Delete selected"), self.on_button_delete_clicked),
+            ("Hide",         gtk.STOCK_NO,           _("Hide..."),  None, _("Hide selected"), self.on_filter_hide_current_clicked),
+
+            ("DirEditFile",  gtk.STOCK_FIND_AND_REPLACE, _("Edit"), None, _("Edit selected"), self.on_button_edit_clicked),
+        )
+
+        toggleactions = (
+            ("IgnoreCase",   gtk.STOCK_ITALIC,  _("Case"),     None, _("Ignore case of entries"), self.on_button_ignore_case_toggled, False),
+            ("ShowSame",     gtk.STOCK_APPLY,   _("Same"),     None, _("Show identical"), self.on_filter_state_normal_toggled, True),
+            ("ShowNew",      gtk.STOCK_ADD,     _("New"),      None, _("Show new"), self.on_filter_state_new_toggled, True),
+            ("ShowModified", gtk.STOCK_REMOVE,  _("Modified"), None, _("Show modified"), self.on_filter_state_modified_toggled, True),
+        )
+        ui_file = paths.share_dir("glade2/dirdiff-ui.xml")
+        self.ui = gtk.UIManager()
+        self.actiongroup = gtk.ActionGroup('DirdiffToolbarActions')
+        self.actiongroup.set_translation_domain("meld")
+        self.actiongroup.add_actions(actions)
+        self.actiongroup.add_toggle_actions(toggleactions)
+        self.ui.insert_action_group(self.actiongroup, 0)
+        self.ui.add_ui_from_file(ui_file)
+        self.create_name_filters()
+        for button in ("DirCompare", "DirCopyLeft", "DirCopyRight",
+                       "DirDelete", "Hide", "IgnoreCase", "ShowSame",
+                       "ShowNew", "ShowModified"):
+            self.actiongroup.get_action(button).props.is_important = True
+        self.toolbar = self.ui.get_widget('/DirdiffToolbar')
+        self.dirdiff.pack_start(self.toolbar, False, True, 0)
         self.toolbar.set_style( self.prefs.get_toolbar_style() )
         self._map_widgets_into_lists( ["treeview", "fileentry", "diffmap", "scrolledwindow", "linkmap"] )
-        self.popup_menu = DirDiffMenu(self)
+        self.popup_menu = self.ui.get_widget('/DirdiffPopup')
+        self.popup_menu.connect("deactivate", self.on_popup_deactivate_event)
         self.set_num_panes(num_panes)
+        self.focus_in_events = []
+        self.focus_out_events = []
+        for treeview in self.treeview:
+            handler_id = treeview.connect("focus-in-event", self.on_treeview_focus_in_event)
+            self.focus_in_events.append(handler_id)
+            handler_id = treeview.connect("focus-out-event", self.on_treeview_focus_out_event)
+            self.focus_out_events.append(handler_id)
         self.on_treeview_focus_out_event(None, None)
         self.treeview_focussed = None
 
@@ -238,7 +255,6 @@
             tree.STATE_MODIFIED,
             tree.STATE_NEW,
         ]
-        self.create_name_filters()
         self.update_regexes()
 
     def update_regexes(self):
@@ -269,18 +285,14 @@
                 func = lambda x, r=cregex : r.match(x) == None
                 self.name_filters_available.append( TypeFilter(f.name, f.active, func) )
         self.name_filters = []
-        tips = gtk.Tooltips()
+        merge_id = self.ui.new_merge_id()
         for i,f in enumerate(self.name_filters_available):
-            icon = gtk.Image()
-            icon.set_from_stock(gtk.STOCK_FIND, gtk.ICON_SIZE_LARGE_TOOLBAR)
-            toggle = gtk.ToggleToolButton()
-            toggle.set_property("label",f.label)
-            toggle.set_icon_widget(icon)
-            toggle.connect("toggled", lambda b,i=i : self._update_name_filter(b,i) )
-            toggle.set_active(f.active)
-            self.toolbar.insert(toggle, -1)
-            toggle.show_all()
-            toggle.set_tooltip(tips, _("Hide %s") % f.label )
+            name = "Hide%d" % i
+            entry = (name, gtk.STOCK_FIND, f.label, None, _("Hide %s") % f.label, lambda b,i=i : self._update_name_filter(b,i), f.active)
+            self.actiongroup.add_toggle_actions([entry])
+            if f.active:
+                self.name_filters.append(self.name_filters_available[i])
+            self.ui.add_ui(merge_id, "/DirdiffToolbar/FilterButtons", name, name, gtk.UI_MANAGER_TOOLITEM, False)
 
     def on_preference_changed(self, key, value):
         if key == "toolbar_style":
@@ -360,7 +372,7 @@
         self.scheduler.add_task( self._search_recursively_iter( path ).next )
 
     def _search_recursively_iter(self, rootpath):
-        self.filter_hide_current.set_sensitive(False)
+        self.actiongroup.get_action("Hide").set_sensitive(False)
         yield _("[%s] Scanning %s") % (self.label_text, "")
         prefixlen = 1 + len( self.model.value_path( self.model.get_iter(rootpath), 0 ) )
         symlinks_followed = {} # only follow symlinks once
@@ -373,7 +385,7 @@
             roots = self.model.value_paths( it )
             yield _("[%s] Scanning %s") % (self.label_text, roots[0][prefixlen:])
             differences = [0]
-            if not self.button_ignore_case.get_active():
+            if not self.actiongroup.get_action("IgnoreCase").get_active():
                 class accum(object):
                     def __init__(self, parent, roots):
                         self.items = []
@@ -485,7 +497,7 @@
                 expanded[cur] = True
                 self.treeview[0].expand_row( cur, 0)
         yield _("[%s] Done") % self.label_text
-        self.filter_hide_current.set_sensitive(True)
+        self.actiongroup.get_action("Hide").set_sensitive(True)
 
     def launch_comparison(self, it, pane, force=1):
         """Launch comparison at 'it'. 
@@ -649,18 +661,23 @@
         self._do_to_others(view, self.treeview, "collapse_row", (path,) )
         self._update_diffmaps()
 
+    def on_popup_deactivate_event(self, popup):
+        for (treeview, inid, outid) in zip(self.treeview, self.focus_in_events, self.focus_out_events):
+            treeview.handler_unblock(inid)
+            treeview.handler_unblock(outid)
+
     def on_treeview_focus_in_event(self, tree, event):
         self.treeview_focussed = tree
         pane = self.treeview.index(tree)
         if pane > 0:
-            self.button_copy_left.set_sensitive(1)
+            self.actiongroup.get_action("DirCopyLeft").set_sensitive(True)
         if pane+1 < self.num_panes:
-            self.button_copy_right.set_sensitive(1)
-        self.button_delete.set_sensitive(1)
+            self.actiongroup.get_action("DirCopyRight").set_sensitive(True)
+        self.actiongroup.get_action("DirDelete").set_sensitive(True)
     def on_treeview_focus_out_event(self, tree, event):
-        self.button_copy_left.set_sensitive(0)
-        self.button_copy_right.set_sensitive(0)
-        self.button_delete.set_sensitive(0)
+        self.actiongroup.get_action("DirCopyLeft").set_sensitive(False)
+        self.actiongroup.get_action("DirCopyRight").set_sensitive(False)
+        self.actiongroup.get_action("DirDelete").set_sensitive(False)
         #
         # Toolbar handlers
         #
@@ -801,6 +818,14 @@
                 self.model.set_state(it, j,  tree.STATE_MISSING)
         return different
 
+    def popup_in_pane(self, pane):
+        for (treeview, inid, outid) in zip(self.treeview, self.focus_in_events, self.focus_out_events):
+            treeview.handler_block(inid)
+            treeview.handler_block(outid)
+        self.actiongroup.get_action("DirCopyLeft").set_sensitive(pane > 0)
+        self.actiongroup.get_action("DirCopyRight").set_sensitive(pane+1 < self.num_panes)
+        self.popup_menu.popup(None, None, None, 3, gtk.get_current_event_time())
+
     def on_treeview_button_press_event(self, treeview, event):
         # unselect other panes
         for t in filter(lambda x:x!=treeview, self.treeview[:self.num_panes]):
@@ -815,7 +840,7 @@
                 selected = self._get_selected_paths( self.treeview.index(treeview) )
                 if len(selected) <= 1 and event.state == 0:
                     treeview.set_cursor( path, col, 0)
-                self.popup_menu.popup_in_pane( self.treeview.index(treeview) )
+                self.popup_in_pane( self.treeview.index(treeview) )
             return event.state==0
         return 0
 

Modified: trunk/filediff.py
==============================================================================
--- trunk/filediff.py	(original)
+++ trunk/filediff.py	Wed Jul 16 17:17:55 2008
@@ -129,37 +129,27 @@
                                       "foreground": self.prefs.color_conflict_fg} )
             add_tag("inline line",   {"background": self.prefs.color_inline_bg,
                                       "foreground": self.prefs.color_inline_fg} )
-        class ContextMenu(gnomeglade.Component):
-            def __init__(self, app):
-                gladefile = paths.share_dir("glade2/filediff.glade")
-                gnomeglade.Component.__init__(self, gladefile, "popup")
-                self.parent = app
-                self.pane = -1
-            def popup_in_pane( self, pane ):
-                self.pane = pane
-                self.copy_left.set_sensitive( pane > 0 )
-                self.copy_right.set_sensitive( pane+1 < self.parent.num_panes )
-                self.widget.popup( None, None, None, 3, gtk.get_current_event_time() )
-            def on_save_activate(self, menuitem):
-                self.parent.save()
-            def on_save_as_activate(self, menuitem):
-                self.parent.save_file( self.pane, 1)
-            def on_make_patch_activate(self, menuitem):
-                self.parent.make_patch( self.pane )
-            def on_cut_activate(self, menuitem):
-                self.parent.on_cut_activate()
-            def on_copy_activate(self, menuitem):
-                self.parent.on_copy_activate()
-            def on_paste_activate(self, menuitem):
-                self.parent.on_paste_activate()
-            def on_copy_left_activate(self, menuitem):
-                self.parent.copy_selected(-1)
-            def on_copy_right_activate(self, menuitem):
-                self.parent.copy_selected(1)
-            def on_edit_activate(self, menuitem):
-                if self.parent.bufferdata[self.pane].filename:
-                    self.parent._edit_files( [self.parent.bufferdata[self.pane].filename] )
-        self.popup_menu = ContextMenu(self)
+
+        actions = (
+            ("FilePopupSave",     gtk.STOCK_SAVE,       None,            None, _("Save the current file"), self.save),
+            ("FilePopupSaveAs",   gtk.STOCK_SAVE_AS,    None,            "<control><shift>S", _("Save the current file with a different name"), self.save_as),
+            ("FilePopupCut",      gtk.STOCK_CUT,        None,            None, _("Cut the selection"), self.on_cut_activate),
+            ("FilePopupCopy",     gtk.STOCK_COPY,       None,            None, _("Copy the selection"), self.on_copy_activate),
+            ("FilePopupPaste",    gtk.STOCK_PASTE,      None,            None, _("Paste the clipboard"), self.on_paste_activate),
+            ("FilePopupEditFile", gtk.STOCK_EDIT,       None,            None, _("Edit the selected file"), self.on_edit_activate),
+            ("CreatePatch",       None,                 _("Create Patch"),  None, _("Create a patch"), self.make_patch),
+            ("CopyAllLeft",       gtk.STOCK_GOTO_FIRST, _("Copy To Left"),  None, _("Copy all changes from right pane to left pane"), lambda x: self.copy_selected(-1)),
+            ("CopyAllRight",      gtk.STOCK_GOTO_LAST,  _("Copy To Right"), None, _("Copy all changes from left pane to right pane"), lambda x: self.copy_selected(1)),
+        )
+
+        ui_file = paths.share_dir("glade2/filediff-ui.xml")
+        self.actiongroup = gtk.ActionGroup('FilediffPopupActions')
+        self.actiongroup.set_translation_domain("meld")
+        self.actiongroup.add_actions(actions)
+        self.ui = gtk.UIManager()
+        self.ui.insert_action_group(self.actiongroup, 0)
+        self.ui.add_ui_from_file(ui_file)
+        self.popup_menu = self.ui.get_widget('/FilediffPopup')
         self.find_dialog = None
         self.last_search = None
         self.set_num_panes(num_panes)
@@ -419,6 +409,12 @@
                 return t
         return None
 
+    def on_edit_activate(self, *args):
+        pane = self._get_focused_pane()
+        if pane >= 0:
+            if self.bufferdata[pane].filename:
+                self._edit_files( [self.bufferdata[pane].filename] )
+
     def on_find_activate(self, *args):
         self.keymask = 0
         self.queue_draw()
@@ -467,11 +463,16 @@
         if t:
             t.emit("paste-clipboard") #XXX t.get_buffer().paste_clipboard(None, 1)
 
+    def popup_in_pane(self, pane):
+        self.actiongroup.get_action("CopyAllLeft").set_sensitive(pane > 0)
+        self.actiongroup.get_action("CopyAllRight").set_sensitive(pane+1 < self.num_panes)
+        self.popup_menu.popup(None, None, None, 3, gtk.get_current_event_time())
+
     def on_textview_button_press_event(self, textview, event):
         if event.button == 3:
             textview.grab_focus()
             pane = self.textview.index(textview)
-            self.popup_menu.popup_in_pane( pane )
+            self.popup_in_pane(pane)
             return 1
         return 0
 
@@ -819,7 +820,7 @@
         else:
             return melddoc.RESULT_ERROR
 
-    def make_patch(self, pane):
+    def make_patch(self, *extra):
         fontdesc = pango.FontDescription(self.prefs.get_current_font())
         override = {}
         if sourceview_available:
@@ -873,11 +874,16 @@
         self.bufferdata[pane].modified = yesno
         self.recompute_label()
 
-    def save(self):
+    def save(self, *extra):
         pane = self._get_focused_pane()
         if pane >= 0:
             self.save_file(pane)
 
+    def save_as(self, *extra):
+        pane = self._get_focused_pane()
+        if pane >= 0:
+            self.save_file(pane, True)
+
     def save_all(self):
         for i in range(self.num_panes):
             if self.bufferdata[i].modified:

Added: trunk/glade2/dirdiff-ui.xml
==============================================================================
--- (empty file)
+++ trunk/glade2/dirdiff-ui.xml	Wed Jul 16 17:17:55 2008
@@ -0,0 +1,30 @@
+<ui>
+  <toolbar name="DirdiffToolbar">
+    <toolitem action="DirCompare" />
+    <separator/>
+    <toolitem action="DirCopyLeft" />
+    <toolitem action="DirCopyRight" />
+    <toolitem action="DirDelete" />
+    <separator/>
+    <toolitem action="Hide" />
+    <separator/>
+    <toolitem action="IgnoreCase" />
+    <separator/>
+    <toolitem action="ShowSame" />
+    <toolitem action="ShowNew" />
+    <toolitem action="ShowModified" />
+    <placeholder name="FilterButtons" />
+  </toolbar>
+
+  <popup name="DirdiffPopup">
+    <menuitem action="DirCompare" />
+    <separator/>
+    <menuitem action="DirCopyLeft" />
+    <menuitem action="DirCopyRight" />
+    <separator/>
+    <menuitem action="DirEditFile" />
+    <separator/>
+    <menuitem action="DirDelete" />
+  </popup>
+</ui>
+

Modified: trunk/glade2/dirdiff.glade
==============================================================================
--- trunk/glade2/dirdiff.glade	(original)
+++ trunk/glade2/dirdiff.glade	Wed Jul 16 17:17:55 2008
@@ -4,132 +4,6 @@
 <glade-interface>
 <requires lib="gnome"/>
 
-<widget class="GtkMenu" id="popup">
-
-  <child>
-    <widget class="GtkImageMenuItem" id="compare">
-      <property name="visible">True</property>
-      <property name="label" translatable="yes">_Compare</property>
-      <property name="use_underline">True</property>
-      <signal name="activate" handler="on_popup_compare_activate" last_modification_time="Sun, 18 May 2003 13:37:14 GMT"/>
-
-      <child internal-child="image">
-	<widget class="GtkImage" id="image81">
-	  <property name="visible">True</property>
-	  <property name="stock">gtk-dialog-info</property>
-	  <property name="icon_size">1</property>
-	  <property name="xalign">0.5</property>
-	  <property name="yalign">0.5</property>
-	  <property name="xpad">0</property>
-	  <property name="ypad">0</property>
-	</widget>
-      </child>
-    </widget>
-  </child>
-
-  <child>
-    <widget class="GtkMenuItem" id="separator2">
-      <property name="visible">True</property>
-    </widget>
-  </child>
-
-  <child>
-    <widget class="GtkImageMenuItem" id="copy_left">
-      <property name="visible">True</property>
-      <property name="label" translatable="yes">Copy To Left</property>
-      <property name="use_underline">True</property>
-      <signal name="activate" handler="on_popup_copy_left_activate" last_modification_time="Sat, 21 Jun 2003 17:03:12 GMT"/>
-
-      <child internal-child="image">
-	<widget class="GtkImage" id="image82">
-	  <property name="visible">True</property>
-	  <property name="stock">gtk-goto-first</property>
-	  <property name="icon_size">1</property>
-	  <property name="xalign">0.5</property>
-	  <property name="yalign">0.5</property>
-	  <property name="xpad">0</property>
-	  <property name="ypad">0</property>
-	</widget>
-      </child>
-    </widget>
-  </child>
-
-  <child>
-    <widget class="GtkImageMenuItem" id="copy_right">
-      <property name="visible">True</property>
-      <property name="label" translatable="yes">Copy To Right</property>
-      <property name="use_underline">True</property>
-      <signal name="activate" handler="on_popup_copy_right_activate" last_modification_time="Sat, 21 Jun 2003 17:03:12 GMT"/>
-
-      <child internal-child="image">
-	<widget class="GtkImage" id="image83">
-	  <property name="visible">True</property>
-	  <property name="stock">gtk-goto-last</property>
-	  <property name="icon_size">1</property>
-	  <property name="xalign">0.5</property>
-	  <property name="yalign">0.5</property>
-	  <property name="xpad">0</property>
-	  <property name="ypad">0</property>
-	</widget>
-      </child>
-    </widget>
-  </child>
-
-  <child>
-    <widget class="GtkMenuItem" id="separator3">
-      <property name="visible">True</property>
-    </widget>
-  </child>
-
-  <child>
-    <widget class="GtkImageMenuItem" id="edit">
-      <property name="visible">True</property>
-      <property name="label" translatable="yes">Edit</property>
-      <property name="use_underline">True</property>
-      <signal name="activate" handler="on_popup_edit_activate" last_modification_time="Sat, 13 Dec 2003 13:30:52 GMT"/>
-
-      <child internal-child="image">
-	<widget class="GtkImage" id="image84">
-	  <property name="visible">True</property>
-	  <property name="stock">gtk-find-and-replace</property>
-	  <property name="icon_size">1</property>
-	  <property name="xalign">0.5</property>
-	  <property name="yalign">0.5</property>
-	  <property name="xpad">0</property>
-	  <property name="ypad">0</property>
-	</widget>
-      </child>
-    </widget>
-  </child>
-
-  <child>
-    <widget class="GtkMenuItem" id="separator1">
-      <property name="visible">True</property>
-    </widget>
-  </child>
-
-  <child>
-    <widget class="GtkImageMenuItem" id="delete">
-      <property name="visible">True</property>
-      <property name="label" translatable="yes">_Delete Selected</property>
-      <property name="use_underline">True</property>
-      <signal name="activate" handler="on_popup_delete_activate" last_modification_time="Sun, 18 May 2003 13:37:14 GMT"/>
-
-      <child internal-child="image">
-	<widget class="GtkImage" id="image85">
-	  <property name="visible">True</property>
-	  <property name="stock">gtk-delete</property>
-	  <property name="icon_size">1</property>
-	  <property name="xalign">0.5</property>
-	  <property name="yalign">0.5</property>
-	  <property name="xpad">0</property>
-	  <property name="ypad">0</property>
-	</widget>
-      </child>
-    </widget>
-  </child>
-</widget>
-
 <widget class="GtkWindow" id="container">
   <property name="visible">True</property>
   <property name="title" translatable="yes">window1</property>
@@ -153,237 +27,6 @@
       <property name="spacing">0</property>
 
       <child>
-	<widget class="GtkToolbar" id="toolbar">
-	  <property name="visible">True</property>
-	  <property name="orientation">GTK_ORIENTATION_HORIZONTAL</property>
-	  <property name="toolbar_style">GTK_TOOLBAR_BOTH</property>
-	  <property name="tooltips">True</property>
-	  <property name="show_arrow">True</property>
-
-	  <child>
-	    <widget class="GtkToolButton" id="button_diff">
-	      <property name="visible">True</property>
-	      <property name="tooltip" translatable="yes">Compare selected</property>
-	      <property name="label" translatable="yes">Compare</property>
-	      <property name="use_underline">True</property>
-	      <property name="stock_id">gtk-dialog-info</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">True</property>
-	      <signal name="clicked" handler="on_button_diff_clicked" last_modification_time="Sat, 21 Jun 2003 15:43:29 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkSeparatorToolItem" id="separatortoolitem1">
-	      <property name="visible">True</property>
-	      <property name="draw">True</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">False</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkToolButton" id="button_copy_left">
-	      <property name="visible">True</property>
-	      <property name="tooltip" translatable="yes">Copy To Left</property>
-	      <property name="label" translatable="yes">Left</property>
-	      <property name="use_underline">True</property>
-	      <property name="stock_id">gtk-go-back</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">True</property>
-	      <signal name="clicked" handler="on_button_copy_left_clicked" last_modification_time="Sat, 21 Jun 2003 16:39:58 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkToolButton" id="button_copy_right">
-	      <property name="visible">True</property>
-	      <property name="tooltip" translatable="yes">Copy To Right</property>
-	      <property name="label" translatable="yes">Right</property>
-	      <property name="use_underline">True</property>
-	      <property name="stock_id">gtk-go-forward</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">True</property>
-	      <signal name="clicked" handler="on_button_copy_right_clicked" last_modification_time="Sat, 21 Jun 2003 16:40:05 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkToolButton" id="button_delete">
-	      <property name="visible">True</property>
-	      <property name="tooltip" translatable="yes">Delete selected</property>
-	      <property name="stock_id">gtk-delete</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">True</property>
-	      <signal name="clicked" handler="on_button_delete_clicked" last_modification_time="Sat, 21 Jun 2003 16:41:16 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkSeparatorToolItem" id="separatortoolitem2">
-	      <property name="visible">True</property>
-	      <property name="draw">True</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">False</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkToolButton" id="filter_hide_current">
-	      <property name="visible">True</property>
-	      <property name="tooltip" translatable="yes">Hide selected</property>
-	      <property name="label" translatable="yes">Hide...</property>
-	      <property name="use_underline">True</property>
-	      <property name="stock_id">gtk-no</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">True</property>
-	      <signal name="clicked" handler="on_filter_hide_current_clicked" last_modification_time="Sat, 21 Jun 2003 15:09:55 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkSeparatorToolItem" id="separatortoolitem3">
-	      <property name="visible">True</property>
-	      <property name="draw">True</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">False</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkToggleToolButton" id="button_ignore_case">
-	      <property name="visible">True</property>
-	      <property name="tooltip" translatable="yes">Ignore case of entries</property>
-	      <property name="label" translatable="yes">Case</property>
-	      <property name="use_underline">True</property>
-	      <property name="stock_id">gtk-italic</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">True</property>
-	      <property name="active">False</property>
-	      <signal name="toggled" handler="on_button_ignore_case_toggled" last_modification_time="Tue, 19 Aug 2003 17:44:14 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkSeparatorToolItem" id="separatortoolitem4">
-	      <property name="visible">True</property>
-	      <property name="draw">True</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">False</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkToggleToolButton" id="filter_state_normal">
-	      <property name="visible">True</property>
-	      <property name="tooltip" translatable="yes">Show identical</property>
-	      <property name="label" translatable="yes">Same</property>
-	      <property name="use_underline">True</property>
-	      <property name="stock_id">gtk-apply</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">True</property>
-	      <property name="active">True</property>
-	      <signal name="toggled" handler="on_filter_state_normal_toggled" last_modification_time="Sat, 21 Jun 2003 15:04:10 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkToggleToolButton" id="filter_state_new">
-	      <property name="visible">True</property>
-	      <property name="tooltip" translatable="yes">Show new</property>
-	      <property name="label" translatable="yes">New</property>
-	      <property name="use_underline">True</property>
-	      <property name="stock_id">gtk-add</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">True</property>
-	      <property name="active">True</property>
-	      <signal name="toggled" handler="on_filter_state_new_toggled" last_modification_time="Sat, 21 Jun 2003 15:02:24 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkToggleToolButton" id="filter_state_modified">
-	      <property name="visible">True</property>
-	      <property name="tooltip" translatable="yes">Show modified</property>
-	      <property name="label" translatable="yes">Modified</property>
-	      <property name="use_underline">True</property>
-	      <property name="stock_id">gtk-remove</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">True</property>
-	      <property name="active">True</property>
-	      <signal name="toggled" handler="on_filter_state_modified_toggled" last_modification_time="Sat, 21 Jun 2003 15:02:32 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">False</property>
-	  <property name="fill">False</property>
-	</packing>
-      </child>
-
-      <child>
 	<widget class="GtkTable" id="table">
 	  <property name="visible">True</property>
 	  <property name="n_rows">2</property>
@@ -415,8 +58,6 @@
 		  <signal name="row_collapsed" handler="on_treeview_row_collapsed" last_modification_time="Sun, 03 Nov 2002 16:08:46 GMT"/>
 		  <signal name="row_activated" handler="on_treeview_row_activated" last_modification_time="Sun, 03 Nov 2002 17:24:01 GMT"/>
 		  <signal name="button_press_event" handler="on_treeview_button_press_event" last_modification_time="Wed, 19 Mar 2003 10:22:44 GMT"/>
-		  <signal name="focus_in_event" handler="on_treeview_focus_in_event" last_modification_time="Sat, 21 Jun 2003 15:53:13 GMT"/>
-		  <signal name="focus_out_event" handler="on_treeview_focus_out_event" last_modification_time="Sat, 21 Jun 2003 15:53:22 GMT"/>
 		  <signal name="cursor_changed" handler="on_treeview_cursor_changed" last_modification_time="Sun, 14 Dec 2003 21:04:29 GMT"/>
 		  <signal name="key_press_event" handler="on_treeview_key_press_event" last_modification_time="Sun, 14 Dec 2003 22:09:35 GMT"/>
 		</widget>
@@ -454,8 +95,6 @@
 		  <signal name="row_collapsed" handler="on_treeview_row_collapsed" last_modification_time="Sun, 03 Nov 2002 16:08:36 GMT"/>
 		  <signal name="row_activated" handler="on_treeview_row_activated" last_modification_time="Sun, 03 Nov 2002 17:24:07 GMT"/>
 		  <signal name="button_press_event" handler="on_treeview_button_press_event" last_modification_time="Wed, 19 Mar 2003 10:22:58 GMT"/>
-		  <signal name="focus_in_event" handler="on_treeview_focus_in_event" last_modification_time="Sat, 21 Jun 2003 15:50:13 GMT"/>
-		  <signal name="focus_out_event" handler="on_treeview_focus_out_event" last_modification_time="Sat, 21 Jun 2003 15:53:35 GMT"/>
 		  <signal name="key_press_event" handler="on_treeview_key_press_event" last_modification_time="Sun, 14 Dec 2003 22:15:38 GMT"/>
 		  <signal name="cursor_changed" handler="on_treeview_cursor_changed" last_modification_time="Sun, 14 Dec 2003 22:22:39 GMT"/>
 		</widget>
@@ -676,8 +315,6 @@
 		  <signal name="row_collapsed" handler="on_treeview_row_collapsed" last_modification_time="Sun, 03 Nov 2002 16:08:36 GMT"/>
 		  <signal name="row_activated" handler="on_treeview_row_activated" last_modification_time="Sun, 03 Nov 2002 17:24:07 GMT"/>
 		  <signal name="button_press_event" handler="on_treeview_button_press_event" last_modification_time="Wed, 19 Mar 2003 10:22:58 GMT"/>
-		  <signal name="focus_in_event" handler="on_treeview_focus_in_event" last_modification_time="Sat, 21 Jun 2003 15:50:26 GMT"/>
-		  <signal name="focus_out_event" handler="on_treeview_focus_out_event" last_modification_time="Sat, 27 Sep 2003 14:06:56 GMT"/>
 		  <signal name="key_press_event" handler="on_treeview_key_press_event" last_modification_time="Sun, 14 Dec 2003 22:15:54 GMT"/>
 		  <signal name="cursor_changed" handler="on_treeview_cursor_changed" last_modification_time="Sun, 14 Dec 2003 22:22:48 GMT"/>
 		</widget>
@@ -797,6 +434,7 @@
 	  <property name="padding">0</property>
 	  <property name="expand">True</property>
 	  <property name="fill">True</property>
+	  <property name="pack_type">GTK_PACK_END</property>
 	</packing>
       </child>
     </widget>

Added: trunk/glade2/filediff-ui.xml
==============================================================================
--- (empty file)
+++ trunk/glade2/filediff-ui.xml	Wed Jul 16 17:17:55 2008
@@ -0,0 +1,20 @@
+<ui>
+
+  <popup name="FilediffPopup">
+    <menuitem action="FilePopupSave" />
+    <menuitem action="FilePopupSaveAs" />
+    <separator/>
+    <menuitem action="CreatePatch" />
+    <separator/>
+    <menuitem action="FilePopupCut" />
+    <menuitem action="FilePopupCopy" />
+    <menuitem action="FilePopupPaste" />
+    <separator/>
+    <menuitem action="CopyAllLeft" />
+    <menuitem action="CopyAllRight" />
+    <separator/>
+    <menuitem action="FilePopupEditFile" />
+  </popup>
+
+</ui>
+

Modified: trunk/glade2/filediff.glade
==============================================================================
--- trunk/glade2/filediff.glade	(original)
+++ trunk/glade2/filediff.glade	Wed Jul 16 17:17:55 2008
@@ -3,126 +3,6 @@
 <!--*- mode: xml -*-->
 <glade-interface>
   <requires lib="gnome"/>
-  <widget class="GtkMenu" id="popup">
-    <child>
-      <widget class="GtkImageMenuItem" id="save">
-        <property name="visible">True</property>
-        <property name="label">gtk-save</property>
-        <property name="use_underline">True</property>
-        <property name="use_stock">True</property>
-        <signal name="activate" handler="on_save_activate"/>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkImageMenuItem" id="save_as">
-        <property name="visible">True</property>
-        <property name="label">gtk-save-as</property>
-        <property name="use_underline">True</property>
-        <property name="use_stock">True</property>
-        <signal name="activate" handler="on_save_as_activate"/>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkSeparatorMenuItem" id="separator1">
-        <property name="visible">True</property>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkMenuItem" id="make_patch">
-        <property name="visible">True</property>
-        <property name="label" translatable="yes">Create Patch</property>
-        <property name="use_underline">True</property>
-        <signal name="activate" handler="on_make_patch_activate"/>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkSeparatorMenuItem" id="separator6">
-        <property name="visible">True</property>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkImageMenuItem" id="cut">
-        <property name="visible">True</property>
-        <property name="label">gtk-cut</property>
-        <property name="use_underline">True</property>
-        <property name="use_stock">True</property>
-        <signal name="activate" handler="on_cut_activate"/>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkImageMenuItem" id="copy">
-        <property name="visible">True</property>
-        <property name="label">gtk-copy</property>
-        <property name="use_underline">True</property>
-        <property name="use_stock">True</property>
-        <signal name="activate" handler="on_copy_activate"/>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkImageMenuItem" id="paste">
-        <property name="visible">True</property>
-        <property name="label">gtk-paste</property>
-        <property name="use_underline">True</property>
-        <property name="use_stock">True</property>
-        <signal name="activate" handler="on_paste_activate"/>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkSeparatorMenuItem" id="separator4">
-        <property name="visible">True</property>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkImageMenuItem" id="copy_left">
-        <property name="visible">True</property>
-        <property name="label" translatable="yes">Copy All To _Left</property>
-        <property name="use_underline">True</property>
-        <signal name="activate" handler="on_copy_left_activate"/>
-        <child internal-child="image">
-          <widget class="GtkImage" id="image21">
-            <property name="visible">True</property>
-            <property name="stock">gtk-goto-first</property>
-            <property name="icon_size">1</property>
-          </widget>
-        </child>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkImageMenuItem" id="copy_right">
-        <property name="visible">True</property>
-        <property name="label" translatable="yes">Copy All To _Right</property>
-        <property name="use_underline">True</property>
-        <signal name="activate" handler="on_copy_right_activate"/>
-        <child internal-child="image">
-          <widget class="GtkImage" id="image22">
-            <property name="visible">True</property>
-            <property name="stock">gtk-goto-last</property>
-            <property name="icon_size">1</property>
-          </widget>
-        </child>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkSeparatorMenuItem" id="separator5">
-        <property name="visible">True</property>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkImageMenuItem" id="edit">
-        <property name="visible">True</property>
-        <property name="label" translatable="yes">Edit</property>
-        <property name="use_underline">True</property>
-        <signal name="activate" handler="on_edit_activate"/>
-        <child internal-child="image">
-          <widget class="GtkImage" id="image23">
-            <property name="visible">True</property>
-            <property name="stock">gtk-find-and-replace</property>
-            <property name="icon_size">1</property>
-          </widget>
-        </child>
-      </widget>
-    </child>
-  </widget>
   <widget class="GtkWindow" id="container">
     <property name="visible">True</property>
     <property name="title" translatable="yes">window1</property>

Added: trunk/glade2/meldapp-ui.xml
==============================================================================
--- (empty file)
+++ trunk/glade2/meldapp-ui.xml	Wed Jul 16 17:17:55 2008
@@ -0,0 +1,54 @@
+<ui>
+  <menubar name="Menubar">
+    <menu action="FileMenu">
+      <menuitem action="New" />
+      <menuitem action="Save" />
+      <menuitem action="SaveAs" />
+      <separator/>
+      <menuitem action="Close" />
+      <menuitem action="Quit" />
+    </menu>
+    <menu action="EditMenu">
+      <menuitem action="Undo"/>
+      <menuitem action="Redo"/>
+      <separator/>
+      <menuitem action="Cut"/>
+      <menuitem action="Copy"/>
+      <menuitem action="Paste"/>
+      <separator/>
+      <menuitem action="Find"/>
+      <menuitem action="FindNext"/>
+      <separator/>
+      <menuitem action="Down"/>
+      <menuitem action="Up"/>
+      <separator/>
+      <menuitem name="Preferences" action="Preferences"/>
+    </menu>
+    <menu action="ViewMenu">
+      <menuitem action="Stop" />
+      <menuitem action="Refresh" />
+      <menuitem action="Reload" />
+    </menu>
+    <menu action="HelpMenu">
+      <menuitem action="Help" />
+      <menuitem action="BugReport" />
+      <menuitem action="MailingList" />
+      <menuitem action="About" />
+    </menu>
+  </menubar>
+  
+  <toolbar action="Toolbar">
+    <toolitem action="New"/>
+    <toolitem action="Magic"/>
+    <toolitem action="Save"/>
+    <toolitem action="Undo"/>
+    <toolitem action="Redo"/>
+    <separator/>
+    <toolitem action="Down"/>
+    <toolitem action="Up"/>
+    <separator/>
+    <toolitem action="Stop"/>
+  </toolbar>
+
+</ui>
+

Modified: trunk/glade2/meldapp.glade
==============================================================================
--- trunk/glade2/meldapp.glade	(original)
+++ trunk/glade2/meldapp.glade	Wed Jul 16 17:17:55 2008
@@ -2,510 +2,15 @@
 <!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
 <!--*- mode: xml -*-->
 <glade-interface>
-  <requires lib="bonobo"/>
   <requires lib="gnome"/>
-  <widget class="GnomeApp" id="meldapp">
+  <widget class="GtkWindow" id="meldapp">
     <property name="height_request">480</property>
     <property name="title" translatable="yes">Meld</property>
     <property name="icon">pixmaps/icon.png</property>
-    <property name="enable_layout_config">True</property>
     <signal name="size_allocate" handler="on_size_allocate"/>
     <signal name="delete_event" handler="on_delete_event"/>
-    <child internal-child="dock">
-      <widget class="BonoboDock" id="bonobodock1">
-        <property name="visible">True</property>
-        <property name="allow_floating">True</property>
-        <child>
-          <widget class="BonoboDockItem" id="bonobodockitem3">
-            <property name="visible">True</property>
-            <child>
-              <widget class="GtkToolbar" id="toolbar">
-                <property name="visible">True</property>
-                <property name="border_width">1</property>
-                <property name="toolbar_style">GTK_TOOLBAR_BOTH</property>
-                <child>
-                  <widget class="GtkToolButton" id="toolbar_new">
-                    <property name="visible">True</property>
-                    <property name="tooltip" translatable="yes">New</property>
-                    <property name="is_important">True</property>
-                    <property name="stock_id">gtk-new</property>
-                    <signal name="clicked" handler="on_toolbar_new_clicked"/>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkToolButton" id="toolbar_magic">
-                    <property name="visible">True</property>
-                    <property name="tooltip" translatable="yes">Yes</property>
-                    <property name="stock_id">gtk-yes</property>
-                    <signal name="clicked" handler="on_menu_magic_activate"/>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkToolButton" id="button15">
-                    <property name="visible">True</property>
-                    <property name="tooltip" translatable="yes">Save</property>
-                    <property name="is_important">True</property>
-                    <property name="stock_id">gtk-save</property>
-                    <signal name="clicked" handler="on_menu_save_activate"/>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkToolButton" id="button_undo">
-                    <property name="visible">True</property>
-                    <property name="tooltip" translatable="yes">Undo</property>
-                    <property name="is_important">True</property>
-                    <property name="stock_id">gtk-undo</property>
-                    <signal name="clicked" handler="on_menu_undo_activate"/>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkToolButton" id="button_redo">
-                    <property name="visible">True</property>
-                    <property name="tooltip" translatable="yes">Redo</property>
-                    <property name="is_important">True</property>
-                    <property name="stock_id">gtk-redo</property>
-                    <signal name="clicked" handler="on_menu_redo_activate"/>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkSeparatorToolItem" id="separatortoolitem1">
-                    <property name="visible">True</property>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="homogeneous">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkToolButton" id="button_down">
-                    <property name="visible">True</property>
-                    <property name="tooltip" translatable="yes">Down</property>
-                    <property name="stock_id">gtk-go-down</property>
-                    <signal name="clicked" handler="on_menu_edit_down_activate"/>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkToolButton" id="button_up">
-                    <property name="visible">True</property>
-                    <property name="tooltip" translatable="yes">Up</property>
-                    <property name="stock_id">gtk-go-up</property>
-                    <signal name="clicked" handler="on_menu_edit_up_activate"/>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkSeparatorToolItem" id="separatortoolitem2">
-                    <property name="visible">True</property>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="homogeneous">False</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkToolButton" id="toolbar_stop">
-                    <property name="visible">True</property>
-                    <property name="sensitive">False</property>
-                    <property name="tooltip" translatable="yes">Stop</property>
-                    <property name="stock_id">gtk-stop</property>
-                    <signal name="clicked" handler="on_toolbar_stop_clicked"/>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                  </packing>
-                </child>
-              </widget>
-            </child>
-          </widget>
-          <packing>
-            <property name="band">1</property>
-            <property name="behavior">BONOBO_DOCK_ITEM_BEH_EXCLUSIVE | BONOBO_DOCK_ITEM_BEH_NEVER_FLOATING | BONOBO_DOCK_ITEM_BEH_NEVER_VERTICAL | BONOBO_DOCK_ITEM_BEH_NEVER_HORIZONTAL | BONOBO_DOCK_ITEM_BEH_LOCKED</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="BonoboDockItem" id="bonobodockitem2">
-            <property name="visible">True</property>
-            <child>
-              <widget class="GtkAlignment" id="alignment1">
-                <property name="visible">True</property>
-                <child>
-                  <widget class="GtkMenuBar" id="menu">
-                    <property name="visible">True</property>
-                    <child>
-                      <widget class="GtkMenuItem" id="menuitem_file">
-                        <property name="visible">True</property>
-                        <property name="label" translatable="yes">_File</property>
-                        <property name="use_underline">True</property>
-                        <child>
-                          <widget class="GtkMenu" id="menuitem_file_menu">
-                            <child>
-                              <widget class="GtkImageMenuItem" id="menu_file_new">
-                                <property name="visible">True</property>
-                                <property name="label" translatable="yes">_New...</property>
-                                <property name="use_underline">True</property>
-                                <signal name="activate" handler="on_menu_file_new_activate"/>
-                                <accelerator key="n" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-                                <child internal-child="image">
-                                  <widget class="GtkImage" id="image722">
-                                    <property name="visible">True</property>
-                                    <property name="stock">gtk-new</property>
-                                    <property name="icon_size">1</property>
-                                  </widget>
-                                </child>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkImageMenuItem" id="menu_file_save">
-                                <property name="visible">True</property>
-                                <property name="label" translatable="yes">_Save</property>
-                                <property name="use_underline">True</property>
-                                <signal name="activate" handler="on_menu_save_activate"/>
-                                <accelerator key="s" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-                                <child internal-child="image">
-                                  <widget class="GtkImage" id="image724">
-                                    <property name="visible">True</property>
-                                    <property name="stock">gtk-save</property>
-                                    <property name="icon_size">1</property>
-                                  </widget>
-                                </child>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkImageMenuItem" id="menu_file_save_as">
-                                <property name="visible">True</property>
-                                <property name="label" translatable="yes">Save _As</property>
-                                <property name="use_underline">True</property>
-                                <signal name="activate" handler="on_menu_save_as_activate"/>
-                                <accelerator key="s" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK" signal="activate"/>
-                                <child internal-child="image">
-                                  <widget class="GtkImage" id="image723">
-                                    <property name="visible">True</property>
-                                    <property name="stock">gtk-save-as</property>
-                                    <property name="icon_size">1</property>
-                                  </widget>
-                                </child>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkSeparatorMenuItem" id="separator4">
-                                <property name="visible">True</property>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkImageMenuItem" id="menu_file_close">
-                                <property name="visible">True</property>
-                                <property name="label">gtk-close</property>
-                                <property name="use_underline">True</property>
-                                <property name="use_stock">True</property>
-                                <signal name="activate" handler="on_menu_close_activate"/>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkImageMenuItem" id="menu_file_quit">
-                                <property name="visible">True</property>
-                                <property name="label">gtk-quit</property>
-                                <property name="use_underline">True</property>
-                                <property name="use_stock">True</property>
-                                <signal name="activate" handler="on_menu_quit_activate"/>
-                              </widget>
-                            </child>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkMenuItem" id="menuitem_edit">
-                        <property name="visible">True</property>
-                        <property name="label" translatable="yes">_Edit</property>
-                        <property name="use_underline">True</property>
-                        <child>
-                          <widget class="GtkMenu" id="menuitem_edit_menu">
-                            <child>
-                              <widget class="GtkImageMenuItem" id="menu_edit_undo">
-                                <property name="visible">True</property>
-                                <property name="label">gtk-undo</property>
-                                <property name="use_underline">True</property>
-                                <property name="use_stock">True</property>
-                                <signal name="activate" handler="on_menu_undo_activate"/>
-                                <accelerator key="z" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkImageMenuItem" id="menu_edit_redo">
-                                <property name="visible">True</property>
-                                <property name="label">gtk-redo</property>
-                                <property name="use_underline">True</property>
-                                <property name="use_stock">True</property>
-                                <signal name="activate" handler="on_menu_redo_activate"/>
-                                <accelerator key="z" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK" signal="activate"/>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkSeparatorMenuItem" id="separatormenuitem1">
-                                <property name="visible">True</property>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkImageMenuItem" id="cut1">
-                                <property name="visible">True</property>
-                                <property name="label">gtk-cut</property>
-                                <property name="use_underline">True</property>
-                                <property name="use_stock">True</property>
-                                <signal name="activate" handler="on_menu_cut_activate"/>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkImageMenuItem" id="copy1">
-                                <property name="visible">True</property>
-                                <property name="label">gtk-copy</property>
-                                <property name="use_underline">True</property>
-                                <property name="use_stock">True</property>
-                                <signal name="activate" handler="on_menu_copy_activate"/>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkImageMenuItem" id="paste1">
-                                <property name="visible">True</property>
-                                <property name="label">gtk-paste</property>
-                                <property name="use_underline">True</property>
-                                <property name="use_stock">True</property>
-                                <signal name="activate" handler="on_menu_paste_activate"/>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkSeparatorMenuItem" id="separator5">
-                                <property name="visible">True</property>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkImageMenuItem" id="menu_edit_find">
-                                <property name="visible">True</property>
-                                <property name="label">gtk-find</property>
-                                <property name="use_underline">True</property>
-                                <property name="use_stock">True</property>
-                                <signal name="activate" handler="on_menu_find_activate"/>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkImageMenuItem" id="menu_edit_find_next">
-                                <property name="visible">True</property>
-                                <property name="label" translatable="yes">Find Ne_xt</property>
-                                <property name="use_underline">True</property>
-                                <signal name="activate" handler="on_menu_find_next_activate"/>
-                                <accelerator key="g" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkSeparatorMenuItem" id="separator6">
-                                <property name="visible">True</property>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkImageMenuItem" id="menu_edit_down">
-                                <property name="visible">True</property>
-                                <property name="label" translatable="yes">_Down</property>
-                                <property name="use_underline">True</property>
-                                <signal name="activate" handler="on_menu_edit_down_activate"/>
-                                <accelerator key="d" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-                                <child internal-child="image">
-                                  <widget class="GtkImage" id="image727">
-                                    <property name="visible">True</property>
-                                    <property name="stock">gtk-go-down</property>
-                                    <property name="icon_size">1</property>
-                                  </widget>
-                                </child>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkImageMenuItem" id="menu_edit_up">
-                                <property name="visible">True</property>
-                                <property name="label" translatable="yes">_Up</property>
-                                <property name="use_underline">True</property>
-                                <signal name="activate" handler="on_menu_edit_up_activate"/>
-                                <accelerator key="e" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-                                <child internal-child="image">
-                                  <widget class="GtkImage" id="image728">
-                                    <property name="visible">True</property>
-                                    <property name="stock">gtk-go-up</property>
-                                    <property name="icon_size">1</property>
-                                  </widget>
-                                </child>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkSeparatorMenuItem" id="separator7">
-                                <property name="visible">True</property>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkImageMenuItem" id="settings_preferences">
-                                <property name="visible">True</property>
-                                <property name="label">gtk-preferences</property>
-                                <property name="use_underline">True</property>
-                                <property name="use_stock">True</property>
-                                <signal name="activate" handler="on_menu_preferences_activate"/>
-                              </widget>
-                            </child>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkMenuItem" id="view">
-                        <property name="visible">True</property>
-                        <property name="label" translatable="yes">_View</property>
-                        <property name="use_underline">True</property>
-                        <child>
-                          <widget class="GtkMenu" id="menu1">
-                            <property name="visible">True</property>
-                            <child>
-                              <widget class="GtkImageMenuItem" id="menu_view_stop">
-                                <property name="visible">True</property>
-                                <property name="label" translatable="yes">_Stop</property>
-                                <property name="use_underline">True</property>
-                                <signal name="activate" handler="on_toolbar_stop_clicked"/>
-                                <accelerator key="Escape" signal="activate"/>
-                                <child internal-child="image">
-                                  <widget class="GtkImage" id="menu-item-image16">
-                                    <property name="visible">True</property>
-                                    <property name="stock">gtk-stop</property>
-                                  </widget>
-                                </child>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkImageMenuItem" id="menu_edit_refresh">
-                                <property name="visible">True</property>
-                                <property name="label" translatable="yes">Refresh</property>
-                                <property name="use_underline">True</property>
-                                <signal name="activate" handler="on_menu_refresh_activate"/>
-                                <accelerator key="r" modifiers="GDK_CONTROL_MASK" signal="activate"/>
-                                <child internal-child="image">
-                                  <widget class="GtkImage" id="image725">
-                                    <property name="visible">True</property>
-                                    <property name="stock">gtk-refresh</property>
-                                    <property name="icon_size">1</property>
-                                  </widget>
-                                </child>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkImageMenuItem" id="menu_edit_reload">
-                                <property name="visible">True</property>
-                                <property name="label" translatable="yes">Reload</property>
-                                <property name="use_underline">True</property>
-                                <signal name="activate" handler="on_menu_reload_activate"/>
-                                <accelerator key="r" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK" signal="activate"/>
-                                <child internal-child="image">
-                                  <widget class="GtkImage" id="image726">
-                                    <property name="visible">True</property>
-                                    <property name="stock">gtk-refresh</property>
-                                    <property name="icon_size">1</property>
-                                  </widget>
-                                </child>
-                              </widget>
-                            </child>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkMenuItem" id="menuitem_help">
-                        <property name="visible">True</property>
-                        <property name="label" translatable="yes">_Help</property>
-                        <property name="use_underline">True</property>
-                        <child>
-                          <widget class="GtkMenu" id="menuitem_help_menu">
-                            <child>
-                              <widget class="GtkImageMenuItem" id="menu_help_users_manual">
-                                <property name="visible">True</property>
-                                <property name="label" translatable="yes">_Contents</property>
-                                <property name="use_underline">True</property>
-                                <signal name="activate" handler="on_menu_users_manual_activate"/>
-                                <accelerator key="F1" modifiers="" signal="activate"/>
-                                <child internal-child="image">
-                                  <widget class="GtkImage" id="image729">
-                                    <property name="visible">True</property>
-                                    <property name="stock">gtk-help</property>
-                                    <property name="icon_size">1</property>
-                                  </widget>
-                                </child>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkImageMenuItem" id="menu_help_bug">
-                                <property name="visible">True</property>
-                                <property name="label" translatable="yes">Report _Bug</property>
-                                <property name="use_underline">True</property>
-                                <signal name="activate" handler="on_menu_help_bug_activate"/>
-                                <child internal-child="image">
-                                  <widget class="GtkImage" id="image730">
-                                    <property name="visible">True</property>
-                                    <property name="stock">gtk-dialog-warning</property>
-                                    <property name="icon_size">1</property>
-                                  </widget>
-                                </child>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkImageMenuItem" id="menu_help_list">
-                                <property name="visible">True</property>
-                                <property name="label" translatable="yes">Mailing _List</property>
-                                <property name="use_underline">True</property>
-                                <signal name="activate" handler="on_menu_help_list_activate"/>
-                                <child internal-child="image">
-                                  <widget class="GtkImage" id="image731">
-                                    <property name="visible">True</property>
-                                    <property name="stock">gnome-stock-mail</property>
-                                    <property name="icon_size">1</property>
-                                  </widget>
-                                </child>
-                              </widget>
-                            </child>
-                            <child>
-                              <widget class="GtkImageMenuItem" id="about1">
-                                <property name="visible">True</property>
-                                <property name="label">gtk-about</property>
-                                <property name="use_underline">True</property>
-                                <property name="use_stock">True</property>
-                                <signal name="activate" handler="on_menu_about_activate"/>
-                              </widget>
-                            </child>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-            </child>
-          </widget>
-          <packing>
-            <property name="behavior">BONOBO_DOCK_ITEM_BEH_EXCLUSIVE | BONOBO_DOCK_ITEM_BEH_NEVER_FLOATING | BONOBO_DOCK_ITEM_BEH_NEVER_VERTICAL | BONOBO_DOCK_ITEM_BEH_LOCKED</property>
-          </packing>
-        </child>
         <child>
-          <widget class="GtkVBox" id="vbox44">
+          <widget class="GtkVBox" id="appvbox">
             <property name="visible">True</property>
             <child>
               <widget class="GtkNotebook" id="notebook">
@@ -516,6 +21,10 @@
                 <signal name="key_press_event" handler="on_notebook_key_press_event"/>
                 <signal name="switch_page" handler="on_switch_page"/>
               </widget>
+              <packing>
+                <property name="position">1</property>
+                <property name="pack_type">GTK_PACK_END</property>
+              </packing>
             </child>
             <child>
               <widget class="GtkHBox" id="status_box">
@@ -554,17 +63,12 @@
               <packing>
                 <property name="expand">False</property>
                 <property name="fill">False</property>
-                <property name="position">1</property>
+                <property name="position">0</property>
+                <property name="pack_type">GTK_PACK_END</property>
               </packing>
             </child>
           </widget>
         </child>
-      </widget>
-      <packing>
-        <property name="expand">True</property>
-        <property name="fill">True</property>
-      </packing>
-    </child>
   </widget>
   <widget class="GnomeAbout" id="about">
     <property name="visible">True</property>

Added: trunk/glade2/vcview-ui.xml
==============================================================================
--- (empty file)
+++ trunk/glade2/vcview-ui.xml	Wed Jul 16 17:17:55 2008
@@ -0,0 +1,35 @@
+<ui>
+
+  <toolbar name="VcviewToolbar">
+    <toolitem action="VcCompare" />
+    <separator/>
+    <toolitem action="VcFlatten" />
+    <toolitem action="VcShowModified" />
+    <toolitem action="VcShowNormal" />
+    <toolitem action="VcShowNonVC" />
+    <toolitem action="VcShowIgnored" />
+    <separator/>
+    <toolitem action="VcCommit" />
+    <toolitem action="VcUpdate" />
+    <toolitem action="VcAdd" />
+    <toolitem action="VcRemove" />
+    <toolitem action="VcRevert" />
+    <toolitem action="VcDeleteLocally" />
+  </toolbar>
+
+  <popup name="VcviewPopup">
+    <menuitem action="VcCompare" />
+    <menuitem action="VcUpdate" />
+    <menuitem action="VcCommit" />
+    <separator/>
+    <menuitem action="VcEditFile" />
+    <separator/>
+    <menuitem action="VcAdd" />
+    <menuitem action="VcAddBinary" />
+    <menuitem action="VcRemove" />
+    <menuitem action="VcRevert" />
+    <separator/>
+    <menuitem action="VcDeleteLocally" />
+  </popup>
+</ui>
+

Modified: trunk/glade2/vcview.glade
==============================================================================
--- trunk/glade2/vcview.glade	(original)
+++ trunk/glade2/vcview.glade	Wed Jul 16 17:17:55 2008
@@ -27,264 +27,6 @@
       <property name="spacing">0</property>
 
       <child>
-	<widget class="GtkToolbar" id="toolbar">
-	  <property name="visible">True</property>
-	  <property name="orientation">GTK_ORIENTATION_HORIZONTAL</property>
-	  <property name="toolbar_style">GTK_TOOLBAR_BOTH</property>
-	  <property name="tooltips">True</property>
-	  <property name="show_arrow">True</property>
-
-	  <child>
-	    <widget class="GtkToolButton" id="button_diff">
-	      <property name="visible">True</property>
-	      <property name="tooltip" translatable="yes">Compare selected</property>
-	      <property name="label" translatable="yes">_Compare</property>
-	      <property name="use_underline">True</property>
-	      <property name="stock_id">gtk-dialog-info</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">True</property>
-	      <signal name="clicked" handler="on_button_diff_clicked" last_modification_time="Sat, 03 Aug 2002 18:22:20 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkSeparatorToolItem" id="separatortoolitem1">
-	      <property name="visible">True</property>
-	      <property name="draw">True</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">False</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkToggleToolButton" id="button_flatten">
-	      <property name="visible">True</property>
-	      <property name="tooltip" translatable="yes">Flatten directories</property>
-	      <property name="label" translatable="yes">_Flatten</property>
-	      <property name="use_underline">True</property>
-	      <property name="stock_id">gtk-goto-bottom</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">True</property>
-	      <property name="active">True</property>
-	      <signal name="toggled" handler="on_button_flatten_toggled" last_modification_time="Sun, 12 Oct 2003 11:40:43 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkToggleToolButton" id="button_modified">
-	      <property name="visible">True</property>
-	      <property name="tooltip" translatable="yes">Show modified</property>
-	      <property name="label" translatable="yes">_Modified</property>
-	      <property name="use_underline">True</property>
-	      <property name="icon">pixmaps/filter-modified-24.png</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">True</property>
-	      <property name="active">True</property>
-	      <signal name="toggled" handler="on_button_filter_toggled" last_modification_time="Sun, 12 Oct 2003 12:30:38 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkToggleToolButton" id="button_normal">
-	      <property name="visible">True</property>
-	      <property name="tooltip" translatable="yes">Show normal</property>
-	      <property name="label" translatable="yes">_Normal</property>
-	      <property name="use_underline">True</property>
-	      <property name="icon">pixmaps/filter-normal-24.png</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">True</property>
-	      <property name="active">False</property>
-	      <signal name="toggled" handler="on_button_filter_toggled" last_modification_time="Sun, 12 Oct 2003 12:30:32 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkToggleToolButton" id="button_nonvc">
-	      <property name="visible">True</property>
-	      <property name="tooltip" translatable="yes">Show unversioned files</property>
-	      <property name="label" translatable="yes">Non _VC</property>
-	      <property name="use_underline">True</property>
-	      <property name="icon">pixmaps/filter-nonvc-24.png</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">True</property>
-	      <property name="active">False</property>
-	      <signal name="toggled" handler="on_button_filter_toggled" last_modification_time="Sun, 12 Oct 2003 12:30:43 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkToggleToolButton" id="button_ignored">
-	      <property name="visible">True</property>
-	      <property name="tooltip" translatable="yes">Show ignored files</property>
-	      <property name="label" translatable="yes">Ignored</property>
-	      <property name="use_underline">True</property>
-	      <property name="icon">pixmaps/filter-ignored-24.png</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">True</property>
-	      <property name="active">False</property>
-	      <signal name="toggled" handler="on_button_filter_toggled" last_modification_time="Sun, 12 Oct 2003 12:30:50 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkSeparatorToolItem" id="separatortoolitem2">
-	      <property name="visible">True</property>
-	      <property name="draw">True</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">False</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkToolButton" id="button_commit">
-	      <property name="visible">True</property>
-	      <property name="tooltip" translatable="yes">Commit</property>
-	      <property name="label" translatable="yes">_Commit</property>
-	      <property name="use_underline">True</property>
-	      <property name="icon">pixmaps/vc-commit-24.png</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">False</property>
-	      <signal name="clicked" handler="on_button_commit_clicked" last_modification_time="Sat, 03 Aug 2002 17:30:50 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkToolButton" id="button_update">
-	      <property name="visible">True</property>
-	      <property name="tooltip" translatable="yes">Update</property>
-	      <property name="label" translatable="yes">_Update</property>
-	      <property name="use_underline">True</property>
-	      <property name="icon">pixmaps/vc-update-24.png</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">False</property>
-	      <signal name="clicked" handler="on_button_update_clicked" last_modification_time="Sat, 03 Aug 2002 17:30:18 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkToolButton" id="button_add">
-	      <property name="visible">True</property>
-	      <property name="tooltip" translatable="yes">Add to VC</property>
-	      <property name="label" translatable="yes">_Add</property>
-	      <property name="use_underline">True</property>
-	      <property name="icon">pixmaps/vc-add-24.png</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">False</property>
-	      <signal name="clicked" handler="on_button_add_clicked" last_modification_time="Sat, 03 Aug 2002 17:27:37 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkToolButton" id="button_remove">
-	      <property name="visible">True</property>
-	      <property name="tooltip" translatable="yes">Remove from VC</property>
-	      <property name="label" translatable="yes">_Remove</property>
-	      <property name="use_underline">True</property>
-	      <property name="icon">pixmaps/vc-remove-24.png</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">False</property>
-	      <signal name="clicked" handler="on_button_remove_clicked" last_modification_time="Sat, 03 Aug 2002 17:27:59 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkToolButton" id="button_revert">
-	      <property name="visible">True</property>
-	      <property name="tooltip" translatable="yes">Revert to original</property>
-	      <property name="stock_id">gtk-revert-to-saved</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">False</property>
-	      <signal name="clicked" handler="on_button_revert_clicked" last_modification_time="Sat, 15 Oct 2005 20:59:40 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkToolButton" id="button_delete">
-	      <property name="visible">True</property>
-	      <property name="tooltip" translatable="yes">Delete locally</property>
-	      <property name="stock_id">gtk-delete</property>
-	      <property name="visible_horizontal">True</property>
-	      <property name="visible_vertical">True</property>
-	      <property name="is_important">False</property>
-	      <signal name="clicked" handler="on_button_delete_clicked" last_modification_time="Sat, 03 Aug 2002 17:33:24 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="expand">False</property>
-	      <property name="homogeneous">True</property>
-	    </packing>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">False</property>
-	  <property name="fill">False</property>
-	</packing>
-      </child>
-
-      <child>
 	<widget class="GtkHBox" id="hbox2">
 	  <property name="visible">True</property>
 	  <property name="homogeneous">False</property>
@@ -353,6 +95,7 @@
 	  <property name="padding">0</property>
 	  <property name="expand">False</property>
 	  <property name="fill">False</property>
+	  <property name="pack_type">GTK_PACK_START</property>
 	</packing>
       </child>
 
@@ -476,6 +219,8 @@
 	  <property name="padding">0</property>
 	  <property name="expand">True</property>
 	  <property name="fill">True</property>
+	  <property name="position">1</property>
+	  <property name="pack_type">GTK_PACK_END</property>
 	</packing>
       </child>
 
@@ -527,209 +272,14 @@
 	  <property name="padding">0</property>
 	  <property name="expand">False</property>
 	  <property name="fill">False</property>
+	  <property name="position">0</property>
+	  <property name="pack_type">GTK_PACK_END</property>
 	</packing>
       </child>
     </widget>
   </child>
 </widget>
 
-<widget class="GtkMenu" id="menu_popup">
-
-  <child>
-    <widget class="GtkImageMenuItem" id="diff">
-      <property name="visible">True</property>
-      <property name="label" translatable="yes">_Compare</property>
-      <property name="use_underline">True</property>
-      <signal name="activate" handler="on_diff_activate" last_modification_time="Sat, 30 Aug 2003 12:39:59 GMT"/>
-
-      <child internal-child="image">
-	<widget class="GtkImage" id="image70">
-	  <property name="visible">True</property>
-	  <property name="stock">gtk-dialog-info</property>
-	  <property name="icon_size">1</property>
-	  <property name="xalign">0.5</property>
-	  <property name="yalign">0.5</property>
-	  <property name="xpad">0</property>
-	  <property name="ypad">0</property>
-	</widget>
-      </child>
-    </widget>
-  </child>
-
-  <child>
-    <widget class="GtkImageMenuItem" id="update">
-      <property name="visible">True</property>
-      <property name="label" translatable="yes">_Update</property>
-      <property name="use_underline">True</property>
-      <signal name="activate" handler="on_update_activate"/>
-
-      <child internal-child="image">
-	<widget class="GtkImage" id="image71">
-	  <property name="visible">True</property>
-	  <property name="stock">gtk-go-forward</property>
-	  <property name="icon_size">1</property>
-	  <property name="xalign">0.5</property>
-	  <property name="yalign">0.5</property>
-	  <property name="xpad">0</property>
-	  <property name="ypad">0</property>
-	</widget>
-      </child>
-    </widget>
-  </child>
-
-  <child>
-    <widget class="GtkImageMenuItem" id="commit">
-      <property name="visible">True</property>
-      <property name="label" translatable="yes">_Commit</property>
-      <property name="use_underline">True</property>
-      <signal name="activate" handler="on_commit_activate" last_modification_time="Sat, 30 Aug 2003 12:39:59 GMT"/>
-
-      <child internal-child="image">
-	<widget class="GtkImage" id="image72">
-	  <property name="visible">True</property>
-	  <property name="stock">gtk-go-back</property>
-	  <property name="icon_size">1</property>
-	  <property name="xalign">0.5</property>
-	  <property name="yalign">0.5</property>
-	  <property name="xpad">0</property>
-	  <property name="ypad">0</property>
-	</widget>
-      </child>
-    </widget>
-  </child>
-
-  <child>
-    <widget class="GtkSeparatorMenuItem" id="separator3">
-      <property name="visible">True</property>
-    </widget>
-  </child>
-
-  <child>
-    <widget class="GtkImageMenuItem" id="edit">
-      <property name="visible">True</property>
-      <property name="label" translatable="yes">_Edit</property>
-      <property name="use_underline">True</property>
-      <signal name="activate" handler="on_edit_activate" last_modification_time="Sat, 13 Dec 2003 11:44:50 GMT"/>
-
-      <child internal-child="image">
-	<widget class="GtkImage" id="image73">
-	  <property name="visible">True</property>
-	  <property name="stock">gtk-find-and-replace</property>
-	  <property name="icon_size">1</property>
-	  <property name="xalign">0.5</property>
-	  <property name="yalign">0.5</property>
-	  <property name="xpad">0</property>
-	  <property name="ypad">0</property>
-	</widget>
-      </child>
-    </widget>
-  </child>
-
-  <child>
-    <widget class="GtkSeparatorMenuItem" id="separator1">
-      <property name="visible">True</property>
-    </widget>
-  </child>
-
-  <child>
-    <widget class="GtkImageMenuItem" id="add">
-      <property name="visible">True</property>
-      <property name="label" translatable="yes">_Add</property>
-      <property name="use_underline">True</property>
-      <signal name="activate" handler="on_add_activate" last_modification_time="Sat, 30 Aug 2003 12:39:59 GMT"/>
-
-      <child internal-child="image">
-	<widget class="GtkImage" id="image74">
-	  <property name="visible">True</property>
-	  <property name="stock">gtk-add</property>
-	  <property name="icon_size">1</property>
-	  <property name="xalign">0.5</property>
-	  <property name="yalign">0.5</property>
-	  <property name="xpad">0</property>
-	  <property name="ypad">0</property>
-	</widget>
-      </child>
-    </widget>
-  </child>
-
-  <child>
-    <widget class="GtkImageMenuItem" id="add_binary">
-      <property name="visible">True</property>
-      <property name="label" translatable="yes">Add _Binary</property>
-      <property name="use_underline">True</property>
-      <signal name="activate" handler="on_add_binary_activate" last_modification_time="Sat, 30 Aug 2003 12:39:59 GMT"/>
-
-      <child internal-child="image">
-	<widget class="GtkImage" id="image75">
-	  <property name="visible">True</property>
-	  <property name="stock">gtk-add</property>
-	  <property name="icon_size">1</property>
-	  <property name="xalign">0.5</property>
-	  <property name="yalign">0.5</property>
-	  <property name="xpad">0</property>
-	  <property name="ypad">0</property>
-	</widget>
-      </child>
-    </widget>
-  </child>
-
-  <child>
-    <widget class="GtkImageMenuItem" id="remove">
-      <property name="visible">True</property>
-      <property name="label" translatable="yes">_Remove</property>
-      <property name="use_underline">True</property>
-      <signal name="activate" handler="on_remove_activate" last_modification_time="Sat, 30 Aug 2003 12:39:59 GMT"/>
-
-      <child internal-child="image">
-	<widget class="GtkImage" id="image76">
-	  <property name="visible">True</property>
-	  <property name="stock">gtk-remove</property>
-	  <property name="icon_size">1</property>
-	  <property name="xalign">0.5</property>
-	  <property name="yalign">0.5</property>
-	  <property name="xpad">0</property>
-	  <property name="ypad">0</property>
-	</widget>
-      </child>
-    </widget>
-  </child>
-
-  <child>
-    <widget class="GtkImageMenuItem" id="revert">
-      <property name="visible">True</property>
-      <property name="stock_item">GNOMEUIINFO_MENU_REVERT_ITEM</property>
-      <signal name="activate" handler="on_revert_activate" last_modification_time="Sat, 15 Oct 2005 20:55:50 GMT"/>
-    </widget>
-  </child>
-
-  <child>
-    <widget class="GtkSeparatorMenuItem" id="separator2">
-      <property name="visible">True</property>
-    </widget>
-  </child>
-
-  <child>
-    <widget class="GtkImageMenuItem" id="remove_locally">
-      <property name="visible">True</property>
-      <property name="label" translatable="yes">Remove _Locally</property>
-      <property name="use_underline">True</property>
-      <signal name="activate" handler="on_remove_locally_activate" last_modification_time="Sun, 31 Aug 2003 12:27:25 GMT"/>
-
-      <child internal-child="image">
-	<widget class="GtkImage" id="image77">
-	  <property name="visible">True</property>
-	  <property name="stock">gtk-delete</property>
-	  <property name="icon_size">1</property>
-	  <property name="xalign">0.5</property>
-	  <property name="yalign">0.5</property>
-	  <property name="xpad">0</property>
-	  <property name="ypad">0</property>
-	</widget>
-      </child>
-    </widget>
-  </child>
-</widget>
-
 <widget class="GtkDialog" id="commitdialog">
   <property name="width_request">450</property>
   <property name="visible">True</property>

Modified: trunk/meldapp.py
==============================================================================
--- trunk/meldapp.py	(original)
+++ trunk/meldapp.py	Wed Jul 16 17:17:55 2008
@@ -523,11 +523,59 @@
                      "widget \"*.meld-tab-close-button\" style \"meld-tab-close-button-style\"")
         gladefile = paths.share_dir("glade2/meldapp.glade")
         gnomeglade.GnomeApp.__init__(self, "meld", version, gladefile, "meldapp")
+
+        actions = (
+            ("FileMenu", None, "_File"),
+            ("New",     gtk.STOCK_NEW,      _("_New..."), "<control>N", _("Start a new comparison"), self.on_menu_file_new_activate),
+            ("Save",    gtk.STOCK_SAVE,     None, None, _("Save the current file"), self.on_menu_save_activate),
+            ("SaveAs",  gtk.STOCK_SAVE_AS,  None, "<control><shift>S", "Save the current file with a different name", self.on_menu_save_as_activate),
+            ("Close",   gtk.STOCK_CLOSE,    None, None, _("Close the current file"), self.on_menu_close_activate),
+            ("Quit",    gtk.STOCK_QUIT,     None, None, _("Quit the program"), self.on_menu_quit_activate),
+
+            ("EditMenu", None, "_Edit"),
+            ("Undo",    gtk.STOCK_UNDO,     None, "<control>Z", _("Undo the last action"), self.on_menu_undo_activate),
+            ("Redo",    gtk.STOCK_REDO,     None, "<control><shift>Z", _("Redo the last undone action"), self.on_menu_redo_activate),
+            ("Cut",     gtk.STOCK_CUT,      None, None, _("Cut the selection"), self.on_menu_cut_activate),
+            ("Copy",    gtk.STOCK_COPY,     None, None, _("Copy the selection"), self.on_menu_copy_activate),
+            ("Paste",   gtk.STOCK_PASTE,    None, None, _("Paste the clipboard"), self.on_menu_paste_activate),
+            ("Find",    gtk.STOCK_FIND,     None, None, _("Search for text"), self.on_menu_find_activate),
+            ("FindNext", None,              _("Find Ne_xt"), "<control>G", _("Search forwards for the same text"), self.on_menu_find_next_activate),
+            ("Down",    gtk.STOCK_GO_DOWN,  None, "<control>D", _("Go to the next difference"), self.on_menu_edit_down_activate),
+            ("Up",      gtk.STOCK_GO_UP,    None, "<control>E", _("Go to the previous difference"), self.on_menu_edit_up_activate),
+            ("Preferences", gtk.STOCK_PREFERENCES, None, None, _("Configure the application"), self.on_menu_preferences_activate),
+
+            ("ViewMenu", None, "_View"),
+            ("Stop",    gtk.STOCK_STOP,     None, "Escape", _("Stop the current action"), self.on_toolbar_stop_clicked),
+            ("Refresh", gtk.STOCK_REFRESH,  None, "<control>R", _("Refresh the view"), self.on_menu_refresh_activate),
+            ("Reload",  gtk.STOCK_REFRESH,  _("Reload"), "<control><shift>R", _("Reload the comparison"), self.on_menu_reload_activate),
+
+            ("HelpMenu", None, "_Help"),
+            ("Help",        gtk.STOCK_HELP,  _("_Contents"), "F1", _("Open the Meld manual"), self.on_menu_users_manual_activate),
+            ("BugReport",   gtk.STOCK_DIALOG_WARNING, _("Report _Bug"), None, _("Report a bug in Meld"), self.on_menu_help_bug_activate),
+            ("MailingList", None,            _("Mailing _List"), None, _("Go to the Meld mailing list"), self.on_menu_about_activate),
+            ("About",       gtk.STOCK_ABOUT, None, None, _("About this program"), self.on_menu_about_activate),
+
+            ("Magic",       gtk.STOCK_YES,   None,     None, None, self.on_menu_magic_activate),
+        )
+        ui_file = paths.share_dir("glade2/meldapp-ui.xml")
+        self.actiongroup = gtk.ActionGroup('MainActions')
+        self.actiongroup.set_translation_domain("meld")
+        self.actiongroup.add_actions(actions)
+        self.ui = gtk.UIManager()
+        self.ui.insert_action_group(self.actiongroup, 0)
+        self.ui.add_ui_from_file(ui_file)
+        for menuitem in ("New", "Save", "Undo", "Redo"):
+            self.actiongroup.get_action(menuitem).props.is_important = True
+        self.widget.add_accel_group(self.ui.get_accel_group())
+        self.menubar = self.ui.get_widget('/Menubar')
+        self.toolbar = self.ui.get_widget('/Toolbar')
+        self.appvbox.pack_start(self.menubar, expand=False)
+        self.appvbox.pack_start(self.toolbar, expand=False)
         self._map_widgets_into_lists( "settings_drawstyle".split() )
         self.statusbar = MeldStatusBar(self.task_progress, self.task_status, self.doc_status)
         self.prefs = MeldPreferences()
         if not developer:#hide magic testing button
-            self.toolbar_magic.hide()
+            self.ui.get_widget("/Toolbar/Magic").hide()
         elif 1:
             def showPrefs(): PreferencesDialog(self)
             gobject.idle_add(showPrefs)
@@ -537,6 +585,7 @@
         self.scheduler = task.LifoScheduler()
         self.scheduler.connect("runnable", self.on_scheduler_runnable )
         self.widget.set_default_size(self.prefs.window_size_x, self.prefs.window_size_y)
+        self.ui.ensure_update()
         self.widget.show()
 
     def on_idle(self):
@@ -551,14 +600,12 @@
         else:
             self.statusbar.task_progress.set_fraction(0)
         if self.scheduler.tasks_pending():
-            self.toolbar_stop.set_sensitive(1)
-            self.menu_view_stop.set_sensitive(1)
+            self.actiongroup.get_action("Stop").set_sensitive(True)
             return 1
         else:
             self.statusbar.set_task_status("")
             self.idle_hooked = 0
-            self.toolbar_stop.set_sensitive(0)
-            self.menu_view_stop.set_sensitive(0)
+            self.actiongroup.get_action("Stop").set_sensitive(False)
             return 0
 
     def on_scheduler_runnable(self, sched):
@@ -579,8 +626,8 @@
     def on_switch_page(self, notebook, page, which):
         newdoc = notebook.get_nth_page(which).get_data("pyobject")
         newseq = newdoc.undosequence
-        self.button_undo.set_sensitive(newseq.can_undo())
-        self.button_redo.set_sensitive(newseq.can_redo())
+        self.actiongroup.get_action("Undo").set_sensitive(newseq.can_undo())
+        self.actiongroup.get_action("Redo").set_sensitive(newseq.can_redo())
         nbl = self.notebook.get_tab_label( newdoc.widget )
         self.widget.set_title(nbl.get_label_text() + " - Meld")
         self.statusbar.set_doc_status("")
@@ -594,10 +641,10 @@
         self.notebook.child_set_property(component.widget, "menu-label", text)
 
     def on_can_undo(self, undosequence, can):
-        self.button_undo.set_sensitive(can)
+        self.actiongroup.get_action("Undo").set_sensitive(can)
 
     def on_can_redo(self, undosequence, can):
-        self.button_redo.set_sensitive(can)
+        self.actiongroup.get_action("Redo").set_sensitive(can)
 
     def on_size_allocate(self, window, rect):
         self.prefs.window_size_x = rect.width
@@ -852,6 +899,8 @@
     parser.add_option("-r", "--recursive", action="store_true", help=_("Ignored for compatibility"))
     options, args = parser.parse_args()
 
+    icon_theme = gtk.icon_theme_get_default()
+    icon_theme.append_search_path(paths.share_dir("glade2/pixmaps/"))
     app = MeldApp()
     tab = None
 

Modified: trunk/vcview.py
==============================================================================
--- trunk/vcview.py	(original)
+++ trunk/vcview.py	Wed Jul 16 17:17:55 2008
@@ -97,36 +97,6 @@
         self.textstyle[tree.STATE_MISSING] = '<span foreground="#000088" strikethrough="true" weight="bold">%s</span>'
 
 ################################################################################
-#
-# DirDiffMenu
-#
-################################################################################
-class VcMenu(gnomeglade.Component):
-    def __init__(self, app, event):
-        gladefile = paths.share_dir("glade2/vcview.glade")
-        gnomeglade.Component.__init__(self, gladefile, "menu_popup")
-        self.parent = app
-        self.widget.popup( None, None, None, 3, event.time )
-    def on_diff_activate(self, menuitem):
-        self.parent.on_button_diff_clicked( menuitem )
-    def on_edit_activate(self, menuitem):
-        self.parent._edit_files( self.parent._get_selected_files() )
-    def on_update_activate(self, menuitem):
-        self.parent.on_button_update_clicked( menuitem )
-    def on_commit_activate(self, menuitem):
-        self.parent.on_button_commit_clicked( menuitem )
-    def on_add_activate(self, menuitem):
-        self.parent.on_button_add_clicked( menuitem )
-    def on_add_binary_activate(self, menuitem):
-        self.parent.on_button_add_binary_clicked( menuitem )
-    def on_remove_activate(self, menuitem):
-        self.parent.on_button_remove_clicked( menuitem )
-    def on_revert_activate(self, menuitem):
-        self.parent.on_button_revert_clicked( menuitem )
-    def on_remove_locally_activate(self, menuitem):
-        self.parent.on_button_delete_clicked( menuitem )
-
-################################################################################
 # filters
 ################################################################################
 entry_modified = lambda x: (x.state >= tree.STATE_NEW) or (x.isdir and (x.state > tree.STATE_NONE))
@@ -144,7 +114,48 @@
     def __init__(self, prefs):
         melddoc.MeldDoc.__init__(self, prefs)
         gnomeglade.Component.__init__(self, paths.share_dir("glade2/vcview.glade"), "vcview")
+
+        actions = (
+            ("VcCompare",       gtk.STOCK_DIALOG_INFO,      _("_Compare"),      None, _("Compare selected"), self.on_button_diff_clicked),
+            ("VcEditFile",      gtk.STOCK_FIND_AND_REPLACE, _("_Edit"),         None, _("Edit files"), self.on_button_edit_clicked),
+            ("VcCommit",        "vc-commit-24",             _("_Commit"),       None, _("Commit"), self.on_button_commit_clicked), # FIXME: popup used to use gtk.STOCK_GO_BACK
+            ("VcUpdate",        "vc-update-24",             _("_Update"),       None, _("Update"), self.on_button_update_clicked), # FIXME: popup used to use gtk.STOCK_GO_FORWARD
+            ("VcAdd",           "vc-add-24",                _("_Add"),          None, _("Add to VC"), self.on_button_add_clicked), # FIXME: popup used to use gtk.STOCK_ADD
+            ("VcAddBinary",     gtk.STOCK_ADD,              _("Add _Binary"),   None, _("Add binary to VC"), self.on_button_add_binary_clicked), # FIXME: stock is inconsistent with other VC actions
+            ("VcRemove",        "vc-remove-24",             _("_Remove"),       None, _("Remove from VC"), self.on_button_remove_clicked), # FIXME: popup used to use gtk.STOCK_REMOVE
+            ("VcRevert",        gtk.STOCK_REVERT_TO_SAVED,  None,               None, _("Revert to original"), self.on_button_revert_clicked),
+            ("VcDeleteLocally", gtk.STOCK_DELETE,           None,               None, _("Delete locally"), self.on_button_delete_clicked), # FIXME: popup label was "_Remove locally"
+        )
+
+        toggleactions = (
+            ("VcFlatten",     gtk.STOCK_GOTO_BOTTOM, _("_Flatten"),  None, _("Flatten directories"), self.on_button_flatten_toggled, True),
+            ("VcShowModified","filter-modified-24",  _("_Modified"), None, _("Show modified"), self.on_button_filter_toggled, True),
+            ("VcShowNormal",  "filter-normal-24",    _("_Normal"),   None, _("Show normal"), self.on_button_filter_toggled, False),
+            ("VcShowNonVC",   "filter-nonvc-24",     _("Non _VC"),   None, _("Show unversioned files"), self.on_button_filter_toggled, False),
+            ("VcShowIgnored", "filter-ignored-24",   _("Ignored"),   None, _("Show ignored files"), self.on_button_filter_toggled, False),
+        )
+
+        ui_file = paths.share_dir("glade2/vcview-ui.xml")
+        self.actiongroup = gtk.ActionGroup('VcviewActions')
+        self.actiongroup.set_translation_domain("meld")
+        self.actiongroup.add_actions(actions)
+        self.actiongroup.add_toggle_actions(toggleactions)
+        self.ui = gtk.UIManager()
+        self.ui.insert_action_group(self.actiongroup, 0)
+        self.ui.add_ui_from_file(ui_file)
+        for action in ("VcCompare", "VcFlatten", "VcShowModified",
+                       "VcShowNormal", "VcShowNonVC", "VcShowIgnored"):
+            self.actiongroup.get_action(action).props.is_important = True
+        for action in ("VcCommit", "VcUpdate", "VcAdd", "VcRemove",
+                       "VcShowModified", "VcShowNormal", "VcShowNonVC",
+                       "VcShowIgnored"):
+            button = self.actiongroup.get_action(action)
+            button.props.icon_name = button.props.stock_id
+        self.toolbar = self.ui.get_widget('/VcviewToolbar')
+        self.vcview.pack_start(self.toolbar, False, True, 0)
+        self.vcview.reorder_child(self.toolbar, 0)
         self.toolbar.set_style( self.prefs.get_toolbar_style() )
+        self.popup_menu = self.ui.get_widget('/VcviewPopup')
         self.tempdirs = []
         self.model = VcTreeStore()
         self.treeview.set_model(self.model)
@@ -185,7 +196,7 @@
                     this.textview.scroll_mark_onscreen( this.mark )
         self.consolestream = ConsoleStream(self.consoleview)
         self.location = None
-        self.treeview_column_location.set_visible( self.button_flatten.get_active() )
+        self.treeview_column_location.set_visible(self.actiongroup.get_action("VcFlatten").get_active())
         size = self.fileentry.size_request()[1]
         self.button_jump.set_size_request(size, size)
         self.button_jump.hide()
@@ -216,18 +227,18 @@
         prefixlen = 1 + len( self.model.value_path( self.model.get_iter_root(), 0 ) )
         todo = [ (rootpath, rootname) ]
         filters = []
-        if self.button_modified.get_active():
+        if self.actiongroup.get_action("VcShowModified").get_active():
             filters.append( entry_modified )
-        if self.button_normal.get_active():
+        if self.actiongroup.get_action("VcShowNormal").get_active():
             filters.append( entry_normal )
-        if self.button_nonvc.get_active():
+        if self.actiongroup.get_action("VcShowNonVC").get_active():
             filters.append( entry_nonvc )
-        if self.button_ignored.get_active():
+        if self.actiongroup.get_action("VcShowIgnored").get_active():
             filters.append( entry_ignored )
         def showable(entry):
             for f in filters:
                 if f(entry): return 1
-        recursive = self.button_flatten.get_active()
+        recursive = self.actiongroup.get_action("VcFlatten").get_active()
         self.vc.cache_inventory(rootname)
         while len(todo):
             todo.sort() # depth first
@@ -312,12 +323,12 @@
 
     def on_button_press_event(self, text, event):
         if event.button==3:
-            VcMenu(self, event)
+            self.popup_menu.popup(None, None, None, 3, event.time)
             return len(self._get_selected_treepaths()) != 1
         return 0
 
     def on_button_flatten_toggled(self, button):
-        self.treeview_column_location.set_visible( self.button_flatten.get_active() )
+        self.treeview_column_location.set_visible(self.actiongroup.get_action("VcFlatten").get_active())
         self.refresh()
     def on_button_filter_toggled(self, button):
         self.refresh()
@@ -416,6 +427,9 @@
         if len(files):
             self.run_diff(files, empty_patch_ok=1)
 
+    def on_button_edit_clicked(self, object):
+        self._edit_files(self._get_selected_files())
+
     def show_patch(self, prefix, patch):
         if not patch: return
 
@@ -449,7 +463,7 @@
         self.set_location( self.model.value_path( self.model.get_iter_root(), 0 ) )
 
     def refresh_partial(self, where):
-        if not self.button_flatten.get_active():
+        if not self.actiongroup.get_action("VcFlatten").get_active():
             it = self.find_iter_by_name( where )
             if it:
                 newiter = self.model.insert_after( None, it)



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