def __init__(self, parent): QWidget.__init__(self, parent) # self.link = None self.dia = None self.backend = Backend(self) self.package = "grub" if not self.openBus(): sys.exit(1) self.entries = [] self.options = {} self.systems = {} self.screens = {} layout = QGridLayout(self, 1, 1, 0, 0) self.stack = QWidgetStack(self) layout.addWidget(self.stack, 0, 0) self.widgetEntries = widgetEntryList(self) self.screens["Entries"] = self.stack.addWidget(self.widgetEntries) self.widgetEditEntry = widgetEditEntry(self) self.screens["EditEntry"] = self.stack.addWidget(self.widgetEditEntry) self.widgetUnused = widgetUnused(self) self.screens["Unused"] = self.stack.addWidget(self.widgetUnused) self.setup()
class widgetMain(QWidget): def __init__(self, parent): QWidget.__init__(self, parent) # self.link = None self.dia = None self.backend = Backend(self) self.package = "grub" if not self.openBus(): sys.exit(1) self.entries = [] self.options = {} self.systems = {} self.screens = {} layout = QGridLayout(self, 1, 1, 0, 0) self.stack = QWidgetStack(self) layout.addWidget(self.stack, 0, 0) self.widgetEntries = widgetEntryList(self) self.screens["Entries"] = self.stack.addWidget(self.widgetEntries) self.widgetEditEntry = widgetEditEntry(self) self.screens["EditEntry"] = self.stack.addWidget(self.widgetEditEntry) self.widgetUnused = widgetUnused(self) self.screens["Unused"] = self.stack.addWidget(self.widgetUnused) self.setup() def openBus(self): try: self.busSys = dbus.SystemBus() self.busSes = dbus.SessionBus() except dbus.DBusException: KMessageBox.error(self, i18n("Unable to connect to DBus."), i18n("DBus Error")) return False return True def setup(self): self.queryOptions() self.querySystems() self.queryEntries() def handleSignals(self, script, signal, args): # print 'COMAR:', script, signal, args if signal == "Changed": if args[0] == "entry": self.queryEntries() if self.widgetEditEntry.entry and not self.widgetEditEntry.saved: KMessageBox.information( self, i18n("Bootloader configuration changed by another application."), i18n("Warning") ) self.widgetEditEntry.slotExit() if not self.widgetUnused.listBusy: self.widgetUnused.listUnused() def showScreen(self, label): self.stack.raiseWidget(self.screens[label]) def optionsHandler(self, package, exception, args): options, = args for key, value in options.iteritems(): self.options[key] = value # Default entry self.widgetEntries.checkSaved.setChecked(self.options["default"] == "saved") # Timeout timeout = int(self.options["timeout"]) self.widgetEntries.setTimeoutSlot(False) self.widgetEntries.spinTimeout.setValue(timeout) self.widgetEntries.setTimeoutSlot(True) def queryOptions(self): self.backend.getOptions(self.package, async=self.optionsHandler) def systemsHandler(self, package, exception, args): systems, = args self.systems = {} for name, info in systems.iteritems(): label, fields_req, fields_opt = info fields = fields_req + fields_opt self.systems[name] = (label, fields) def querySystems(self): self.backend.listSystems(self.package, async=self.systemsHandler) def entriesHandler(self, package, exception, args): entries, = args self.widgetEntries.listEntries.clear() self.entries = [] for entry in entries: self.entries.append(entry) if entry.has_key("root"): root_or_uuid = entry["root"] elif entry.has_key("uuid"): root_or_uuid = entry["uuid"] else: root_or_uuid = "" self.widgetEntries.listEntries.add( self.widgetEditEntry, int(entry["index"]), unicode(entry["title"]), root_or_uuid, bool(entry.get("is_pardus_kernel", False)), entry, ) def queryEntries(self): self.widgetEntries.listEntries.setEnabled(True) self.backend.listEntries(self.package, async=self.entriesHandler)