コード例 #1
0
ファイル: memdetail.py プロジェクト: SDoradus/py3-CHIRP
    def _init(self, data):
        self._choice = miscwidgets.make_choice([str(x) for x in data],
                                               False,
                                               str(self._mem_value()))
        self._widget = self._choice.widget

        self._widget.connect("changed", self.changed)
コード例 #2
0
    def __make_vendor(self, modelbox):
        vendors = collections.defaultdict(list)
        for name, rclass in sorted(directory.DRV_TO_RADIO.items()):
            if not issubclass(rclass, chirp_common.CloneModeRadio) and \
                    not issubclass(rclass, chirp_common.LiveRadio):
                continue

            vendors[rclass.VENDOR].append(rclass)
            for alias in rclass.ALIASES:
                vendors[alias.VENDOR].append(alias)

        self.__vendors = vendors

        conf = config.get("state")
        if not conf.get("last_vendor"):
            conf.set("last_vendor", sorted(vendors.keys())[0])

        last_vendor = conf.get("last_vendor")
        if last_vendor not in list(vendors.keys()):
            last_vendor = list(vendors.keys())[0]

        v = miscwidgets.make_choice(sorted(vendors.keys()), False, last_vendor)

        def _changed(box, vendors, boxes):
            (vendorbox, modelbox) = boxes
            models = vendors[vendorbox.value]

            added_models = []

            model_store = modelbox.get_model()
            model_store.clear()
            for rclass in sorted(models, key=lambda c: c.__name__):
                if rclass.MODEL not in added_models:
                    model_store.append([rclass.MODEL])
                    added_models.append(rclass.MODEL)

            if vendorbox.value in detect.DETECT_FUNCTIONS:
                model_store.append([_("Detect")])
                added_models.insert(0, _("Detect"))

            model_names = [x.MODEL for x in models]
            if conf.get("last_model") in model_names:
                modelbox.value = conf.get("last_model")
            elif added_models:
                modelbox.value = added_models[0]

        v.widget.connect("changed", _changed, vendors, (v, modelbox))
        _changed(v, vendors, (v, modelbox))

        return v
コード例 #3
0
ファイル: clone.py プロジェクト: gitter-badger/chirp_fork
    def __make_vendor(self, model):
        vendors = {}
        for rclass in sorted(directory.DRV_TO_RADIO.values()):
            if not issubclass(rclass, chirp_common.CloneModeRadio) and \
                    not issubclass(rclass, chirp_common.LiveRadio):
                continue

            if rclass.VENDOR not in vendors:
                vendors[rclass.VENDOR] = []

            vendors[rclass.VENDOR].append(rclass)

        self.__vendors = vendors

        conf = config.get("state")
        if not conf.get("last_vendor"):
            conf.set("last_vendor", sorted(vendors.keys())[0])

        last_vendor = conf.get("last_vendor")
        if last_vendor not in vendors.keys():
            last_vendor = vendors.keys()[0]

        v = miscwidgets.make_choice(sorted(vendors.keys()), False, last_vendor)

        def _changed(box, vendors, model):
            models = vendors[box.get_active_text()]

            added_models = []

            model.get_model().clear()
            for rclass in sorted(models, key=lambda c: c.__name__):
                if rclass.MODEL not in added_models:
                    model.append_text(rclass.MODEL)
                    added_models.append(rclass.MODEL)

            if box.get_active_text() in detect.DETECT_FUNCTIONS:
                model.insert_text(0, _("Detect"))
                added_models.insert(0, _("Detect"))

            model_names = [x.MODEL for x in models]
            if conf.get("last_model") in model_names:
                model.set_active(added_models.index(conf.get("last_model")))
            else:
                model.set_active(0)

        v.connect("changed", _changed, vendors, model)
        _changed(v, vendors, model)

        return v
コード例 #4
0
ファイル: clone.py プロジェクト: jsirianni/chirp
    def __make_port(self, port):
        conf = config.get("state")

        ports = platform.get_platform().list_serial_ports()
        if not port:
            if conf.get("last_port"):
                port = conf.get("last_port")
            elif ports:
                port = ports[0]
            else:
                port = ""
            if port not in ports:
                ports.insert(0, port)

        return miscwidgets.make_choice(ports, True, port)
コード例 #5
0
ファイル: clone.py プロジェクト: mach327/chirp_fork
    def __make_port(self, port):
        conf = config.get("state")

        ports = platform.get_platform().list_serial_ports()
        if not port:
            if conf.get("last_port"):
                port = conf.get("last_port")
            elif ports:
                port = ports[0]
            else:
                port = ""
            if port not in ports:
                ports.insert(0, port)

        return miscwidgets.make_choice(ports, True, port)
コード例 #6
0
ファイル: clone.py プロジェクト: jsirianni/chirp
    def __make_vendor(self, model):
        vendors = collections.defaultdict(list)
        for rclass in sorted(directory.DRV_TO_RADIO.values()):
            if not issubclass(rclass, chirp_common.CloneModeRadio) and \
                    not issubclass(rclass, chirp_common.LiveRadio):
                continue

            vendors[rclass.VENDOR].append(rclass)
            for alias in rclass.ALIASES:
                vendors[alias.VENDOR].append(alias)

        self.__vendors = vendors

        conf = config.get("state")
        if not conf.get("last_vendor"):
            conf.set("last_vendor", sorted(vendors.keys())[0])

        last_vendor = conf.get("last_vendor")
        if last_vendor not in vendors.keys():
            last_vendor = vendors.keys()[0]

        v = miscwidgets.make_choice(sorted(vendors.keys()), False, last_vendor)

        def _changed(box, vendors, model):
            models = vendors[box.get_active_text()]

            added_models = []

            model.get_model().clear()
            for rclass in sorted(models, key=lambda c: c.__name__):
                if rclass.MODEL not in added_models:
                    model.append_text(rclass.MODEL)
                    added_models.append(rclass.MODEL)

            if box.get_active_text() in detect.DETECT_FUNCTIONS:
                model.insert_text(0, _("Detect"))
                added_models.insert(0, _("Detect"))

            model_names = [x.MODEL for x in models]
            if conf.get("last_model") in model_names:
                model.set_active(added_models.index(conf.get("last_model")))
            else:
                model.set_active(0)

        v.connect("changed", _changed, vendors, model)
        _changed(v, vendors, model)

        return v
コード例 #7
0
    def __init__(self, choices, **args):
        buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OK,
                   gtk.RESPONSE_OK)
        gtk.Dialog.__init__(self, buttons=buttons, **args)

        self.label = gtk.Label()
        self.label.set_size_request(300, 100)
        # pylint: disable-msg=E1101
        self.vbox.pack_start(self.label, 1, 1, 0)
        self.label.show()

        try:
            default = choices[0]
        except IndexError:
            default = None

        self.choice = make_choice(sorted(choices), self.editable, default)
        # pylint: disable-msg=E1101
        self.vbox.pack_start(self.choice, 1, 1, 0)
        self.choice.show()

        self.set_default_response(gtk.RESPONSE_OK)
コード例 #8
0
ファイル: clone.py プロジェクト: jsirianni/chirp
 def __make_model(self):
     return miscwidgets.make_choice([], False)
コード例 #9
0
        self.__fields[label] = widget

    def get_field(self, label):
        return self.__fields.get(label, None)


class OverwriteDialog(gtk.MessageDialog):
    def __init__(self, filename):
        gtk.Dialog.__init__(self,
                            buttons=(_("Overwrite"), gtk.RESPONSE_OK,
                                     gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))

        self.set_property("text", _("File Exists"))

        text = \
            _("The file {name} already exists. "
              "Do you want to overwrite it?").format(name=filename)

        self.format_secondary_text(text)


if __name__ == "__main__":
    # pylint: disable-msg=C0103
    d = FieldDialog(buttons=(gtk.STOCK_OK, gtk.RESPONSE_OK))
    d.add_field("Foo", gtk.Entry())
    d.add_field("Bar", make_choice(["A", "B"]))
    d.run()
    gtk.main()
    d.destroy()
コード例 #10
0
ファイル: clone.py プロジェクト: mach327/chirp_fork
 def __make_model(self):
     return miscwidgets.make_choice([], False)
コード例 #11
0
ファイル: settingsedit.py プロジェクト: v0l/chirp
    def _build_ui_tab(self, group):

        # The scrolled window
        sw = gtk.ScrolledWindow()
        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        sw.show()

        # Notebook tab
        tab = self._notebook.append_page(sw, gtk.Label(_(group.get_name())))

        # Settings table
        table = gtk.Table(len(group), 2, False)
        table.set_resize_mode(gtk.RESIZE_IMMEDIATE)
        table.show()
        sw.add_with_viewport(table)

        row = 0
        for element in group:
            if not isinstance(element, settings.RadioSetting):
                continue

            # Label
            label = gtk.Label(element.get_shortname() + ":")
            label.set_alignment(0.0, 0.5)
            label.show()

            table.attach(label,
                         0,
                         1,
                         row,
                         row + 1,
                         xoptions=gtk.FILL,
                         yoptions=0,
                         xpadding=6,
                         ypadding=3)

            if isinstance(element.value, list) and \
                    isinstance(element.value[0],
                               settings.RadioSettingValueInteger):
                box = gtk.HBox(True)
            else:
                box = gtk.VBox(True)

            # Widget container
            box.show()
            table.attach(box,
                         1,
                         2,
                         row,
                         row + 1,
                         xoptions=gtk.FILL,
                         yoptions=0,
                         xpadding=12,
                         ypadding=3)

            for i in element.keys():
                value = element[i]
                if isinstance(value, settings.RadioSettingValueInteger):
                    widget = gtk.SpinButton()
                    adj = widget.get_adjustment()
                    adj.configure(value.get_value(), value.get_min(),
                                  value.get_max(), value.get_step(), 1, 0)
                    widget.connect("value-changed", self._save_setting, value)
                elif isinstance(value, settings.RadioSettingValueFloat):
                    widget = gtk.Entry()
                    widget.set_width_chars(16)
                    widget.set_text(value.format())
                    widget.connect("focus-out-event",
                                   lambda w, e, v: self._save_setting(w, v),
                                   value)
                elif isinstance(value, settings.RadioSettingValueBoolean):
                    widget = gtk.CheckButton(_("Enabled"))
                    widget.set_active(value.get_value())
                    widget.connect("toggled", self._save_setting, value)
                elif isinstance(value, settings.RadioSettingValueList):
                    widget = miscwidgets.make_choice([], editable=False)
                    model = widget.get_model()
                    model.clear()
                    for option in value.get_options():
                        widget.append_text(option)
                    current = value.get_value()
                    index = value.get_options().index(current)
                    widget.set_active(index)
                    widget.connect("changed", self._save_setting, value)
                elif isinstance(value, settings.RadioSettingValueString):
                    widget = gtk.Entry()
                    widget.set_width_chars(32)
                    widget.set_text(str(value).rstrip())
                    widget.connect("focus-out-event",
                                   lambda w, e, v: self._save_setting(w, v),
                                   value)
                else:
                    LOG.error("Unsupported widget type: %s" % value.__class__)

                widget.set_sensitive(value.get_mutable())
                label.set_mnemonic_widget(widget)
                widget.get_accessible().set_name(element.get_shortname())
                widget.show()

                box.pack_start(widget, 1, 1, 1)

            row += 1

        return tab
コード例 #12
0
ファイル: settingsedit.py プロジェクト: tylert/chirp.hg
    def _build_ui_tab(self, group):

        # The scrolled window
        sw = gtk.ScrolledWindow()
        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        sw.show()

        # Notebook tab
        tab = self._notebook.append_page(sw, gtk.Label(_(group.get_name())))

        # Settings table
        table = gtk.Table(len(group), 2, False)
        table.set_resize_mode(gtk.RESIZE_IMMEDIATE)
        table.show()
        sw.add_with_viewport(table)

        row = 0
        for element in group:
            if not isinstance(element, settings.RadioSetting):
                continue

            # Label
            label = gtk.Label(element.get_shortname() + ":")
            label.set_alignment(0.0, 0.5)
            label.show()

            table.attach(label, 0, 1, row, row + 1,
                         xoptions=gtk.FILL, yoptions=0,
                         xpadding=6, ypadding=3)

            if isinstance(element.value, list) and \
                    isinstance(element.value[0],
                               settings.RadioSettingValueInteger):
                box = gtk.HBox(True)
            else:
                box = gtk.VBox(True)

            # Widget container
            box.show()
            table.attach(box, 1, 2, row, row + 1,
                         xoptions=gtk.FILL, yoptions=0,
                         xpadding=12, ypadding=3)

            for i in element.keys():
                value = element[i]
                if isinstance(value, settings.RadioSettingValueInteger):
                    widget = gtk.SpinButton()
                    adj = widget.get_adjustment()
                    adj.configure(value.get_value(),
                                  value.get_min(), value.get_max(),
                                  value.get_step(), 1, 0)
                    widget.connect("value-changed", self._save_setting, value)
                elif isinstance(value, settings.RadioSettingValueFloat):
                    widget = gtk.Entry()
                    widget.set_width_chars(16)
                    widget.set_text(value.format())
                    widget.connect("focus-out-event", lambda w, e, v:
                                   self._save_setting(w, v), value)
                elif isinstance(value, settings.RadioSettingValueBoolean):
                    widget = gtk.CheckButton(_("Enabled"))
                    widget.set_active(value.get_value())
                    widget.connect("toggled", self._save_setting, value)
                elif isinstance(value, settings.RadioSettingValueList):
                    widget = miscwidgets.make_choice([], editable=False)
                    model = widget.get_model()
                    model.clear()
                    for option in value.get_options():
                        widget.append_text(option)
                    current = value.get_value()
                    index = value.get_options().index(current)
                    widget.set_active(index)
                    widget.connect("changed", self._save_setting, value)
                elif isinstance(value, settings.RadioSettingValueString):
                    widget = gtk.Entry()
                    widget.set_width_chars(32)
                    widget.set_text(str(value).rstrip())
                    widget.connect("focus-out-event", lambda w, e, v:
                                   self._save_setting(w, v), value)
                else:
                    LOG.error("Unsupported widget type: %s" % value.__class__)

                widget.set_sensitive(value.get_mutable())
                label.set_mnemonic_widget(widget)
                widget.get_accessible().set_name(element.get_shortname())
                widget.show()

                box.pack_start(widget, 1, 1, 1)

            row += 1

        return tab
コード例 #13
0
ファイル: memdetail.py プロジェクト: gitter-badger/chirp_fork
 def _init(self, data):
     self._widget = miscwidgets.make_choice([str(x) for x in data],
                                            False,
                                            str(self._mem_value()))
     self._widget.connect("changed", self.changed)