Viewing file: MainWindow.py (6.52 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#!/usr/bin/python
import signal, sys
try: import gtk except Exception, e: print "Unable to import gtk module. This may be due to running without " print "$DISPLAY set. Exception was:" print e sys.exit(0) import gtk.glade import os import method import package_gui import rpm import getopt import sys import locale
from rhpl.translate import _, N_, textdomain, py_bind_textdomain_codeset from rhpl.GenericError import * from ProgressDialog import SimpleProgressDialog, ProgressCanceled from InstallProgressDialog import * from UnresolvableDependenciesDialog import * from CompsCheckDialog import * from config import *
rpm.addMacro("_i18ndomains", "redhat-dist") py_bind_textdomain_codeset("redhat-dist", "UTF-8")
class MainWindow: def __init__ (self): glade_file = "MainWindow.glade" if not os.path.isfile(glade_file): glade_file = GLADEDIR + glade_file self.xml = gtk.glade.XML (glade_file, domain=PROGNAME)
i = gtk.Invisible() i.selection_owner_set("_NAUTILUS_DISABLE_MOUNT_WINDOW")
# set up the titlebar self.xml.get_widget ('main_eventbox').modify_bg (gtk.STATE_NORMAL, gtk.gdk.color_parse ("#707070")) self.xml.get_widget ('main_dialog').show_all() self.xml.get_widget ('main_dialog').connect ('response', self.response_cb) self.xml.get_widget ('main_logo_image').set_from_file (PIXMAPSDIR+'system-config-packages.png') self.to_install = False self.to_remove = False
self.comps = None self.im = None
def setData(self, comps, im): self.comps = comps self.im = im self.screen_changed ()
def set_contents (self, contents): self.xml.get_widget ('main_dialog_vbox').pack_start (contents, True, True)
def get_dialog (self): return self.xml.get_widget ('main_dialog')
def response_cb (self, dialog, response_id): if response_id == 0: try: progress_dialog = InstallProgressDialog (self.xml.get_widget ('main_dialog')) ts = self.im.setupTransaction(comps, progress_dialog)
progress_dialog.info_from_comps (ts, comps.hdrlist) progress_dialog.switch_mode (MODE_INFO) except ProgressCanceled: progress_dialog.destroy () self.comps.revertState() return except method.DepsCheckComps: # Immediately destroy the deps check. progress_dialog.destroy () self.comps.revertState() dialog = CompsCheckDialog (sys.exc_value.failed_list, sys.exc_value.unremovable_list, self.get_dialog ()) result = dialog.run () return except method.UnresolvableDependencies: progress_dialog.destroy () self.comps.revertState() dialog = UnresolvableDependenciesDialog (sys.exc_value.unresolvable_dependencies, self.get_dialog ()) dialog.run () return if not progress_dialog.continue_install_test (): self.comps.revertState() return try: progress_dialog.switch_mode (MODE_INSTALL) self.im.installPackages(ts, comps, progress_dialog) self.screen_changed () progress_dialog.switch_mode (MODE_POST_INSTALL) return except ProgressCanceled: self.comps.revertState() pass progress_dialog.destroy() return gtk.main_quit ()
def screen_changed (self, screen=None): self.to_install = False self.to_remove = False for package in self.comps.hdrlist.values(): if package.installState == TOINSTALL: self.to_install = True if package.installState == TOUPGRADE: self.to_install = True if package.installState == TOREMOVE: self.to_remove = True
if self.to_install or self.to_remove: self.xml.get_widget ('update_button').set_sensitive (True) else: self.xml.get_widget ('update_button').set_sensitive (False)
def help(): sys.stderr.write("Usage: system-config-packages %s\n" %(default_args_help(),))
if __name__ == '__main__': locale.setlocale(locale.LC_ALL,"") signal.signal (signal.SIGINT, signal.SIG_DFL) if os.geteuid() != 0 and 0: GenericError (TYPE_ERROR, _("Your account does not have permissions to run %s.") % "system-config-packages", _("Administrator level permissions are needed to run this program because it can install and remove system packages.")).display () sys.exit (1) try: (args, extra) = getopt.getopt(sys.argv[1:], default_short_args(), default_long_args()) except getopt.GetoptError, e: sys.stderr.write(str(e)) sys.stderr.write("\n") help() sys.exit(1) for (arg, val) in args: if (arg == '--help'): help() sys.exit(0)
textdomain(PROGNAME) gtk.glade.bindtextdomain(PROGNAME, "/usr/share/locale") main_window = MainWindow ()
progress = SimpleProgressDialog (_("<span weight=\"bold\" size=\"larger\">Checking system package status</span>\n\nThe package manager program is searching your system to determine which packages are currently installed."), _("Checking System Status"),_("Checking System Status"), main_window.get_dialog()) progress.get_dialog().show () progress.get_dialog().window.set_functions (gtk.gdk.FUNC_MOVE | gtk.gdk.FUNC_MINIMIZE) progress.prepare_block (0.1, _("Finding Tree")) im = get_method(args) progress.update (1.0)
progress.prepare_block (0.1, _("Reading RPM Headers")) hdlist = im.readHeaders() progress.update (1.0)
progress.prepare_block (0.3, _("Processing Headers")) hdlist.mergeRpmDb() progress.update (1.0)
progress.prepare_block (0.5, _("Reading system state")) comps = im.readCompsViaMethod(hdlist, progress.update) progress.update (1.0) progress.destroy ()
screen = package_gui.PackageSelectionWindow() screen.connect ('changed', main_window.screen_changed) w = screen.getScreen(comps, im) main_window.setData(comps, im) w.show_all() # main_window.xml.get_widget ('hbox2').hide() main_window.set_contents (w) gtk.main()
|