Пример #1
0
    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()
Пример #2
0
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)