diff options
| author | Sebastian Heinlein <sebi@sebi-mac> | 2006-06-26 18:15:15 +0200 |
|---|---|---|
| committer | Sebastian Heinlein <sebi@sebi-mac> | 2006-06-26 18:15:15 +0200 |
| commit | 538b5062029e9b54dbed823aea83acbf3bad1a29 (patch) | |
| tree | 6ba8144231bef13edacbe66cfeff9efb6f382ab3 | |
| parent | bf6a2f4241a5b262e542bf4538810d743481d850 (diff) | |
| download | python-apt-538b5062029e9b54dbed823aea83acbf3bad1a29.tar.gz | |
* use dbus to bring up another running instance update-manager
* allow usermode - FIXME: metarelease
| -rw-r--r-- | UpdateManager/UpdateManager.py | 75 | ||||
| -rw-r--r-- | data/UpdateManager.glade | 16 | ||||
| -rw-r--r-- | data/update-manager.desktop.in | 3 | ||||
| -rw-r--r-- | update-manager | 7 |
4 files changed, 72 insertions, 29 deletions
diff --git a/UpdateManager/UpdateManager.py b/UpdateManager/UpdateManager.py index 6440b72f..54d85801 100644 --- a/UpdateManager/UpdateManager.py +++ b/UpdateManager/UpdateManager.py @@ -52,6 +52,9 @@ import thread import xml.sax.saxutils from Common.HelpViewer import HelpViewer +import dbus +import dbus.service +import dbus.glib from gettext import gettext as _ @@ -239,10 +242,23 @@ class UpdateList: dialog.run() dialog.destroy() - + +class UpdateManagerDbusControler(dbus.service.Object): + """ this is a helper to provide the UpdateManagerIFace """ + def __init__(self, parent, bus_name, + object_path='/org/freedesktop/UpdateManagerObject'): + dbus.service.Object.__init__(self, bus_name, object_path) + self.parent = parent + + @dbus.service.method('org.freedesktop.UpdateManagerIFace') + def bringToFront(self): + self.parent.window_main.present() + return True + class UpdateManager(SimpleGladeApp): def __init__(self, datadir): + self.setupDbus() gtk.window_set_default_icon_name("update-manager") self.datadir = datadir @@ -329,7 +345,28 @@ class UpdateManager(SimpleGladeApp): # restore state self.restore_state() self.window_main.show() - + + def setupDbus(self): + """ this sets up a dbus listener if none is installed alread """ + # check if there is another g-a-i already and if not setup one + # listening on dbus + try: + bus = dbus.SessionBus() + except: + print "warning: could not initiate dbus" + return + proxy_obj = bus.get_object('org.freedesktop.UpdateManager', + '/org/freedesktop/UpdateManagerObject') + iface = dbus.Interface(proxy_obj, 'org.freedesktop.UpdateManagerIFace') + try: + iface.bringToFront() + #print "send bringToFront" + sys.exit(0) + except dbus.DBusException, e: + print "no listening object (%s) "% e + bus_name = dbus.service.BusName('org.freedesktop.UpdateManager',bus) + self.dbusControler = UpdateManagerDbusControler(self, bus_name) + def on_checkbutton_reminder_toggled(self, checkbutton): self.gconfclient.set_bool("/apps/update-manager/remind_reload", @@ -500,8 +537,9 @@ class UpdateManager(SimpleGladeApp): except SystemError: pass # cmd = ["gksu","--", - cmd = ["/usr/sbin/synaptic", "--hide-main-window", "--non-interactive", - "--parent-window-id", "%s" % (id) ] + cmd = ["gksu", "--desktop", "/usr/share/applications/synaptic.desktop", + "--", "/usr/sbin/synaptic", "--hide-main-window", + "--non-interactive", "--parent-window-id", "%s" % (id) ] if action == INSTALL: cmd.append("--progress-str") cmd.append("%s" % _("Please wait, this can take some time.")) @@ -675,20 +713,21 @@ class UpdateManager(SimpleGladeApp): try: apt_pkg.PkgSystemLock() except SystemError, e: - d = gtk.MessageDialog(parent=self.window_main, - flags=gtk.DIALOG_MODAL, - type=gtk.MESSAGE_ERROR, - buttons=gtk.BUTTONS_CLOSE) - d.set_markup("<big><b>%s</b></big>\n\n%s" % ( - _("Only one software management tool is allowed to " - "run at the same time"), - _("Please close the other application e.g. 'aptitude' " - "or 'Synaptic' first."))) - print "error from apt: '%s'" % e - d.set_title("") - res = d.run() - d.destroy() - sys.exit() + pass + #d = gtk.MessageDialog(parent=self.window_main, + # flags=gtk.DIALOG_MODAL, + # type=gtk.MESSAGE_ERROR, + # buttons=gtk.BUTTONS_CLOSE) + #d.set_markup("<big><b>%s</b></big>\n\n%s" % ( + # _("Only one software management tool is allowed to " + # "run at the same time"), + # _("Please close the other application e.g. 'aptitude' " + # "or 'Synaptic' first."))) + #print "error from apt: '%s'" % e + #d.set_title("") + #res = d.run() + #d.destroy() + #sys.exit() try: progress = GtkProgress.GtkOpProgress(self.dialog_cacheprogress, diff --git a/data/UpdateManager.glade b/data/UpdateManager.glade index e087872d..1221e78c 100644 --- a/data/UpdateManager.glade +++ b/data/UpdateManager.glade @@ -229,6 +229,9 @@ <property name="fixed_height_mode">False</property> <property name="hover_selection">False</property> <property name="hover_expand">False</property> + <accessibility> + <atkproperty name="AtkObject::accessible_name" translatable="yes">updates</atkproperty> + </accessibility> <signal name="cursor_changed" handler="on_treeview_update_cursor_changed" last_modification_time="Tue, 29 Nov 2005 17:19:48 GMT"/> </widget> </child> @@ -464,7 +467,7 @@ <widget class="GtkExpander" id="expander_details"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="expanded">True</property> + <property name="expanded">False</property> <property name="spacing">6</property> <signal name="activate" handler="on_expander_details_activate" last_modification_time="Mon, 31 Jan 2005 17:55:19 GMT"/> @@ -517,6 +520,9 @@ <property name="right_margin">6</property> <property name="indent">0</property> <property name="text" translatable="yes"></property> + <accessibility> + <atkproperty name="AtkObject::accessible_name" translatable="yes">changes</atkproperty> + </accessibility> </widget> </child> </widget> @@ -669,6 +675,9 @@ <property name="right_margin">6</property> <property name="indent">0</property> <property name="text" translatable="yes"></property> + <accessibility> + <atkproperty name="AtkObject::accessible_name" translatable="yes">Description</atkproperty> + </accessibility> </widget> </child> </widget> @@ -695,6 +704,9 @@ <property name="width_chars">-1</property> <property name="single_line_mode">False</property> <property name="angle">0</property> + <accessibility> + <atkproperty name="AtkObject::accessible_name" translatable="yes">Description</atkproperty> + </accessibility> </widget> <packing> <property name="type">tab</property> @@ -1347,7 +1359,7 @@ Your system does not check for updates automatically. You can configure this beh <property name="skip_pager_hint">True</property> <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> - <property name="focus_on_map">False</property> + <property name="focus_on_map">True</property> <property name="urgency_hint">False</property> <child> diff --git a/data/update-manager.desktop.in b/data/update-manager.desktop.in index 84e1e608..6d8504f9 100644 --- a/data/update-manager.desktop.in +++ b/data/update-manager.desktop.in @@ -2,11 +2,10 @@ _Name=Update Manager _GenericName=Update Manager _Comment=Show and install available updates -Exec=gksu /usr/bin/update-manager +Exec=/usr/bin/update-manager Icon=update-manager Terminal=false Type=Application Encoding=UTF-8 Categories=Application;System;Settings; -X-KDE-SubstituteUID=true X-Ubuntu-Gettext-Domain=update-manager diff --git a/update-manager b/update-manager index 5c69addc..5982cab9 100644 --- a/update-manager +++ b/update-manager @@ -58,13 +58,6 @@ if __name__ == "__main__": (options, args) = parser.parse_args() - if os.geteuid() != 0: - dialog = gtk.MessageDialog(None, 0, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, - _("You need to be root to run this program")) - dialog.run() - dialog.destroy() - sys.exit(1) - data_dir="/usr/share/update-manager/" #data_dir="/tmp/xxx/share/update-manager/" app = UpdateManager(data_dir) |
