summaryrefslogtreecommitdiff
path: root/UpdateManager/UpdateManager.py
diff options
context:
space:
mode:
authorMichael Vogt <egon@top>2005-11-29 18:23:42 +0100
committerMichael Vogt <egon@top>2005-11-29 18:23:42 +0100
commit06b7e698a1bc0d8e5ef947a075848a9c8516cb53 (patch)
treec02f37fc0b919b7420c1f6ab6ca5d36ac543df13 /UpdateManager/UpdateManager.py
parent33cf8b013e776c5c1249c2b91c8cf1e34ef739a4 (diff)
downloadpython-apt-06b7e698a1bc0d8e5ef947a075848a9c8516cb53.tar.gz
* use SimpleGladeApp in UpdateManager now
Diffstat (limited to 'UpdateManager/UpdateManager.py')
-rw-r--r--UpdateManager/UpdateManager.py228
1 files changed, 107 insertions, 121 deletions
diff --git a/UpdateManager/UpdateManager.py b/UpdateManager/UpdateManager.py
index 3c04db7f..ef0c24ec 100644
--- a/UpdateManager/UpdateManager.py
+++ b/UpdateManager/UpdateManager.py
@@ -162,7 +162,80 @@ class UpdateList:
dialog.destroy()
-class UpdateManager:
+class UpdateManager(SimpleGladeApp):
+
+ def __init__(self, datadir):
+
+ self.datadir = datadir
+ SimpleGladeApp.__init__(self, datadir+"glade/UpdateManager.glade",
+ None, domain="update-manager")
+ self.gnome_program = gnome.init("update-manager", "0.41")
+
+ self.packages = []
+ self.dl_size = 0
+ self.all_changes = {}
+ self.dist = self.get_dist()
+
+ # create text view
+ changes_buffer = self.textview_changes.get_buffer()
+ changes_buffer.create_tag("versiontag", weight=pango.WEIGHT_BOLD)
+
+ # expander
+ self.expander_details.connect("notify::expanded", self.activate_details)
+
+ # useful exit stuff
+ self.window_main.connect("delete_event", lambda w, ev: self.exit())
+ self.button_close.connect("clicked", lambda w: self.exit())
+
+
+ # the treeview (move into it's own code!)
+ self.store = gtk.ListStore(gobject.TYPE_BOOLEAN, str, str, str, str, str,
+ gobject.TYPE_PYOBJECT)
+ self.treeview_update.set_model(self.store)
+ self.treeview_update.set_headers_clickable(True);
+
+ tr = gtk.CellRendererText()
+ tr.set_property("xpad", 10)
+ tr.set_property("ypad", 10)
+ cr = gtk.CellRendererToggle()
+ cr.set_property("activatable", True)
+ cr.set_property("xpad", 10)
+ cr.connect("toggled", self.toggled)
+ self.cb = gtk.TreeViewColumn("Install", cr, active=LIST_INSTALL)
+ c0 = gtk.TreeViewColumn("Name", tr, markup=LIST_CONTENTS)
+ c0.set_resizable(True)
+ major,minor,patch = gtk.pygtk_version
+ if (major >= 2) and (minor >= 5):
+ self.cb.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
+ self.cb.set_fixed_width(30)
+ c0.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
+ c0.set_fixed_width(100)
+ #self.treeview_update.set_fixed_height_mode(True)
+
+ self.treeview_update.append_column(self.cb)
+ self.cb.set_visible(False);
+ self.treeview_update.append_column(c0)
+ self.treeview_update.set_search_column(LIST_NAME)
+
+
+ # proxy stuff
+ SYNAPTIC_CONF_FILE = "%s/.synaptic/synaptic.conf" % pwd.getpwuid(0)[5]
+ if os.path.exists(SYNAPTIC_CONF_FILE):
+ cnf = apt_pkg.newConfiguration()
+ apt_pkg.ReadConfigFile(cnf, SYNAPTIC_CONF_FILE)
+ use_proxy = cnf.FindB("Synaptic::useProxy", False)
+ if use_proxy:
+ proxy_host = cnf.Find("Synaptic::httpProxy")
+ proxy_port = str(cnf.FindI("Synaptic::httpProxyPort"))
+ if proxy_host and proxy_port:
+ proxy_support = urllib2.ProxyHandler({"http":"http://%s:%s" % (proxy_host, proxy_port)})
+ opener = urllib2.build_opener(proxy_support)
+ urllib2.install_opener(opener)
+
+ self.gconfclient = gconf.client_get_default()
+ # restore state
+ self.restore_state()
+
# FIXME: wrong location for this func
# don't touch the gui in this function, it needs to be thread-safe
@@ -255,7 +328,7 @@ class UpdateManager:
changes_buffer.insert(end_iter, line+"\n")
- def cursor_changed(self, widget):
+ def on_treeview_update_cursor_changed(self, widget):
tuple = widget.get_cursor()
path = tuple[0]
# check if we have a path at all
@@ -268,7 +341,7 @@ class UpdateManager:
long_desc = model.get_value(iter, 5)
if long_desc == None:
return
- desc_buffer = self.DescView.get_buffer()
+ desc_buffer = self.textview_descr.get_buffer()
desc_buffer.set_text(utf8(long_desc))
# now do the changelog
@@ -276,21 +349,21 @@ class UpdateManager:
if name == None:
return
- changes_buffer = self.ChangesView.get_buffer()
+ changes_buffer = self.textview_changes.get_buffer()
# check if we have the changes already
if self.all_changes.has_key(name):
changes = self.all_changes[name]
self.set_changes_buffer(changes_buffer, changes[0], name, changes[1])
else:
- if self.expander.get_expanded():
- self.treeview.set_sensitive(False)
- self.Glade.get_widget("hbox_footer").set_sensitive(False)
+ if self.expander_details.get_expanded():
+ self.treeview_update.set_sensitive(False)
+ self.hbox_footer.set_sensitive(False)
lock = thread.allocate_lock()
lock.acquire()
t=thread.start_new_thread(self.get_changelog,(name,lock))
changes_buffer.set_text(_("Downloading changes..."))
- button = self.Glade.get_widget("button_cancel_dl_changelog")
+ button = self.button_cancel_dl_changelog
button.show()
id = button.connect("clicked",
lambda w,lock: lock.release(), lock)
@@ -302,8 +375,8 @@ class UpdateManager:
# download finished (or canceld, or time-out)
button.hide()
button.disconnect(id);
- self.treeview.set_sensitive(True)
- self.Glade.get_widget("hbox_footer").set_sensitive(True)
+ self.treeview_update.set_sensitive(True)
+ self.hbox_footer.set_sensitive(True)
if self.all_changes.has_key(name):
changes = self.all_changes[name]
@@ -315,7 +388,7 @@ class UpdateManager:
self.packages.remove(name)
self.dl_size -= pkg.size
if len(self.packages) == 0:
- self.installbutton.set_sensitive(False)
+ self.button_install.set_sensitive(False)
self.update_count()
def add_update(self, pkg):
@@ -324,19 +397,19 @@ class UpdateManager:
self.packages.append(name)
self.dl_size += pkg.size
if len(self.packages) > 0:
- self.installbutton.set_sensitive(True)
+ self.button_install.set_sensitive(True)
self.update_count()
def update_count(self):
text = "%i (%s)" % (len(self.packages),
apt_pkg.SizeToStr(self.dl_size))
- self.NumUpdates.set_text(text)
+ self.label_num_updates.set_text(text)
def activate_details(self, expander, data):
- expanded = self.expander.get_expanded()
+ expanded = self.expander_details.get_expanded()
self.gconfclient.set_bool("/apps/update-manager/show_details",expanded)
if expanded:
- self.cursor_changed(self.treeview)
+ self.cursor_changed(self.treeview_update)
def run_synaptic(self, id, action, lock):
apt_pkg.PkgSystemUnLock()
@@ -410,7 +483,7 @@ class UpdateManager:
"package management application "
"at the same time. Please close "
"this other application first.")));
- dialog = gtk.MessageDialog(self.main_window, 0, gtk.MESSAGE_ERROR,
+ dialog = gtk.MessageDialog(self.window_main, 0, gtk.MESSAGE_ERROR,
gtk.BUTTONS_OK,"")
dialog.set_markup(msg)
dialog.run()
@@ -421,7 +494,7 @@ class UpdateManager:
os.environ["APT_LISTCHANGES_FRONTEND"]="none"
# set window to insensitive
- self.main_window.set_sensitive(False)
+ self.window_main.set_sensitive(False)
# create a progress window that will swallow the synaptic progress bars
win = gtk.Window()
if action==UPDATE:
@@ -429,7 +502,7 @@ class UpdateManager:
else:
win.set_title(_("Installing updates..."))
win.set_border_width(6)
- win.set_transient_for(self.main_window)
+ win.set_transient_for(self.window_main)
win.set_position(gtk.WIN_POS_CENTER_ON_PARENT)
win.resize(400,200)
win.set_resizable(False)
@@ -455,7 +528,7 @@ class UpdateManager:
while gtk.events_pending():
gtk.main_iteration()
self.fillstore()
- self.main_window.set_sensitive(True)
+ self.window_main.set_sensitive(True)
def toggled(self, renderer, path_string):
""" a toggle button in the listview was toggled """
@@ -476,18 +549,18 @@ class UpdateManager:
def save_state(self):
""" save the state (window-size for now) """
- (x,y) = self.main_window.get_size()
+ (x,y) = self.window_main.get_size()
self.gconfclient.set_pair("/apps/update-manager/window_size",
gconf.VALUE_INT, gconf.VALUE_INT, x, y)
def restore_state(self):
""" restore the state (window-size for now) """
expanded = self.gconfclient.get_bool("/apps/update-manager/show_details")
- self.expander.set_expanded(expanded)
+ self.expander_details.set_expanded(expanded)
(x,y) = self.gconfclient.get_pair("/apps/update-manager/window_size",
gconf.VALUE_INT, gconf.VALUE_INT)
if x > 0 and y > 0:
- self.main_window.resize(x,y)
+ self.window_main.resize(x,y)
def on_button_preferences_clicked(self, widget):
""" start gnome-software preferences """
@@ -496,7 +569,7 @@ class UpdateManager:
apt_pkg.PkgSystemUnLock()
args = ['/usr/bin/gnome-software-properties', '-n']
child = subprocess.Popen(args)
- self.main_window.set_sensitive(False)
+ self.window_main.set_sensitive(False)
res = None
while res == None:
res = child.poll()
@@ -511,93 +584,8 @@ class UpdateManager:
apt_pkg.PkgSystemLock()
if res > 0:
self.on_button_reload_clicked(None)
- self.main_window.set_sensitive(True)
-
- def __init__(self, datadir):
-
- self.gnome_program = gnome.init("update-manager", "0.40")
-
- self.packages = []
- self.dl_size = 0
- self.all_changes = {}
- self.dist = self.get_dist()
- self.Glade = gtk.glade.XML("%s/glade/update-manager.glade" % datadir)
-
- self.NumUpdates = self.Glade.get_widget("num_updates")
- self.main_window = self.Glade.get_widget("MainWindow")
- self.main_window.connect("delete_event", lambda w, ev: self.exit())
- self.DescView = self.Glade.get_widget("descview")
- self.ChangesView = self.Glade.get_widget("textview_changes")
- changes_buffer = self.ChangesView.get_buffer()
- changes_buffer.create_tag("versiontag", weight=pango.WEIGHT_BOLD)
- self.expander = self.Glade.get_widget("expander_details")
- self.expander.connect("notify::expanded", self.activate_details)
-
- self.installbutton = self.Glade.get_widget("button_install")
- self.Glade.signal_connect("on_button_install_clicked",
- self.on_button_install_clicked)
- self.Glade.signal_connect("on_button_close_clicked",
- lambda w: self.exit())
- self.Glade.signal_connect("on_button_reload_clicked",
- self.on_button_reload_clicked)
- self.Glade.signal_connect("on_button_preferences_clicked",
- self.on_button_preferences_clicked)
- self.Glade.signal_connect("on_button_help_clicked",
- self.on_button_help_clicked)
-
- self.treeview = self.Glade.get_widget("updatelist")
-
- self.store = gtk.ListStore(gobject.TYPE_BOOLEAN, str, str, str, str, str,
- gobject.TYPE_PYOBJECT)
- self.treeview.set_model(self.store)
- self.treeview.set_headers_clickable(True);
-
- self.treeview.connect('cursor-changed', self.cursor_changed)
-
- tr = gtk.CellRendererText()
- tr.set_property("xpad", 10)
- tr.set_property("ypad", 10)
- cr = gtk.CellRendererToggle()
- cr.set_property("activatable", True)
- cr.set_property("xpad", 10)
- cr.connect("toggled", self.toggled)
- self.cb = gtk.TreeViewColumn("Install", cr, active=LIST_INSTALL)
- c0 = gtk.TreeViewColumn("Name", tr, markup=LIST_CONTENTS)
- c0.set_resizable(True)
- major,minor,patch = gtk.pygtk_version
- if (major >= 2) and (minor >= 5):
- self.cb.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
- self.cb.set_fixed_width(30)
- c0.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
- c0.set_fixed_width(100)
- #self.treeview.set_fixed_height_mode(True)
-
- self.treeview.append_column(self.cb)
- self.cb.set_visible(False);
- self.treeview.append_column(c0)
- self.treeview.set_search_column(LIST_NAME)
- #self.treeview.append_column(c1)
- #self.treeview.append_column(c2)
- #self.treeview.set_headers_visible(False)
- # set expander to last position
-
- # proxy stuff
- SYNAPTIC_CONF_FILE = "%s/.synaptic/synaptic.conf" % pwd.getpwuid(0)[5]
- if os.path.exists(SYNAPTIC_CONF_FILE):
- cnf = apt_pkg.newConfiguration()
- apt_pkg.ReadConfigFile(cnf, SYNAPTIC_CONF_FILE)
- use_proxy = cnf.FindB("Synaptic::useProxy", False)
- if use_proxy:
- proxy_host = cnf.Find("Synaptic::httpProxy")
- proxy_port = str(cnf.FindI("Synaptic::httpProxyPort"))
- if proxy_host and proxy_port:
- proxy_support = urllib2.ProxyHandler({"http":"http://%s:%s" % (proxy_host, proxy_port)})
- opener = urllib2.build_opener(proxy_support)
- urllib2.install_opener(opener)
+ self.window_main.set_sensitive(True)
- self.gconfclient = gconf.client_get_default()
- # restore state
- self.restore_state()
def fillstore(self):
@@ -607,31 +595,29 @@ class UpdateManager:
self.all_changes = {}
self.store.clear()
self.initCache()
- self.list = UpdateList(self.main_window)
+ self.list = UpdateList(self.window_main)
# fill them again
self.list.update(self.cache, self.records, self.depcache)
if self.list.num_updates < 1:
# set the label and treeview and hide the checkbox column
self.cb.set_visible(False)
- self.expander.hide()
- label = self.Glade.get_widget("label_header")
+ self.expander_details.hide()
text = "<big><b>%s</b></big>\n\n%s" % (_("Your system is up-to-date!"),
_("There are no updates available."))
- label.set_markup(text)
+ self.label_header.set_markup(text)
self.store.append([False, _("Your system is up-to-date!"), None, None, None, None, None])
# make sure no install is possible
- self.installbutton.set_sensitive(False)
+ self.button_install.set_sensitive(False)
else:
self.cb.set_visible(True)
- self.expander.show()
- self.treeview.set_headers_visible(False)
- label = self.Glade.get_widget("label_header")
+ self.expander_details.show()
+ self.treeview_update.set_headers_visible(False)
text = _("<big><b>Available Updates</b></big>\n"
"\n"
"The following packages are found to be upgradable. You can upgrade them by "
"using the Install button.")
- label.set_markup(text)
+ self.label_header.set_markup(text)
i=0
for pkg in self.list.pkgs:
@@ -661,7 +647,7 @@ class UpdateManager:
def current_dist_not_supported(self, name):
#print name
msg = "<big><b>%s</b></big>\n\n%s" % (_("Your distribution is no longer supported"), _("Please upgrade to a newer version of Ubuntu Linux. The version you are running will no longer get security fixes or other critical updates. Please see http://www.ubuntulinux.org for upgrade information."))
- dialog = gtk.MessageDialog(self.main_window, 0, gtk.MESSAGE_WARNING,
+ dialog = gtk.MessageDialog(self.window_main, 0, gtk.MESSAGE_WARNING,
gtk.BUTTONS_OK,"")
dialog.set_markup(msg)
dialog.run()
@@ -676,7 +662,7 @@ class UpdateManager:
return
msg = "<big><b>%s</b></big>\n\n%s" % (_("There is a new release of Ubuntu available!"), _("A new release with the codename '%s' is available. Please see http://www.ubuntulinux.org/ for upgrade instructions.") % name)
- dialog = gtk.MessageDialog(self.main_window, 0, gtk.MESSAGE_INFO,
+ dialog = gtk.MessageDialog(self.window_main, 0, gtk.MESSAGE_INFO,
gtk.BUTTONS_CLOSE, "")
dialog.set_markup(msg)
check = gtk.CheckButton(_("Never show this message again"))
@@ -762,7 +748,7 @@ class UpdateManager:
try:
apt_pkg.PkgSystemLock()
except SystemError:
- d = gtk.MessageDialog(parent=self.main_window,
+ d = gtk.MessageDialog(parent=self.window_main,
flags=gtk.DIALOG_MODAL,
type=gtk.MESSAGE_ERROR,
buttons=gtk.BUTTONS_OK)