diff --git a/efl/utils/erigo.py b/efl/utils/erigo.py index ba7e8c6..37f6183 100644 --- a/efl/utils/erigo.py +++ b/efl/utils/erigo.py @@ -29,7 +29,13 @@ TODO - visibility (will be fixed in eo) * how to manage translations?? * what when we create the same widget more than one time ? + * Radio.group_add is not a property !! + * Widget that seems not usable in erigo itsef: + - Icon: how to set a standard icon? + - ActionSlider: how to configure it? + - Separator is missing + """ import os @@ -48,15 +54,22 @@ except NameError: KLASSES = { - 'Elm_Win': ('efl.elementary.window', 'Window'), + + 'Elm_Actionslider': ('efl.elementary.actionslider', 'Actionslider'), 'Elm_Bg': ('efl.elementary.background', 'Background'), 'Elm_Box': ('efl.elementary.box', 'Box'), 'Elm_Button': ('efl.elementary.button', 'Button'), + 'Elm_Clock': ('efl.elementary.clock', 'Clock'), + 'Elm_Check': ('efl.elementary.check', 'Check'), + 'Elm_Entry': ('efl.elementary.entry', 'Entry'), + 'Elm_Icon': ('efl.elementary.icon', 'Icon'), 'Elm_Image': ('efl.elementary.image', 'Image'), 'Elm_Label': ('efl.elementary.label', 'Label'), 'Elm_Layout': ('efl.elementary.layout', 'Layout'), 'Elm_Menu': ('efl.elementary.menu', 'Menu'), + 'Elm_Radio': ('efl.elementary.radio', 'Radio'), 'Elm_Table': ('efl.elementary.table', 'Table'), + 'Elm_Win': ('efl.elementary.window', 'Window'), } @@ -141,6 +154,9 @@ def _widget_generate(self, name, parent_name=None): p_vals = _params_list_parse(mod, p_vals) if p_name == 'file': p_vals = _resource_find(self, p_vals) + elif p_name == 'group_add': + w.group_add(self._widgets[p_vals[0]]) + continue if len(p_vals) == 1: setattr(w, p_name, p_vals[0]) else: diff --git a/examples/elementary/erigo_prj/test_gui.egui b/examples/elementary/erigo_prj/test_gui.egui index 2a55a5e..dae3889 100644 --- a/examples/elementary/erigo_prj/test_gui.egui +++ b/examples/elementary/erigo_prj/test_gui.egui @@ -17,7 +17,8 @@ { "btn5_clicked_cb_alias":"btn5_clicked_cb", "btn8_clicked_cb_alias":"btn8_clicked_cb", - "win2_btn_clicked_cb_alias":"win2_btn_clicked_cb" + "win2_btn_clicked_cb_alias":"win2_btn_clicked_cb", + "win2_radio_changed_alias":"win2_radio_changed_cb" } }, "Widgets": @@ -334,7 +335,7 @@ "Evas.Object.visibility":[true], "Evas.Object.size_hint_align":[-1, -1] }, - "Contains":["elm_label2", "elm_button7"] + "Contains":["elm_label2", "elm_button7", "elm_check1", "elm_check2", "elm_radio1", "elm_radio2", "elm_radio3", "elm_actionslider1", "elm_clock1", "elm_entry1"] }, "elm_label2": { @@ -514,6 +515,143 @@ { "clicked":["Modify", "elm_image1", "Efl.File.file", ["pyefl_logo", null]] } + }, + "elm_check1": + { + "Desc": + { + "parent":"elm_box2", + "class":"Elm_Check" + }, + "Properties": + { + "Evas.Object.size_hint_weight":[1, 1], + "Evas.Object.visibility":[true], + "Elm_Widget.part_text":[null, "Check One"] + }, + "Callbacks": + { + "changed":["Modify", "elm_check2", "Elm_Check.state", [true]] + } + }, + "elm_check2": + { + "Desc": + { + "parent":"elm_box2", + "class":"Elm_Check" + }, + "Properties": + { + "Evas.Object.size_hint_weight":[1, 1], + "Evas.Object.visibility":[true], + "Elm_Widget.part_text":[null, "Check Two"] + } + }, + "elm_radio1": + { + "Desc": + { + "parent":"elm_box2", + "class":"Elm_Radio" + }, + "Properties": + { + "Evas.Object.size_hint_weight":[1, 1], + "Evas.Object.visibility":[true], + "Elm_Widget.part_text":[null, "Radio One"], + "Elm_Radio.state_value":[1] + }, + "Callbacks": + { + "changed":["Invoke", "win2_radio_changed_alias", null] + } + }, + "elm_radio2": + { + "Desc": + { + "parent":"elm_box2", + "class":"Elm_Radio" + }, + "Properties": + { + "Evas.Object.size_hint_weight":[1, 1], + "Evas.Object.visibility":[true], + "Elm_Widget.part_text":[null, "Radio Two"], + "Elm_Radio.group_add":["elm_radio1"], + "Elm_Radio.state_value":[2] + }, + "Callbacks": + { + "changed":["Invoke", "win2_radio_changed_alias", null] + } + }, + "elm_radio3": + { + "Desc": + { + "parent":"elm_box2", + "class":"Elm_Radio" + }, + "Properties": + { + "Evas.Object.size_hint_weight":[1, 1], + "Evas.Object.visibility":[true], + "Elm_Widget.part_text":[null, "Radio Three"], + "Elm_Radio.group_add":["elm_radio1"], + "Elm_Radio.state_value":[3] + }, + "Callbacks": + { + "changed":["Invoke", "win2_radio_changed_alias", null] + } + }, + "elm_actionslider1": + { + "Desc": + { + "parent":"elm_box2", + "class":"Elm_Actionslider" + }, + "Properties": + { + "Evas.Object.size_hint_weight":[1, 1], + "Evas.Object.visibility":[true], + "Elm_Widget.part_text":[null, "slide"], + "Evas.Object.size_hint_align":[-1, 0.50] + } + }, + "elm_clock1": + { + "Desc": + { + "parent":"elm_box2", + "class":"Elm_Clock" + }, + "Properties": + { + "Evas.Object.size_hint_weight":[1, 1], + "Evas.Object.visibility":[true], + "Evas.Object.size":[40, 40] + } + }, + "elm_entry1": + { + "Desc": + { + "parent":"elm_box2", + "class":"Elm_Entry" + }, + "Properties": + { + "Evas.Object.size_hint_weight":[1, 1], + "Evas.Object.visibility":[true], + "Evas.Object.size_hint_align":[-1, 0.50], + "Elm_Entry.single_line":[true], + "Elm_Entry.scrollable":[true], + "Elm_Widget.part_text":["guide", "Editable entry"] + } } } } \ No newline at end of file diff --git a/examples/elementary/test_erigo.py b/examples/elementary/test_erigo.py index fb2ff49..6f5862b 100644 --- a/examples/elementary/test_erigo.py +++ b/examples/elementary/test_erigo.py @@ -26,6 +26,9 @@ class MyGui(ErigoGui): def win2_btn_clicked_cb(self, btn): print('USER CB INVOKED', btn) + def win2_radio_changed_cb(self, radio): + print('Radio changed, value: %s' % radio.state_value) + def erigo_clicked(obj): start_time = time.time()