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; }; /** --