Project

General

Profile

Feature #2273 ยป 2015-01-31_00-19-59_r2353 .diff

Kosta A., 01/31/2015 12:40 AM

View differences:

chirpui/mainapp.py Thu Jan 29 07:14:39 2015 -0800 โ†’ chirpui/mainapp.py Sat Jan 31 00:19:59 2015 -0800
112 112
        
113 113
        for i in ["export", "close", "columns", "irbook", "irfinder",
114 114
                  "move_up", "move_dn", "exchange", "iradioreference",
115
                  "cut", "copy", "paste", "delete", "viewdeveloper"]:
115
                  "cut", "copy", "paste", "delete", "viewdeveloper",
116
                  "all", "properties"]:
116 117
            set_action_sensitive(i, eset is not None)
117 118

  
118 119
    def ev_status(self, editorset, msg):
......
1219 1220
        radio_name = "%s %s %s" % (eset.rthread.radio.VENDOR,
1220 1221
                                   eset.rthread.radio.MODEL,
1221 1222
                                   eset.rthread.radio.VARIANT)
1222
        d = gtk.Dialog(title=_("Select Columns"),
1223
        d = gtk.Dialog(title=_("Choose Columns"),
1223 1224
                       parent=self,
1224 1225
                       buttons=(gtk.STOCK_OK, gtk.RESPONSE_OK,
1225 1226
                                gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
......
1418 1419
            self.do_toggle_no_smart_tmode(_action)
1419 1420
        elif action == "developer":
1420 1421
            self.do_toggle_developer(_action)
1421
        elif action in ["cut", "copy", "paste", "delete",
1422
                        "move_up", "move_dn", "exchange",
1422
        elif action in ["cut", "copy", "paste", "delete", "all",
1423
                        "move_up", "move_dn", "exchange", "properties",
1423 1424
                        "devshowraw", "devdiffraw"]:
1424 1425
            self.get_current_editorset().get_current_editor().hotkey(_action)
1425 1426
        elif action == "devdifftab":
......
1458 1459
      <menuitem action="paste"/>
1459 1460
      <menuitem action="delete"/>
1460 1461
      <separator/>
1462
      <menuitem action="all"/>
1463
      <separator/>
1461 1464
      <menuitem action="move_up"/>
1462 1465
      <menuitem action="move_dn"/>
1463 1466
      <menuitem action="exchange"/>
1467
      <separator/>
1468
      <menuitem action="properties"/>
1464 1469
    </menu>
1465 1470
    <menu action="view">
1466 1471
      <menuitem action="columns"/>
1472
      <separator/>
1467 1473
      <menuitem action="hide_unused"/>
1468 1474
      <menuitem action="no_smart_tmode"/>
1469 1475
      <menu action="viewdeveloper">
......
1471 1477
        <menuitem action="devdiffraw"/>
1472 1478
        <menuitem action="devdifftab"/>
1473 1479
      </menu>
1480
      <separator/>
1474 1481
      <menuitem action="language"/>
1475 1482
    </menu>
1476 1483
    <menu action="radio" name="radio">
1477 1484
      <menuitem action="download"/>
1478 1485
      <menuitem action="upload"/>
1486
      <separator/>
1479 1487
      <menu action="importsrc" name="importsrc">
1480 1488
        <menuitem action="iradioreference"/>
1481 1489
        <menuitem action="irbook"/>
......
1509 1517
            ('file', None, _("_File"), None, None, self.mh),
1510 1518
            ('new', gtk.STOCK_NEW, None, None, None, self.mh),
1511 1519
            ('open', gtk.STOCK_OPEN, None, None, None, self.mh),
1512
            ('openstock', None, _("Open stock config"), None, None, self.mh),
1520
            ('openstock', None, _("Open Stock Config"), None, None, self.mh),
1513 1521
            ('recent', None, _("_Recent"), None, None, self.mh),
1514 1522
            ('save', gtk.STOCK_SAVE, None, None, None, self.mh),
1515 1523
            ('saveas', gtk.STOCK_SAVE_AS, None, None, None, self.mh),
1516
            ('loadmod', None, _("Load Module"), None, None, self.mh),
1524
            ('loadmod', None, _("Load Module..."), None, None, self.mh),
1517 1525
            ('close', gtk.STOCK_CLOSE, None, None, None, self.mh),
1518 1526
            ('quit', gtk.STOCK_QUIT, None, None, None, self.mh),
1519 1527
            ('edit', None, _("_Edit"), None, None, self.mh),
......
1521 1529
            ('copy', None, _("_Copy"), "<Ctrl>c", None, self.mh),
1522 1530
            ('paste', None, _("_Paste"), "<Ctrl>v", None, self.mh),
1523 1531
            ('delete', None, _("_Delete"), "Delete", None, self.mh),
1532
            ('all', None, _("Select _All"), None, None, self.mh),
1524 1533
            ('move_up', None, _("Move _Up"), "<Control>Up", None, self.mh),
1525 1534
            ('move_dn', None, _("Move Dow_n"), "<Control>Down", None, self.mh),
1526 1535
            ('exchange', None, _("E_xchange"), "<Control><Shift>x", None, self.mh),
1536
            ('properties', None, _("P_roperties"), None, None, self.mh),
1527 1537
            ('view', None, _("_View"), None, None, self.mh),
1528
            ('columns', None, _("Columns"), None, None, self.mh),
1538
            ('columns', None, _("C_hoose Columns..."), None, None, self.mh),
1529 1539
            ('viewdeveloper', None, _("Developer"), None, None, self.mh),
1530 1540
            ('devshowraw', None, _('Show raw memory'), "<Control><Shift>r", None, self.mh),
1531 1541
            ('devdiffraw', None, _("Diff raw memories"), "<Control><Shift>d", None, self.mh),
1532 1542
            ('devdifftab', None, _("Diff tabs"), "<Control><Shift>t", None, self.mh),
1533
            ('language', None, _("Change language"), None, None, self.mh),
1543
            ('language', None, _("Change Language..."), None, None, self.mh),
1534 1544
            ('radio', None, _("_Radio"), None, None, self.mh),
1535 1545
            ('download', None, _("Download From Radio"), "<Alt>d", None, self.mh),
1536 1546
            ('upload', None, _("Upload To Radio"), "<Alt>u", None, self.mh),
1537
            ('import', None, _("Import"), "<Alt>i", None, self.mh),
1538
            ('export', None, _("Export"), "<Alt>x", None, self.mh),
1539
            ('importsrc', None, _("Import from data source"), None, None, self.mh),
1547
            ('import', None, _("Import..."), "<Alt>i", None, self.mh),
1548
            ('export', None, _("Export..."), "<Alt>x", None, self.mh),
1549
            ('importsrc', None, _("Import Data Source"), None, None, self.mh),
1540 1550
            ('iradioreference', None, _("RadioReference.com"), None, None, self.mh),
1541 1551
            ('irfinder', None, _("RFinder"), None, None, self.mh),
1542 1552
            ('irbook', None, _("RepeaterBook"), None, None, self.mh),
1543 1553
            ('ipr', None, _("przemienniki.net"), None, None, self.mh),
1544
            ('querysrc', None, _("Query data source"), None, None, self.mh),
1554
            ('querysrc', None, _("Query Data Source"), None, None, self.mh),
1545 1555
            ('qradioreference', None, _("RadioReference.com"), None, None, self.mh),
1546 1556
            ('qrfinder', None, _("RFinder"), None, None, self.mh),
1547 1557
            ('qpr', None, _("przemienniki.net"), None, None, self.mh),
......
1549 1559
            ('export_chirp', None, _("CHIRP Native File"), None, None, self.mh),
1550 1560
            ('export_csv', None, _("CSV File"), None, None, self.mh),
1551 1561
            ('stock', None, _("Import from stock config"), None, None, self.mh),
1552
            ('channel_defaults', None, _("Channel defaults"), None, None, self.mh),
1562
            ('channel_defaults', None, _("Reset Channel Defaults"), None, None, self.mh),
1553 1563
            ('cancelq', gtk.STOCK_STOP, None, "Escape", None, self.mh),
1554 1564
            ('help', None, _('Help'), None, None, self.mh),
1555 1565
            ('about', gtk.STOCK_ABOUT, None, None, None, self.mh),
chirpui/memdetail.py Thu Jan 29 07:14:39 2015 -0800 โ†’ chirpui/memdetail.py Sat Jan 31 00:19:59 2015 -0800
193 193
        self.vbox.pack_start(sw, 1, 1, 1)
194 194
        tab.show()
195 195

  
196
        row = 0
197

  
198 196
        def _err(name, msg):
199 197
            try:
200 198
                _img = self._editors[name][2]
......
210 208
            self.set_response_sensitive(gtk.RESPONSE_OK,
211 209
                                        True not in self._errors)
212 210

  
211
        row = 0
213 212
        for name in self._order:
214 213
            labeltxt, editorcls, data = self._elements[name]
215 214

  
......
235 234
            row += 1
236 235
            self._order.append(name)
237 236

  
238
    def _title(self):
239
        return _("Edit Memory #{num}").format(num=self._memory.number)
240

  
241 237
    def __init__(self, features, memory, parent=None):
242 238
        self._memory = memory
243 239
        gtk.Dialog.__init__(self,
244
                            title=self._title(),
240
                            title="Memory Properties",
245 241
                            flags=gtk.DIALOG_MODAL,
246 242
                            parent=parent,
247 243
                            buttons=(gtk.STOCK_OK, gtk.RESPONSE_OK,
......
327 323
                if isinstance(msg, chirp_common.ValidationError):
328 324
                    errors.append(msg)
329 325
            if errors:
330
                common.show_error_text(_("Memory validation failed:"),
326
                common.show_error_text(_("Memory Validation Failed:"),
331 327
                                       os.linesep +
332 328
                                       os.linesep.join(errors))
333 329
                self.emit_stop_by_name('response')
......
337 333
        return self._memory
338 334

  
339 335
class MultiMemoryDetailEditor(MemoryDetailEditor):
340
    def _title(self):
341
        return _("Edit Multiple Memories")
342

  
343 336
    def __init__(self, features, memory, parent=None):
344 337
        self._selections = dict()
345 338
        super(MultiMemoryDetailEditor, self).__init__(features, memory, parent)
chirpui/memedit.py Thu Jan 29 07:14:39 2015 -0800 โ†’ chirpui/memedit.py Sat Jan 31 00:19:59 2015 -0800
524 524

  
525 525
        return True # We changed memories
526 526

  
527
    def _delete_rows_and_shift(self, paths, all=False):
527
    def _remove_rows_and_shift(self, paths, all=False):
528 528
        iter = self.store.get_iter(paths[0])
529 529
        starting_loc, = self.store.get(iter, self.col(_("Loc")))
530 530
        for i in range(0, len(paths)):
......
780 780
        elif action == "delete":
781 781
            changed = self._delete_rows(paths)
782 782
        elif action == "delete_s":
783
            changed = self._delete_rows_and_shift(paths)
783
            changed = self._remove_rows_and_shift(paths)
784 784
        elif action == "delete_sall":
785
            changed = self._delete_rows_and_shift(paths, all=True)
785
            changed = self._remove_rows_and_shift(paths, all=True)
786 786
        elif action in ["move_up", "move_dn"]:
787 787
            changed = self._move_up_down(paths, action)
788 788
        elif action == "exchange":
......
791 791
            changed = self.copy_selection(action=="cut")
792 792
        elif action == "paste":
793 793
            changed = self.paste_selection()
794
        elif action == "all":
795
            self._select_all()
794 796
        elif action == "devshowraw":
795 797
            self._show_raw(cur_pos)
796 798
        elif action == "devdiffraw":
797 799
            self._diff_raw(paths)
798
        elif action == "edit":
800
        elif action == "properties":
799 801
            job = common.RadioJob(self.edit_memory, "get_memory", cur_pos)
800 802
            job.set_cb_args(selected)
801 803
            self.rthread.submit(job)
......
828 830
        menu_xml = """
829 831
<ui>
830 832
  <popup name="Menu"> 
831
    <menuitem action="edit"/>
832
    <menuitem action="insert_prev"/>
833
    <menuitem action="insert_next"/>
834
    <menu action="deletes">
835
      <menuitem action="delete"/>
833
    <menuitem action="cut"/>
834
    <menuitem action="copy"/>
835
    <menuitem action="paste"/>
836
    <menuitem action="delete"/>
837
    <separator/>
838
    <menuitem action="all"/>
839
    <separator/>
840
    <menu action="insert">
841
        <menuitem action="insert_prev"/>
842
        <menuitem action="insert_next"/>
843
    </menu>
844
    <menu action="remove">
836 845
      <menuitem action="delete_s"/>
837 846
      <menuitem action="delete_sall"/>
838 847
    </menu>
......
840 849
    <menuitem action="move_dn"/>
841 850
    <menuitem action="exchange"/>
842 851
    <separator/>
843
    <menuitem action="cut"/>
844
    <menuitem action="copy"/>
845
    <menuitem action="paste"/>
852
    <menuitem action="properties"/>
846 853
    %s
847 854
  </popup>
848 855
</ui>
......
854 861
        istwo = len(paths) == 2
855 862

  
856 863
        actions = [
857
            ("edit", _("Edit")),
858
            ("insert_prev", _("Insert row above")),
859
            ("insert_next", _("Insert row below")),
860
            ("deletes", _("Delete")),
861
            ("delete", issingle and _("this memory") or _("these memories")),
864
            ("properties", _("P_roperties")),
865
            ("insert", _("Insert")),
866
            ("insert_prev", _("Row Above")),
867
            ("insert_next", _("Row Below")),
868
            ("remove", _("Remove")),
862 869
            ("delete_s", _("...and shift block up")),
863 870
            ("delete_sall", _("...and shift all memories up")),
864
            ("move_up", _("Move up")),
865
            ("move_dn", _("Move down")),
866
            ("exchange", _("Exchange memories")),
871
            ("move_up", _("Move Up")),
872
            ("move_dn", _("Move Down")),
873
            ("exchange", _("Exchange Memories")),
867 874
            ("cut", _("Cut")),
868 875
            ("copy", _("Copy")),
869 876
            ("paste", _("Paste")),
877
            ("delete", _("Delete")),
878
            ("all", _("Select All")),
870 879
            ("devshowraw", _("Show Raw Memory")),
871 880
            ("devdiffraw", _("Diff Raw Memories")),
872 881
            ]
......
1153 1162
    def make_controls(self, min, max):
1154 1163
        hbox = gtk.HBox(False, 2)
1155 1164

  
1156
        lab = gtk.Label(_("Memory range:"))
1165
        lab = gtk.Label(_("Memory Range:"))
1157 1166
        lab.show()
1158 1167
        hbox.pack_start(lab, 0, 0, 0)
1159 1168

  
......
1180 1189
        hi.show()
1181 1190
        hbox.pack_start(hi, 0, 0, 0)
1182 1191

  
1183
        refresh = gtk.Button(_("Go"))
1192
        refresh = gtk.Button()
1193
        refresh.set_relief(gtk.RELIEF_NONE)
1194
        image = gtk.Image()
1195
        image.set_from_stock(gtk.STOCK_REFRESH, gtk.ICON_SIZE_MENU)
1196
        image.show()
1197
        label = gtk.Label(_("Refresh"))
1198
        label.show()
1199
        box = gtk.HBox(False, 2)
1200
        box.pack_start(image, 0, 0, 0)
1201
        box.pack_start(label, 0, 0, 0)
1202
        box.show()
1203
        refresh.add(box)
1204
        refresh.connect("clicked", lambda x: self.prefill())
1184 1205
        refresh.show()
1185
        refresh.connect("clicked", lambda x: self.prefill())
1186 1206
        hbox.pack_start(refresh, 0, 0, 0)
1187

  
1207
        
1188 1208
        def activate_go(widget):
1189 1209
            refresh.clicked()
1190 1210

  
......
1200 1220

  
1201 1221
        sep = gtk.VSeparator()
1202 1222
        sep.show()
1203
        sep.set_size_request(20, -1)
1204
        hbox.pack_start(sep, 0, 0, 0)
1223
        hbox.pack_start(sep, 0, 0, 2)
1205 1224

  
1206
        showspecial = gtk.CheckButton(_("Special Channels"))
1225
        showspecial = gtk.ToggleButton(_("Special Channels"))
1226
        showspecial.set_relief(gtk.RELIEF_NONE)
1207 1227
        showspecial.set_active(self.show_special)
1208 1228
        showspecial.connect("toggled",
1209 1229
                            lambda x: self.set_show_special(x.get_active()))
1210 1230
        showspecial.show()
1211 1231
        hbox.pack_start(showspecial, 0, 0, 0)
1212

  
1213
        showempty = gtk.CheckButton(_("Show Empty"))
1232
        
1233
        showempty = gtk.ToggleButton(_("Show Empty"))
1234
        showempty.set_relief(gtk.RELIEF_NONE)
1214 1235
        showempty.set_active(self.show_empty);
1215 1236
        showempty.connect("toggled",
1216 1237
                          lambda x: self.set_show_empty(x.get_active()))
1217 1238
        showempty.show()
1218 1239
        hbox.pack_start(showempty, 0, 0, 0)
1219 1240

  
1241
        sep = gtk.VSeparator()
1242
        sep.show()
1243
        hbox.pack_start(sep, 0, 0, 2)
1244

  
1245
        edit = gtk.Button()
1246
        edit.set_relief(gtk.RELIEF_NONE)
1247
        image = gtk.Image()
1248
        image.set_from_stock(gtk.STOCK_EXECUTE, gtk.ICON_SIZE_MENU)
1249
        image.show()
1250
        label = gtk.Label(_("Properties"))
1251
        label.show()
1252
        box = gtk.HBox(False, 2)
1253
        box.pack_start(image, 0, 0, 0)
1254
        box.pack_start(label, 0, 0, 0)
1255
        box.show()
1256
        edit.add(box)
1257
        edit.connect("clicked", lambda x: self.hotkey(gtk.Action("properties", "", "", 0)))
1258
        edit.show()
1259
        hbox.pack_start(edit, 0, 0, 0)
1260

  
1220 1261
        hbox.show()
1221 1262

  
1222 1263
        return hbox
......
1485 1526
        clipboard = gtk.Clipboard(selection="PRIMARY")
1486 1527
        clipboard.request_text(self._paste_selection)
1487 1528

  
1529
    def _select_all(self):
1530
        self.view.get_selection().select_all()
1531

  
1488 1532
    def prepare_close(self):
1489 1533
        cols = self.view.get_columns()
1490 1534
        self._config.set("column_order_%s" % self.__class__.__name__,
    (1-1/1)