hermet pushed a commit to branch master. http://git.enlightenment.org/tools/enventor.git/commit/?id=8e89c0f35774eaf801292658bc3eb42f3f72691f
commit 8e89c0f35774eaf801292658bc3eb42f3f72691f Author: ChunEon Park <her...@hermet.pe.kr> Date: Mon Aug 11 21:13:04 2014 +0900 console: new feature comes. This console box displays error messages. --- data/themes/default/layout_common.edc | 24 +++++++++++++++++ src/bin/Makefile.am | 3 ++- src/bin/base_gui.c | 30 ++++++++++++++------- src/bin/console.c | 23 ++++++++++++++++ src/bin/edj_viewer.c | 1 + src/bin/main.c | 4 +-- src/bin/panes.c | 50 ++++++++++++++++++++++++----------- src/include/Makefile.am | 3 ++- src/include/base_gui.h | 1 + src/include/common.h | 1 + src/include/panes.h | 1 + 11 files changed, 111 insertions(+), 30 deletions(-) diff --git a/data/themes/default/layout_common.edc b/data/themes/default/layout_common.edc index aa84b85..8ce166d 100644 --- a/data/themes/default/layout_common.edc +++ b/data/themes/default/layout_common.edc @@ -2050,6 +2050,19 @@ group { name: "main_layout"; rel2.to_y: "elm.swallow.statusbar"; } } + part { name: "error_alert"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + rel1.to_y: "elm.swallow.panes"; + rel2.to_y: "elm.swallow.panes"; + color: 0 0 0 0; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + color: 200 0 0 175; + } + } part { name: "elm.swallow.statusbar"; type: SWALLOW; scale: 1; @@ -2091,6 +2104,17 @@ group { name: "main_layout"; target: "elm.swallow.tools"; transition: DECELERATE 0.25; } + program { name: "alert_show"; + signal: "elm,state,alert,show"; + action: STATE_SET "visible" 0.0; + target: "error_alert"; + after: "alert_show2"; + } + program { name: "alert_show2"; + action: STATE_SET "default" 0.0; + target: "error_alert"; + transition: DECELERATE 1; + } } } diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am index 2044e01..3fcadbb 100644 --- a/src/bin/Makefile.am +++ b/src/bin/Makefile.am @@ -35,7 +35,8 @@ enventor_SOURCES = \ globals.c \ redoundo.c \ template.c \ - live_edit.c + live_edit.c \ + console.c enventor_LDADD = @ENVENTOR_LIBS@ enventor_LDFLAGS = $(LTLIBINTL) diff --git a/src/bin/base_gui.c b/src/bin/base_gui.c index 0cf4b6e..5e72a41 100644 --- a/src/bin/base_gui.c +++ b/src/bin/base_gui.c @@ -5,6 +5,7 @@ typedef struct base_s { Evas_Object *win; Evas_Object *layout; + Evas_Object *console; } base_data; static base_data *g_bd = NULL; @@ -133,10 +134,7 @@ base_console_toggle(Eina_Bool config) if (config) config_console_set(!config_console_get()); - if (config_console_get()) - elm_object_signal_emit(bd->layout, "elm,state,console,show", ""); - else - elm_object_signal_emit(bd->layout, "elm,state,console,hide", ""); + panes_editors_full_view(); } void @@ -152,11 +150,20 @@ err_noti_cb(void *data, const char *msg) { base_data *bd = data; - printf("%s\n", msg); - fflush(stdout); - - config_console_set(EINA_TRUE); + if (!config_console_get()) + { + base_editors_full_view(); + config_console_set(EINA_TRUE); + } elm_object_signal_emit(bd->layout, "elm,state,alert,show", ""); + console_text_set(bd->console, msg); +} + +void +base_console_reset(void) +{ + base_data *bd = g_bd; + console_text_set(bd->console, ""); } Eina_Bool @@ -197,12 +204,15 @@ base_gui_init(void) Evas_Object *panes = panes_init(layout); elm_object_part_content_set(layout, "elm.swallow.panes", panes); + //Console + Evas_Object *console = console_create(panes); + panes_console_set(console); + build_err_noti_cb_set(err_noti_cb, bd); bd->win = win; bd->layout = layout; - - base_console_toggle(EINA_FALSE); + bd->console = console; return EINA_TRUE; } diff --git a/src/bin/console.c b/src/bin/console.c new file mode 100644 index 0000000..ee606e5 --- /dev/null +++ b/src/bin/console.c @@ -0,0 +1,23 @@ +#include <Elementary.h> +#include "common.h" + +void +console_text_set(Evas_Object *console, const char *text) +{ + elm_entry_entry_set(console, text); +} + +Evas_Object * +console_create(Evas_Object *parent) +{ + Evas_Object *obj = elm_entry_add(parent); + elm_entry_scrollable_set(obj, EINA_TRUE); + elm_entry_editable_set(obj, EINA_FALSE); + elm_entry_line_wrap_set(obj, ELM_WRAP_WORD); + elm_object_focus_allow_set(obj, EINA_FALSE); + evas_object_size_hint_weight_set(obj, EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(obj, EVAS_HINT_FILL, EVAS_HINT_FILL); + + return obj; +} diff --git a/src/bin/edj_viewer.c b/src/bin/edj_viewer.c index c2b215f..57d1903 100644 --- a/src/bin/edj_viewer.c +++ b/src/bin/edj_viewer.c @@ -159,6 +159,7 @@ exe_del_event_cb(void *data, int type EINA_UNUSED, void *event) view_obj_min_update(vd->layout); view_part_highlight_set(vd, vd->part_name); dummy_obj_update(vd->layout); + base_console_reset(); vd->edj_reload_need = EINA_FALSE; diff --git a/src/bin/main.c b/src/bin/main.c index e3fe641..0a729b0 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -167,13 +167,13 @@ ctrl_func(app_data *ad, const char *key) //Full Console View if (!strcmp(key, "Up")) { - base_editors_full_view(); + base_console_full_view(); return ECORE_CALLBACK_DONE; } //Full Editors View if (!strcmp(key, "Down")) { - base_console_full_view(); + base_editors_full_view(); return ECORE_CALLBACK_DONE; } //Auto Indentation diff --git a/src/bin/panes.c b/src/bin/panes.c index 0601663..d755ee1 100644 --- a/src/bin/panes.c +++ b/src/bin/panes.c @@ -5,10 +5,10 @@ static const double TRANSIT_TIME = 0.25; typedef enum { - PANES_FULL_VIEW_LEFT, - PANES_FULL_VIEW_RIGHT, - PANES_FULL_VIEW_TOP, - PANES_FULL_VIEW_BOTTOM, + PANES_LIVE_VIEW_EXPAND, + PANES_TEXT_EDITOR_EXPAND, + PANES_EDITORS_EXPAND, + PANES_CONSOLE_EXPAND, PANES_SPLIT_VIEW } Panes_State; @@ -105,6 +105,8 @@ panes_v_full_view_cancel(panes_data *pd) elm_transit_go(transit); pd->vert.state = PANES_SPLIT_VIEW; + + config_console_set(EINA_TRUE); } void @@ -113,7 +115,7 @@ panes_text_editor_full_view(void) panes_data *pd = g_pd; //Revert state if the current state is full view right already. - if (pd->horiz.state == PANES_FULL_VIEW_RIGHT) + if (pd->horiz.state == PANES_TEXT_EDITOR_EXPAND) { panes_h_full_view_cancel(pd); return; @@ -131,7 +133,7 @@ panes_text_editor_full_view(void) elm_transit_duration_set(transit, TRANSIT_TIME); elm_transit_go(transit); - pd->horiz.state = PANES_FULL_VIEW_RIGHT; + pd->horiz.state = PANES_TEXT_EDITOR_EXPAND; } void @@ -140,7 +142,7 @@ panes_live_view_full_view(void) panes_data *pd = g_pd; //Revert state if the current state is full view left already. - if (pd->horiz.state == PANES_FULL_VIEW_LEFT) + if (pd->horiz.state == PANES_LIVE_VIEW_EXPAND) { panes_h_full_view_cancel(pd); return; @@ -158,16 +160,16 @@ panes_live_view_full_view(void) elm_transit_duration_set(transit, TRANSIT_TIME); elm_transit_go(transit); - pd->horiz.state = PANES_FULL_VIEW_LEFT; + pd->horiz.state = PANES_LIVE_VIEW_EXPAND; } void -panes_console_full_view(void) +panes_editors_full_view(void) { panes_data *pd = g_pd; //Revert state if the current state is full view bottom already. - if (pd->vert.state == PANES_FULL_VIEW_BOTTOM) + if (pd->vert.state == PANES_EDITORS_EXPAND) { panes_v_full_view_cancel(pd); return; @@ -184,16 +186,18 @@ panes_console_full_view(void) elm_transit_duration_set(transit, TRANSIT_TIME); elm_transit_go(transit); - pd->vert.state = PANES_FULL_VIEW_BOTTOM; + pd->vert.state = PANES_EDITORS_EXPAND; + + config_console_set(EINA_FALSE); } void -panes_editors_full_view(void) +panes_console_full_view(void) { panes_data *pd = g_pd; //Revert state if the current state is full view top already. - if (pd->vert.state == PANES_FULL_VIEW_TOP) + if (pd->vert.state == PANES_CONSOLE_EXPAND) { panes_v_full_view_cancel(pd); return; @@ -211,7 +215,7 @@ panes_editors_full_view(void) elm_transit_duration_set(transit, TRANSIT_TIME); elm_transit_go(transit); - pd->vert.state = PANES_FULL_VIEW_TOP; + pd->vert.state = PANES_CONSOLE_EXPAND; } void @@ -229,6 +233,13 @@ panes_live_view_set(Evas_Object *live_view) } void +panes_console_set(Evas_Object *console) +{ + panes_data *pd = g_pd; + elm_object_part_content_set(pd->vert.obj, "bottom", console); +} + +void panes_term(void) { panes_data *pd = g_pd; @@ -239,6 +250,8 @@ panes_term(void) Evas_Object * panes_init(Evas_Object *parent) { + const double DEFAULT_CONSOLE_SIZE = 0.3; + panes_data *pd = malloc(sizeof(panes_data)); if (!pd) { @@ -258,8 +271,8 @@ panes_init(Evas_Object *parent) pd->vert.obj = panes_v; pd->vert.state = PANES_SPLIT_VIEW; - pd->vert.last_size[0] = 0.5; - pd->vert.last_size[1] = 0.5; + pd->vert.last_size[0] = DEFAULT_CONSOLE_SIZE; + pd->vert.last_size[1] = DEFAULT_CONSOLE_SIZE; //Panes Horizontal Evas_Object *panes_h = elm_panes_add(parent); @@ -277,5 +290,10 @@ panes_init(Evas_Object *parent) pd->horiz.last_size[0] = 0.5; pd->horiz.last_size[1] = 0.5; + if (config_console_get()) + elm_panes_content_right_size_set(panes_v, DEFAULT_CONSOLE_SIZE); + else + elm_panes_content_right_size_set(panes_v, 0.0); + return panes_v; } diff --git a/src/include/Makefile.am b/src/include/Makefile.am index 14b6564..ae5f03c 100644 --- a/src/include/Makefile.am +++ b/src/include/Makefile.am @@ -27,4 +27,5 @@ EXTRA_DIST = common.h \ search.h \ redoundo.h \ template.h \ - live_edit.h + live_edit.h \ + console.h diff --git a/src/include/base_gui.h b/src/include/base_gui.h index e13e0b3..212447c 100644 --- a/src/include/base_gui.h +++ b/src/include/base_gui.h @@ -17,3 +17,4 @@ void base_console_toggle(Eina_Bool config); void base_live_view_set(Evas_Object *live_view); void base_text_editor_set(Evas_Object *text_editor); void base_gui_term(void); +void base_console_reset(void); diff --git a/src/include/common.h b/src/include/common.h index 387dd2c..7bc7002 100644 --- a/src/include/common.h +++ b/src/include/common.h @@ -35,5 +35,6 @@ typedef struct redoundo_s redoundo_data; #include "redoundo.h" #include "template.h" #include "live_edit.h" +#include "console.h" #endif diff --git a/src/include/panes.h b/src/include/panes.h index 6a7981b..d80cdbc 100644 --- a/src/include/panes.h +++ b/src/include/panes.h @@ -6,3 +6,4 @@ void panes_editors_full_view(void); void panes_console_full_view(void); void panes_live_view_set(Evas_Object *live_view); void panes_text_editor_set(Evas_Object *text_editor); +void panes_console_set(Evas_Object *console); --