From 816e0be20cc88e077388e1c0a51030a4f1ca0fae Mon Sep 17 00:00:00 2001 From: Sebastian Heinlein Date: Sun, 25 Jun 2006 15:40:10 +0200 Subject: * expand the details if shown * do not modify the label of the expander during runtime - a11n issue --- UpdateManager/UpdateManager.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'UpdateManager/UpdateManager.py') diff --git a/UpdateManager/UpdateManager.py b/UpdateManager/UpdateManager.py index 2d52c294..73075918 100644 --- a/UpdateManager/UpdateManager.py +++ b/UpdateManager/UpdateManager.py @@ -485,10 +485,11 @@ class UpdateManager(SimpleGladeApp): def activate_details(self, expander, data): expanded = self.expander_details.get_expanded() - if expanded: - expander.set_label(_("Hide details")) - else: - expander.set_label(_("Show details")) + self.vbox_updates.set_child_packing(self.expander_details, + expanded, + True, + 0, + True) self.gconfclient.set_bool("/apps/update-manager/show_details",expanded) if expanded: self.on_treeview_update_cursor_changed(self.treeview_update) -- cgit v1.2.3 From bf6a2f4241a5b262e542bf4538810d743481d850 Mon Sep 17 00:00:00 2001 From: Sebastian Heinlein Date: Mon, 26 Jun 2006 11:15:04 +0200 Subject: * set the correct expand property of the notebook on restore --- UpdateManager/UpdateManager.py | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'UpdateManager/UpdateManager.py') diff --git a/UpdateManager/UpdateManager.py b/UpdateManager/UpdateManager.py index 73075918..6440b72f 100644 --- a/UpdateManager/UpdateManager.py +++ b/UpdateManager/UpdateManager.py @@ -584,6 +584,11 @@ class UpdateManager(SimpleGladeApp): """ restore the state (window-size for now) """ expanded = self.gconfclient.get_bool("/apps/update-manager/show_details") self.expander_details.set_expanded(expanded) + self.vbox_updates.set_child_packing(self.expander_details, + expanded, + True, + 0, + True) (x,y) = self.gconfclient.get_pair("/apps/update-manager/window_size", gconf.VALUE_INT, gconf.VALUE_INT) if x > 0 and y > 0: -- cgit v1.2.3 From 538b5062029e9b54dbed823aea83acbf3bad1a29 Mon Sep 17 00:00:00 2001 From: Sebastian Heinlein Date: Mon, 26 Jun 2006 18:15:15 +0200 Subject: * use dbus to bring up another running instance update-manager * allow usermode - FIXME: metarelease --- UpdateManager/UpdateManager.py | 75 ++++++++++++++++++++++++++++++++---------- data/UpdateManager.glade | 16 +++++++-- data/update-manager.desktop.in | 3 +- update-manager | 7 ---- 4 files changed, 72 insertions(+), 29 deletions(-) (limited to 'UpdateManager/UpdateManager.py') 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("%s\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("%s\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 @@ False False False + + updates + @@ -464,7 +467,7 @@ True True - True + False 6 @@ -517,6 +520,9 @@ 6 0 + + changes + @@ -669,6 +675,9 @@ 6 0 + + Description + @@ -695,6 +704,9 @@ -1 False 0 + + Description + tab @@ -1347,7 +1359,7 @@ Your system does not check for updates automatically. You can configure this beh True GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST - False + True False 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) -- cgit v1.2.3