rimmed pushed a commit to branch master.

http://git.enlightenment.org/tools/eflete.git/commit/?id=2f8feab095b9526637832ef32d8c4bc0da502914

commit 2f8feab095b9526637832ef32d8c4bc0da502914
Author: Vyacheslav Reutskiy <v.reuts...@samsung.com>
Date:   Fri Jan 15 11:28:59 2016 +0200

    property_group: reuse macro for create callbacks
    
    Change-Id: I95b2e58e647a08614f9cc187a6e201ec3d1fe0bc
---
 src/bin/ui/property_group.c | 132 ++++++++++++--------------------------------
 1 file changed, 34 insertions(+), 98 deletions(-)

diff --git a/src/bin/ui/property_group.c b/src/bin/ui/property_group.c
index 7ae7438..ff44c06 100644
--- a/src/bin/ui/property_group.c
+++ b/src/bin/ui/property_group.c
@@ -1477,104 +1477,56 @@ PROGRAMM_ATTR_1ENTRY(_("source"), program, source, 
program, NULL,
                      _("The source of signal"),
                      _("signal source is changed to '%s'"))
 
-static void
-_entry_program_state_change(void *data,
-                            Evas_Object *obj,
-                            void *ei __UNUSED__)
-{
-   Group_Prop_Data *pd = (Group_Prop_Data *)data;
-
-   if (!pd->change) pd->change = change_add(NULL);
-   const char *text = elm_entry_entry_get(obj);
-   char *value = elm_entry_markup_to_utf8(text);
-   editor_program_state_set(pd->group->edit_object, pd->change, true, 
pd->attributes.program.program, value);
-   evas_object_smart_callback_call(ap.win, SIGNAL_PROPERTY_ATTRIBUTE_CHANGED, 
NULL);
-   free(value);
-}
-
-static void
-_entry_program_state_activated(void *data,
-                               Evas_Object *obj __UNUSED__,
-                               void *ei __UNUSED__)
-{
-   Group_Prop_Data *pd = (Group_Prop_Data *)data;
+/* this dummy for make posible to reuse COMMON_ENTRY_CALLBACK */
+#define prop_program_state_update(PD)
 
-   if (!pd->change) return;
-   Eina_Stringshare * val = 
edje_edit_program_state_get(pd->group->edit_object, 
pd->attributes.program.program);
-   Eina_Stringshare *msg = eina_stringshare_printf(_("Program action changed 
to '%s'"), val);
-   change_description_set(pd->change, msg);
-   history_change_add(pd->group->history, pd->change);
-   pd->change = NULL;
-   eina_stringshare_del(msg);
-   eina_stringshare_del(val);
-}
-
-static void
-_spinner_program_value_start(void *data,
-                             Evas_Object *obj __UNUSED__,
-                             void *ei __UNUSED__)
-{
-   Group_Prop_Data *pd = (Group_Prop_Data *)data;
-
-   assert(pd->change == NULL);
+COMMON_ENTRY_CALLBACK(program, state, NULL, PROGRAM_ARGS, _("Program action 
state is changed to '%s'"))
+COMMON_SPINNER_CALLBACK(program, value, program, double, 1, PROGRAM_ARGS, 
_("Program action value is changed from %f to %f"))
 
-   elm_object_focus_set(obj, true); /* there are problems with unfocusing 
entry.
-                              elementary is too lazy to change focus in time */
-   pd->change = change_add(NULL);
-   pd->old_double_val = edje_edit_program_value_get(pd->group->edit_object, 
pd->attributes.program.program);
-}
-
-static void
-_spinner_program_value_stop(void *data,
-                            Evas_Object *obj __UNUSED__,
-                            void *ei __UNUSED__)
+static Evas_Object *
+_prop_action_state_add(Group_Prop_Data *pd, Evas_Object *parent, const char 
*title, const char *tooltip)
 {
-   Group_Prop_Data *pd = (Group_Prop_Data *)data;
-   Eina_Stringshare *msg;
+   Evas_Object *control;
 
-   assert(pd->change != NULL);
+   PROPERTY_ITEM_ADD(parent, title, "1swallow")
+   ENTRY_ADD(item, control, true);
+   elm_entry_entry_set(control, 
edje_edit_program_state_get(pd->group->edit_object, 
pd->attributes.program.program));
+   evas_object_smart_callback_add(control, "changed,user", 
_on_program_state_change, pd);
+   evas_object_smart_callback_add(control, "activated", 
_on_program_state_activated, pd);
+   evas_object_smart_callback_add(control, "unfocused", 
_on_program_state_activated, pd);
+   elm_object_tooltip_text_set(control, tooltip);
+   elm_layout_content_set(item, NULL, control);
 
-   double new_val = edje_edit_program_value_get(pd->group->edit_object, 
pd->attributes.program.program);
-   if (new_val != pd->old_double_val)
-     {
-        msg = eina_stringshare_printf(_("Propgram action value changed from %f 
to %f"), pd->old_double_val, new_val);
-        change_description_set(pd->change, msg);
-        eina_stringshare_del(msg);
-        history_change_add(pd->group->history, pd->change);
-     }
-   else
-     change_free(pd->change);
-   pd->change = NULL;
+   return item;
 }
 
-static void
-_spinner_program_value_change(void *data,
-                              Evas_Object *obj,
-                              void *ei __UNUSED__)
+static Evas_Object *
+_prop_action_value_add(Group_Prop_Data *pd, Evas_Object *parent, const char 
*title, const char *tooltip)
 {
-   Group_Prop_Data *pd = (Group_Prop_Data *)data;
+   Evas_Object *control;
+
+   PROPERTY_ITEM_ADD(parent, title, "2swallow")
+   SPINNER_ADD(item, control, 0.0, 1.0, 0.1, true);
+   elm_spinner_label_format_set(control, "%.2f");
+   elm_spinner_value_set(control, 
edje_edit_program_value_get(pd->group->edit_object, 
pd->attributes.program.program));
+   evas_object_smart_callback_add(control, "changed", 
_on_program_value_change, pd);
+   evas_object_smart_callback_add(control, "spinner,drag,start", 
_on_program_value_start, pd);
+   evas_object_smart_callback_add(control, "spinner,drag,stop", 
_on_program_value_stop, pd);
+   elm_object_tooltip_text_set(control, tooltip);
+   elm_layout_content_set(item, "swallow.content1", control);
 
-   double value = elm_spinner_value_get(obj);
-   if (!pd->change) _spinner_program_value_start(data, obj, ei);
-   if (!editor_program_value_set(pd->group->edit_object, pd->change, true, 
pd->attributes.program.program, value))
-     {
-        ERR("editor_program_value_set failed");
-        abort();
-     }
-   if (!pd->change) _spinner_program_value_stop(data, obj, ei);
-
-   evas_object_smart_callback_call(ap.win, SIGNAL_PROPERTY_ATTRIBUTE_CHANGED, 
NULL);
+   return item;
 }
 
 static void
 _program_action_param_set(Group_Prop_Data *pd, Edje_Action_Type type)
 {
-   Evas_Object *box, *item, *control;
+   Evas_Object *box, *item;
 
    elm_frame_collapse_set(pd->attributes.program.action_params, false);
    elm_object_disabled_set(pd->attributes.program.action_params, false);
 
-   
//evas_object_del(elm_object_content_get(pd->attributes.program.action_params));
+   
evas_object_del(elm_object_content_get(pd->attributes.program.action_params));
    BOX_ADD(pd->attributes.program.action_params, box, false, false)
    elm_box_align_set(box, 0.5, 0.0);
    elm_object_content_set(pd->attributes.program.action_params, box);
@@ -1582,26 +1534,10 @@ _program_action_param_set(Group_Prop_Data *pd, 
Edje_Action_Type type)
    switch (type)
      {
       case EDJE_ACTION_TYPE_STATE_SET:
-         LAYOUT_PROP_ADD(box, _("state name"), "property", "1swallow")
-         ENTRY_ADD(item, control, true);
-         elm_entry_entry_set(control, 
edje_edit_program_state_get(pd->group->edit_object, 
pd->attributes.program.program));
-         evas_object_smart_callback_add(control, "changed,user", 
_entry_program_state_change, pd);
-         evas_object_smart_callback_add(control, "activated", 
_entry_program_state_activated, pd);
-         evas_object_smart_callback_add(control, "unfocused", 
_entry_program_state_activated, pd);
-         elm_object_tooltip_text_set(control, "");
-         elm_layout_content_set(item, NULL, control);
+         item = _prop_action_state_add(pd, box, _("state name"), "");
          elm_box_pack_end(box, item);
-         LAYOUT_PROP_ADD(box, _("state value"), "property", "2swallow")
-         SPINNER_ADD(item, control, 0.0, 1.0, 0.1, true);
-         elm_spinner_label_format_set(control, "%.2f"); \
-         elm_spinner_value_set(control, 
edje_edit_program_value_get(pd->group->edit_object, 
pd->attributes.program.program));
-         evas_object_smart_callback_add(control, "changed", 
_spinner_program_value_change, pd);
-         evas_object_smart_callback_add(control, "spinner,drag,start", 
_spinner_program_value_start, pd);
-         evas_object_smart_callback_add(control, "spinner,drag,stop", 
_spinner_program_value_stop, pd);
-         elm_object_tooltip_text_set(control, "");
-         elm_layout_content_set(item, "swallow.content1", control);
+         item = _prop_action_value_add(pd, box, _("state value"), "");
          elm_box_pack_end(box, item);
-
          break;
       case EDJE_ACTION_TYPE_NONE:
       default:

-- 


Reply via email to