1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- import gi
- gi.require_version('Gtk', '3.0')
- from gi.repository import Gtk
- class GtkSelectionList(Gtk.ListBox):
- def __init__(self, *args, **kwds):
- super().__init__(*args, **kwds)
- self.connect("row-selected", self.on_selection)
- self.selections={}
- self._on_selected=None
- self.current_selection_name=""
- def init(self):
- ch=self.get_children()
- for c in ch: super().remove(c)
- self.current_selection_name=""
- def set_on_selected(self, a):
- self._on_selected=a
- def rename(self, old, new):
- self.selections[new]=self.selections[old]
- del self.selections[old]
- self.selections[new][0].set_text(new)
- def append(self, name, sel):
- label = Gtk.Label.new(name)
- label.set_alignment(0,0)
- self.add(label)
- label.show_all()
- self.selections[name]=(label, sel)
- def remove(self, name):
- if name in self.selections:
- lbl = self.selections[name][0]
- for i in range(len(self.selections)):
- row = self.get_row_at_index(i)
- label = row.get_child()
- if label==lbl:
- super().remove(row)
- del self.selections[name]
- def on_selection(self, obj, c):
- for k in self.selections:
- if c.get_child()==self.selections[k][0]:
- self.current_selection_name=k
- self._on_selected(k, self.selections[k][1])
|