summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2006-06-27 11:33:50 +0200
committerMichael Vogt <michael.vogt@ubuntu.com>2006-06-27 11:33:50 +0200
commitd75e3398c0fbdb336eac4cd8c68464eaf7d457ab (patch)
tree14ef189e1e021f201d5efe8d048e19e8d19453e2
parent8c48c50bd569d49e4b51cd240badc463594c2abe (diff)
parent538b5062029e9b54dbed823aea83acbf3bad1a29 (diff)
downloadpython-apt-d75e3398c0fbdb336eac4cd8c68464eaf7d457ab.tar.gz
* merged from glatzor
-rw-r--r--UpdateManager/UpdateManager.py89
-rw-r--r--data/UpdateManager.glade19
-rw-r--r--data/update-manager.desktop.in3
-rw-r--r--debian/control2
-rw-r--r--update-manager7
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)