yakov pushed a commit to branch master.

http://git.enlightenment.org/tools/erigo.git/commit/?id=d8500eb65703ad93a3ac1c0975f5d09fac342d10

commit d8500eb65703ad93a3ac1c0975f5d09fac342d10
Author: Yakov Goldberg <[email protected]>
Date:   Wed Mar 18 11:46:15 2015 +0200

    Check if GET function was implemented for PROPERTY
---
 src/bin/egui_gui/propview.c | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/src/bin/egui_gui/propview.c b/src/bin/egui_gui/propview.c
index 39e5eb3..38e1292 100644
--- a/src/bin/egui_gui/propview.c
+++ b/src/bin/egui_gui/propview.c
@@ -157,7 +157,26 @@ _prop_item_content_get(void *data, Evas_Object *obj 
EINA_UNUSED, const char *par
         it_data->prop = prop_create_for_op(it_data->op_desc);
         const Gui_Context *ctx = _active_context_get();
         Gui_Session *session = (Gui_Session *) 
gui_context_editor_session_get(ctx);
-        manager_widget_property_get(session, it_data->wdg, it_data->prop);
+
+        /* Check if get function is implemented for this property. */
+        Eolian_Function_Type func_type = db_op_desc_type_get(it_data->op_desc);
+        const Eolian_Class *f_klass = 
eolian_class_get_by_name(db_op_desc_class_name_get(it_data->op_desc));
+        const Eolian_Class *w_klass = 
eolian_class_get_by_name(wdg_class_name_get(it_data->wdg));
+
+        const char *func_name = db_op_desc_op_name_get(it_data->op_desc);
+
+        const Eolian_Function *func_id = 
eolian_class_function_get_by_name(f_klass, func_name, func_type);
+        Eina_Bool ret = eolian_function_is_implemented(func_id, func_type, 
w_klass);
+        if (ret)
+          {
+             manager_widget_property_get(session, it_data->wdg, it_data->prop);
+          }
+        else
+          {
+             ERR("Func: \"%s::%s\" was not implemented for class \"%s\"", 
eolian_class_name_get(f_klass),
+                                                                      
func_name,
+                                                                      
eolian_class_name_get(w_klass));
+          }
      }
 
    Evas_Object * it_box = _mempool_cache_data_get(fullname);

-- 


Reply via email to