[chirp_devel] [PATCH] Fix bank UI to make empty memories insensitive. This improves the visual

Dan Smith
Tue Mar 13 13:52:06 PDT 2012


# HG changeset patch
# User Dan Smith <dsmith at danplanet.com>
# Date 1331671920 25200
# Node ID 6f7a8a5b277fe99dd0a533f494be8d4d39ea0ea7
# Parent  d2be8e490a18351c3c9239d63e332c1e5b6568a0
Fix bank UI to make empty memories insensitive. This improves the visual
nature, but also prevents the UI from asking the driver to add blank
memories to a bank if the user accidentally clicks in one of the boxes.

diff -r d2be8e490a18 -r 6f7a8a5b277f chirpui/bankedit.py
--- a/chirpui/bankedit.py	Tue Mar 13 13:16:53 2012 -0700
+++ b/chirpui/bankedit.py	Tue Mar 13 13:52:00 2012 -0700
@@ -137,9 +137,9 @@
         ncols = len(self._cols) + len(self.banks)
         while iter:
             vals = self._store.get(iter, *tuple([n for n in range(0, ncols)]))
-            loc = vals[0]
-            index = vals[3]
-            banks = vals[4:]
+            loc = vals[self.C_LOC]
+            index = vals[self.C_INDEX]
+            banks = vals[self.C_BANKS:]
             if True in banks and banks.index(True) == bank:
                 indexes.append(index)
             iter = self._store.iter_next(iter)
@@ -156,7 +156,7 @@
     def _toggled_cb(self, rend, path, colnum):
         # The bank index is the column number, minus the 3 label columns
         bank, name = self.banks[colnum - len(self._cols)]
-        loc, = self._store.get(self._store.get_iter(path), 0)
+        loc, = self._store.get(self._store.get_iter(path), self.C_LOC)
 
         if rend.get_active():
             # Changing from True to False
@@ -201,7 +201,7 @@
         self.rthread.submit(job)
 
     def _index_edited_cb(self, rend, path, new):
-        loc, = self._store.get(self._store.get_iter(path), 0)
+        loc, = self._store.get(self._store.get_iter(path), self.C_LOC)
         
         def refresh_memory(*args):
             self.refresh_memory(loc)
@@ -234,12 +234,23 @@
         self.rthread = rthread
         self._rf = rthread.radio.get_features()
 
-        self._cols = [
+        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_BANKS  = 5 # and beyond
         
         cols = list(self._cols)
 
@@ -254,13 +265,18 @@
 
         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)
+                col = gtk.TreeViewColumn(label, rend, active=colnum,
+                                         sensitive=self.C_FILLED)
             else:
-                col = gtk.TreeViewColumn(label, rend, text=colnum)
+                col = gtk.TreeViewColumn(label, rend, text=colnum,
+                                         sensitive=self.C_FILLED)
 
             self._view.append_column(col)
             if colnum == 2:
@@ -278,7 +294,12 @@
 
         for i in range(*self._rf.memory_bounds):
             iter = self._store.append()
-            self._store.set(iter, 0, i, 1, 0, 2, "", 3, 0)
+            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
@@ -286,11 +307,12 @@
     def refresh_memory(self, number):
         def got_mem(memory, banks, indexes):
             iter = self._store.get_iter(self._number_to_path(memory.number))
-            row = [0, memory.number,
-                   1, chirp_common.format_freq(memory.freq),
-                   2, memory.name,
+            row = [self.C_FILLED, not memory.empty,
+                   self.C_LOC, memory.number,
+                   self.C_FREQ, chirp_common.format_freq(memory.freq),
+                   self.C_NAME, memory.name,
                    # Hack for only one index right now
-                   3, indexes and indexes[0] or 0,
+                   self.C_INDEX, indexes and indexes[0] or 0,
                    ]
             for i in range(0, len(self.banks)):
                 row.append(i + len(self._cols))
@@ -309,8 +331,9 @@
 
     def refresh_banks(self, and_memories=False):
         def got_banks():
-            for i in range(0, len(self.banks)):
-                col = self._view.get_column(i + len(self._cols))
+            for i in range(len(self._cols) - len(self._view_cols),
+                           len(self.banks)):
+                col = self._view.get_column(i + len(self._view_cols))
                 bank, name = self.banks[i]
                 if name:
                     col.set_title(name)



More information about the chirp_devel mailing list