hermet pushed a commit to branch master.

http://git.enlightenment.org/tools/enventor.git/commit/?id=04c35e5d8a2c671088818d286cf6cb1ab5ea0e76

commit 04c35e5d8a2c671088818d286cf6cb1ab5ea0e76
Author: Hermet <[email protected]>
Date:   Sat Feb 14 18:36:00 2015 +0900

    bin/console: add auto hiding function.
    
    this is for better intellegent console window.
    
    console will be hidden if any error messages are gone.
---
 src/bin/base_gui.c        | 28 ++++++++++++++++++++++++----
 src/bin/config_data.c     | 18 ++++++++++++++++++
 src/bin/main.c            |  1 +
 src/bin/panes.c           | 36 +++++++++++++++++++-----------------
 src/bin/setting.c         |  9 +++++++++
 src/include/base_gui.h    |  2 +-
 src/include/config_data.h |  2 ++
 src/include/panes.h       |  2 +-
 src/lib/enventor_smart.c  |  1 +
 9 files changed, 76 insertions(+), 23 deletions(-)

diff --git a/src/bin/base_gui.c b/src/bin/base_gui.c
index f7dc4f6..6f2b172 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;
+   Eina_Bool console_msg : 1;
 } base_data;
 
 static base_data *g_bd = NULL;
@@ -44,9 +45,10 @@ void
 base_error_msg_set(const char *msg)
 {
    base_data *bd = g_bd;
-   if (panes_editors_full_view_get()) base_editors_full_view();
    elm_object_signal_emit(bd->layout, "elm,state,alert,show", "");
    console_text_set(bd->console, msg);
+   panes_editors_full_view(EINA_FALSE);
+   bd->console_msg = EINA_TRUE;
 }
 
 void
@@ -131,7 +133,7 @@ base_enventor_full_view(void)
 void
 base_editors_full_view(void)
 {
-   panes_editors_full_view();
+   base_console_toggle();
 }
 
 void
@@ -147,9 +149,22 @@ base_live_view_set(Evas_Object *live_view)
 }
 
 void
-base_console_toggle()
+base_console_auto_hide(void)
 {
-   panes_editors_full_view();
+   base_data *bd = g_bd;
+
+   if (!config_console_get()) return;
+   if (bd->console_msg) return;
+   panes_editors_full_view(EINA_TRUE);
+}
+
+void
+base_console_toggle(void)
+{
+   if (panes_editors_full_view_get())
+     panes_editors_full_view(EINA_FALSE);
+   else
+     panes_editors_full_view(EINA_TRUE);
 }
 
 void
@@ -165,6 +180,8 @@ base_console_reset(void)
 {
    base_data *bd = g_bd;
    console_text_set(bd->console, "");
+   bd->console_msg = EINA_FALSE;
+   if (config_console_get()) panes_editors_full_view(EINA_TRUE);
 }
 
 Eina_Bool
@@ -216,6 +233,9 @@ base_gui_init(void)
    Evas_Object *console = console_create(panes);
    panes_console_set(console);
 
+   if (config_console_get())
+     panes_editors_full_view(EINA_TRUE);
+
    bd->win = win;
    bd->layout = layout;
    bd->console = console;
diff --git a/src/bin/config_data.c b/src/bin/config_data.c
index 9259ad8..445d8bc 100644
--- a/src/bin/config_data.c
+++ b/src/bin/config_data.c
@@ -31,6 +31,7 @@ typedef struct config_s
    Eina_Bool dummy_swallow;
    Eina_Bool auto_indent;
    Eina_Bool tools;
+   Eina_Bool console;
    Eina_Bool auto_complete;
    Eina_Bool live_edit;
    Eina_Bool view_size_configurable;
@@ -150,6 +151,7 @@ config_load(void)
         cd->dummy_swallow = EINA_TRUE;
         cd->auto_indent = EINA_TRUE;
         cd->tools = EINA_TRUE;
+        cd->console = EINA_TRUE;
         cd->auto_complete = EINA_TRUE;
         cd->live_edit = EINA_FALSE;
         cd->view_size_configurable = EINA_FALSE;
@@ -243,6 +245,8 @@ eddc_init(void)
                                  auto_indent, EET_T_UCHAR);
    EET_DATA_DESCRIPTOR_ADD_BASIC(edd_base, config_data, "tools",
                                  tools, EET_T_UCHAR);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(edd_base, config_data, "console",
+                                 console, EET_T_UCHAR);
    EET_DATA_DESCRIPTOR_ADD_BASIC(edd_base, config_data, "auto_complete",
                                     auto_complete, EET_T_UCHAR);
    EET_DATA_DESCRIPTOR_ADD_BASIC(edd_base, config_data,
@@ -783,6 +787,20 @@ config_win_size_get(Evas_Coord *w, Evas_Coord *h)
 }
 
 Eina_Bool
+config_console_get(void)
+{
+   config_data *cd = g_cd;
+   return cd->console;
+}
+
+void
+config_console_set(Eina_Bool enabled)
+{
+   config_data *cd = g_cd;
+   cd->console = enabled;
+}
+
+Eina_Bool
 config_tools_get(void)
 {
    config_data *cd = g_cd;
diff --git a/src/bin/main.c b/src/bin/main.c
index 1c1878c..855cad7 100644
--- a/src/bin/main.c
+++ b/src/bin/main.c
@@ -197,6 +197,7 @@ config_update_cb(void *data)
 
    base_tools_toggle(EINA_FALSE);
    base_statusbar_toggle(EINA_FALSE);
+   base_console_auto_hide();
 
    //previous build was failed, Need to rebuild then reload the edj.
 #if 0
diff --git a/src/bin/panes.c b/src/bin/panes.c
index a65e1f1..fac705e 100644
--- a/src/bin/panes.c
+++ b/src/bin/panes.c
@@ -63,6 +63,7 @@ v_unpress_cb(void *data, Evas_Object *obj, void *event_info 
EINA_UNUSED)
 
    double origin = elm_panes_content_right_size_get(pd->vert.obj);
    if (origin == 0.0) pd->vert.state = PANES_EDITORS_EXPAND;
+   else pd->vert.state = PANES_SPLIT_VIEW;
 }
 
 static void
@@ -180,29 +181,30 @@ panes_editors_full_view_get(void)
 }
 
 void
-panes_editors_full_view(void)
+panes_editors_full_view(Eina_Bool full_view)
 {
    panes_data *pd = g_pd;
 
-   //Revert state if the current state is full view bottom already.
-   if (pd->vert.state == PANES_EDITORS_EXPAND)
+   if (full_view)
      {
-        panes_v_full_view_cancel(pd);
-        return;
-     }
-   double origin = elm_panes_content_right_size_get(pd->vert.obj);
-   if (origin == 0.0) return;
-
-   pd->vert.origin = origin;
-   pd->vert.delta = 0.0 - pd->vert.origin;
+        if (pd->vert.state == PANES_EDITORS_EXPAND) return;
+        pd->vert.origin = elm_panes_content_right_size_get(pd->vert.obj);
+        pd->vert.delta = 0.0 - pd->vert.origin;
 
-   Elm_Transit *transit = elm_transit_add();
-   elm_transit_effect_add(transit, transit_op_v, pd, NULL);
-   elm_transit_tween_mode_set(transit, ELM_TRANSIT_TWEEN_MODE_DECELERATE);
-   elm_transit_duration_set(transit, TRANSIT_TIME);
-   elm_transit_go(transit);
+        Elm_Transit *transit = elm_transit_add();
+        elm_transit_effect_add(transit, transit_op_v, pd, NULL);
+        elm_transit_tween_mode_set(transit, ELM_TRANSIT_TWEEN_MODE_DECELERATE);
+        elm_transit_duration_set(transit, TRANSIT_TIME);
+        elm_transit_go(transit);
 
-   pd->vert.state = PANES_EDITORS_EXPAND;
+        pd->vert.state = PANES_EDITORS_EXPAND;
+     }
+   else
+     {
+        //Revert state if the current state is full view bottom already.
+        if (pd->vert.state == PANES_SPLIT_VIEW) return;
+        panes_v_full_view_cancel(pd);
+     }
 }
 
 void
diff --git a/src/bin/setting.c b/src/bin/setting.c
index 9ead3fc..64c27cd 100644
--- a/src/bin/setting.c
+++ b/src/bin/setting.c
@@ -22,6 +22,7 @@ struct setting_s
    Evas_Object *toggle_swallow;
    Evas_Object *toggle_stats;
    Evas_Object *toggle_tools;
+   Evas_Object *toggle_console;
 
    Evas_Object *apply_btn;
    Evas_Object *reset_btn;
@@ -117,6 +118,7 @@ setting_apply_btn_cb(void *data, Evas_Object *obj 
EINA_UNUSED,
    config_edc_dat_path_set(elm_object_text_get(sd->dat_path_entry));
    config_view_scale_set(elm_slider_value_get(sd->slider_view));
    config_tools_set(elm_check_state_get(sd->toggle_tools));
+   config_console_set(elm_check_state_get(sd->toggle_console));
    config_stats_bar_set(elm_check_state_get(sd->toggle_stats));
    config_part_highlight_set(elm_check_state_get(sd->toggle_highlight));
    config_dummy_swallow_set(elm_check_state_get(sd->toggle_swallow));
@@ -158,6 +160,7 @@ setting_reset_btn_cb(void *data EINA_UNUSED, Evas_Object 
*obj EINA_UNUSED,
 
    elm_slider_value_set(sd->slider_view, (double) config_view_scale_get());
 
+   elm_check_state_set(sd->toggle_console, config_console_get());
    elm_check_state_set(sd->toggle_tools, config_tools_get());
    elm_check_state_set(sd->toggle_stats, config_stats_bar_get());
    elm_check_state_set(sd->toggle_highlight, config_part_highlight_get());
@@ -385,6 +388,11 @@ general_layout_create(setting_data *sd, Evas_Object 
*parent)
                                              config_tools_get());
    elm_box_pack_end(box, toggle_tools);
 
+   //Toggle (Console)
+   Evas_Object *toggle_console = toggle_create(box, "Auto Hiding Console",
+                                               config_console_get());
+   elm_box_pack_end(box, toggle_console);
+
    sd->general_layout = layout;
    sd->img_path_entry = img_path_entry;
    sd->snd_path_entry = snd_path_entry;
@@ -398,6 +406,7 @@ general_layout_create(setting_data *sd, Evas_Object *parent)
    sd->toggle_swallow = toggle_swallow;
    sd->toggle_stats = toggle_stats;
    sd->toggle_tools = toggle_tools;
+   sd->toggle_console = toggle_console;
 
    return layout;
 }
diff --git a/src/include/base_gui.h b/src/include/base_gui.h
index 81e8242..42aadb4 100644
--- a/src/include/base_gui.h
+++ b/src/include/base_gui.h
@@ -12,7 +12,7 @@ void base_tools_set(Evas_Object *tools);
 void base_enventor_full_view(void);
 void base_live_view_full_view(void);
 void base_editors_full_view(void);
-void base_console_full_view(void);
+void base_console_auto_hide(void);
 void base_console_toggle(void);
 void base_live_view_set(Evas_Object *live_view);
 void base_enventor_set(Evas_Object *enventor);
diff --git a/src/include/config_data.h b/src/include/config_data.h
index f40ac65..f39ae37 100644
--- a/src/include/config_data.h
+++ b/src/include/config_data.h
@@ -48,6 +48,8 @@ void config_view_scale_set(double view_scale);
 double config_view_scale_get(void);
 Eina_Bool config_tools_get(void);
 void config_tools_set(Eina_Bool enabled);
+Eina_Bool config_config_get(void);
+void config_config_set(Eina_Bool enabled);
 double config_console_size_get(void);
 void config_console_size_set(double size);
 void config_win_size_get(Evas_Coord *w, Evas_Coord *h);
diff --git a/src/include/panes.h b/src/include/panes.h
index 5e97d6a..7e6e706 100644
--- a/src/include/panes.h
+++ b/src/include/panes.h
@@ -2,7 +2,7 @@ Evas_Object *panes_init(Evas_Object *parent);
 void panes_term(void);
 void panes_text_editor_full_view(void);
 void panes_live_view_full_view(void);
-void panes_editors_full_view(void);
+void panes_editors_full_view(Eina_Bool full_view);
 void panes_console_full_view(void);
 void panes_live_view_set(Evas_Object *live_view);
 void panes_text_editor_set(Evas_Object *text_editor);
diff --git a/src/lib/enventor_smart.c b/src/lib/enventor_smart.c
index 5ae88ea..6ce01f4 100644
--- a/src/lib/enventor_smart.c
+++ b/src/lib/enventor_smart.c
@@ -133,6 +133,7 @@ _enventor_object_evas_object_smart_add(Eo *obj, 
Enventor_Object_Data *pd)
    evas_object_smart_member_add(edit_obj_get(pd->ed), obj);
    elm_widget_can_focus_set(obj, EINA_FALSE);
 
+   //FIXME: Called twice ?? Why?
    ecore_event_handler_add(EIO_MONITOR_FILE_MODIFIED, file_modified_cb, pd);
 }
 

-- 


Reply via email to