Diff
Differences From Artifact [1647517a84]:
- File
uikit.py
— part of check-in
[d90db23c73]
at
2016-10-28 18:11:30
on branch trunk
— Move liststore_edit() and app_bin_check() from configwin. to uikit.
Allow ListStore for config_play/_record/_specbuttons without `editable` row [2], which is now a property of the CellRenderers (instead of a cell-attribute).
Specialized uikit.config_treeview() builds a custom two-column TreeView now. (user: mario, size: 28574) [annotate] [blame] [check-ins using]
To Artifact [26d04e8c56]:
- File uikit.py — part of check-in [50c68197c7] at 2016-10-28 23:12:11 on branch trunk — Enable `list`/`array`/`table` config schemes in addition to `dict`. Currently unused, just added because it's little more code. No custom value="x,x,x|y,y,y" parser yet. Not for `dict` either, as it's only used by specbuttons with a predefined list. (user: mario, size: 28720) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
508 509 510 511 512 513 514 | w.show_all() return w # Config win table (editable dictionary, two columns w/ executable indicator pixbuf) @staticmethod def config_treeview(opt, columns=["Icon", "Command"]): | > > | > > < | | 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 | w.show_all() return w # Config win table (editable dictionary, two columns w/ executable indicator pixbuf) @staticmethod def config_treeview(opt, columns=["Icon", "Command"]): lno = len(columns) if lno == 2: liststore = gtk.ListStore(str, str, str) else: liststore = gtk.ListStore(*[str for i in range(0, lno)]) w = gtk.TreeView(liststore) # two text columns and renderers for i in range(0, lno): c = gtk.TreeViewColumn(columns[i]) c.set_resizable(True) c.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED) c.set_fixed_width(int(430/lno)) r = gtk.CellRendererText() c.pack_end(r, expand=True) r.set_property("editable", True) r.connect("edited", uikit.liststore_edit, (liststore, i)) c.add_attribute(r, "text", i) #c.add_attribute(r, "editable", 2) w.append_column(c) |
︙ | ︙ | |||
538 539 540 541 542 543 544 545 546 547 | return w, liststore # Generic Gtk callback to update ListStore when entries get edited. # where user_data = (liststore, column #id) @staticmethod def liststore_edit(cell, row, text, user_data): #log.EDIT(cell, row, text, user_data) liststore, column = user_data liststore[row][column] = text # update executable-indicator pixbuf | > | | | | | 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 | return w, liststore # Generic Gtk callback to update ListStore when entries get edited. # where user_data = (liststore, column #id) @staticmethod def liststore_edit(cell, row, text, user_data): #log.EDIT(cell, row, text, user_data) row = int(row) liststore, column = user_data liststore[row][column] = text # update executable-indicator pixbuf if column == 1 and len(liststore[0]) == 3 and liststore[row][2].startswith("gtk-"): liststore[row][2] = uikit.app_bin_check(text) # add new row when editing last one if len(text) and (row + 1) == len(liststore): liststore.append(["", "", "gtk-new"]) # return OK or CANCEL depending on availability of app @staticmethod def app_bin_check(v): bin = re.findall(r"(?<![$(`%-;/$])\b(\w+(?:-\w+)*)", v) if bin: bin = [find_executable(bin) for bin in bin] |
︙ | ︙ |