diff options
| author | Michael Vogt <egon@top> | 2005-12-09 21:40:27 +0100 |
|---|---|---|
| committer | Michael Vogt <egon@top> | 2005-12-09 21:40:27 +0100 |
| commit | a4f607dd561e3767597d4a6e51c14381343f9c81 (patch) | |
| tree | 5673d53a3c7899d0f8a440208dcf979620e78845 /SoftwareProperties/SoftwareProperties.py | |
| parent | 13e6224748902fe35c9f7a5030b80387a376fe45 (diff) | |
| download | python-apt-a4f607dd561e3767597d4a6e51c14381343f9c81.tar.gz | |
* added intenal cdrom support
Diffstat (limited to 'SoftwareProperties/SoftwareProperties.py')
| -rw-r--r-- | SoftwareProperties/SoftwareProperties.py | 130 |
1 files changed, 109 insertions, 21 deletions
diff --git a/SoftwareProperties/SoftwareProperties.py b/SoftwareProperties/SoftwareProperties.py index 14c0873e..e1faec07 100644 --- a/SoftwareProperties/SoftwareProperties.py +++ b/SoftwareProperties/SoftwareProperties.py @@ -24,10 +24,12 @@ import sys import gnome import gconf +import apt import apt_pkg import gobject import shutil import gettext +import tempfile from gettext import gettext as _ import os @@ -58,20 +60,13 @@ class SoftwareProperties(SimpleGladeApp): self.datadir = datadir SimpleGladeApp.__init__(self, datadir+"glade/SoftwareProperties.glade", None, domain="update-manager") - apt_pkg.InitConfig() - self.modified = False self.gnome_program = gnome.init("Software Properties", "0.41") self.gconfclient = gconf.client_get_default() - self.window_main.hide() - # If externally called, reparent to external application. if options.toplevel != None: - # don't show the add-cdrom button for now - # FIXME: on the long run interface with apt-pkg/cdrom.h - b = self.button_add_cdrom.hide() toplevel = gtk.gdk.window_foreign_new(int(options.toplevel)) self.window_main.window.set_transient_for(toplevel) @@ -176,47 +171,44 @@ class SoftwareProperties(SimpleGladeApp): f.close() def save_sourceslist(self): - location = "/etc/apt/sources.list" - shutil.copy(location, location + ".save") - self.sourceslist.save(location) + #location = "/etc/apt/sources.list" + #shutil.copy(location, location + ".save") + self.sourceslist.backup(".save") + self.sourceslist.save() def on_add_clicked(self, widget): dialog = dialog_add.dialog_add(self.window_main, self.sourceslist, self.datadir) if dialog.run() == gtk.RESPONSE_OK: self.reload_sourceslist() - - self.modified = True + self.modified = True def on_edit_clicked(self, widget): sel = self.treeview1.get_selection() (model, iter) = sel.get_selected() + if not iter: + return source_entry = model.get_value(iter, LIST_ENTRY_OBJ) - dialog = dialog_edit.dialog_edit(self.window_main, self.sourceslist, source_entry, self.datadir) - if dialog.run() == gtk.RESPONSE_OK: self.reload_sourceslist() - - self.modified = True + self.modified = True def on_remove_clicked(self, widget): sel = self.treeview1.get_selection() (model, iter) = sel.get_selected() - if iter: source = model.get_value(iter, LIST_ENTRY_OBJ) self.sourceslist.remove(source) self.reload_sourceslist() - - self.modified = True + self.modified = True def add_key_clicked(self, widget): - _ = gettext.gettext chooser = gtk.FileChooserDialog(title=_("Choose a key-file"), parent=self.window_main, - buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_REJECT, + buttons=(gtk.STOCK_CANCEL, + gtk.RESPONSE_REJECT, gtk.STOCK_OK,gtk.RESPONSE_ACCEPT)) res = chooser.run() chooser.hide() @@ -257,3 +249,99 @@ class SoftwareProperties(SimpleGladeApp): gnome.help_display_desktop(self.gnome_program, "update-manager", "update-manager", "setting-preferences") + + def on_button_add_cdrom_clicked(self, widget): + #print "on_button_add_cdrom_clicked()" + + # testing + #apt_pkg.Config.Set("APT::CDROM::Rename","true") + + saved_entry = apt_pkg.Config.Find("Dir::Etc::sourcelist") + tmp = tempfile.NamedTemporaryFile() + apt_pkg.Config.Set("Dir::Etc::sourcelist",tmp.name) + progress = GtkCdromProgress(self.datadir,self.window_main) + cdrom = apt_pkg.GetCdrom() + # if nothing was found just return + try: + res = cdrom.Add(progress) + except SystemError, msg: + #print "aiiiieeee, exception from cdrom.Add() [%s]" % msg + progress.close() + dialog = gtk.MessageDialog(parent=self.window_main, + flags=gtk.DIALOG_MODAL, + type=gtk.MESSAGE_ERROR, + buttons=gtk.BUTTONS_OK, + message_format=None) + dialog.set_markup(_("<big><b>Error scaning the CD</b></big>\n\n%s"%msg)) + res = dialog.run() + dialog.destroy() + return + apt_pkg.Config.Set("Dir::Etc::sourcelist",saved_entry) + if res == False: + progress.close() + return + # read tmp file with source name (read only last line) + line = "" + for x in open(tmp.name): + line = x + if line != "": + full_path = "%s%s" % (apt_pkg.Config.FindDir("Dir::Etc"),saved_entry) + self.sourceslist.list.append(aptsources.SourceEntry(line,full_path)) + self.reload_sourceslist() + self.modified = True + + +# FIXME: move this into a different file +class GtkCdromProgress(apt.progress.CdromProgress, SimpleGladeApp): + def __init__(self,datadir, parent): + SimpleGladeApp.__init__(self, + datadir+"glade/SoftwarePropertiesDialogs.glade", + "dialog_cdrom_progress", + domain="update-manager") + self.dialog_cdrom_progress.show() + self.dialog_cdrom_progress.set_transient_for(parent) + self.parent = parent + self.button_cdrom_close.set_sensitive(False) + def close(self): + self.dialog_cdrom_progress.hide() + def on_button_cdrom_close_clicked(self, widget): + self.close() + def update(self, text, step): + """ update is called regularly so that the gui can be redrawn """ + if step > 0: + self.progressbar_cdrom.set_fraction(step/float(self.totalSteps)) + if step == self.totalSteps: + self.button_cdrom_close.set_sensitive(True) + if text != "": + self.label_cdrom.set_text(text) + while gtk.events_pending(): + gtk.main_iteration() + def askCdromName(self): + dialog = gtk.MessageDialog(parent=self.dialog_cdrom_progress, + flags=gtk.DIALOG_MODAL, + type=gtk.MESSAGE_QUESTION, + buttons=gtk.BUTTONS_OK_CANCEL, + message_format=None) + dialog.set_markup(_("Please enter a name for the disc")) + entry = gtk.Entry() + entry.show() + dialog.vbox.pack_start(entry) + res = dialog.run() + dialog.destroy() + if res == gtk.RESPONSE_OK: + name = entry.get_text() + return (True,name) + return (False,"") + def changeCdrom(self): + dialog = gtk.MessageDialog(parent=self.dialog_cdrom_progress, + flags=gtk.DIALOG_MODAL, + type=gtk.MESSAGE_QUESTION, + buttons=gtk.BUTTONS_OK_CANCEL, + message_format=None) + dialog.set_markup(_("Please insert a disc in the drive:")) + res = dialog.run() + dialog.destroy() + if res == gtk.RESPONSE_OK: + return True + return False + |
