kuuko pushed a commit to branch master.
commit 926c7c50824a3ebe302b1775a5d5231e7d318e0a
Author: Kai Huuhko <[email protected]>
Date: Mon Apr 15 08:35:42 2013 +0000
Elementary: Make the config test to be the same as in elementary_test.
---
examples/elementary/test.py | 2 +
examples/elementary/test_config.py | 377 ++++++++++++++++++++++++++++++++++++-
2 files changed, 373 insertions(+), 6 deletions(-)
diff --git a/examples/elementary/test.py b/examples/elementary/test.py
index 39619f6..2a8bdb7 100755
--- a/examples/elementary/test.py
+++ b/examples/elementary/test.py
@@ -27,6 +27,7 @@ from test_calendar import calendar_clicked
from test_check import check_clicked
from test_clock import clock_clicked
from test_colorselector import colorselector_clicked
+from test_config import config_clicked
from test_core_evas_object_callbacks import core_evas_object_callbacks_clicked
from test_core_evas_canvas_callbacks import core_evas_canvas_callbacks_clicked
from test_core_evas_objects import core_evas_objects_clicked
@@ -165,6 +166,7 @@ items = [
("Gengrid", gengrid_clicked),
]),
("Miscellaneous", [
+ ("Configuration", config_clicked),
("Floating Objects", floating_clicked),
]),
("Naviframe", [
diff --git a/examples/elementary/test_config.py
b/examples/elementary/test_config.py
index eb487cb..bb58d07 100644
--- a/examples/elementary/test_config.py
+++ b/examples/elementary/test_config.py
@@ -2,14 +2,379 @@
# encoding: utf-8
from efl import elementary
+from efl.elementary.window import StandardWindow, Window,
ELM_WIN_INLINED_IMAGE, \
+ ELM_WIN_SOCKET_IMAGE
+from efl.elementary.button import Button
+from efl.elementary.label import Label
+from efl.elementary.radio import Radio
+from efl.elementary.check import Check
+from efl.elementary.scroller import Scroller
+from efl.elementary.box import Box
+from efl.elementary.frame import Frame
+from efl.elementary.plug import Plug
+from efl.elementary.configuration import Configuration
+elm_conf = Configuration()
-def config_clicked(obj):
- # TODO: Write a better test!
- c = elementary.Configuration()
- for i in (c.engine, c.finger_size, c.mirrored, c.profile_list,
c.font_overlay_list, c.text_classes_list):
- print(i)
- print((elementary.config_finger_size_get()))
+from efl.evas import EVAS_HINT_FILL, EVAS_HINT_EXPAND
+
+class Prof_Data(object):
+ rdg = None
+ cks = []
+ profile = None
+ available_profiles = []
+ count = None
+
+class App_Data(object):
+ win = None
+ profiles = []
+ curr = Prof_Data()
+ new = Prof_Data()
+
+MAX_PROFILES = 20
+
+def LOG(win, m):
+ lb = Label(win)
+ lb.text = m
+ lb.size_hint_weight = 0.0, 0.0
+ lb.size_hint_align = EVAS_HINT_FILL, EVAS_HINT_FILL
+ lb.show()
+ return lb
+
+def profile_update(win):
+ lb = win.data["lb"]
+
+ profile = win.profile
+ lb.text = "Profile: <b>{0}</b><br/>Available profiles: <b>{1}</b>".format(
+ profile,
+ ", ".join(win.available_profiles)
+ )
+
+def bt_profile_set(obj, *args, **kwargs):
+ win = args[0]
+ ad = win.data["ad"]
+ rd = ad.curr.rdg.selected_object
+ profile = rd.text
+ if profile == "Nothing":
+ ad.win.profile = profile
+ else:
+ ad.win.profile = None
+ profile_update(ad.win)
+
+def bt_available_profiles_set(obj, *args, **kwargs):
+ win = args[0]
+ ad = win.data["ad"]
+
+ a_profs = []
+
+ for o in ad.curr.cks:
+ if o.state:
+ profile = o.data["profile"]
+ if profile:
+ a_profs.append(profile)
+
+ ad.curr.available_profiles = a_profs
+
+ ad.win.available_profiles = ad.curr.available_profiles
+ profile_update(ad.win)
+
+def bt_win_add(obj, *args, **kwargs):
+ win = args[0]
+ ad = win.data["ad"]
+ rd = ad.new.rdg.selected
+ profile = rd.text
+
+ if profile == "Nothing":
+ ad.new.profile = profile
+
+ for o in ad.new.cks:
+ if o.state:
+ profile = o.data["profile"]
+ if profile:
+ ad.new.available_profiles[i] = profile
+
+ config_clicked(None, ad.new)
+
+def win_profile_changed_cb(obj, *args, **kwargs):
+ profile_update(obj)
+
+def win_del_cb(win, *args, **kwargs):
+ ad = win.data["ad"]
+
+ #elm_config_profile_list_free(ad->profiles);
+ #ad->profiles = NULL;
+
+ for o in ad.curr.cks:
+ del o.data["profile"]
+
+ for o in ad.new.cks:
+ del o.data["profile"]
+
+def radio_add(win, bx):
+ ad = win.data["ad"]
+
+ i = 0
+
+ bx2 = Box(win)
+ bx2.size_hint_weight = EVAS_HINT_EXPAND, 0.0
+ bx2.size_hint_align = EVAS_HINT_FILL, 0.0
+ bx2.align = 0.0, 0.5
+ bx2.horizontal = True
+ bx.pack_end(bx2)
+ bx2.show()
+
+ rdg = rd = Radio(win)
+ rd.state_value = i
+ rd.group_add(rdg)
+ rd.text = "Nothing"
+ rd.size_hint_weight = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND
+ bx2.pack_end(rd)
+ rd.show()
+ i += 1
+
+ for profile in ad.profiles:
+ rd = Radio(win)
+ rd.state_value = i
+ rd.group_add(rdg)
+ rd.text = profile
+ rd.size_hint_weight = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND
+ bx2.pack_end(rd)
+ rd.show()
+ i += 1
+
+ return rdg
+
+def check_add(win, bx):
+ ad = win.data["ad"]
+
+ bx2 = Box(win)
+ bx2.size_hint_weight = EVAS_HINT_EXPAND, 0.0
+ bx2.size_hint_align = EVAS_HINT_FILL, 0.0
+ bx2.align = 0.0, 0.5
+ bx2.horizontal = True
+ bx.pack_end(bx2)
+ bx2.show()
+
+ ll = []
+
+ for profile in ad.profiles:
+ ck = Check(win)
+ ck.text = profile
+ ck.data["profile"] = profile
+ ck.size_hint_weight = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND
+ bx2.pack_end(ck)
+ ck.show()
+
+ ll.append(ck)
+
+ return ll
+
+def inlined_add(parent):
+ win = Window("inlined", ELM_WIN_INLINED_IMAGE, parent)
+
+ bg = Background(win)
+ bg.color = 110, 210, 120
+ bg.size_hint_weight = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND
+ win.resize_object_add(bg)
+ bg.show()
+
+ bx = elm_box_add(win);
+ bx.size_hint_weight = EVAS_HINT_EXPAND, 0.0
+ bx.size_hint_align = EVAS_HINT_FILL, 0.0
+ bx.show()
+
+ lb = LOG(win, "ELM_WIN_INLINED_IMAGE")
+ bx.pack_end(lb)
+
+ lb = LOG(win, "Profile: <b>N/A</b>")
+ bx.pack_end(lb)
+ evas_object_data_set(win, "lb", lb);
+
+ win.pos = 10, 100
+ win.size = 150, 70
+ win.inlined_image_object.pos = 10, 100
+ win.inlined_image_object.size = 150, 70
+
+ win.callback_profile_changed_add(win_profile_changed_cb)
+ win.show()
+
+ return win
+
+def socket_add(name):
+ win = Window("socket image", ELM_WIN_SOCKET_IMAGE)
+
+ try:
+ win.socket_listen(name, 0, False)
+ except RuntimeError:
+ print("No socket")
+ win.delete()
+ return None
+ else:
+ win.autodel = True
+
+ bg = Background(win)
+ bg.color = 80, 110, 205
+ bg.size_hint_weight = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND
+ win.resize_object_add(bg)
+ bg.show()
+
+ bx = Box(win)
+ bx.size_hint_weight = EVAS_HINT_EXPAND, 0.0
+ bx.size_hint_align = EVAS_HINT_FILL, 0.0
+ bx.show()
+
+ lb = LOG(win, "ELM_WIN_SOCKET_IMAGE")
+ bx.pack_end(lb)
+
+ lb = LOG(win, "Profile: <b>N/A</b>")
+ bx.pack_end(lb)
+ evas_object_data_set(win, "lb", lb)
+
+ inlined_add(win)
+
+ win.pos = 0, 0
+ win.size = 150, 200
+
+ win.callback_profile_changed_add(win_profile_changed_cb)
+ win.show()
+ return win
+
+def plug_add(win, bx, name):
+ plug = Plug(win)
+
+ if plug.connect(name, 0, False):
+ ly = Layout(win)
+ ly.file = "test.edj", "win_config"
+ ly.size_hint_weight = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND
+ ly.size_hint_fill = EVAS_HINT_FILL, EVAS_HINT_FILL
+ ly.show()
+
+ plug.size_hint_weight = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND
+ bx.pack_end(ly)
+ ly.part_content_set("swallow", plug)
+ plug.show()
+ else:
+ print("No plug")
+ plug.delete()
+ return None
+
+ return plug
+
+def FRAME(win, bx, t):
+ fr = Frame(bx)
+ fr.text = t
+ fr.size_hint_weight = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND
+ fr.size_hint_align = EVAS_HINT_FILL, EVAS_HINT_FILL
+ bx.pack_end(fr)
+ fr.show()
+ bx2 = Box(win)
+ bx2.size_hint_weight = EVAS_HINT_EXPAND, 0.0
+ bx2.size_hint_align = EVAS_HINT_FILL, 0.0
+ bx2.align = 0.0, 0.5
+ fr.content = bx2
+ bx2.show()
+ return fr, bx2
+
+def config_clicked(obj, data=None):
+ siname = "_TestConfigSocketImage_"
+
+ win = StandardWindow("config", "Configuration")
+ win.autodel = True
+ global ad
+ ad = App_Data()
+ win.data["ad"] = ad
+ ad.win = win
+ ad.profiles = elm_conf.profile_list
+
+ sc = Scroller(win)
+ sc.bounce = False, True
+ sc.size_hint_weight = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND
+ win.resize_object_add(sc)
+
+ bx = Box(win)
+ bx.size_hint_weight = EVAS_HINT_EXPAND, 0.0
+ bx.size_hint_align = EVAS_HINT_FILL, EVAS_HINT_FILL
+ sc.content = bx
+
+ fr, bx2 = FRAME(win, bx, "Current window profile")
+ # TODO: Add this code
+ #ee = ecore_evas_ecore_evas_get(evas_object_evas_get(win));
+ #supported = ecore_evas_window_profile_supported_get(ee);
+ supported = True
+ buf = "Virtual desktop window profile support: <b>{0}</b>".format("Yes" if
supported else "No")
+ lb = LOG(win, buf)
+ bx2.pack_end(lb)
+
+ lb = LOG(win, "Profile: <b>N/A</b><br/>Available profiles:")
+ bx2.pack_end(lb)
+ win.data["lb"] = lb
+
+ lb = LOG(win, "<br/>Window profile")
+ bx2.pack_end(lb)
+ ad.curr.rdg = radio_add(win, bx2)
+
+ bt = Button(win)
+ bt.text = "Set"
+ bt.callback_clicked_add(bt_profile_set, win)
+ bx2.pack_end(bt)
+ bt.show()
+
+ lb = LOG(win, "Window available profiles")
+ bx2.pack_end(lb)
+ ad.curr.cks = check_add(win, bx2)
+
+ bt = Button(win)
+ bt.text = "Set"
+ bt.callback_clicked_add(bt_available_profiles_set, win)
+ bx2.pack_end(bt)
+ bt.show()
+
+ fr, bx2 = FRAME(win, bx, "Socket")
+ if socket_add(siname):
+ lb = LOG(win, "Starting socket image.")
+ bx2.pack_end(lb)
+ else:
+ lb = LOG(win, "Failed to create socket.<br/>Please check whether
another test configuration window is<br/>already running and providing socket
image.")
+ bx2.pack_end(lb)
+
+ fr, bx2 = FRAME(win, bx, "Plug")
+ if not plug_add(win, bx2, siname):
+ lb = LOG(win, "Failed to connect to server.")
+ bx2.pack_end(lb)
+
+ fr, bx2 = FRAME(win, bx, "Create new window with profile")
+ lb = LOG(win, "Window profile")
+ bx2.pack_end(lb)
+ ad.new.rdg = radio_add(win, bx2)
+
+ lb = LOG(win, "Window available profiles")
+ bx2.pack_end(lb)
+ ad.new.cks = check_add(win, bx2)
+
+ bt = Button(win)
+ bt.text = "Create"
+ bt.callback_clicked_add(bt_win_add, win)
+ bx2.pack_end(bt)
+ bt.show()
+
+ win.callback_profile_changed_add(win_profile_changed_cb)
+ win.callback_delete_request_add(win_del_cb)
+ if obj is None:
+ win.callback_delete_request_add(lambda o: elementary.exit())
+
+ if data:
+ if data.available_profiles:
+ win.available_profiles = data.available_profiles,
+ if data.profile:
+ win.profile = data.profile
+
+ profile_update(win)
+
+ bx.show()
+ sc.show()
+
+ win.size = 400, 500
+ win.show()
if __name__ == "__main__":
--
------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter