Example #1
0
    def _make_device_mapping_editors(self, device, devrthread, index):
        sub_index = 0
        memory_editor = self.editors["memedit%i" % index]
        mappings = device.get_mapping_models()
        for mapping_model in mappings:
            members = bankedit.MappingMembershipEditor(devrthread, self,
                                                       mapping_model)
            label = mapping_model.get_name()
            if self.rf.has_sub_devices:
                label += "(%s)" % device.VARIANT
            lab = gtk.Label(label)
            self.tabs.append_page(members.root, lab)
            self.editors["mapping_members%i%i" % (index, sub_index)] = members

            basename = common.unpluralize(mapping_model.get_name())
            names = bankedit.MappingNameEditor(devrthread, mapping_model)
            label = "%s Names" % basename
            if self.rf.has_sub_devices:
                label += " (%s)" % device.VARIANT
            lab = gtk.Label(label)
            self.tabs.append_page(names.root, lab)
            self.editors["mapping_names%i%i" % (index, sub_index)] = names

            members.root.show()
            members.connect("changed", self.editor_changed)
            if hasattr(mapping_model.get_mappings()[0], "set_name"):
                names.root.show()
                members.connect("changed", lambda x: names.mappings_changed())
                names.connect("changed", lambda x: members.mappings_changed())
                names.connect("changed", self.editor_changed)
            sub_index += 1
Example #2
0
    def _make_device_mapping_editors(self, device, devrthread, index):
        sub_index = 0
        memory_editor = self.editors["memedit%i" % index]
        mappings = device.get_mapping_models()
        for mapping_model in mappings:
            members = bankedit.MappingMembershipEditor(devrthread, self,
                                                       mapping_model)
            label = mapping_model.get_name()
            if self.rf.has_sub_devices:
                label += "(%s)" % device.VARIANT
            lab = gtk.Label(label)
            self.tabs.append_page(members.root, lab)
            self.editors["mapping_members%i%i" % (index, sub_index)] = members

            basename = common.unpluralize(mapping_model.get_name())
            names = bankedit.MappingNameEditor(devrthread, mapping_model)
            label = "%s Names" % basename
            if self.rf.has_sub_devices:
                label += " (%s)" % device.VARIANT
            lab = gtk.Label(label)
            self.tabs.append_page(names.root, lab)
            self.editors["mapping_names%i%i" % (index, sub_index)] = names

            members.root.show()
            members.connect("changed", self.editor_changed)
            if hasattr(mapping_model.get_mappings()[0], "set_name"):
                names.root.show()
                members.connect("changed", lambda x: names.mappings_changed())
                names.connect("changed", lambda x: members.mappings_changed())
                names.connect("changed", self.editor_changed)
            sub_index += 1
Example #3
0
    def __init__(self, rthread, model):
        super(MappingNameEditor, self).__init__(rthread)
        self._model = model
        self._type = common.unpluralize(model.get_name())

        types = [(gobject.TYPE_STRING, "key"),
                 (gobject.TYPE_STRING, self._type),
                 (gobject.TYPE_STRING, _("Name"))]

        self.listw = miscwidgets.KeyedListWidget(types)
        self.listw.set_editable(1, True)
        self.listw.set_sort_column(0, 1)
        self.listw.set_sort_column(1, -1)
        self.listw.show()

        self.mappings = []

        sw = gtk.ScrolledWindow()
        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        sw.add_with_viewport(self.listw)

        self.root = sw
        self._loaded = False
Example #4
0
    def __init__(self, rthread, model):
        super(MappingNameEditor, self).__init__(rthread)
        self._model = model
        self._type = common.unpluralize(model.get_name())

        types = [(gobject.TYPE_STRING, "key"),
                 (gobject.TYPE_STRING, self._type),
                 (gobject.TYPE_STRING, _("Name"))]

        self.listw = miscwidgets.KeyedListWidget(types)
        self.listw.set_editable(1, True)
        self.listw.set_sort_column(0, 1)
        self.listw.set_sort_column(1, -1)
        self.listw.show()

        self.mappings = []

        sw = gtk.ScrolledWindow()
        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        sw.add_with_viewport(self.listw)

        self.root = sw
        self._loaded = False
Example #5
0
    def __init__(self, rthread, editorset, model):
        super(MappingMembershipEditor, self).__init__(rthread)

        self.editorset = editorset
        self._rf = rthread.radio.get_features()
        self._model = model
        self._type = common.unpluralize(model.get_name())

        self._view_cols = [
            (
                _("Loc"),
                TYPE_INT,
                gtk.CellRendererText,
            ),
            (
                _("Frequency"),
                TYPE_STRING,
                gtk.CellRendererText,
            ),
            (
                _("Name"),
                TYPE_STRING,
                gtk.CellRendererText,
            ),
            (
                _("Index"),
                TYPE_INT,
                gtk.CellRendererText,
            ),
        ]

        self._cols = [
            (
                "_filled",
                TYPE_BOOLEAN,
                None,
            ),
        ] + self._view_cols

        self.C_FILLED = 0
        self.C_LOC = 1
        self.C_FREQ = 2
        self.C_NAME = 3
        self.C_INDEX = 4
        self.C_MAPPINGS = 5  # and beyond

        cols = list(self._cols)

        self._index_cache = []

        for i in range(0, self._model.get_num_mappings()):
            label = "%s %i" % (self._type, (i + 1))
            cols.append((label, TYPE_BOOLEAN, gtk.CellRendererToggle))

        self._store = gtk.ListStore(*tuple([y for x, y, z in cols]))
        self._view = gtk.TreeView(self._store)

        is_indexed = isinstance(self._model,
                                chirp_common.MappingModelIndexInterface)

        colnum = 0
        for label, dtype, rtype in cols:
            if not rtype:
                colnum += 1
                continue
            rend = rtype()
            if dtype == TYPE_BOOLEAN:
                rend.set_property("activatable", True)
                rend.connect("toggled", self._toggled_cb, colnum)
                col = gtk.TreeViewColumn(label,
                                         rend,
                                         active=colnum,
                                         sensitive=self.C_FILLED)
            else:
                col = gtk.TreeViewColumn(label,
                                         rend,
                                         text=colnum,
                                         sensitive=self.C_FILLED)

            self._view.append_column(col)
            col.set_resizable(True)
            if colnum == self.C_NAME:
                col.set_visible(self._rf.has_name)
            elif colnum == self.C_INDEX:
                rend.set_property("editable", True)
                rend.connect("edited", self._index_edited_cb)
                col.set_visible(is_indexed)
            colnum += 1

        # A non-rendered column to absorb extra space in the row
        self._view.append_column(gtk.TreeViewColumn())

        sw = gtk.ScrolledWindow()
        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        sw.add(self._view)
        self._view.show()

        (min, max) = self._rf.memory_bounds
        for i in range(min, max + 1):
            iter = self._store.append()
            self._store.set(iter, self.C_FILLED, False, self.C_LOC, i,
                            self.C_FREQ, 0, self.C_NAME, "", self.C_INDEX, 0)

        self.root = sw
        self._loaded = False
Example #6
0
    def __init__(self, rthread, editorset, model):
        super(MappingMembershipEditor, self).__init__(rthread)

        self.editorset = editorset
        self._rf = rthread.radio.get_features()
        self._model = model
        self._type = common.unpluralize(model.get_name())

        self._view_cols = [
            (_("Loc"),       TYPE_INT,     gtk.CellRendererText, ),
            (_("Frequency"), TYPE_STRING,  gtk.CellRendererText, ),
            (_("Name"),      TYPE_STRING,  gtk.CellRendererText, ),
            (_("Index"),     TYPE_INT,     gtk.CellRendererText, ),
            ]

        self._cols = [
            ("_filled",      TYPE_BOOLEAN, None, ),
            ] + self._view_cols

        self.C_FILLED = 0
        self.C_LOC = 1
        self.C_FREQ = 2
        self.C_NAME = 3
        self.C_INDEX = 4
        self.C_MAPPINGS = 5  # and beyond

        cols = list(self._cols)

        self._index_cache = []

        for i in range(0, self._model.get_num_mappings()):
            label = "%s %i" % (self._type, (i+1))
            cols.append((label, TYPE_BOOLEAN, gtk.CellRendererToggle))

        self._store = gtk.ListStore(*tuple([y for x, y, z in cols]))
        self._view = gtk.TreeView(self._store)

        is_indexed = isinstance(self._model,
                                chirp_common.MappingModelIndexInterface)

        colnum = 0
        for label, dtype, rtype in cols:
            if not rtype:
                colnum += 1
                continue
            rend = rtype()
            if dtype == TYPE_BOOLEAN:
                rend.set_property("activatable", True)
                rend.connect("toggled", self._toggled_cb, colnum)
                col = gtk.TreeViewColumn(label, rend, active=colnum,
                                         sensitive=self.C_FILLED)
            else:
                col = gtk.TreeViewColumn(label, rend, text=colnum,
                                         sensitive=self.C_FILLED)

            self._view.append_column(col)
            col.set_resizable(True)
            if colnum == self.C_NAME:
                col.set_visible(self._rf.has_name)
            elif colnum == self.C_INDEX:
                rend.set_property("editable", True)
                rend.connect("edited", self._index_edited_cb)
                col.set_visible(is_indexed)
            colnum += 1

        # A non-rendered column to absorb extra space in the row
        self._view.append_column(gtk.TreeViewColumn())

        sw = gtk.ScrolledWindow()
        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        sw.add(self._view)
        self._view.show()

        (min, max) = self._rf.memory_bounds
        for i in range(min, max+1):
            iter = self._store.append()
            self._store.set(iter,
                            self.C_FILLED, False,
                            self.C_LOC, i,
                            self.C_FREQ, 0,
                            self.C_NAME, "",
                            self.C_INDEX, 0)

        self.root = sw
        self._loaded = False