summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Heinlein <sebi@sebi-mac>2006-06-26 18:15:15 +0200
committerSebastian Heinlein <sebi@sebi-mac>2006-06-26 18:15:15 +0200
commit538b5062029e9b54dbed823aea83acbf3bad1a29 (patch)
tree6ba8144231bef13edacbe66cfeff9efb6f382ab3
parentbf6a2f4241a5b262e542bf4538810d743481d850 (diff)
downloadpython-apt-538b5062029e9b54dbed823aea83acbf3bad1a29.tar.gz
* use dbus to bring up another running instance update-manager
* allow usermode - FIXME: metarelease
-rw-r--r--UpdateManager/UpdateManager.py75
-rw-r--r--data/UpdateManager.glade16
-rw-r--r--data/update-manager.desktop.in3
-rw-r--r--update-manager7
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)