Applied the changes.
Apparently the proper use for icon_path() is icon_path("icon-file.png"). :)Jasper
# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: [EMAIL PROTECTED] # target_branch: https://code.launchpad.net/~bzr-gtk/bzr-gtk/trunk # testament_sha1: d21d1006c91072e88592f56bec76eb2ef6dc4d39 # timestamp: 2008-07-20 18:13:57 +0200 # source_branch: https://code.launchpad.net/~bzr-gtk/bzr-gtk/trunk # base_revision_id: [EMAIL PROTECTED] # # Begin patch === modified file 'olive/__init__.py' --- olive/__init__.py 2008-07-01 21:56:25 +0000 +++ olive/__init__.py 2008-07-20 16:12:15 +0000 @@ -33,7 +33,6 @@ import gobject import gtk import gtk.gdk -import gtk.glade from bzrlib.branch import Branch import bzrlib.errors as bzrerrors @@ -44,7 +43,7 @@ from bzrlib.plugins.gtk import _i18n from bzrlib.plugins.gtk.dialog import error_dialog, info_dialog, warning_dialog from bzrlib.plugins.gtk.errors import show_bzr_error -from guifiles import GLADEFILENAME +from bzrlib.plugins.gtk.olive.window import OliveGui from bzrlib.plugins.gtk.diff import DiffWindow lazy_import(globals(), """ @@ -87,129 +86,33 @@ program. """ def __init__(self): - self.toplevel = gtk.glade.XML(GLADEFILENAME, 'window_main', 'olive-gtk') - self.window = self.toplevel.get_widget('window_main') + self.window = OliveGui(calling_app = self) + self.pref = Preferences() self.path = None # Initialize the statusbar - self.statusbar = self.toplevel.get_widget('statusbar') - self.context_id = self.statusbar.get_context_id('olive') - - # Get the main window - self.window_main = self.toplevel.get_widget('window_main') - # Get the HPaned - self.hpaned_main = self.toplevel.get_widget('hpaned_main') - # Get the TreeViews - self.treeview_left = self.toplevel.get_widget('treeview_left') - self.treeview_right = self.toplevel.get_widget('treeview_right') - # Get some important menu items - self.menuitem_add_files = self.toplevel.get_widget('menuitem_add_files') - self.menuitem_remove_files = self.toplevel.get_widget('menuitem_remove_file') - self.menuitem_file_bookmark = self.toplevel.get_widget('menuitem_file_bookmark') - self.menuitem_file_make_directory = self.toplevel.get_widget('menuitem_file_make_directory') - self.menuitem_file_rename = self.toplevel.get_widget('menuitem_file_rename') - self.menuitem_file_move = self.toplevel.get_widget('menuitem_file_move') - self.menuitem_file_annotate = self.toplevel.get_widget('menuitem_file_annotate') - self.menuitem_view_show_hidden_files = self.toplevel.get_widget('menuitem_view_show_hidden_files') - self.menuitem_view_show_ignored_files = self.toplevel.get_widget('menuitem_view_show_ignored_files') - self.menuitem_branch = self.toplevel.get_widget('menuitem_branch') - self.menuitem_branch_init = self.toplevel.get_widget('menuitem_branch_initialize') - self.menuitem_branch_get = self.toplevel.get_widget('menuitem_branch_get') - self.menuitem_branch_checkout = self.toplevel.get_widget('menuitem_branch_checkout') - self.menuitem_branch_pull = self.toplevel.get_widget('menuitem_branch_pull') - self.menuitem_branch_push = self.toplevel.get_widget('menuitem_branch_push') - self.menuitem_branch_update = self.toplevel.get_widget('menuitem_branch_update') - self.menuitem_branch_revert = self.toplevel.get_widget('menuitem_branch_revert') - self.menuitem_branch_merge = self.toplevel.get_widget('menuitem_branch_merge') - self.menuitem_branch_commit = self.toplevel.get_widget('menuitem_branch_commit') - self.menuitem_branch_tags = self.toplevel.get_widget('menuitem_branch_tags') - self.menuitem_branch_status = self.toplevel.get_widget('menuitem_branch_status') - self.menuitem_branch_missing = self.toplevel.get_widget('menuitem_branch_missing_revisions') - self.menuitem_branch_conflicts = self.toplevel.get_widget('menuitem_branch_conflicts') - self.menuitem_stats = self.toplevel.get_widget('menuitem_stats') - self.menuitem_stats_diff = self.toplevel.get_widget('menuitem_stats_diff') - self.menuitem_stats_log = self.toplevel.get_widget('menuitem_stats_log') - # Get some toolbuttons - #self.menutoolbutton_diff = self.toplevel.get_widget('menutoolbutton_diff') - self.toolbutton_diff = self.toplevel.get_widget('toolbutton_diff') - self.toolbutton_log = self.toplevel.get_widget('toolbutton_log') - self.toolbutton_commit = self.toplevel.get_widget('toolbutton_commit') - self.toolbutton_pull = self.toplevel.get_widget('toolbutton_pull') - self.toolbutton_push = self.toplevel.get_widget('toolbutton_push') - self.toolbutton_update = self.toplevel.get_widget('toolbutton_update') + self.context_id = self.window.statusbar.get_context_id('olive') + + # Get the TreeViews + self.treeview_left = self.window.treeview_left + self.treeview_right = self.window.treeview_right + # Get the drive selector self.combobox_drive = gtk.combo_box_new_text() self.combobox_drive.connect("changed", self._refresh_drives) # Get the navigation widgets - self.hbox_location = self.toplevel.get_widget('hbox_location') - self.button_location_up = self.toplevel.get_widget('button_location_up') - self.button_location_jump = self.toplevel.get_widget('button_location_jump') - self.entry_location = self.toplevel.get_widget('entry_location') - self.image_location_error = self.toplevel.get_widget('image_location_error') + self.hbox_location = self.window.locationbar + self.button_location_up = self.window.button_location_up + self.button_location_jump = self.window.button_location_jump + self.entry_location = self.window.entry_location + self.image_location_error = self.window.image_location_error # Get the History widgets - self.check_history = self.toplevel.get_widget('checkbutton_history') - self.entry_history = self.toplevel.get_widget('entry_history_revno') - self.button_history = self.toplevel.get_widget('button_history_browse') - - self.vbox_main_right = self.toplevel.get_widget('vbox_main_right') - - # Dictionary for signal_autoconnect - dic = { "on_window_main_destroy": gtk.main_quit, - "on_window_main_delete_event": self.on_window_main_delete_event, - "on_quit_activate": self.on_window_main_delete_event, - "on_about_activate": self.on_about_activate, - "on_menuitem_add_files_activate": self.on_menuitem_add_files_activate, - "on_menuitem_remove_file_activate": self.on_menuitem_remove_file_activate, - "on_menuitem_file_bookmark_activate": self.on_menuitem_file_bookmark_activate, - "on_menuitem_file_make_directory_activate": self.on_menuitem_file_make_directory_activate, - "on_menuitem_file_move_activate": self.on_menuitem_file_move_activate, - "on_menuitem_file_rename_activate": self.on_menuitem_file_rename_activate, - "on_menuitem_file_annotate_activate": self.on_menuitem_file_annotate_activate, - "on_menuitem_view_show_hidden_files_activate": self.on_menuitem_view_show_hidden_files_activate, - "on_menuitem_view_show_ignored_files_activate": self.on_menuitem_view_show_ignored_files_activate, - "on_menuitem_view_refresh_activate": self.on_menuitem_view_refresh_activate, - "on_menuitem_branch_initialize_activate": self.on_menuitem_branch_initialize_activate, - "on_menuitem_branch_get_activate": self.on_menuitem_branch_get_activate, - "on_menuitem_branch_checkout_activate": self.on_menuitem_branch_checkout_activate, - "on_menuitem_branch_revert_activate": self.on_menuitem_branch_revert_activate, - "on_menuitem_branch_merge_activate": self.on_menuitem_branch_merge_activate, - "on_menuitem_branch_commit_activate": self.on_menuitem_branch_commit_activate, - "on_menuitem_branch_push_activate": self.on_menuitem_branch_push_activate, - "on_menuitem_branch_pull_activate": self.on_menuitem_branch_pull_activate, - "on_menuitem_branch_update_activate": self.on_menuitem_branch_update_activate, - "on_menuitem_branch_tags_activate": self.on_menuitem_branch_tags_activate, - "on_menuitem_branch_status_activate": self.on_menuitem_branch_status_activate, - "on_menuitem_branch_missing_revisions_activate": self.on_menuitem_branch_missing_revisions_activate, - "on_menuitem_branch_conflicts_activate": self.on_menuitem_branch_conflicts_activate, - "on_menuitem_stats_diff_activate": self.on_menuitem_stats_diff_activate, - "on_menuitem_stats_log_activate": self.on_menuitem_stats_log_activate, - "on_menuitem_stats_infos_activate": self.on_menuitem_stats_infos_activate, - "on_toolbutton_refresh_clicked": self.on_menuitem_view_refresh_activate, - "on_toolbutton_log_clicked": self.on_menuitem_stats_log_activate, - #"on_menutoolbutton_diff_clicked": self.on_menuitem_stats_diff_activate, - "on_toolbutton_diff_clicked": self.on_menuitem_stats_diff_activate, - "on_toolbutton_commit_clicked": self.on_menuitem_branch_commit_activate, - "on_toolbutton_pull_clicked": self.on_menuitem_branch_pull_activate, - "on_toolbutton_push_clicked": self.on_menuitem_branch_push_activate, - "on_toolbutton_update_clicked": self.on_menuitem_branch_update_activate, - "on_treeview_right_button_press_event": self.on_treeview_right_button_press_event, - "on_treeview_right_row_activated": self.on_treeview_right_row_activated, - "on_treeview_left_button_press_event": self.on_treeview_left_button_press_event, - "on_treeview_left_button_release_event": self.on_treeview_left_button_release_event, - "on_treeview_left_row_activated": self.on_treeview_left_row_activated, - "on_button_location_up_clicked": self.on_button_location_up_clicked, - "on_button_location_jump_clicked": self.on_button_location_jump_clicked, - "on_entry_location_key_press_event": self.on_entry_location_key_press_event, - "on_checkbutton_history_toggled": self.on_checkbutton_history_toggled, - "on_entry_history_revno_key_press_event": self.on_entry_history_revno_key_press_event, - "on_button_history_browse_clicked": self.on_button_history_browse_clicked - } - - # Connect the signals to the handlers - self.toplevel.signal_autoconnect(dic) + self.check_history = self.window.checkbutton_history + self.entry_history = self.window.entry_history_revno + self.button_history = self.window.button_history_browse self._just_started = True @@ -222,11 +125,7 @@ self.window.move(x, y) # Apply paned position pos = self.pref.get_preference('paned_position', 'int') - self.hpaned_main.set_position(pos) - - # Apply menu to the toolbutton - #menubutton = self.toplevel.get_widget('menutoolbutton_diff') - #menubutton.set_menu(handler.menu.toolbar_diff) + self.window.hpaned_main.set_position(pos) # Now we can show the window self.window.show() @@ -241,8 +140,8 @@ self._load_left() # Apply menu state - self.menuitem_view_show_hidden_files.set_active(self.pref.get_preference('dotted_files', 'bool')) - self.menuitem_view_show_ignored_files.set_active(self.pref.get_preference('ignored_files', 'bool')) + self.window.mb_view_showhidden.set_active(self.pref.get_preference('dotted_files', 'bool')) + self.window.mb_view_showignored.set_active(self.pref.get_preference('ignored_files', 'bool')) # We're starting local self.remote = False @@ -375,7 +274,7 @@ else: self.check_history.set_sensitive(True) - self.statusbar.push(self.context_id, path) + self.window.statusbar.push(self.context_id, path) self.entry_location.set_text(path) self.path = path return True @@ -511,7 +410,6 @@ @show_bzr_error def on_menuitem_branch_commit_activate(self, widget): """ Branch/Commit... menu handler. """ -# def __init__(self, wt, wtpath, notbranch, selected=None, parent=None): selected = self.get_selected_right() if selected: selected = os.path.join(self.wtpath, selected) @@ -923,17 +821,17 @@ def on_window_main_delete_event(self, widget, event=None): """ Do some stuff before exiting. """ - width, height = self.window_main.get_size() + width, height = self.window.get_size() self.pref.set_preference('window_width', width) self.pref.set_preference('window_height', height) - x, y = self.window_main.get_position() + x, y = self.window.get_position() self.pref.set_preference('window_x', x) self.pref.set_preference('window_y', y) self.pref.set_preference('paned_position', - self.hpaned_main.get_position()) + self.window.hpaned_main.get_position()) self.pref.write() - self.window_main.destroy() + self.window.destroy() def _load_left(self): """ Load data into the left panel. (Bookmarks) """ @@ -1159,74 +1057,18 @@ def set_statusbar(self, message): """ Set the statusbar message. """ - self.statusbar.push(self.context_id, message) + self.window.statusbar.push(self.context_id, message) def clear_statusbar(self): """ Clean the last message from the statusbar. """ - self.statusbar.pop(self.context_id) + self.window.statusbar.pop(self.context_id) def set_sensitivity(self): """ Set menu and toolbar sensitivity. """ if not self.remote: - # We're local - self.menuitem_branch_init.set_sensitive(self.notbranch) - self.menuitem_branch_get.set_sensitive(self.notbranch) - self.menuitem_branch_checkout.set_sensitive(self.notbranch) - self.menuitem_branch_pull.set_sensitive(not self.notbranch) - self.menuitem_branch_push.set_sensitive(not self.notbranch) - self.menuitem_branch_update.set_sensitive(not self.notbranch) - self.menuitem_branch_revert.set_sensitive(not self.notbranch) - self.menuitem_branch_merge.set_sensitive(not self.notbranch) - self.menuitem_branch_commit.set_sensitive(not self.notbranch) - self.menuitem_branch_tags.set_sensitive(not self.notbranch) - self.menuitem_branch_status.set_sensitive(not self.notbranch) - self.menuitem_branch_missing.set_sensitive(not self.notbranch) - self.menuitem_branch_conflicts.set_sensitive(not self.notbranch) - self.menuitem_stats.set_sensitive(not self.notbranch) - self.menuitem_stats_diff.set_sensitive(not self.notbranch) - self.menuitem_add_files.set_sensitive(not self.notbranch) - self.menuitem_remove_files.set_sensitive(not self.notbranch) - self.menuitem_file_make_directory.set_sensitive(not self.notbranch) - self.menuitem_file_rename.set_sensitive(not self.notbranch) - self.menuitem_file_move.set_sensitive(not self.notbranch) - self.menuitem_file_annotate.set_sensitive(not self.notbranch) - #self.menutoolbutton_diff.set_sensitive(True) - self.toolbutton_diff.set_sensitive(not self.notbranch) - self.toolbutton_log.set_sensitive(not self.notbranch) - self.toolbutton_commit.set_sensitive(not self.notbranch) - self.toolbutton_pull.set_sensitive(not self.notbranch) - self.toolbutton_push.set_sensitive(not self.notbranch) - self.toolbutton_update.set_sensitive(not self.notbranch) + self.window.set_view_to_localbranch(self.notbranch) else: - # We're remote - self.menuitem_branch_init.set_sensitive(False) - self.menuitem_branch_get.set_sensitive(True) - self.menuitem_branch_checkout.set_sensitive(True) - self.menuitem_branch_pull.set_sensitive(False) - self.menuitem_branch_push.set_sensitive(False) - self.menuitem_branch_update.set_sensitive(False) - self.menuitem_branch_revert.set_sensitive(False) - self.menuitem_branch_merge.set_sensitive(False) - self.menuitem_branch_commit.set_sensitive(False) - self.menuitem_branch_tags.set_sensitive(True) - self.menuitem_branch_status.set_sensitive(False) - self.menuitem_branch_missing.set_sensitive(False) - self.menuitem_branch_conflicts.set_sensitive(False) - self.menuitem_stats.set_sensitive(True) - self.menuitem_stats_diff.set_sensitive(False) - self.menuitem_add_files.set_sensitive(False) - self.menuitem_remove_files.set_sensitive(False) - self.menuitem_file_make_directory.set_sensitive(False) - self.menuitem_file_rename.set_sensitive(False) - self.menuitem_file_move.set_sensitive(False) - self.menuitem_file_annotate.set_sensitive(False) - #self.menutoolbutton_diff.set_sensitive(True) - self.toolbutton_diff.set_sensitive(False) - self.toolbutton_log.set_sensitive(True) - self.toolbutton_commit.set_sensitive(False) - self.toolbutton_pull.set_sensitive(False) - self.toolbutton_push.set_sensitive(False) - self.toolbutton_update.set_sensitive(False) + self.window.set_view_to_remotebranch() def refresh_left(self): """ Refresh the bookmark list. """ @@ -1729,4 +1571,3 @@ return self._get_default(option) except KeyError: return None - === added file 'olive/window.py' --- olive/window.py 1970-01-01 00:00:00 +0000 +++ olive/window.py 2008-07-20 16:02:18 +0000 @@ -0,0 +1,455 @@ +# Copyright (C) 2006 by Szilveszter Farkas (Phanatic) <[EMAIL PROTECTED]> +# Some parts of the code are: +# Copyright (C) 2005, 2006 by Canonical Ltd +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +import os +import gtk +import gobject + +from bzrlib.plugins.gtk import _i18n, icon_path + + +class OliveGui(gtk.Window): + """ Olive main window """ + + def __init__(self, calling_app): + # Pointer to calling instance for signal connection + self.signal = calling_app + + # Initialise window + gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL) + self.set_title(_i18n("Olive - Bazaar GUI")) + self.set_icon_list(gtk.gdk.pixbuf_new_from_file(icon_path("oliveicon2.png")), + gtk.gdk.pixbuf_new_from_file(icon_path("olive-gtk.png")), + # Who has the svg version of the icon? Would be nice to include + #gtk.gdk.pixbuf_new_from_file(icon_path("olive.svg")) + ) + self.set_property("width-request", 700) + self.set_property("height-request", 400) + + self.connect("destroy", self.destroy) + self.connect("delete_event", self.signal.on_window_main_delete_event) + + # Accelerator group to Quit program + accelgroup = gtk.AccelGroup() + self.add_accel_group(accelgroup) + self.quit_action = gtk.Action(_i18n("Quit"), None, None, gtk.STOCK_QUIT) + self.quit_action.connect('activate', self.signal.on_window_main_delete_event) + actiongroup = gtk.ActionGroup('QuitAction') + actiongroup.add_action_with_accel(self.quit_action, None) + self.quit_action.set_accel_group(accelgroup) + self.quit_action.connect_accelerator() + + # High level build up of window + self.vbox = gtk.VBox(False, 0) + self.add(self.vbox) + + # Menu bar + self._create_menubar() + self.vbox.pack_start(self.mb, False, False, 0) + + # Toolbar + self._create_toolbar() + self.vbox.pack_start(self.tb, False, False, 0) + + # Locationbar + self._create_locationbar() + self.vbox.pack_start(self.locationbar, False, False, 0) + + # Main area + self.hpaned_main = gtk.HPaned() + self._create_bookmarklist() + self.hpaned_main.add(self.scrolledwindow_left) + self._create_filelist() + self.hpaned_main.add(self.scrolledwindow_right) + self.vbox.pack_start(self.hpaned_main, True, True, 0) + + # Statusbar + self.statusbar = gtk.Statusbar() + self.vbox.pack_end(self.statusbar, False, False, 0) + + def show(self): + self.show_all() + + def destroy(self, widget=None, data=None): + """ Ends the program """ + gtk.main_quit() + + def _create_menubar(self): + self.mb = gtk.MenuBar() + + # File menu + self.mb_file = gtk.MenuItem(_i18n("_File")) + self.mb_file_menu = gtk.Menu() + + self.mb_file_add = gtk.ImageMenuItem(gtk.STOCK_ADD, _i18n("_Add file(s)")) + self.mb_file_add.connect('activate', self.signal.on_menuitem_add_files_activate) + self.mb_file_menu.append(self.mb_file_add) + + self.mb_file_remove = gtk.ImageMenuItem(gtk.STOCK_REMOVE, _i18n("_Remove file(s)")) + self.mb_file_remove.connect('activate', self.signal.on_menuitem_remove_file_activate) + self.mb_file_menu.append(self.mb_file_remove) + + self.mb_file_menu.append(gtk.SeparatorMenuItem()) + + self.mb_file_bookmark = gtk.MenuItem(_i18n("_Bookmark current directory")) + self.mb_file_bookmark.connect('activate', self.signal.on_menuitem_file_bookmark_activate) + self.mb_file_menu.append(self.mb_file_bookmark) + + self.mb_file_mkdir = gtk.MenuItem(_i18n("_Make directory")) + self.mb_file_mkdir.connect('activate', self.signal.on_menuitem_file_make_directory_activate) + self.mb_file_menu.append(self.mb_file_mkdir) + + self.mb_file_menu.append(gtk.SeparatorMenuItem()) + + self.mb_file_rename = gtk.MenuItem(_i18n("_Rename")) + self.mb_file_rename.connect('activate', self.signal.on_menuitem_file_rename_activate) + self.mb_file_menu.append(self.mb_file_rename) + + self.mb_file_move = gtk.MenuItem(_i18n("_Move")) + self.mb_file_move.connect('activate', self.signal.on_menuitem_file_move_activate) + self.mb_file_menu.append(self.mb_file_move) + + self.mb_file_annotate = gtk.MenuItem(_i18n("_Annotate")) + self.mb_file_annotate.connect('activate', self.signal.on_menuitem_file_annotate_activate) + self.mb_file_menu.append(self.mb_file_annotate) + + self.mb_file_menu.append(gtk.SeparatorMenuItem()) + + self.mb_file_quit = self.quit_action.create_menu_item() + self.mb_file_menu.append(self.mb_file_quit) + + self.mb_file.set_submenu(self.mb_file_menu) + self.mb.append(self.mb_file) + + # View menu + self.mb_view = gtk.MenuItem(_i18n("_View")) + self.mb_view_menu = gtk.Menu() + + self.mb_view_showhidden = gtk.CheckMenuItem(_i18n("Show _hidden files")) + self.mb_view_showhidden.connect('activate', self.signal.on_menuitem_view_show_hidden_files_activate) + self.mb_view_menu.append(self.mb_view_showhidden) + + self.mb_view_showignored = gtk.CheckMenuItem(_i18n("Show _ignored files")) + self.mb_view_showignored.connect('activate', self.signal.on_menuitem_view_show_ignored_files_activate) + self.mb_view_menu.append(self.mb_view_showignored) + + self.mb_view_menu.append(gtk.SeparatorMenuItem()) + + self.mb_view_refresh = gtk.ImageMenuItem(gtk.STOCK_REFRESH, _i18n("_Refresh")) + self.mb_view_refresh.connect('activate', self.signal.on_menuitem_view_refresh_activate) + self.mb_view_menu.append(self.mb_view_refresh) + + self.mb_view.set_submenu(self.mb_view_menu) + self.mb.append(self.mb_view) + + # Branch menu + self.mb_branch = gtk.MenuItem(_i18n("_Branch")) + self.mb_branch_menu = gtk.Menu() + + self.mb_branch_initialize = gtk.MenuItem(_i18n("_Initialize")) + self.mb_branch_initialize.connect('activate', self.signal.on_menuitem_branch_initialize_activate) + self.mb_branch_menu.append(self.mb_branch_initialize) + + self.mb_branch_get = gtk.MenuItem(_i18n("_Get")) + self.mb_branch_get.connect('activate', self.signal.on_menuitem_branch_get_activate) + self.mb_branch_menu.append(self.mb_branch_get) + + self.mb_branch_checkout = gtk.MenuItem(_i18n("C_heckout")) + self.mb_branch_checkout.connect('activate', self.signal.on_menuitem_branch_checkout_activate) + self.mb_branch_menu.append(self.mb_branch_checkout) + + self.mb_branch_menu.append(gtk.SeparatorMenuItem()) + + self.mb_branch_pull = gtk.ImageMenuItem(_i18n("Pu_ll")) + pullimage = gtk.Image() + pullimage.set_from_file(icon_path("pull16.png")) + self.mb_branch_pull.set_image(pullimage) + self.mb_branch_pull.connect('activate', self.signal.on_menuitem_branch_pull_activate) + self.mb_branch_menu.append(self.mb_branch_pull) + + self.mb_branch_push = gtk.ImageMenuItem(_i18n("Pu_sh")) + pushimage = gtk.Image() + pushimage.set_from_file(icon_path("push16.png")) + self.mb_branch_push.set_image(pushimage) + self.mb_branch_push.connect('activate', self.signal.on_menuitem_branch_push_activate) + self.mb_branch_menu.append(self.mb_branch_push) + + self.mb_branch_update = gtk.MenuItem(_i18n("_Update")) + self.mb_branch_update.connect('activate', self.signal.on_menuitem_branch_update_activate) + self.mb_branch_menu.append(self.mb_branch_update) + + self.mb_branch_menu.append(gtk.SeparatorMenuItem()) + + self.mb_branch_revert = gtk.ImageMenuItem(_i18n("_Revert all changes")) + revertimage = gtk.Image() + revertimage.set_from_stock(gtk.STOCK_REVERT_TO_SAVED, gtk.ICON_SIZE_MENU) + self.mb_branch_revert.set_image(revertimage) + self.mb_branch_revert.connect('activate', self.signal.on_menuitem_branch_revert_activate) + self.mb_branch_menu.append(self.mb_branch_revert) + + self.mb_branch_merge = gtk.MenuItem(_i18n("_Merge")) + self.mb_branch_merge.connect('activate', self.signal.on_menuitem_branch_merge_activate) + self.mb_branch_menu.append(self.mb_branch_merge) + + self.mb_branch_commit = gtk.ImageMenuItem(_i18n("_Commit")) + commitimage = gtk.Image() + commitimage.set_from_file(icon_path("commit16.png")) + self.mb_branch_commit.set_image(commitimage) + self.mb_branch_commit.connect('activate', self.signal.on_menuitem_branch_commit_activate) + self.mb_branch_menu.append(self.mb_branch_commit) + + self.mb_branch_menu.append(gtk.SeparatorMenuItem()) + + self.mb_branch_tags = gtk.ImageMenuItem(_i18n("Ta_gs")) + tagsimage = gtk.Image() + tagsimage.set_from_file(icon_path("tag-16.png")) + self.mb_branch_tags.set_image(tagsimage) + self.mb_branch_tags.connect('activate', self.signal.on_menuitem_branch_tags_activate) + self.mb_branch_menu.append(self.mb_branch_tags) + + self.mb_branch_status = gtk.MenuItem(_i18n("S_tatus")) + self.mb_branch_status.connect('activate', self.signal.on_menuitem_branch_status_activate) + self.mb_branch_menu.append(self.mb_branch_status) + + self.mb_branch_missingrevisions = gtk.MenuItem(_i18n("Missing _revisions")) + self.mb_branch_missingrevisions.connect('activate', self.signal.on_menuitem_branch_missing_revisions_activate) + self.mb_branch_menu.append(self.mb_branch_missingrevisions) + + self.mb_branch_conflicts = gtk.MenuItem(_i18n("Con_flicts")) + self.mb_branch_conflicts.connect('activate', self.signal.on_menuitem_branch_conflicts_activate) + self.mb_branch_menu.append(self.mb_branch_conflicts) + + self.mb_branch.set_submenu(self.mb_branch_menu) + self.mb.append(self.mb_branch) + + # Statistics menu + self.mb_statistics = gtk.MenuItem(_i18n("_Statistics")) + self.mb_statistics_menu = gtk.Menu() + + self.mb_statistics_differences = gtk.ImageMenuItem(_i18n("_Differences")) + diffimage = gtk.Image() + diffimage.set_from_file(icon_path("diff16.png")) + self.mb_statistics_differences.set_image(diffimage) + self.mb_statistics_differences.connect('activate', self.signal.on_menuitem_stats_diff_activate) + self.mb_statistics_menu.append(self.mb_statistics_differences) + + self.mb_statistics_log = gtk.ImageMenuItem(_i18n("_Log")) + logimage = gtk.Image() + logimage.set_from_file(icon_path("log16.png")) + self.mb_statistics_log.set_image(logimage) + self.mb_statistics_log.connect('activate', self.signal.on_menuitem_stats_log_activate) + self.mb_statistics_menu.append(self.mb_statistics_log) + + self.mb_statistics_information = gtk.MenuItem(_i18n("_Information")) + self.mb_statistics_information.connect('activate', self.signal.on_menuitem_stats_infos_activate) + self.mb_statistics_menu.append(self.mb_statistics_information) + + self.mb_statistics.set_submenu(self.mb_statistics_menu) + self.mb.append(self.mb_statistics) + + # Help menu + self.mb_help = gtk.MenuItem(_i18n("Help")) + self.mb_help_menu = gtk.Menu() + + self.mb_help_about = gtk.ImageMenuItem(gtk.STOCK_ABOUT) + self.mb_help_about.connect('activate', self.signal.on_about_activate) + self.mb_help_menu.append(self.mb_help_about) + + self.mb_help.set_submenu(self.mb_help_menu) + self.mb.append(self.mb_help) + + def _create_toolbar(self): + self.tb = gtk.Toolbar() + + self.tb_refresh_icon = gtk.Image() + self.tb_refresh_icon.set_from_file(icon_path("refresh.png")) + self.tb_refresh = gtk.ToolButton(self.tb_refresh_icon, _i18n("Refresh")) + self.tb_refresh.connect('clicked', self.signal.on_menuitem_view_refresh_activate) + self.tb.add(self.tb_refresh) + + self.tb_diff_icon = gtk.Image() + self.tb_diff_icon.set_from_file(icon_path("diff.png")) + self.tb_diff = gtk.ToolButton(self.tb_diff_icon, _i18n("Diff")) + self.tb_diff.connect('clicked', self.signal.on_menuitem_stats_diff_activate) + self.tb.add(self.tb_diff) + + self.tb_log_icon = gtk.Image() + self.tb_log_icon.set_from_file(icon_path("log.png")) + self.tb_log = gtk.ToolButton(self.tb_log_icon, _i18n("Log")) + self.tb_log.connect('clicked', self.signal.on_menuitem_stats_log_activate) + self.tb.add(self.tb_log) + + self.tb.add(gtk.SeparatorToolItem()) + + self.tb_commit_icon = gtk.Image() + self.tb_commit_icon.set_from_file(icon_path("commit.png")) + self.tb_commit = gtk.ToolButton(self.tb_commit_icon, _i18n("Commit")) + self.tb_commit.connect('clicked', self.signal.on_menuitem_branch_commit_activate) + self.tb.add(self.tb_commit) + + self.tb.add(gtk.SeparatorToolItem()) + + self.tb_pull_icon = gtk.Image() + self.tb_pull_icon.set_from_file(icon_path("pull.png")) + self.tb_pull = gtk.ToolButton(self.tb_pull_icon, _i18n("Pull")) + self.tb_pull.connect('clicked', self.signal.on_menuitem_branch_pull_activate) + self.tb.add(self.tb_pull) + + self.tb_push_icon = gtk.Image() + self.tb_push_icon.set_from_file(icon_path("push.png")) + self.tb_push = gtk.ToolButton(self.tb_push_icon, _i18n("Push")) + self.tb_push.connect('clicked', self.signal.on_menuitem_branch_push_activate) + self.tb.add(self.tb_push) + + self.tb_update_icon = gtk.Image() + self.tb_update_icon.set_from_file(icon_path("pull.png")) + self.tb_update = gtk.ToolButton(self.tb_update_icon, _i18n("Update")) + self.tb_update.connect('clicked', self.signal.on_menuitem_branch_update_activate) + self.tb.add(self.tb_update) + + def _create_locationbar(self): + """ Creates the location bar, including the history widgets """ + self.locationbar = gtk.HBox() + + self.button_location_up = gtk.Button() + self.button_location_up.set_relief(gtk.RELIEF_NONE) + image_location_up = gtk.Image() + image_location_up.set_from_stock(gtk.STOCK_GO_UP, gtk.ICON_SIZE_BUTTON) + self.button_location_up.add(image_location_up) + self.button_location_up.connect("clicked", self.signal.on_button_location_up_clicked) + self.locationbar.pack_start(self.button_location_up, False, False, 0) + + self.entry_location = gtk.Entry() + self.entry_location.connect("key-press-event", self.signal.on_entry_location_key_press_event) + self.locationbar.pack_start(self.entry_location, True, True, 0) + + self.image_location_error = gtk.Image() + self.image_location_error.set_from_stock(gtk.STOCK_DIALOG_ERROR, gtk.ICON_SIZE_BUTTON) + self.locationbar.pack_start(self.image_location_error, False, False, 0) + + self.button_location_jump = gtk.Button(stock=gtk.STOCK_JUMP_TO) + self.button_location_jump.set_relief(gtk.RELIEF_NONE) + self.button_location_jump.connect("clicked", self.signal.on_button_location_jump_clicked) + self.locationbar.pack_start(self.button_location_jump, False, False, 0) + + self.locationbar.pack_start(gtk.VSeparator(), False, False, 0) + + self.checkbutton_history = gtk.CheckButton(_i18n("H_istory Mode")) + self.checkbutton_history.connect("toggled", self.signal.on_checkbutton_history_toggled) + self.locationbar.pack_start(self.checkbutton_history, False, False, 0) + + self.entry_history_revno = gtk.Entry() + self.entry_history_revno.set_property("width-request", 75) + self.entry_history_revno.set_sensitive(False) + self.entry_history_revno.connect("key-press-event", self.signal.on_entry_history_revno_key_press_event) + self.locationbar.pack_start(self.entry_history_revno, False, False, 0) + + self.button_history_browse = gtk.Button() + self.button_history_browse.set_sensitive(False) + self.image_history_browse = gtk.Image() + self.image_history_browse.set_from_stock(gtk.STOCK_OPEN, gtk.ICON_SIZE_BUTTON) + self.button_history_browse.add(self.image_history_browse) + self.button_history_browse.connect("clicked", self.signal.on_button_history_browse_clicked) + self.locationbar.pack_start(self.button_history_browse, False, False, 0) + + def _create_bookmarklist(self): + """ Creates the bookmark list (a ListStore in a TreeView in a ScrolledWindow)""" + self.scrolledwindow_left = gtk.ScrolledWindow() + self.scrolledwindow_left.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) + + self.treeview_left = gtk.TreeView() + self.treeview_left.set_headers_visible(False) + self.treeview_left.connect("button-press-event", self.signal.on_treeview_left_button_press_event) + self.treeview_left.connect("button-release-event", self.signal.on_treeview_left_button_release_event) + self.treeview_left.connect("row-activated", self.signal.on_treeview_left_row_activated) + self.scrolledwindow_left.add(self.treeview_left) + + # Move olive/__init__.py _load_left List creation here + + def _create_filelist(self): + """ Creates the file list (a ListStore in a TreeView in a ScrolledWindow)""" + # Model: [ icon, dir, name, status text, status, size (int), size (human), mtime (int), mtime (local), fileid ] + self.scrolledwindow_right = gtk.ScrolledWindow() + self.scrolledwindow_right.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) + + self.treeview_right = gtk.TreeView() + self.treeview_right.connect("button-press-event", self.signal.on_treeview_right_button_press_event) + self.treeview_right.connect("row-activated", self.signal.on_treeview_right_row_activated) + self.scrolledwindow_right.add(self.treeview_right) + + # Move olive/__init__.py _load_right List creation here + + def set_view_to_localbranch(self, notbranch=False): + """ Change the sensitivity of gui items to reflect the fact that the path is a branch or not""" + self.mb_branch_initialize.set_sensitive(notbranch) + self.mb_branch_get.set_sensitive(notbranch) + self.mb_branch_checkout.set_sensitive(notbranch) + self.mb_branch_pull.set_sensitive(not notbranch) + self.mb_branch_push.set_sensitive(not notbranch) + self.mb_branch_update.set_sensitive(not notbranch) + self.mb_branch_revert.set_sensitive(not notbranch) + self.mb_branch_merge.set_sensitive(not notbranch) + self.mb_branch_commit.set_sensitive(not notbranch) + self.mb_branch_tags.set_sensitive(not notbranch) + self.mb_branch_status.set_sensitive(not notbranch) + self.mb_branch_missingrevisions.set_sensitive(not notbranch) + self.mb_branch_conflicts.set_sensitive(not notbranch) + self.mb_statistics.set_sensitive(not notbranch) + self.mb_statistics_differences.set_sensitive(not notbranch) + self.mb_file_add.set_sensitive(not notbranch) + self.mb_file_remove.set_sensitive(not notbranch) + self.mb_file_mkdir.set_sensitive(not notbranch) + self.mb_file_rename.set_sensitive(not notbranch) + self.mb_file_move.set_sensitive(not notbranch) + self.mb_file_annotate.set_sensitive(not notbranch) + self.tb_diff.set_sensitive(not notbranch) + self.tb_log.set_sensitive(not notbranch) + self.tb_commit.set_sensitive(not notbranch) + self.tb_pull.set_sensitive(not notbranch) + self.tb_push.set_sensitive(not notbranch) + self.tb_update.set_sensitive(not notbranch) + + def set_view_to_remotebranch(self): + """ Change the sensitivity of gui items to reflect the fact that the branch is remote""" + self.mb_file_add.set_sensitive(False) + self.mb_file_remove.set_sensitive(False) + self.mb_file_mkdir.set_sensitive(False) + self.mb_file_rename.set_sensitive(False) + self.mb_file_move.set_sensitive(False) + self.mb_file_annotate.set_sensitive(False) + self.mb_branch_initialize.set_sensitive(False) + self.mb_branch_get.set_sensitive(True) + self.mb_branch_checkout.set_sensitive(True) + self.mb_branch_pull.set_sensitive(False) + self.mb_branch_push.set_sensitive(False) + self.mb_branch_update.set_sensitive(False) + self.mb_branch_revert.set_sensitive(False) + self.mb_branch_merge.set_sensitive(False) + self.mb_branch_commit.set_sensitive(False) + self.mb_branch_tags.set_sensitive(True) + self.mb_branch_status.set_sensitive(False) + self.mb_branch_missingrevisions.set_sensitive(False) + self.mb_branch_conflicts.set_sensitive(False) + self.mb_statistics.set_sensitive(True) + self.mb_statistics_differences.set_sensitive(False) + self.tb_diff.set_sensitive(False) + self.tb_log.set_sensitive(True) + self.tb_commit.set_sensitive(False) + self.tb_pull.set_sensitive(False) + self.tb_push.set_sensitive(False) + self.tb_update.set_sensitive(False) === modified file 'setup.py' --- setup.py 2008-06-27 17:32:10 +0000 +++ setup.py 2008-07-20 16:02:18 +0000 @@ -118,7 +118,7 @@ data_files=[('share/olive', ['olive.glade', 'cmenu.ui', ]), - ('share/olive/icons', ['icons/commit.png', + ('share/bzr-gtk/icons', ['icons/commit.png', 'icons/commit16.png', 'icons/diff.png', 'icons/diff16.png', @@ -129,11 +129,12 @@ 'icons/push.png', 'icons/push16.png', 'icons/refresh.png', - 'icons/oliveicon2.png']), - ('share/bzr-gtk/icons', ['icons/sign-bad.png', + 'icons/oliveicon2.png', + 'icons/sign-bad.png', 'icons/sign-ok.png', 'icons/sign.png', 'icons/sign-unknown.png', + 'icons/tag-16.png' 'icons/bug.png', 'icons/bzr-icon-64.png']), ('share/applications', ['olive-gtk.desktop', # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWRrof+UAEm5/gER0AIJZ7/// ////ur////BgHufd5O97WGqrTX31493j44PdfY3o921W02VUqL2al21e+c9O7HkUq+sZYfWbc3Mq rsBqjrUoAqlHb0a5bMR67wF7vEx7ZVNGhIoIAmQmJpiYptRkanqaZGU81TaT1NqN6kyYTamj0gaa AiaIAKE2TU008om8k0EYBoDRGJkYAGm1NUJNTGkaDIAAAAAGhoAAANASeqlQqfqm9RPU2gjEDAAI MmARgAAAEYRJIFGCbUVP2psk0mKeaaNJqHlPKPU/U01ADTyagA0ESSAIAp5AJpMFT9GplP1T9U9T 1DxJp6aR6gADRoqAEJTnL78F0adcdmzp2dSmtbhDVd+0zwaCLbCb/CkJRDL+tnH5H7kI1jizIfNu sVuSB19BseDRK1gfFoAYDkhniWsH/F7thJ/7jTaEhInRhzxpecRCtmxPZ/pdPE4fxFbU/Rp2VWh0 ty0U2k2MXS5msYxRRRijdHLnQ4xMqMZMbo5c3FyUFuc4ZttulbXya4LSxy1SKVSy1ikBSApAUgKA pAG4JG+FruljimFNtrYdcVl2o4up93ddRUfHj2qNmokgtAaDamr8vpk7dfF0VVFTqSANCp1lSEQe FT7YaOmIkuwJU4EKucL2LRlLhdNG2DjMauzu/ftuu2ZGeZ8QVBTAB3wQBff209HK7pWk3EWa9a0P W+AFX+wzAxNpIbTYNg6C25fBQPDrrx3aNnsld+Ha2bTGXxwvwt4S0tKLgmZa5yCWtfPv6i1C5k5E kekb4loLkKcWfQOF0VzRFLubByKK8sTpmJtnCLTNaJtiL1TZuLhQwV2lWclCQNOf7+rtOwjk3j7F 9QyJKBmRFrt8PeP7KMnn1kH7RWCI8lLGFzKSdcBz16aris5Hc+jbVDL3G2OMT8v05ezbCvxkBhZ+ kxIhIxQ4fqoQTJPrUZjzB+EqmCipifl7/Dt3Z3wnQ2g/wohNNXk7XTnYVQFo+OUh736KK+AuMRFM Mhx6Q01UFj5YUPlCjRIzQql1nnNXpbcWywi40HXW+lddnnZgNZTpInDsLwnBLuLdR1oEsBoQmmJO 4xtjcVH7uNMMcIasYZLJESFterKuGgGue7tHGI1EKezXr05ApoLoUp+WYASZAt3Hni4vXp26XbAw MLqzDnWlFsE2wkCdmUiqRHEzuFrwM8iCDyN7hAuAb8Lo8lSF5aOWc0DjVkE2NG6Rk1tFly2qpnPN TbnQM5ondw7T6nb21SJtuntJYeVMoQTfml4nmdpvuMNB53OU81PoyiXl62U3R+oXr1glPkvZ4mtC lWLA2PIkqfF0R6tKP+X6s85GVOBIGfIBQkk8gJu3W6HrftHBigQCDEfjUlQqRzC4OU5JkAblzlc1 6tfxkHdQVBkIQ+FJDN3vJnuuLPK3BnBkkCRZCSR2IuJAPs/Y05oJyHqQh1opSElHfSgZmn7LYXY4 /E7vsSr1z0xMTMvPl6SlhkFc8b0Nl/EwQdtUl5hCoVBSxqTxvNh5GBtTHggwpZVUASgEASsaL5l5 g/+Er5hkiQ3XVdnMt21Y2KDdPTdvo3U7kABKF898BhFP1AcyEDFgT4pzhvmkcct18jQ5XUYIchIp 1LspDX1lTTzLkb+KtrMztPgyyqomY12zl/QH23gn7SpJJJD7F/LWs/+fi9u9TeuUUjcBgW76LNjo fPZYAA3SpsAdsYx7TIDjLAbARS0mh2AAB5rtW8GWWFN061MHe6ybw1uV9carSwM+Ukkkkkkkkkkg EkNVCbbUhz4/bHSejZwNxUHQxFIhpIINQsg3B7KbirbkafNBYgFlowdbKBLXb9jNEgXD1t98LOnI ZVGkIFzS/H8/FmonTx/b7a9hTVprw4WkJ0S5sGJoAYnRsn0Uvr7PbAbO/2B5ggGIVhrFJDDeJLdw OatcBe8MqsbNJIuXJIuKz3A88yjFClZ09Xjpy1VXdyAXl2p7j2895ZeBeX/qW6IyASSMjbGJIgJR CU5ylqDjrvA4nqI4mwW+52DjVzVGv4KW5tndjsxthYJuokSQNNRlrritSkogJIEgl8BAajOJAKtS qdydOSyRuHM4LrtpfQGAiu8Q5roJqNjYuCPZHA6wVQgKArhE2bRY7iSSCSSSSSQSSbSoyoGterW7 kXkcLi6kSRK2ZrKmMSLzVKHGLBWMMrQrJazCntWWVXSq0x2YwigwLigEKiyI1FTzAFr9e70b8QCA zb1fCjdiVatp5+PwtrgFrUqlOIJK+euCVAC7zoPOSOMG/be2QkSY52q9y/XQI+g0MUbs8A1DFAl+ fkpsMzW9sGmN2yjMvNhfeQIJjlLVWY0iFWuVDAuQLwzNQKaywqJlRAieT7bDVxMTqPEr/uV+XOID NCCmxlym0ZkvtkwGKiyNoAQiOKhAi7EIGjbmvNbkaLtjAvLFS+U7Rw5NnXUundry5Wbwx4ROJ+Sg wcQdVmESkLALwiZBOvBQjZq4cI8/GUpznOtiBqHQdadGq6lb7w2+/FSrIGpTyPZ3CJmzlRbQVFMw JBr2RJmBQHySMxeLVnhbmhe65KXczC/l26D7j2OmfPXJzckBpA8gxMMcK18ixeIGRBrDC3HkWkh6 FkZLDpCtI02gEbITa7toVDVRUUUSL6SBYOwFUaDEqKay4NoGw2i4C3q2mwpxTDrs4LL7QIQvQDAM u8oQQpFFdZpp7w3CHJuwYYGAQoF5u4cBjhRipHBS/LwyIzGQyOw4FHic03By2hUyp4wsQGVMDQrM 1ouMERoJQYzCG8HrI75CmVgYFBiaUARMhEgaCJMkM4B8hRvy4squkDeqUedvm5xarI2CZRTGgzqj aYlntv05F1GJocTQLQ4kLjDcdTfkGugadOUuMxqLCRkLDMROhZgjfQMzQoxwjJkbpSlMeKDBMaF4 wnoKunCFaHLYXVG7MtbebTiZ7UGBzFJlCg2WkyiBc6XZJ3yiRy0XK0wjSmgzRAtyaQNcaw11OBoW La4nIwLGe06QtujmbjkpsD0BqeXvDhppprz3ceWQNsq2lFyoWBKwJ1jGZDTpKMCqFVBzElWV1zVw T1FZaYFpSfxiYGR7A7jURPepy8w5ZnCG7hvkvq1mudonI59pxC40DJBFCwvLJSBkiUnEiXFRZcZi oJTLyKpcaQ5BYKgtKS80XN0GwmUh2pFOetTcxMM6wYMCxIjYBgCny+rwu8Yufx7PsF2pgj8Ux8FA ef0M0JoND3MO4upreRhCQsES0hCePxY9vlfonNHleVueJodLGmza2pOpAPl/rP3eg8P5+2fu+X11 hUFnop0wNs22lnENjX5kV7ae+MMPlCNZs+ZKGc94zm+AiCDZXgylWSIo9+TGf9aIQMOayF+wqnr1 Mrrsu2v4Bv4EN7yQf8LKVEdIsnOBTW/RrDP8Ldz01N/31zCYPMLv30P95WhSCVeDeQ3pQra7hPRs 7+YWPDy1QzzowC1YZVabB9awOhPMqmECQJGBfngFZuetHS42H73Crwx75JSkc2IQS3GYLY6d1HHo 4bacufIjneU0hdGu3piVDTGtV9F+JvyrAO4vpUkvc+Uk46abFKAcBBYik8aoWLBfLe0oyPDum0N1 ZbRMA6Nim7HDXMNV9JAgxjzoYUBp/jZ8r9tOgzBtU8mrJRRqI7yuqChF4Q+wLFcOpvC3QI5ifwPt DebWNp6JUZLR8SKIBkuCGfyZJyNoi/HuJDGeleX0aKgGz53qIds5ajfR6xU8uG3kKSZsFj3Fiil2 rFWNNVtpKNU5o0aNtJtJZLGixpdlr9268/bb9naudYIJS3V2+8AOu6tdqgQct9y02ZLtQAhaCVGE VJAZRwb5Mx3MRjFNR3n81vVohtxydvCg2EZClPXJJBIBBJAIKBCCgN9+/TULxERAiIiHgvvvvvvL 1oyQoKcdbLxD1CYj9fzzX9JoDmHoili/UwOD+kMkwWoVJGQhs5ySSEILPndJqab2MZJJJUoKVCSk qVdZUklglRtd5bo2ru9uy5c3V2AglAIIGF0jjaSSECrzYXp2QcV3c9F2ahugGGgi8MKJJC4SD0B3 KmxMRgXJS/ZWAY7TeAYZEISRgBkEAxDZe4dTeP44pyK0A9wwPgHwOn7vgbw95WZeWssLj/x8Ao4h YepAEA/TQcjxCWgmlM7wSgID7xhz8iHYAMGPM8TqdTgHmq+cBIMF4gwCykk/GIyer9t7VRVIfuQ9 Zt0QC4LfNAcU1TIA1cNPZbAEQy+XaN4bB+vDCzzATovgT+mKmanYWVQcUIvFl2wJ4Ap+amqHOd66 K5rfAXKxpv7wWFUIFVCRkkyCBFsGNOoodvaZRuKMbFVQoZIPVGCn1o7P5ehlfwlRCJ5G1fcazUM8 DynlOo7TqGM8/gcTIkJGAgYJJiBFSIRB+Hf6vKuUlErttVVa11UBHkcyRoMSRtGdmrVcg8dbR5SQ cUt2KAJ0FpEzkmI+pqooL2hqU9Y5Gsxdp2Qg5VQ1FgTXqGeAIVK3Pn8ZFmo2mg3mU4FB9J1lRxNx IrQDb1eB9MKRTA1MjH+qEgUcazoq88+R48EMQxXgbygAC0BN3YnYuy94Jo2kBiWRi9e581xdD+9H X/l8DFIfcEKSFEKZuyGxakog+zohk6xRuHFAbWAatG1DUCj3B5QL0Hk2kBGbyJIqBTZenG1jxV2W kr2S0qFVXqkiN06LeEQCEglpZaIQrcCWszc3PWU9BuPMVoKEjrOBFVEzIIKwvGN5GJ7zN5xBWUHi KNKaSPmLBdXVIeJ8RENO4tFdSS6cG9JcVKYxjFiAxb+DLsOssaZRoh2r2i68qSFEWRWWfSFYHL0m h90fZ9Df0dksRNxj2USlMC1kFHIHLJUjhLJdQI62LoxqhenpfZUYcKRddA1wiXV1XXdUoYUxL7r4 wYJWFFCAkAqGhwIASlGNCFFZzC6r7XkxweOFBcjCrSpKqmywJKtLD0i2uW0CoMgtZ2KLYYgUgi1r B4KsAkFVWGDiFcsGV7ug2KgzjTzZLtO0n1VUFL0b+3YGksGUl5oIHE6jKZ0aVoAx0j1jzMNW4LlK TKry7DG1Kw3c1NX0YMC9KBKKFjAGGjgWKAOwuKuAPVeaxBue8byu+3VlomThUTKlR3DCGAVjAQsA Cnd0i44uA2WMdCixB/cQHEA4/Q72289ut01jkQpyUBWmxicky/AgHBRC8NhE/Cx0dTZAvwgv4wE6 /i9bsDkEXDiRgRD0LjElkDgJ3DEUgCQEMO8JNN7s1OutsK79Oad71MDzQu2xNmmW5NeClwxiHG9+ 6um0KTpGnaAZQDSvnY6AuMtxE1yEgiQkIisgl2TayV4e9OAGvWIetQgCbkOowFIzHNQ8Icjw3cS0 Y0NDajVUQSRWiKotEBIRUEg+0+Z8jme8+BYvPmfH49xuC0W4VRzHKgiVVYnlO47i0CQ0tAEyBBJL iB0/NNVAEIIexIAUkFCQhEwDI6bQbkImfhC14BiYAhQBvfmjWx/RqvNAeSCyIyigIbw8KUh1HqhR ewJ0DguFmUgyLIjCIEipobak6pgNbwyNKhA4GZyn4XoLaKeZHBNCbJfpLFtdoJ+DfrgCHtA+cqMI hAZJ7v6/8tVVbDtDA9HpOuFNc0KtUaAKkKIVCggjSB9QU02RqGBzH7nmF+GAUIwCACQA/P821tb2 aaH3QQ8XPk5LUTLLz3IY2PDaM3qYBxmFyYQE/Kr7v6Cgdo/Megh2erzPgilFMJn8A1CJ1hfcB194 1UU28Z9AupuRyF2wXzNUTWAQ2oHxqfANCDkhjlBT3j0Jc3jyfeMFScfb9IqSCfDammHvhUHmEHTr jsrYpzhO7n7SJ6AQiIEs/nHB+jlk+maIrurzLKsREREREd4Dt3ywG56mOqBJBIeAHYnhGKJfsDRt 7o0NgDeZ7T2T7XNudruM4MYSKSDGQCDEIBGAsXQPuCN7mzUeAQLz7fsG49pBhog5JxiJoYHfrIUU SRGe0SDQz040gF50fOYgYhwRXWngUIBuYIsVxjR9o4FiQIkNo8SPd6T0Q2u3auijtqqWUgLIBcMC wWgsPoaTgnZdLI5mR+QwG88QL1/AMeBAnOVHo4FXQu7LxX9VygXKpFOgnoDHJZC4ogdfl6jb34ih obTYZQDt60gm61KLtPcbDcDzAL28ix2xQFepoU/kHQ1eKOxeJvxNoHHHYe2/eVX6GYMCOIHM40Y2 qBEAiBcDAoI4J+Jee6DpBH4EIhB8SMIPwvhnkprSA/g8Hmci8vN5DEROtWsIQAIpAgXL/kgRRikU 7tvCAcP82ufQDtUvQQdiZk0xXiTJNyQFDakG3rfQ5DcPSqxMDNVxOIXQkkkkk3Dqz3AWzXdRcpie pHnR60dBg5FFSoJEgVHjtaFjpQSAFpdG6IXdKCxC+NSoLUFIRagoNRUsgNnOMAmFwvWrIQEQwKQS qB0MFH5YAeMQb1weQY3DgZQd9oIFBgESzp97YTCSJ2oBeIOH6ROCzevmA6G5cqtCQkBMgHMi7RVq CwgSkpCt5SrnEECwNevM9J8YNB8T7+YWuDwMQTEB3NCijX8507gzoPYeaorGgKxhQjYp6NwDpQDY ezzgcNZR5OMXGAhso95FHfps1v3wlTFyrm5ty2Zmo7jaJdcjSBcUrcgFKFFmWSlIRX+iflbx23G6 wIFSSBAkTs+6AdwPGas+/SueWwtaEw29VpYuIib4a1zS9S2hYqGNf7ugsKRJKpavV9n5+3N3mIie j0zZAYOwPEmIsCY2RxIgEKaUgFCX6iLQdf148lNTha1rQkDhVN0uhIBLdApplqenVHYOalg7H5vz Ut8u2qQJQBWh/sQXYBv3gJ8HwsrvHXgUiGYcZVhy+u59KiaMCx2BA2Jm5jZgvOsk5C7AaGMXruZA sGEhoYxRkyfgs9JlECH2qfxo9A7h6uxxHHmkk+mqL6jQeixVgqokjdCpX1EusDdYsQOgUBZD0oBA adKWPBJFUDfcZKQhgwOxTsYc2hvWvKZ+dPGocr1BgUPAg5xtBdaGzYiXvGAZAYLv4Tqe50J4GIWd 2MCAZprA5Cx8CA/d58QMIeBkpbL/F4p3A8xQ1sr0Tc4ETqXngJmH1Bu9O1N0SEjYGleBViyHehQO JACCxTl799rsd2VsNOWvk3W92FznMcn6bpDJNps4yIfDy0zPQGzA9eqeqYXVmeHe8QzxBeGwf1oB dewY7avyyvzheZjqEagQiTCKXgj8FWB5AM9zGdvNmkwBOWMA2Jwq4aEjq1GijRTc5caMZVDEaixF GiiijVFFGjRoo0URRRFYooKKIiKNEYojREMLi4xq5ttOC0UYoxRijFGIxRRYxblFfhzkv/3OZf0q 2Xaf35qtuJf28hzs8A63DJBsaBttttt0gRA9WaYUFcxEq4yaSRsDcvewYQV4P4hFxOId6lczs+WR aytKRgEccUEwkgbBvQaDppxBuRcgvS2OJ2eYCR6Y8Xl7CN42ab+QvVQqqVIMQyhXobmcW2gBFnIZ QoLA4AlqlRdLhJsAAjuLkAogxirXqSpeSgkjx4ZySQZE2soEFVhWDwzBmwGH7R+X1B3PreI548CC VxodZbZa1jdulABYIcE4hShdfQC3JIkE0x6eR49y+nwhlwAOxZ7iIuEGpInABC5F/TnrddXWRQ3n I0mhiNxhQeDH4IJFA3899XvNZlyQTobGEkEDsZVyjJOOAW5EHoG0khNhgN+8lTqjnkuhlCrFsmrd /y1V01bQh4qqzI7cgMA0TvrgpaCBRoDYHtKodrNJCmqQKZ2h0AYsGFi6BADdhqiSw1klrKZ7Hcim KYIHfYji44FDlpUuUzIop95kjRT6Nidew/k1Q/N1G4+XcRtd/chIPPqQDXsNZsiDZ8X2L61MDp6K I1SVCEngkUOlutyBfoaxBvOFUJhY/nUggau8IB0rMAkN8pRYQYMQhA4K5oaWlOHQcj5Qzb1IpAIr EAyPqRpe3vpruK7qullJDaxbLIZKNGAyMISAHM6fuCzjeFx1+IsFgzQLHmIUBm6Av2FBRU0o+cNi NtWgSxIkdP3hSWOAVmNgw/WPtQClDyb+HCwarVOcp5do2LRIbbMo8iirhNCg3qWwbINxFK6+9HYO kxM1OIMVOwNhygHj6uN1uYWH2h/8XckU4UJAa6H/lA==
signature.asc
Description: OpenPGP digital signature
-- bzr-gtk mailing list [email protected] Modify settings or unsubscribe at: https://lists.canonical.com/mailman/listinfo/bzr-gtk
