This patch makes bzr-gtk import seahorse as late as possible (to avoid slowing down bzr's startup time). It also tries to import seahorse rather than checking whether it is available (which will only work when seahorse was already activated by some other application).
Cheers, Jelmer --
# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: [EMAIL PROTECTED] # target_branch: lp:bzr-gtk # testament_sha1: 6d73d64643c60bbc2bb49352d1f03c732276358d # timestamp: 2008-07-04 20:55:15 +0200 # base_revision_id: [EMAIL PROTECTED] # # Begin patch === modified file '__init__.py' --- __init__.py 2008-06-27 17:10:27 +0000 +++ __init__.py 2008-07-04 08:05:17 +0000 @@ -103,21 +103,24 @@ bzrlib.ui.ui_factory = GtkUIFactory() -def data_path(): - return os.path.dirname(__file__) - - -def icon_path(*args): - basedirs = [os.path.join(data_path()), +def data_basedirs(): + return [os.path.dirname(__file__), "/usr/share/bzr-gtk", "/usr/local/share/bzr-gtk"] - for basedir in basedirs: - path = os.path.join(basedir, 'icons', *args) + + +def data_path(*args): + for basedir in data_basedirs(): + path = os.path.join(basedir, *args) if os.path.exists(path): return path return None +def icon_path(*args): + return data_path(os.path.join('icons', *args)) + + def open_display(): pygtk = import_pygtk() try: === modified file 'about.py' --- about.py 2008-06-28 20:24:16 +0000 +++ about.py 2008-07-04 08:05:17 +0000 @@ -27,13 +27,14 @@ from bzrlib.errors import NotBranchError, NoRepositoryPresent from bzrlib.trace import mutter -from bzrlib.plugins.gtk import icon_path +from bzrlib.plugins.gtk import data_path, icon_path def read_license(): - license_file = os.path.join(os.path.dirname(__file__), "COPYING") - if os.path.exists(license_file): - return file(license_file).read() + license_paths = [data_path("COPYING"), "/usr/share/common-licenses/GPL-2"] + for license_file in license_paths: + if os.path.exists(license_file): + return file(license_file).read() # Fall back to just license name if we can't find the file return "GPLv2 or later" @@ -41,7 +42,7 @@ def load_credits(): import pickle try: - credits = pickle.load(file("credits.pickle")) + credits = pickle.load(file(data_path("credits.pickle"))) except IOError: credits = None return credits === modified file 'revisionview.py' --- revisionview.py 2008-06-29 19:18:34 +0000 +++ revisionview.py 2008-07-04 18:54:42 +0000 @@ -28,13 +28,6 @@ from bzrlib.plugins.gtk import icon_path -try: - from bzrlib.plugins.gtk import seahorse -except ImportError: - has_seahorse = False -else: - has_seahorse = True - PAGE_GENERAL = 0 PAGE_RELATIONS = 1 PAGE_SIGNATURE = 2 @@ -138,10 +131,11 @@ class SignatureTab(gtk.VBox): - def __init__(self, repository): + def __init__(self, repository, seahorse): self.key = None self.revision = None self.repository = repository + self.seahorse = seahorse super(SignatureTab, self).__init__(False, 6) signature_box = gtk.Table(rows=3, columns=3) @@ -222,7 +216,7 @@ "This revision has not been signed.") def show_signature(self, crypttext): - (cleartext, key) = seahorse.verify(crypttext) + (cleartext, key) = self.seahorse.verify(crypttext) assert cleartext is not None @@ -259,15 +253,15 @@ trust = key.get_trust() - if trust <= seahorse.TRUST_NEVER: + if trust <= self.seahorse.TRUST_NEVER: trust_text = 'never trusted' - elif trust == seahorse.TRUST_UNKNOWN: + elif trust == self.seahorse.TRUST_UNKNOWN: trust_text = 'not trusted' - elif trust == seahorse.TRUST_MARGINAL: + elif trust == self.seahorse.TRUST_MARGINAL: trust_text = 'marginally trusted' - elif trust == seahorse.TRUST_FULL: + elif trust == self.seahorse.TRUST_FULL: trust_text = 'fully trusted' - elif trust == seahorse.TRUST_ULTIMATE: + elif trust == self.seahorse.TRUST_ULTIMATE: trust_text = 'ultimately trusted' self.signature_key_id_label.show() @@ -333,9 +327,13 @@ self._create_general() self._create_relations() - # Disabled because testaments aren't verified yet: - if has_seahorse: - self._create_signature() + try: + from bzrlib.plugins.gtk import seahorse + except ImportError: + pass + else: + self._create_signature(seahorse) + self._create_file_info_view() self._create_bugs() @@ -555,8 +553,8 @@ self.append_page(vbox, tab_label=gtk.Label("Relations")) vbox.show() - def _create_signature(self): - self.signature_table = SignatureTab(self._repository) + def _create_signature(self, seahorse): + self.signature_table = SignatureTab(self._repository, seahorse) self.append_page(self.signature_table, tab_label=gtk.Label('Signature')) self.connect_after('notify::revision', self._update_signature) === modified file 'seahorse.py' --- seahorse.py 2008-06-29 19:07:23 +0000 +++ seahorse.py 2008-07-04 18:54:42 +0000 @@ -43,19 +43,23 @@ else: raise -if hasattr(bus, 'list_activatable_names'): - bus_names = bus.list_activatable_names() -else: - bus_object = bus.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus') - bus_names = bus_object.ListNames(dbus_interface='org.freedesktop.DBus') - -if BUS_NAME not in bus_names: - raise ImportError - -crypto = dbus.Interface(bus.get_object(BUS_NAME, CRYPTO_PATH), - CRYPTO_INTERFACE) -openpgp = dbus.Interface(bus.get_object(BUS_NAME, OPENPGP_PATH), - OPENPGP_INTERFACE) +try: + crypto = dbus.Interface(bus.get_object(BUS_NAME, CRYPTO_PATH), + CRYPTO_INTERFACE) + openpgp = dbus.Interface(bus.get_object(BUS_NAME, OPENPGP_PATH), + OPENPGP_INTERFACE) +except dbus.exceptions.DBusException, e: + get_name = getattr(e, 'get_dbus_name', None) + if get_name is not None: + name = get_name() + else: + name = getattr(e, '_dbus_error_name', None) + # DBus sometimes fails like this, just treat it as if seahorse is not + # available rather than crashing. + if name == "org.freedesktop.DBus.Error.ServiceUnknown": + raise ImportError + else: + raise FLAG_VALID = 0x0001 FLAG_CAN_ENCRYPT = 0x0002 # Begin bundle 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 GCIxawV1o5ZTAs3/F3JFOFCQnayT4A==
signature.asc
Description: Digital signature
-- bzr-gtk mailing list bzr-gtk@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.canonical.com/mailman/listinfo/bzr-gtk