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
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
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
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