diff options
| author | Michael Vogt <michael.vogt@ubuntu.com> | 2006-06-27 11:33:50 +0200 |
|---|---|---|
| committer | Michael Vogt <michael.vogt@ubuntu.com> | 2006-06-27 11:33:50 +0200 |
| commit | d75e3398c0fbdb336eac4cd8c68464eaf7d457ab (patch) | |
| tree | 14ef189e1e021f201d5efe8d048e19e8d19453e2 | |
| parent | 8c48c50bd569d49e4b51cd240badc463594c2abe (diff) | |
| parent | 538b5062029e9b54dbed823aea83acbf3bad1a29 (diff) | |
| download | python-apt-d75e3398c0fbdb336eac4cd8c68464eaf7d457ab.tar.gz | |
* merged from glatzor
| -rw-r--r-- | UpdateManager/UpdateManager.py | 89 | ||||
| -rw-r--r-- | data/UpdateManager.glade | 19 | ||||
| -rw-r--r-- | data/update-manager.desktop.in | 3 | ||||
| -rw-r--r-- | debian/control | 2 | ||||
| -rw-r--r-- | update-manager | 7 |
5 files changed, 84 insertions, 36 deletions
diff --git a/UpdateManager/UpdateManager.py b/UpdateManager/UpdateManager.py index 2d52c294..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", @@ -485,10 +522,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) @@ -499,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.")) @@ -583,6 +622,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: @@ -669,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 94af4ac5..1221e78c 100644 --- a/data/UpdateManager.glade +++ b/data/UpdateManager.glade @@ -27,7 +27,7 @@ <property name="spacing">6</property> <child> - <widget class="GtkVBox" id="vbox10"> + <widget class="GtkVBox" id="vbox_updates"> <property name="border_width">6</property> <property name="visible">True</property> <property name="homogeneous">False</property> @@ -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> @@ -476,7 +479,6 @@ <child> <widget class="GtkNotebook" id="notebook_details"> - <property name="height_request">200</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="show_tabs">True</property> @@ -518,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> @@ -670,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> @@ -696,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> @@ -714,7 +725,7 @@ <child> <widget class="GtkLabel" id="label12"> <property name="visible">True</property> - <property name="label" translatable="yes">Show details</property> + <property name="label" translatable="yes">Changes and description of the update</property> <property name="use_underline">False</property> <property name="use_markup">True</property> <property name="justify">GTK_JUSTIFY_LEFT</property> @@ -1348,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/debian/control b/debian/control index 7e563c77..a4999f1a 100644 --- a/debian/control +++ b/debian/control @@ -7,7 +7,7 @@ Standards-Version: 3.6.2 Package: update-manager Architecture: all -Depends: ${python:Depends}, ${misc:Depends}, python, python-glade2, python-apt (>= 0.6.16.2), synaptic (>= 0.57.8), lsb-release, python-gnupginterface, unattended-upgrades +Depends: ${python:Depends}, ${misc:Depends}, python, python-glade2, python-apt (>= 0.6.16.2), synaptic (>= 0.57.8), lsb-release, python-gnupginterface, unattended-upgrades, gksu Recommends: python-gnome2 Description: GNOME application that manages apt updates This is the GNOME apt update manager. It checks for updates and lets the user 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) |
