rimmed pushed a commit to branch master.

http://git.enlightenment.org/tools/eflete.git/commit/?id=535a69296b1063a95f9c082f52d6b4d47f00537c

commit 535a69296b1063a95f9c082f52d6b4d47f00537c
Author: Vitalii Vorobiov <vi.vorob...@samsung.com>
Date:   Fri Mar 18 14:59:50 2016 +0200

    property_demo_program: special property to show some program information
    
    Like which signal and source invoke this program to work, what kind
    of action does it make and so on...
---
 src/bin/Makefile.am                |   1 +
 src/bin/common/signals.h           |   4 +-
 src/bin/ui/property.c              |  45 ++++++++-
 src/bin/ui/property_demo_program.c | 191 +++++++++++++++++++++++++++++++++++++
 src/bin/ui/property_private.h      |   6 ++
 src/bin/ui/workspace/demo_group.h  |   3 +
 6 files changed, 246 insertions(+), 4 deletions(-)

diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am
index b0e27be..141e05e 100644
--- a/src/bin/Makefile.am
+++ b/src/bin/Makefile.am
@@ -102,6 +102,7 @@ libete_a_SOURCES = \
 ../../src/bin/ui/property_sound.c \
 ../../src/bin/ui/property_style.c \
 ../../src/bin/ui/property_color.c \
+../../src/bin/ui/property_demo_program.c \
 ../../src/bin/ui/property_demo_swallow.c \
 ../../src/bin/ui/property_demo_text.c \
 ../../src/bin/ui/workspace/workspace.c \
diff --git a/src/bin/common/signals.h b/src/bin/common/signals.h
index c741554..0717f24 100644
--- a/src/bin/common/signals.h
+++ b/src/bin/common/signals.h
@@ -394,12 +394,12 @@ typedef struct {
 #define SIGNAL_DEMO_SWALLOW_PART_CLICKED "SIGNAL_DEMO_SWALLOW_PART_CLICKED"
 
 /**
- * emited when swallow part in demo is clicked.
+ * emited when program in demo is clicked.
  * eventinfo - NULL
  *
  * @ingroup Window
  */
-#define SIGNAL_DEMO_SWALLOW_PART_CLICKED "SIGNAL_DEMO_SWALLOW_PART_CLICKED"
+#define SIGNAL_DEMO_PROGRAM_PART_CLICKED "SIGNAL_DEMO_PROGRAM_PART_CLICKED"
 
 /**
  * emited when style/styles in style editor is/are selected.
diff --git a/src/bin/ui/property.c b/src/bin/ui/property.c
index 8f84420..dff690d 100644
--- a/src/bin/ui/property.c
+++ b/src/bin/ui/property.c
@@ -79,7 +79,8 @@ enum _Property_Type {
    STYLE_PROPERTY,
    COLOR_PROPERTY,
    DEMO_TEXT_PROPERTY,
-   DEMO_SWALLOW_PROPERTY
+   DEMO_SWALLOW_PROPERTY,
+   DEMO_PROGRAM_PROPERTY
 };
 typedef enum _Property_Type Property_Type;
 
@@ -92,6 +93,7 @@ struct _Prop_Data
    Evas_Object *color_property;
    Evas_Object *demo_text_property;
    Evas_Object *demo_swallow_property;
+   Evas_Object *demo_program_property;
    Evas_Object *colorclass_property;
    Evas_Object *layout;
 
@@ -119,6 +121,7 @@ _on_different_clicked(void *data,
    evas_object_hide(pd->color_property);
    evas_object_hide(pd->demo_text_property);
    evas_object_hide(pd->demo_swallow_property);
+   evas_object_hide(pd->demo_program_property);
 
    pd->type = PROPERTY;
 }
@@ -142,6 +145,7 @@ _on_image_editor_clicked(void *data,
    evas_object_hide(pd->color_property);
    evas_object_hide(pd->demo_text_property);
    evas_object_hide(pd->demo_swallow_property);
+   evas_object_hide(pd->demo_program_property);
    evas_object_show(pd->image_property);
 
    pd->type = IMAGE_PROPERTY;
@@ -166,6 +170,7 @@ _on_sound_editor_clicked(void *data,
    evas_object_hide(pd->color_property);
    evas_object_hide(pd->demo_text_property);
    evas_object_hide(pd->demo_swallow_property);
+   evas_object_hide(pd->demo_program_property);
    evas_object_show(pd->sound_property);
 
    pd->type = SOUND_PROPERTY;
@@ -190,6 +195,7 @@ _on_style_editor_clicked(void *data,
    evas_object_hide(pd->color_property);
    evas_object_hide(pd->demo_text_property);
    evas_object_hide(pd->demo_swallow_property);
+   evas_object_hide(pd->demo_program_property);
    evas_object_show(pd->style_property);
 
    pd->type = STYLE_PROPERTY;
@@ -212,6 +218,9 @@ _on_color_editor_clicked(void *data,
    evas_object_hide(pd->image_property);
    evas_object_hide(pd->sound_property);
    evas_object_hide(pd->style_property);
+   evas_object_hide(pd->demo_text_property);
+   evas_object_hide(pd->demo_swallow_property);
+   evas_object_hide(pd->demo_program_property);
    evas_object_show(pd->color_property);
 
    pd->type = STYLE_PROPERTY;
@@ -236,6 +245,7 @@ _on_text_part_clicked(void *data,
    evas_object_hide(pd->sound_property);
    evas_object_hide(pd->style_property);
    evas_object_hide(pd->demo_swallow_property);
+   evas_object_hide(pd->demo_program_property);
    evas_object_show(pd->demo_text_property);
 
    ui_property_demo_text_part_set(pd->demo_text_property, part);
@@ -262,6 +272,7 @@ _on_swallow_part_clicked(void *data,
    evas_object_hide(pd->sound_property);
    evas_object_hide(pd->style_property);
    evas_object_hide(pd->demo_text_property);
+   evas_object_hide(pd->demo_program_property);
    evas_object_show(pd->demo_swallow_property);
 
    ui_property_demo_swallow_part_set(pd->demo_swallow_property, part);
@@ -270,6 +281,33 @@ _on_swallow_part_clicked(void *data,
 }
 
 static void
+_on_demo_program_clicked(void *data,
+                         Evas_Object *obj __UNUSED__,
+                         void *event_info __UNUSED__)
+{
+   Evas_Object *property = data;
+   PROP_DATA_GET()
+   Demo_Part *part = (Demo_Part *) event_info;
+
+   assert(pd != NULL);
+
+   ui_property_group_unset(pd->group_property);
+   elm_object_content_unset(pd->layout);
+   elm_object_content_set(pd->layout, pd->demo_swallow_property);
+   evas_object_hide(pd->group_property);
+   evas_object_hide(pd->image_property);
+   evas_object_hide(pd->sound_property);
+   evas_object_hide(pd->style_property);
+   evas_object_hide(pd->demo_text_property);
+   evas_object_hide(pd->demo_swallow_property);
+   evas_object_show(pd->demo_program_property);
+
+   ui_property_demo_swallow_part_set(pd->demo_swallow_property, part);
+
+   pd->type = DEMO_PROGRAM_PROPERTY;
+}
+
+static void
 _on_tab_changed(void *data,
                 Evas_Object *obj __UNUSED__,
                 void *event_info)
@@ -297,7 +335,7 @@ _on_tab_changed(void *data,
        pd->type == SOUND_PROPERTY ||
        pd->type == COLOR_PROPERTY ||
        pd->type == PROPERTY || pd->type == DEMO_TEXT_PROPERTY ||
-       pd->type == DEMO_SWALLOW_PROPERTY)
+       pd->type == DEMO_SWALLOW_PROPERTY || pd->type == DEMO_PROGRAM_PROPERTY)
      {
         elm_object_content_unset(pd->layout);
         elm_object_content_set(pd->layout, pd->group_property);
@@ -308,6 +346,7 @@ _on_tab_changed(void *data,
         evas_object_hide(pd->color_property);
         evas_object_hide(pd->demo_text_property);
         evas_object_hide(pd->demo_swallow_property);
+        evas_object_hide(pd->demo_program_property);
      }
 
    //evas_object_hide(elm_object_content_unset(pd->layout));
@@ -347,6 +386,7 @@ ui_property_add(Evas_Object *parent)
    pd->color_property = ui_property_color_add(pd->layout);
    pd->demo_text_property = ui_property_demo_text_add(pd->layout);
    pd->demo_swallow_property = ui_property_demo_swallow_add(pd->layout);
+   pd->demo_program_property = ui_property_demo_program_add(pd->layout);
    /* register global callbacks */
    evas_object_smart_callback_add(ap.win, SIGNAL_TAB_CHANGED, _on_tab_changed, 
pd->layout);
    evas_object_smart_callback_add(ap.win, SIGNAL_IMAGE_EDITOR_TAB_CLICKED, 
_on_image_editor_clicked, pd->layout);
@@ -355,6 +395,7 @@ ui_property_add(Evas_Object *parent)
    evas_object_smart_callback_add(ap.win, SIGNAL_COLOR_EDITOR_TAB_CLICKED, 
_on_color_editor_clicked, pd->layout);
    evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_TEXT_PART_CLICKED, 
_on_text_part_clicked, pd->layout);
    evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_SWALLOW_PART_CLICKED, 
_on_swallow_part_clicked, pd->layout);
+   evas_object_smart_callback_add(ap.win, SIGNAL_DEMO_PROGRAM_PART_CLICKED, 
_on_demo_program_clicked, pd->layout);
    evas_object_smart_callback_add(ap.win, SIGNAL_DIFFERENT_TAB_CLICKED, 
_on_different_clicked, pd->layout);
 
    return pd->layout;
diff --git a/src/bin/ui/property_demo_program.c 
b/src/bin/ui/property_demo_program.c
new file mode 100644
index 0000000..d6cebca
--- /dev/null
+++ b/src/bin/ui/property_demo_program.c
@@ -0,0 +1,191 @@
+/*
+ * Edje Theme Editor
+ * Copyright (C) 2013-2014 Samsung Electronics.
+ *
+ * This file is part of Edje Theme Editor.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; If not, see www.gnu.org/licenses/lgpl.html.
+ */
+
+#include "property_private.h"
+#include "property_macros.h"
+#include "main_window.h"
+#include "history.h"
+#include "validator.h"
+#include "colorsel.h"
+#include "project_manager.h"
+
+#define DEMO_PROGRAM_PROP_DATA "program_prop_data"
+
+#define DEMO_PROGRAM_PROP_DATA_GET() \
+   assert(property != NULL); \
+   Demo_Program_Prop_Data *pd = evas_object_data_get(property, 
DEMO_PROGRAM_PROP_DATA); \
+   assert(pd != NULL);
+
+struct _Demo_Program_Prop_Data
+{
+   Evas_Object *box;
+
+   Evas_Object *scroller;
+   Evas_Object *frame;
+   Evas_Object *name;
+
+   Evas_Object *signal;
+   Evas_Object *source;
+   Evas_Object *action;
+   Evas_Object *signal_name;
+   Evas_Object *emitter;
+
+   Demo_Signal *part;
+};
+typedef struct _Demo_Program_Prop_Data Demo_Program_Prop_Data;
+
+static const char *program_actions[] = {
+     N_("NONE"),
+     N_("STATE SET"),
+     N_("SIGNAL EMIT"),
+     N_("DRAG VALUE SET"),
+     N_("DRAG VALUE STEP"),
+     N_("DRAG VALUE PAGE"),
+     N_("PLAY SAMPLE"),
+     N_("PLAY TONE"),
+     N_("ACTION STOP"),
+     NULL
+};
+
+static Evas_Object *
+prop_item_label_add(Evas_Object *parent,
+                    Evas_Object **label,
+                    const char *lab_text,
+                    const char *text)
+{
+   assert(parent != NULL);
+   assert(label != NULL);
+
+   PROPERTY_ITEM_ADD(parent, lab_text, "1swallow")
+   LABEL_ADD(item, *label, text)
+   elm_object_part_content_set(item, "elm.swallow.content", *label);
+   return item;
+}
+
+void
+ui_property_demo_program_set(Evas_Object *property, Demo_Signal *part)
+{
+   DEMO_PROGRAM_PROP_DATA_GET()
+
+   /* setting */
+   if (part)
+     {
+        elm_object_text_set(pd->signal, part->prog_name);
+        elm_object_text_set(pd->source, part->sig_name);
+
+        switch (part->action)
+          {
+           case EDJE_ACTION_TYPE_NONE:
+              elm_object_text_set(pd->action, program_actions[0]);
+              break;
+           case EDJE_ACTION_TYPE_STATE_SET:
+              elm_object_text_set(pd->action, program_actions[1]);
+              break;
+           case EDJE_ACTION_TYPE_SIGNAL_EMIT:
+              elm_object_text_set(pd->action, program_actions[2]);
+              break;
+           case EDJE_ACTION_TYPE_DRAG_VAL_SET:
+              elm_object_text_set(pd->action, program_actions[3]);
+              break;
+           case EDJE_ACTION_TYPE_DRAG_VAL_STEP:
+              elm_object_text_set(pd->action, program_actions[4]);
+              break;
+           case EDJE_ACTION_TYPE_DRAG_VAL_PAGE:
+              elm_object_text_set(pd->action, program_actions[5]);
+              break;
+           case EDJE_ACTION_TYPE_SOUND_SAMPLE:
+              elm_object_text_set(pd->action, program_actions[6]);
+              break;
+           case EDJE_ACTION_TYPE_SOUND_TONE:
+              elm_object_text_set(pd->action, program_actions[7]);
+              break;
+           case EDJE_ACTION_TYPE_ACTION_STOP:
+              elm_object_text_set(pd->action, program_actions[8]);
+              break;
+           default:
+              elm_object_text_set(pd->action, program_actions[0]);
+              break;
+          }
+        if (part->action == EDJE_ACTION_TYPE_SIGNAL_EMIT)
+          {
+             elm_object_text_set(pd->signal_name, part->emit_signal);
+             elm_object_text_set(pd->emitter, part->emitter);
+          }
+        else
+          {
+             elm_object_text_set(pd->signal_name, _(" - "));
+             elm_object_text_set(pd->emitter, _(" - "));
+          }
+     }
+   else
+     {
+        elm_object_text_set(pd->signal, _(" - "));
+        elm_object_text_set(pd->source, _(" - "));
+        elm_object_text_set(pd->action, _(" - "));
+        elm_object_text_set(pd->signal_name, _(" - "));
+        elm_object_text_set(pd->emitter, _(" - "));
+     }
+
+   pd->part = part;
+
+   /* showing */
+   evas_object_show(property);
+}
+
+Evas_Object *
+ui_property_demo_program_add(Evas_Object *parent)
+{
+   Demo_Program_Prop_Data *pd;
+   Evas_Object *item, *scroller, *box;
+
+   assert(parent != NULL);
+
+   pd = mem_calloc(1, sizeof(Demo_Program_Prop_Data));
+
+   SCROLLER_ADD(parent, scroller);
+   BOX_ADD(scroller, box, false, false);
+   elm_box_align_set(box, 0.5, 0.0);
+   elm_object_content_set(scroller, box);
+   pd->scroller = scroller;
+   elm_scroller_policy_set(pd->scroller, ELM_SCROLLER_POLICY_OFF, 
ELM_SCROLLER_POLICY_OFF);
+
+   evas_object_data_set(pd->scroller, DEMO_PROGRAM_PROP_DATA, pd);
+   /* editors */
+   FRAME_ADD(box, pd->frame, true, _("Demo Program Property"))
+   elm_box_pack_end(box, pd->frame);
+   BOX_ADD(parent, pd->box, false, false);
+   elm_box_align_set(pd->box, 0.5, 0.0);
+   evas_object_hide(pd->box);
+
+   /* Frame with info */
+   elm_box_align_set(pd->box, 0.5, 0.0);
+   item = prop_item_label_add(pd->box, &pd->signal, _("signal"), _(" - "));
+   elm_box_pack_end(pd->box, item);
+   item = prop_item_label_add(pd->box, &pd->source, _("source"), _(" - "));
+   elm_box_pack_end(pd->box, item);
+   item = prop_item_label_add(pd->box, &pd->action, _("action"), _(" - "));
+   elm_box_pack_end(pd->box, item);
+   item = prop_item_label_add(pd->box, &pd->signal_name, _("emit signal"), _(" 
- "));
+   elm_box_pack_end(pd->box, item);
+   item = prop_item_label_add(pd->box, &pd->emitter, _("emitter"), _(" - "));
+
+   elm_object_content_set(pd->frame, pd->box);
+
+   return pd->scroller;
+}
diff --git a/src/bin/ui/property_private.h b/src/bin/ui/property_private.h
index 7294377..0260a8a 100644
--- a/src/bin/ui/property_private.h
+++ b/src/bin/ui/property_private.h
@@ -75,4 +75,10 @@ ui_property_demo_swallow_add(Evas_Object *parent);
 void
 ui_property_demo_swallow_part_set(Evas_Object *property, Demo_Part *part);
 
+Evas_Object *
+ui_property_demo_program_add(Evas_Object *parent);
+
+void
+ui_property_demo_program_set(Evas_Object *property, Demo_Signal *part);
+
 #endif /* UI_PROPERTY_1_H */
diff --git a/src/bin/ui/workspace/demo_group.h 
b/src/bin/ui/workspace/demo_group.h
index b181a4e..c999c0a 100644
--- a/src/bin/ui/workspace/demo_group.h
+++ b/src/bin/ui/workspace/demo_group.h
@@ -87,6 +87,9 @@ struct Demo_Signal_
    Eina_Stringshare *prog_name;
    Eina_Stringshare *sig_name;
    Eina_Stringshare *source_name;
+   Eina_Stringshare *emit_signal;
+   Eina_Stringshare *emitter;
+   Edje_Action_Type action;
 };
 
 /**

-- 


Reply via email to