# HG changeset patch # User K. Arvanitis kosta@alumni.uvic.ca # Date 1422776304 28800 # Parent 511bcfb8df4f6ab9d182ad58d7cdf32a3193a0d8 [PATCH] Updated Memory Edit View #3 Updated column picker dialog to utilize treeview. Updated spacing on generic yesno dialogs. Provides overall better readability.
Feature #2273 diff -r 511bcfb8df4f -r 692c2f783c89 chirpui/mainapp.py --- a/chirpui/mainapp.py Sat Jan 31 12:27:19 2015 -0800 +++ b/chirpui/mainapp.py Sat Jan 31 23:38:24 2015 -0800 @@ -725,12 +725,13 @@ return False
if eset.is_modified(): - dlg = miscwidgets.YesNoDialog(title=_("Save Changes?"), + dlg = miscwidgets.YesNoDialog(title=_("Save Changes"), parent=self, buttons=(gtk.STOCK_YES, gtk.RESPONSE_YES, gtk.STOCK_NO, gtk.RESPONSE_NO, gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)) - dlg.set_text(_("File is modified, save changes before closing?")) + dlg.set_text(_("Save changes to %s?") % eset.filename) + res = dlg.run() dlg.destroy()
@@ -1220,27 +1221,38 @@ radio_name = "%s %s %s" % (eset.rthread.radio.VENDOR, eset.rthread.radio.MODEL, eset.rthread.radio.VARIANT) - d = gtk.Dialog(title=_("Select Columns"), - parent=self, - buttons=(gtk.STOCK_OK, gtk.RESPONSE_OK, - gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)) + dlg = gtk.Dialog(title=_("Choose Columns"), + parent=self, + buttons=(gtk.STOCK_OK, gtk.RESPONSE_OK, + gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)) + dlg.set_size_request(-1, 300) + dlg.set_resizable(False)
- vbox = gtk.VBox() - vbox.show() + store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_BOOLEAN, gobject.TYPE_INT) + view = gtk.TreeView(store) + view.set_headers_visible(False) + rend = gtk.CellRendererToggle() + def toggle(render, path, column): + store[path][column] = not store[path][column] + rend.connect("toggled", toggle, 1) + col = gtk.TreeViewColumn(None, rend, active=1) + view.append_column(col) + rend = gtk.CellRendererText() + col = gtk.TreeViewColumn(None, rend, text=0) + view.append_column(col) + view.show() + sw = gtk.ScrolledWindow() sw.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) - sw.add_with_viewport(vbox) + sw.add_with_viewport(view) sw.show() - d.vbox.pack_start(sw, 1, 1, 1) - d.set_size_request(-1, 300) - d.set_resizable(False) + dlg.vbox.pack_start(sw, 1, 1, 1)
- label = gtk.Label(_("Visible columns for {radio}").format(radio=radio_name)) + label = gtk.Label(_("Select the visible columns for {radio}").format(radio=radio_name)) label.show() - vbox.pack_start(label) + dlg.vbox.pack_start(label, 0, 0, 6)
- fields = [] - memedit = eset.get_current_editor() #.editors["memedit"] + memedit = eset.get_current_editor() unsupported = memedit.get_unsupported_columns() for colspec in memedit.cols: if colspec[0].startswith("_"): @@ -1248,25 +1260,25 @@ elif colspec[0] in unsupported: continue label = colspec[0] - visible = memedit.get_column_visible(memedit.col(label)) - widget = gtk.CheckButton(label) - widget.set_active(visible) - fields.append(widget) - vbox.pack_start(widget, 1, 1, 1) - widget.show() + colnum = memedit.col(label) + visible = memedit.get_column_visible(colnum) + iter = store.append() + store.set(iter, 0, label, 1, visible, 2, colnum)
- res = d.run() - selected_columns = [] + res = dlg.run() + + lst = [] if res == gtk.RESPONSE_OK: - for widget in fields: - colnum = memedit.col(widget.get_label()) - memedit.set_column_visible(colnum, widget.get_active()) - if widget.get_active(): - selected_columns.append(widget.get_label()) + def func(_store, path, iter): + label, visible, colnum = _store.get(iter, 0, 1, 2) + memedit.set_column_visible(colnum, visible) + if visible: + lst.append(label) + store.foreach(func)
- d.destroy() + dlg.destroy()
- CONF.set(driver, ",".join(selected_columns), "memedit_columns") + CONF.set(driver, ",".join(lst), "memedit_columns")
def do_hide_unused(self, action): eset = self.get_current_editorset() @@ -1469,6 +1481,7 @@ </menu> <menu action="view"> <menuitem action="columns"/> + <separator/> <menuitem action="hide_unused"/> <menuitem action="no_smart_tmode"/> <menu action="viewdeveloper"> @@ -1476,6 +1489,7 @@ <menuitem action="devdiffraw"/> <menuitem action="devdifftab"/> </menu> + <separator/> <menuitem action="language"/> </menu> <menu action="radio" name="radio"> @@ -1532,7 +1546,7 @@ ('exchange', None, _("E_xchange"), "<Control><Shift>x", None, self.mh), ('properties', None, _("P_roperties"), None, None, self.mh), ('view', None, _("_View"), None, None, self.mh), - ('columns', None, _("Columns"), None, None, self.mh), + ('columns', None, _("C_hoose Columns..."), None, None, self.mh), ('viewdeveloper', None, _("Developer"), None, None, self.mh), ('devshowraw', None, _('Show raw memory'), "<Control><Shift>r", None, self.mh), ('devdiffraw', None, _("Diff raw memories"), "<Control><Shift>d", None, self.mh), diff -r 511bcfb8df4f -r 692c2f783c89 chirpui/memedit.py --- a/chirpui/memedit.py Sat Jan 31 12:27:19 2015 -0800 +++ b/chirpui/memedit.py Sat Jan 31 23:38:24 2015 -0800 @@ -1448,7 +1448,7 @@ loc, filled = store.get(iter, self.col(_("Loc")), self.col("_filled")) if filled and not always: - d = miscwidgets.YesNoDialog(title=_("Overwrite?"), + d = miscwidgets.YesNoDialog(title=_("Overwrite"), buttons=(gtk.STOCK_YES, 1, gtk.STOCK_NO, 2, gtk.STOCK_CANCEL, 3, diff -r 511bcfb8df4f -r 692c2f783c89 chirpui/miscwidgets.py --- a/chirpui/miscwidgets.py Sat Jan 31 12:27:19 2015 -0800 +++ b/chirpui/miscwidgets.py Sat Jan 31 23:38:24 2015 -0800 @@ -599,7 +599,7 @@ self._label.show()
# pylint: disable-msg=E1101 - self.vbox.pack_start(self._label, 1, 1, 1) + self.vbox.pack_start(self._label, 1, 1, 6)
def set_text(self, text): self._label.set_text(text)