davemds pushed a commit to branch master. http://git.enlightenment.org/apps/espionage.git/commit/?id=eeb4ae57529b8db8f1baaf29a2f8eae2977013f1
commit eeb4ae57529b8db8f1baaf29a2f8eae2977013f1 Author: davemds <d...@gurumeditation.it> Date: Sat Nov 2 19:58:47 2013 +0100 Espionage: improved toolbar with checkbox for options --- espionage/espionage.py | 94 ++++++++++++++++++++++++++++++++++---------------- 1 file changed, 64 insertions(+), 30 deletions(-) diff --git a/espionage/espionage.py b/espionage/espionage.py index 8c955e4..545d682 100644 --- a/espionage/espionage.py +++ b/espionage/espionage.py @@ -25,6 +25,7 @@ from xml.etree import ElementTree from efl import evas from efl import elementary as elm +from efl.evas import EVAS_HINT_EXPAND, EVAS_HINT_FILL from efl.elementary.window import StandardWindow from efl.elementary.background import Background from efl.elementary.box import Box @@ -38,6 +39,7 @@ from efl.elementary.label import Label from efl.elementary.panes import Panes from efl.elementary.popup import Popup from efl.elementary.separator import Separator +from efl.elementary.table import Table from efl.elementary.genlist import Genlist, GenlistItem, GenlistItemClass from efl.dbus_mainloop import DBusEcoreMainLoop @@ -45,7 +47,8 @@ from efl.dbus_mainloop import DBusEcoreMainLoop class Options(object): """class to contain application options""" def __init__(self): - self.hide_introspect_stuff = False + self.show_introspect_stuff = False + self.show_private_stuff = False self.pretty_output = True @@ -274,10 +277,11 @@ class NamesList(Genlist): self.public_group = self.item_append(self.itc_g, "Public Services", flags=elm.ELM_GENLIST_ITEM_GROUP) self.public_group.select_mode_set(elm.ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) - - self.private_group = self.item_append(self.itc_g, "Private Services", - flags=elm.ELM_GENLIST_ITEM_GROUP) - self.private_group.select_mode_set(elm.ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) + + if options.show_private_stuff: + self.private_group = self.item_append(self.itc_g, "Private Services", + flags=elm.ELM_GENLIST_ITEM_GROUP) + self.private_group.select_mode_set(elm.ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) # populate the genlist self.populate() @@ -295,7 +299,8 @@ class NamesList(Genlist): def clear(self): self.public_group.subitems_clear() - self.private_group.subitems_clear() + if options.show_private_stuff: + self.private_group.subitems_clear() def item_selected_cb(self, gl, item): name = item.data @@ -303,13 +308,13 @@ class NamesList(Genlist): def sort_cb(self, it1, it2): return 1 if it1.data.lower() < it2.data.lower() else -1 - def service_add(self, name): # print("service_add('%s')" % name) if name.startswith(":"): - self.item_sorted_insert(self.itc, name, self.sort_cb, - self.private_group, 0, None) + if options.show_private_stuff: + self.item_sorted_insert(self.itc, name, self.sort_cb, + self.private_group, 0, None) else: self.item_sorted_insert(self.itc, name, self.sort_cb, self.public_group, 0, None) @@ -364,6 +369,7 @@ class DetailList(Genlist): def __init__(self, parent): Genlist.__init__(self, parent) self._parent = parent + self.service_name = None self.itc = NodeItemClass() self.itc_g = ObjectItemClass() self.callback_expand_request_add(self.expand_request_cb) @@ -371,10 +377,9 @@ class DetailList(Genlist): self.callback_contract_request_add(self.contract_request_cb) self.callback_contracted_add(self.contracted_cb) self.callback_clicked_double_add(self.double_click_cb) - - + def populate(self, name): - print("populate: %s" % name) + self.service_name = name self.clear() # objects @@ -385,7 +390,7 @@ class DetailList(Genlist): # interfaces for iface in obj.interfaces: - if options.hide_introspect_stuff and \ + if not options.show_introspect_stuff and \ iface.name.startswith("org.freedesktop.DBus"): continue iface_item = self.item_append(self.itc, iface, @@ -457,8 +462,8 @@ class MethodRunner(Popup): en.scrollable = True en.single_line = True en.entry = '' - en.size_hint_weight = evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND - en.size_hint_align = evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL + en.size_hint_weight = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND + en.size_hint_align = EVAS_HINT_FILL, EVAS_HINT_FILL en.show() vbox.pack_end(en) @@ -477,8 +482,8 @@ class MethodRunner(Popup): en = Entry(parent) self._return_entry = en - en.size_hint_weight = evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND - en.size_hint_align = evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL + en.size_hint_weight = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND + en.size_hint_align = EVAS_HINT_FILL, EVAS_HINT_FILL en.editable = False en.scrollable = True en.disabled = True @@ -563,42 +568,62 @@ class MethodRunner(Popup): ### The main window class MyWin(StandardWindow): def __init__(self): - StandardWindow.__init__(self, "efl-dbus-spy", "EFL DBus Spy - Espionage") + StandardWindow.__init__(self, "espionage", "EFL DBus Spy - Espionage") self.autodel_set(True) self.callback_delete_request_add(lambda o: elm.exit()) bg = Background(self) self.resize_object_add(bg) - bg.size_hint_weight_set(evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND) + bg.size_hint_weight = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND bg.show() box = Box(self) self.resize_object_add(box) - box.size_hint_weight_set(evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND) + box.size_hint_weight = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND box.show() - - flip = FlipSelector(self) + + tb = Table(self) + box.pack_end(tb) + tb.show() + + lb = Label(self, text="Connect to:", scale=1.3) + tb.pack(lb, 0, 0, 1, 2) + lb.show() + + flip = FlipSelector(self, scale=1.3) flip.item_append("Session Bus", self.flip_selected_cb, session_bus) flip.item_append("System Bus", self.flip_selected_cb, system_bus) - box.pack_end(flip) + tb.pack(flip, 1, 0, 1, 2) flip.show() - + + chk = Check(self, text="Show private services") + chk.size_hint_align = 0.0, 1.0 + chk.state = options.show_private_stuff + chk.callback_changed_add(self.show_private_cb) + tb.pack(chk, 2, 0, 1, 1) + chk.show() + + chk = Check(self, text="Show DBus introspectables") + chk.size_hint_align = 0.0, 0.0 + chk.state = options.show_introspect_stuff + chk.callback_changed_add(self.show_introspectables_cb) + tb.pack(chk, 2, 1, 1, 1) + chk.show() + panes = Panes(self) - panes.size_hint_weight = (evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND) - panes.size_hint_align = (evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL) - # panes.content_left_size = 0.333 - # panes.fixed = True + panes.size_hint_weight = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND + panes.size_hint_align = EVAS_HINT_FILL, EVAS_HINT_FILL + panes.content_left_size = 1.0 / 3 box.pack_end(panes) + self.panes = panes panes.show() self.names_list = NamesList(self) panes.part_content_set("left", self.names_list) - self.names_list.show() self.detail_list = DetailList(self) panes.part_content_set("right", self.detail_list) - self.detail_list.show() self.resize(700, 500) self.show() @@ -611,6 +636,15 @@ class MyWin(StandardWindow): self.names_list.clear() self.names_list.populate() + def show_private_cb(self, chk): + options.show_private_stuff = chk.state + self.names_list.delete() + self.names_list = NamesList(self) + self.panes.part_content_set("left", self.names_list) + + def show_introspectables_cb(self, chk): + options.show_introspect_stuff = chk.state + self.detail_list.populate(self.detail_list.service_name) def main(): elm.init() --