Erigo: Implemented callbacks of -Modify- type

plus a fix for py3 and the test json updated
This commit is contained in:
Davide Andreoli 2015-01-22 23:22:32 +01:00
parent 2d2bbb1977
commit 14a070012d
2 changed files with 56 additions and 24 deletions

View File

@ -32,6 +32,11 @@ TODO
import importlib
import json
try:
basestring # py2
except NameError:
basestring = str # py3
###################################################################
## NOTE/TODO: importlib is only implemented from python 2.7
## From py-efl 1.14 we will need to rise py min version
@ -109,7 +114,7 @@ def _widget_generate(self, data, name):
if 'Properties' in w_data:
for eo_name, p_vals in w_data['Properties'].items():
p_name = eo_name.split('.')[-1]
if p_name == 'visibility':
if p_name == 'visibility': # TODO implement this property in Evas.Object
if p_vals[0] is True:
w.show()
elif p_name == 'constructor':
@ -147,6 +152,24 @@ def _widget_generate(self, data, name):
child = _widget_generate(self, data, c_name)
w.pack(child, x, y, rspan, cspan)
# callbacks
if 'Callbacks' in w_data:
for cb_name, cb_data in w_data['Callbacks'].items():
if cb_data[0] == 'Modify':
target_name, target_prop, values = cb_data[1:4]
target_prop = target_prop.split('.')[-1]
self._print('callback %s (Modify) %s.%s => %s' % \
(cb_name, target_name, target_prop, values))
w._callback_add(str(cb_name), _property_modify_cb,
self, target_name, target_prop, values)
elif cb_data[0] == 'Create':
print("TODO")
elif cb_data[0] == 'Invoke':
print("TODO")
return w
@ -167,11 +190,19 @@ def _params_list_parse(mod, params):
return [ _param_parse(mod, p) for p in params ]
def _param_parse(mod, p_value):
if isinstance(p_value, (unicode, str)):
if isinstance(p_value, basestring):
if p_value.startswith('ELM_'):
enum_val = getattr(mod, p_value, None)
if enum_val is not None:
return enum_val
return p_value
def _property_modify_cb(obj, self, widget_name, prop_name, values):
w = self._widgets[widget_name]
if prop_name == 'visibility': # TODO implement this property in Evas.Object
w.show() if values[0] is True else w.hide()
else:
if prop_name == 'file': # ARGHHHHHHHHHHH TODO FIXME
values = (values[0])
setattr(w, prop_name, values[0] if len(values) == 1 else values)

View File

@ -154,7 +154,7 @@
{
"elm_button2":[0, 0, 1, 1],
"elm_button3":[1, 1, 1, 1],
"elm_image1":[1, 0, 1, 1]
"elm_button4":[0, 1, 1, 1]
}
},
"elm_button2":
@ -167,9 +167,9 @@
"Properties":
{
"Evas.Object.visibility":[true],
"Elm_Widget.part_text":[null, "elm_button2"],
"Evas.Object.size_hint_weight":[1, 1],
"Evas.Object.color":[0, 255, 0, 255]
"Evas.Object.color":[0, 255, 0, 255],
"Elm_Widget.part_text":[null, "hide btn1"]
},
"Callbacks":
{
@ -186,32 +186,15 @@
"Properties":
{
"Evas.Object.visibility":[true],
"Elm_Widget.part_text":[null, "elm_button3"],
"Evas.Object.size_hint_weight":[1, 1],
"Evas.Object.color":[255, 255, 0, 255]
"Evas.Object.color":[255, 255, 0, 255],
"Elm_Widget.part_text":[null, "show btn1"]
},
"Callbacks":
{
"clicked":["Modify", "elm_button1", "Evas.Object.visibility", [true]]
}
},
"elm_image1":
{
"Desc":
{
"parent":"elm_table1",
"class":"Elm_Image"
},
"Properties":
{
"Elm_Widget.part_text":[null, "elm_image1"],
"Evas.Object.size_hint_weight":[1, 1],
"Evas.Object.visibility":[true],
"Efl.File.file":["logo", null],
"Evas.Object.size":[40, 40],
"Evas.Object.size_hint_align":[-1, -1]
}
},
"elm_label1":
{
"Desc":
@ -226,6 +209,24 @@
"Elm_Widget.part_text":[null, "Label"],
"Evas.Object.size_hint_weight":[1, 0]
}
},
"elm_button4":
{
"Desc":
{
"parent":"elm_table1",
"class":"Elm_Button"
},
"Properties":
{
"Evas.Object.size_hint_weight":[1, 1],
"Evas.Object.visibility":[true],
"Elm_Widget.part_text":[null, "modify btn1 text"]
},
"Callbacks":
{
"clicked":["Modify", "elm_button1", "Elm_Widget.part_text", [null, "Halo !"]]
}
}
}
}