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);

-- 


Reply via email to