Commit c1ff226b authored by Kai Willadsen's avatar Kai Willadsen

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

svn path=/trunk/; revision=1023
parent e364295a
...@@ -62,6 +62,9 @@ install: $(addsuffix .install,$(SPECIALS)) meld.desktop ...@@ -62,6 +62,9 @@ install: $(addsuffix .install,$(SPECIALS)) meld.desktop
install -m 644 \ install -m 644 \
glade2/*.glade \ glade2/*.glade \
$(DESTDIR)$(sharedir_)/glade2 $(DESTDIR)$(sharedir_)/glade2
install -m 644 \
glade2/*.xml \
$(DESTDIR)$(sharedir_)/glade2
install -m 644 \ install -m 644 \
glade2/pixmaps/*.xpm \ glade2/pixmaps/*.xpm \
glade2/pixmaps/*.png \ glade2/pixmaps/*.png \
......
...@@ -162,31 +162,6 @@ class EmblemCellRenderer(gtk.GenericCellRenderer): ...@@ -162,31 +162,6 @@ class EmblemCellRenderer(gtk.GenericCellRenderer):
if gobject.pygtk_version < (2,8,0): if gobject.pygtk_version < (2,8,0):
gobject.type_register(EmblemCellRenderer) gobject.type_register(EmblemCellRenderer)
################################################################################
#
# 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 # TypeFilter
...@@ -212,10 +187,52 @@ class DirDiff(melddoc.MeldDoc, gnomeglade.Component): ...@@ -212,10 +187,52 @@ class DirDiff(melddoc.MeldDoc, gnomeglade.Component):
def __init__(self, prefs, num_panes): def __init__(self, prefs, num_panes):
melddoc.MeldDoc.__init__(self, prefs) melddoc.MeldDoc.__init__(self, prefs)
gnomeglade.Component.__init__(self, paths.share_dir("glade2/dirdiff.glade"), "dirdiff") 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.toolbar.set_style( self.prefs.get_toolbar_style() )
self._map_widgets_into_lists( ["treeview", "fileentry", "diffmap", "scrolledwindow", "linkmap"] ) 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.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.on_treeview_focus_out_event(None, None)
self.treeview_focussed = None self.treeview_focussed = None
...@@ -238,7 +255,6 @@ class DirDiff(melddoc.MeldDoc, gnomeglade.Component): ...@@ -238,7 +255,6 @@ class DirDiff(melddoc.MeldDoc, gnomeglade.Component):
tree.STATE_MODIFIED, tree.STATE_MODIFIED,
tree.STATE_NEW, tree.STATE_NEW,
] ]
self.create_name_filters()
self.update_regexes() self.update_regexes()
def update_regexes(self): def update_regexes(self):
...@@ -269,18 +285,14 @@ class DirDiff(melddoc.MeldDoc, gnomeglade.Component): ...@@ -269,18 +285,14 @@ class DirDiff(melddoc.MeldDoc, gnomeglade.Component):
func = lambda x, r=cregex : r.match(x) == None func = lambda x, r=cregex : r.match(x) == None
self.name_filters_available.append( TypeFilter(f.name, f.active, func) ) self.name_filters_available.append( TypeFilter(f.name, f.active, func) )
self.name_filters = [] self.name_filters = []
tips = gtk.Tooltips() merge_id = self.ui.new_merge_id()
for i,f in enumerate(self.name_filters_available): for i,f in enumerate(self.name_filters_available):
icon = gtk.Image() name = "Hide%d" % i
icon.set_from_stock(gtk.STOCK_FIND, gtk.ICON_SIZE_LARGE_TOOLBAR) entry = (name, gtk.STOCK_FIND, f.label, None, _("Hide %s") % f.label, lambda b,i=i : self._update_name_filter(b,i), f.active)
toggle = gtk.ToggleToolButton() self.actiongroup.add_toggle_actions([entry])
toggle.set_property("label",f.label) if f.active:
toggle.set_icon_widget(icon) self.name_filters.append(self.name_filters_available[i])
toggle.connect("toggled", lambda b,i=i : self._update_name_filter(b,i) ) self.ui.add_ui(merge_id, "/DirdiffToolbar/FilterButtons", name, name, gtk.UI_MANAGER_TOOLITEM, False)
toggle.set_active(f.active)
self.toolbar.insert(toggle, -1)
toggle.show_all()
toggle.set_tooltip(tips, _("Hide %s") % f.label )
def on_preference_changed(self, key, value): def on_preference_changed(self, key, value):
if key == "toolbar_style": if key == "toolbar_style":
...@@ -360,7 +372,7 @@ class DirDiff(melddoc.MeldDoc, gnomeglade.Component): ...@@ -360,7 +372,7 @@ class DirDiff(melddoc.MeldDoc, gnomeglade.Component):
self.scheduler.add_task( self._search_recursively_iter( path ).next ) self.scheduler.add_task( self._search_recursively_iter( path ).next )
def _search_recursively_iter(self, rootpath): 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, "") yield _("[%s] Scanning %s") % (self.label_text, "")
prefixlen = 1 + len( self.model.value_path( self.model.get_iter(rootpath), 0 ) ) prefixlen = 1 + len( self.model.value_path( self.model.get_iter(rootpath), 0 ) )
symlinks_followed = {} # only follow symlinks once symlinks_followed = {} # only follow symlinks once
...@@ -373,7 +385,7 @@ class DirDiff(melddoc.MeldDoc, gnomeglade.Component): ...@@ -373,7 +385,7 @@ class DirDiff(melddoc.MeldDoc, gnomeglade.Component):
roots = self.model.value_paths( it ) roots = self.model.value_paths( it )
yield _("[%s] Scanning %s") % (self.label_text, roots[0][prefixlen:]) yield _("[%s] Scanning %s") % (self.label_text, roots[0][prefixlen:])
differences = [0] differences = [0]
if not self.button_ignore_case.get_active(): if not self.actiongroup.get_action("IgnoreCase").get_active():
class accum(object): class accum(object):
def __init__(self, parent, roots): def __init__(self, parent, roots):
self.items = [] self.items = []
...@@ -485,7 +497,7 @@ class DirDiff(melddoc.MeldDoc, gnomeglade.Component): ...@@ -485,7 +497,7 @@ class DirDiff(melddoc.MeldDoc, gnomeglade.Component):
expanded[cur] = True expanded[cur] = True
self.treeview[0].expand_row( cur, 0) self.treeview[0].expand_row( cur, 0)
yield _("[%s] Done") % self.label_text 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): def launch_comparison(self, it, pane, force=1):
"""Launch comparison at 'it'. """Launch comparison at 'it'.
...@@ -649,18 +661,23 @@ class DirDiff(melddoc.MeldDoc, gnomeglade.Component): ...@@ -649,18 +661,23 @@ class DirDiff(melddoc.MeldDoc, gnomeglade.Component):
self._do_to_others(view, self.treeview, "collapse_row", (path,) ) self._do_to_others(view, self.treeview, "collapse_row", (path,) )
self._update_diffmaps() 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): def on_treeview_focus_in_event(self, tree, event):
self.treeview_focussed = tree self.treeview_focussed = tree
pane = self.treeview.index(tree) pane = self.treeview.index(tree)
if pane > 0: if pane > 0:
self.button_copy_left.set_sensitive(1) self.actiongroup.get_action("DirCopyLeft").set_sensitive(True)
if pane+1 < self.num_panes: if pane+1 < self.num_panes:
self.button_copy_right.set_sensitive(1) self.actiongroup.get_action("DirCopyRight").set_sensitive(True)
self.button_delete.set_sensitive(1) self.actiongroup.get_action("DirDelete").set_sensitive(True)
def on_treeview_focus_out_event(self, tree, event): def on_treeview_focus_out_event(self, tree, event):
self.button_copy_left.set_sensitive(0) self.actiongroup.get_action("DirCopyLeft").set_sensitive(False)
self.button_copy_right.set_sensitive(0) self.actiongroup.get_action("DirCopyRight").set_sensitive(False)
self.button_delete.set_sensitive(0) self.actiongroup.get_action("DirDelete").set_sensitive(False)
# #
# Toolbar handlers # Toolbar handlers
# #
...@@ -801,6 +818,14 @@ class DirDiff(melddoc.MeldDoc, gnomeglade.Component): ...@@ -801,6 +818,14 @@ class DirDiff(melddoc.MeldDoc, gnomeglade.Component):
self.model.set_state(it, j, tree.STATE_MISSING) self.model.set_state(it, j, tree.STATE_MISSING)
return different 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): def on_treeview_button_press_event(self, treeview, event):
# unselect other panes # unselect other panes
for t in filter(lambda x:x!=treeview, self.treeview[:self.num_panes]): for t in filter(lambda x:x!=treeview, self.treeview[:self.num_panes]):
...@@ -815,7 +840,7 @@ class DirDiff(melddoc.MeldDoc, gnomeglade.Component): ...@@ -815,7 +840,7 @@ class DirDiff(melddoc.MeldDoc, gnomeglade.Component):
selected = self._get_selected_paths( self.treeview.index(treeview) ) selected = self._get_selected_paths( self.treeview.index(treeview) )
if len(selected) <= 1 and event.state == 0: if len(selected) <= 1 and event.state == 0:
treeview.set_cursor( path, col, 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 event.state==0
return 0 return 0
......
...@@ -129,37 +129,27 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component): ...@@ -129,37 +129,27 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component):
"foreground": self.prefs.color_conflict_fg} ) "foreground": self.prefs.color_conflict_fg} )
add_tag("inline line", {"background": self.prefs.color_inline_bg, add_tag("inline line", {"background": self.prefs.color_inline_bg,
"foreground": self.prefs.color_inline_fg} ) "foreground": self.prefs.color_inline_fg} )
class ContextMenu(gnomeglade.Component):
def __init__(self, app): actions = (
gladefile = paths.share_dir("glade2/filediff.glade") ("FilePopupSave", gtk.STOCK_SAVE, None, None, _("Save the current file"), self.save),
gnomeglade.Component.__init__(self, gladefile, "popup") ("FilePopupSaveAs", gtk.STOCK_SAVE_AS, None, "<control><shift>S", _("Save the current file with a different name"), self.save_as),
self.parent = app ("FilePopupCut", gtk.STOCK_CUT, None, None, _("Cut the selection"), self.on_cut_activate),
self.pane = -1 ("FilePopupCopy", gtk.STOCK_COPY, None, None, _("Copy the selection"), self.on_copy_activate),
def popup_in_pane( self, pane ): ("FilePopupPaste", gtk.STOCK_PASTE, None, None, _("Paste the clipboard"), self.on_paste_activate),
self.pane = pane ("FilePopupEditFile", gtk.STOCK_EDIT, None, None, _("Edit the selected file"), self.on_edit_activate),
self.copy_left.set_sensitive( pane > 0 ) ("CreatePatch", None, _("Create Patch"), None, _("Create a patch"), self.make_patch),
self.copy_right.set_sensitive( pane+1 < self.parent.num_panes ) ("CopyAllLeft", gtk.STOCK_GOTO_FIRST, _("Copy To Left"), None, _("Copy all changes from right pane to left pane"), lambda x: self.copy_selected(-1)),
self.widget.popup( None, None, None, 3, gtk.get_current_event_time() ) ("CopyAllRight", gtk.STOCK_GOTO_LAST, _("Copy To Right"), None, _("Copy all changes from left pane to right pane"), lambda x: self.copy_selected(1)),
def on_save_activate(self, menuitem): )
self.parent.save()
def on_save_as_activate(self, menuitem): ui_file = paths.share_dir("glade2/filediff-ui.xml")
self.parent.save_file( self.pane, 1) self.actiongroup = gtk.ActionGroup('FilediffPopupActions')
def on_make_patch_activate(self, menuitem): self.actiongroup.set_translation_domain("meld")
self.parent.make_patch( self.pane ) self.actiongroup.add_actions(actions)
def on_cut_activate(self, menuitem): self.ui = gtk.UIManager()
self.parent.on_cut_activate() self.ui.insert_action_group(self.actiongroup, 0)
def on_copy_activate(self, menuitem): self.ui.add_ui_from_file(ui_file)
self.parent.on_copy_activate() self.popup_menu = self.ui.get_widget('/FilediffPopup')
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)
self.find_dialog = None self.find_dialog = None
self.last_search = None self.last_search = None
self.set_num_panes(num_panes) self.set_num_panes(num_panes)
...@@ -419,6 +409,12 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component): ...@@ -419,6 +409,12 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component):
return t return t
return None 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): def on_find_activate(self, *args):
self.keymask = 0 self.keymask = 0
self.queue_draw() self.queue_draw()
...@@ -467,11 +463,16 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component): ...@@ -467,11 +463,16 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component):
if t: if t:
t.emit("paste-clipboard") #XXX t.get_buffer().paste_clipboard(None, 1) 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): def on_textview_button_press_event(self, textview, event):
if event.button == 3: if event.button == 3:
textview.grab_focus() textview.grab_focus()
pane = self.textview.index(textview) pane = self.textview.index(textview)
self.popup_menu.popup_in_pane( pane ) self.popup_in_pane(pane)
return 1 return 1
return 0 return 0
...@@ -819,7 +820,7 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component): ...@@ -819,7 +820,7 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component):
else: else:
return melddoc.RESULT_ERROR return melddoc.RESULT_ERROR
def make_patch(self, pane): def make_patch(self, *extra):
fontdesc = pango.FontDescription(self.prefs.get_current_font()) fontdesc = pango.FontDescription(self.prefs.get_current_font())
override = {} override = {}
if sourceview_available: if sourceview_available:
...@@ -873,11 +874,16 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component): ...@@ -873,11 +874,16 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component):
self.bufferdata[pane].modified = yesno self.bufferdata[pane].modified = yesno
self.recompute_label() self.recompute_label()
def save(self): def save(self, *extra):
pane = self._get_focused_pane() pane = self._get_focused_pane()
if pane >= 0: if pane >= 0:
self.save_file(pane) 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): def save_all(self):
for i in range(self.num_panes): for i in range(self.num_panes):
if self.bufferdata[i].modified: if self.bufferdata[i].modified:
......
<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>
...@@ -4,132 +4,6 @@ ...@@ -4,132 +4,6 @@
<glade-interface> <glade-interface>
<requires lib="gnome"/> <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"> <widget class="GtkWindow" id="container">
<property name="visible">True</property> <property name="visible">True</property>
<property name="title" translatable="yes">window1</property> <property name="title" translatable="yes">window1</property>
...@@ -152,237 +26,6 @@ ...@@ -152,237 +26,6 @@
<property name="homogeneous">False</property> <property name="homogeneous">False</property>
<property name="spacing">0</property> <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>