hermet pushed a commit to branch master.

http://git.enlightenment.org/tools/enventor.git/commit/?id=0cbf3b38be8fcddb41463d24dd67d90d02e3fa3a

commit 0cbf3b38be8fcddb41463d24dd67d90d02e3fa3a
Author: ChunEon Park <her...@hermet.pe.kr>
Date:   Sun Aug 10 18:33:17 2014 +0900

    panes: support top/bottom drag for console.
---
 README                                |   6 +-
 data/themes/default/layout_common.edc |  39 +-----
 src/bin/base_gui.c                    |  12 ++
 src/bin/main.c                        |  18 ++-
 src/bin/panes.c                       | 216 ++++++++++++++++++++++++++--------
 src/include/base_gui.h                |   2 +
 src/include/panes.h                   |   2 +
 7 files changed, 203 insertions(+), 92 deletions(-)

diff --git a/README b/README
index 769f129..79ef040 100644
--- a/README
+++ b/README
@@ -44,8 +44,10 @@ Ctrl+I = On/Off Auto Indentation
 Ctrl+O = On/Off Auto Completion
 Ctrl+W = Show/Hide Dummy Swallow
 Ctrl+H = On/Off Part Highlighting
-Ctrl+, = Full Edit View / Split View
-Ctrl+. = Full Edje View / Split View
+Ctrl+Left = On/Off Full Edit View
+Ctrl+Right = On/Off Full Live View
+Ctrl+Top = On/Off Full Console View
+Ctrl+Bottom = On/Off Full Editors View
 Ctrl+T = Insert Defaut Template Code
 Ctrl+Mouse Wheel Up = View Scale Up / Font Size Up
 Ctrl+Mouse Wheel Down = View Scale Down / Font Size Down
diff --git a/data/themes/default/layout_common.edc 
b/data/themes/default/layout_common.edc
index ad1160a..23b4025 100644
--- a/data/themes/default/layout_common.edc
+++ b/data/themes/default/layout_common.edc
@@ -2046,13 +2046,7 @@ group { name: "main_layout";
             rel1.relative: 0 1;
             rel2.relative: 1 0;
             rel1.to_y: "elm.swallow.tools";
-            rel2.to_y: "elm.swallow.console";
-         }
-         description { state: "console" 0.0;
-            rel1.to: "elm.swallow.console";
-            rel2.to: "elm.swallow.console";
-            rel1.relative: 0 0;
-            rel2.relative: 1 0;
+            rel2.to_y: "elm.swallow.statusbar";
          }
       }
       part { name: "elm.swallow.statusbar";
@@ -2070,25 +2064,6 @@ group { name: "main_layout";
             align: 0.5 1;
          }
       }
-      part { name: "elm.swallow.console";
-         type: SWALLOW;
-         scale: 1;
-         description { state: "default" 0.0;
-            rel1.to: "elm.swallow.statusbar";
-            rel2.to: "elm.swallow.statusbar";
-            rel1.relative: 0 0;
-            rel2.relative: 1 0;
-            align: 0.5 1;
-            color: 0 0 0 0;
-         }
-         description { state: "visible" 0.0;
-            inherit: "default" 0.0;
-            align: 0.5 1;
-            min: 0 125;
-            fixed: 0 1;
-            color: 255 255 255 255;
-         }
-      }
    }
    programs {
       program { name: "statusbar_show";
@@ -2115,18 +2090,6 @@ group { name: "main_layout";
          target: "elm.swallow.tools";
          transition: DECELERATE 0.25;
       }
-      program { name: "console_show";
-         signal: "elm,state,console,show";
-         action: STATE_SET "visible" 0.0;
-         target: "elm.swallow.console";
-         transition: DECELERATE 0.25;
-      }
-      program { name: "console_hide";
-         signal: "elm,state,console,hide";
-         action: STATE_SET "default" 0.0;
-         target: "elm.swallow.console";
-         transition: DECELERATE 0.25;
-      }
    }
 }
 
diff --git a/src/bin/base_gui.c b/src/bin/base_gui.c
index 25a1e61..25b8ce0 100644
--- a/src/bin/base_gui.c
+++ b/src/bin/base_gui.c
@@ -103,6 +103,18 @@ base_full_view_right(void)
 }
 
 void
+base_full_view_top(void)
+{
+   panes_full_view_top();
+}
+
+void
+base_full_view_bottom(void)
+{
+   panes_full_view_bottom();
+}
+
+void
 base_right_view_set(Evas_Object *right)
 {
    panes_content_set("right", right);
diff --git a/src/bin/main.c b/src/bin/main.c
index 23c9e4f..d44195c 100644
--- a/src/bin/main.c
+++ b/src/bin/main.c
@@ -154,17 +154,29 @@ ctrl_func(app_data *ad, const char *key)
         return ECORE_CALLBACK_DONE;
      }
    //Full Edit View
-   if (!strcmp(key, "comma"))
+   if (!strcmp(key, "Left"))
      {
         base_full_view_left();
         return ECORE_CALLBACK_DONE;
      }
-   //Full Edje View
-   if (!strcmp(key, "period"))
+   //Full Live View
+   if (!strcmp(key, "Right"))
      {
         base_full_view_right();
         return ECORE_CALLBACK_DONE;
      }
+   //Full Console View
+   if (!strcmp(key, "Up"))
+     {
+        base_full_view_top();
+        return ECORE_CALLBACK_DONE;
+     }
+   //Full Editors View
+   if (!strcmp(key, "Down"))
+     {
+        base_full_view_bottom();
+        return ECORE_CALLBACK_DONE;
+     }
    //Auto Indentation
    if (!strcmp(key, "i") || !strcmp(key, "I"))
      {
diff --git a/src/bin/panes.c b/src/bin/panes.c
index dbb1c47..081a467 100644
--- a/src/bin/panes.c
+++ b/src/bin/panes.c
@@ -1,43 +1,79 @@
 #include <Elementary.h>
 #include "common.h"
 
+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_SPLIT_VIEW
 } Panes_State;
 
 typedef struct _panes_data
 {
-   Evas_Object *panes;
-   Panes_State state;
+   Evas_Object *panes_h;
+   Evas_Object *panes_v;
+   Panes_State state_v;
+   Panes_State state_h;
+
+   double origin_h;
+   double origin_v;
+
+   double delta_h;
+   double delta_v;
 
-   double origin;
-   double delta;
-   double last_right_size1;  //when down the panes bar
-   double last_right_size2;  //when up the panes bar
+   double last_bottom_size1;  //when down the panes bar
+   double last_bottom_size2;  //when up the panes bar
+   double last_right_size1;   //when down the panes bar
+   double last_right_size2;   //when up the panes bar
 } panes_data;
 
 static panes_data *g_pd = NULL;
 
 static void
-transit_op(void *data, Elm_Transit *transit EINA_UNUSED, double progress)
+transit_op_v(void *data, Elm_Transit *transit EINA_UNUSED, double progress)
 {
    panes_data *pd = data;
-   elm_panes_content_right_size_set(pd->panes,
-                                    pd->origin + (pd->delta * progress));
+   elm_panes_content_right_size_set(pd->panes_v,
+                                    pd->origin_v + (pd->delta_v * progress));
+}
+
+static void
+transit_op_h(void *data, Elm_Transit *transit EINA_UNUSED, double progress)
+{
+   panes_data *pd = data;
+   elm_panes_content_right_size_set(pd->panes_h,
+                                    pd->origin_h + (pd->delta_h * progress));
+}
+
+static void
+v_press_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
+{
+    panes_data *pd = data;
+    pd->last_bottom_size1 = elm_panes_content_right_size_get(obj);
+}
+
+static void
+v_unpress_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
+{
+    panes_data *pd = data;
+    double bottom_size = elm_panes_content_right_size_get(obj);
+    if (pd->last_bottom_size1 != bottom_size)
+      pd->last_right_size2 = bottom_size;
 }
 
 static void
-press_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
+h_press_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
 {
     panes_data *pd = data;
     pd->last_right_size1 = elm_panes_content_right_size_get(obj);
 }
 
 static void
-unpress_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
+h_unpress_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
 {
     panes_data *pd = data;
     double right_size = elm_panes_content_right_size_get(obj);
@@ -46,93 +82,156 @@ unpress_cb(void *data, Evas_Object *obj, void *event_info 
EINA_UNUSED)
 }
 
 static void
-panes_full_view_cancel(panes_data *pd)
+panes_h_full_view_cancel(panes_data *pd)
 {
-   const double TRANSIT_TIME = 0.25;
+   pd->origin_h = elm_panes_content_right_size_get(pd->panes_h);
+   pd->delta_h = pd->last_right_size2 - pd->origin_h;
 
-   pd->origin = elm_panes_content_right_size_get(pd->panes);
-   pd->delta = pd->last_right_size2 - pd->origin;
+   Elm_Transit *transit = elm_transit_add();
+   elm_transit_effect_add(transit, transit_op_h, 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->state_h = PANES_SPLIT_VIEW;
+}
+
+static void
+panes_v_full_view_cancel(panes_data *pd)
+{
+   pd->origin_v = elm_panes_content_right_size_get(pd->panes_v);
+   pd->delta_v = pd->last_bottom_size2 - pd->origin_v;
 
    Elm_Transit *transit = elm_transit_add();
-   elm_transit_effect_add(transit, transit_op, pd, NULL);
+   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->state = PANES_SPLIT_VIEW;
+   pd->state_v = PANES_SPLIT_VIEW;
 }
 
 void
 panes_full_view_right(void)
 {
-   const double TRANSIT_TIME = 0.25;
-
    panes_data *pd = g_pd;
 
-   //Revert state if the current state is full view left already.
-   if (pd->state == PANES_FULL_VIEW_RIGHT)
+   //Revert state if the current state is full view right already.
+   if (pd->state_h == PANES_FULL_VIEW_RIGHT)
      {
-        panes_full_view_cancel(pd);
+        panes_h_full_view_cancel(pd);
         return;
      }
 
-   double origin = elm_panes_content_right_size_get(pd->panes);
-   if (origin == 0.0) return;
+   double origin_h = elm_panes_content_right_size_get(pd->panes_h);
+   if (origin_h == 0.0) return;
 
-   pd->origin = origin;
-   pd->delta = 0.0 - pd->origin;
+   pd->origin_h = origin_h;
+   pd->delta_h = 0.0 - pd->origin_h;
 
    Elm_Transit *transit = elm_transit_add();
-   elm_transit_effect_add(transit, transit_op, pd, NULL);
+   elm_transit_effect_add(transit, transit_op_h, 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->state = PANES_FULL_VIEW_RIGHT;
+   pd->state_h = PANES_FULL_VIEW_RIGHT;
 }
 
 void
 panes_full_view_left(void)
 {
-   const double TRANSIT_TIME = 0.25;
-
    panes_data *pd = g_pd;
 
    //Revert state if the current state is full view left already.
-   if (pd->state == PANES_FULL_VIEW_LEFT)
+   if (pd->state_h == PANES_FULL_VIEW_LEFT)
      {
-        panes_full_view_cancel(pd);
+        panes_h_full_view_cancel(pd);
         return;
      }
 
-   double origin = elm_panes_content_right_size_get(pd->panes);
-   if (origin == 1.0) return;
+   double origin_h = elm_panes_content_right_size_get(pd->panes_h);
+   if (origin_h == 1.0) return;
+
+   pd->origin_h = origin_h;
+   pd->delta_h = 1.0 - pd->origin_h;
+
+   Elm_Transit *transit = elm_transit_add();
+   elm_transit_effect_add(transit, transit_op_h, 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->state_h = PANES_FULL_VIEW_LEFT;
 
-   pd->origin = origin;
-   pd->delta = 1.0 - pd->origin;
+}
+
+void
+panes_full_view_bottom(void)
+{
+   panes_data *pd = g_pd;
+
+   //Revert state if the current state is full view bottom already.
+   if (pd->state_v == PANES_FULL_VIEW_BOTTOM)
+     {
+        panes_v_full_view_cancel(pd);
+        return;
+     }
+   double origin_v = elm_panes_content_right_size_get(pd->panes_v);
+   if (origin_v == 0.0) return;
+
+   pd->origin_v = origin_v;
+   pd->delta_v = 0.0 - pd->origin_v;
 
    Elm_Transit *transit = elm_transit_add();
-   elm_transit_effect_add(transit, transit_op, pd, NULL);
+   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->state = PANES_FULL_VIEW_LEFT;
+   pd->state_v = PANES_FULL_VIEW_BOTTOM;
+}
+
+void
+panes_full_view_top(void)
+{
+   panes_data *pd = g_pd;
+
+   //Revert state if the current state is full view top already.
+   if (pd->state_v == PANES_FULL_VIEW_TOP)
+     {
+        panes_v_full_view_cancel(pd);
+        return;
+     }
 
+   double origin_v = elm_panes_content_right_size_get(pd->panes_v);
+   if (origin_v == 1.0) return;
+
+   pd->origin_v = origin_v;
+   pd->delta_v = 1.0 - pd->origin_v;
+
+   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->state_v = PANES_FULL_VIEW_TOP;
 }
 
+
 void
 panes_content_set(const char *part, Evas_Object *content)
 {
    panes_data *pd = g_pd;
-   elm_object_part_content_set(pd->panes, part, content);
+   elm_object_part_content_set(pd->panes_h, part, content);
 }
 
 void
 panes_term(void)
 {
    panes_data *pd = g_pd;
-   evas_object_del(pd->panes);
+   evas_object_del(pd->panes_v);
    free(pd);
 }
 
@@ -147,16 +246,35 @@ panes_init(Evas_Object *parent)
      }
    g_pd = pd;
 
-   //Panes
-   Evas_Object *panes = elm_panes_add(parent);
-   elm_object_style_set(panes, elm_app_name_get());
-   evas_object_size_hint_weight_set(panes, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-   evas_object_smart_callback_add(panes, "press", press_cb, pd);
-   evas_object_smart_callback_add(panes, "unpress", unpress_cb, pd);
-   pd->panes = panes;
-   pd->state = PANES_SPLIT_VIEW;
+   //Panes Vertical
+   Evas_Object *panes_v = elm_panes_add(parent);
+   elm_object_style_set(panes_v, "flush");
+   elm_panes_horizontal_set(panes_v, EINA_FALSE);
+   evas_object_size_hint_weight_set(panes_v, EVAS_HINT_EXPAND,
+                                    EVAS_HINT_EXPAND);
+   evas_object_smart_callback_add(panes_v, "press", v_press_cb, pd);
+   evas_object_smart_callback_add(panes_v, "unpress", v_unpress_cb, pd);
+
+   pd->panes_v = panes_v;
+   pd->state_v = PANES_SPLIT_VIEW;
+   pd->last_bottom_size1 = 0.5;
+   pd->last_bottom_size2 = 0.5;
+
+   //Panes Horizontal
+   Evas_Object *panes_h = elm_panes_add(parent);
+   elm_object_style_set(panes_h, elm_app_name_get());
+   elm_panes_horizontal_set(panes_v, EINA_TRUE);
+   evas_object_size_hint_weight_set(panes_h, EVAS_HINT_EXPAND,
+                                    EVAS_HINT_EXPAND);
+   evas_object_smart_callback_add(panes_h, "press", h_press_cb, pd);
+   evas_object_smart_callback_add(panes_h, "unpress", h_unpress_cb, pd);
+
+   elm_object_part_content_set(panes_v, "top", panes_h);
+
+   pd->panes_h = panes_h;
+   pd->state_h = PANES_SPLIT_VIEW;
    pd->last_right_size1 = 0.5;
    pd->last_right_size2 = 0.5;
 
-   return panes;
+   return panes_v;
 }
diff --git a/src/include/base_gui.h b/src/include/base_gui.h
index 09450fa..f1b7502 100644
--- a/src/include/base_gui.h
+++ b/src/include/base_gui.h
@@ -11,6 +11,8 @@ void base_tools_toggle(Eina_Bool config);
 void base_tools_set(Evas_Object *tools);
 void base_full_view_left(void);
 void base_full_view_right(void);
+void base_full_view_top(void);
+void base_full_view_bottom(void);
 void base_console_toggle(Eina_Bool config);
 void base_left_view_set(Evas_Object *left);
 void base_right_view_set(Evas_Object *right);
diff --git a/src/include/panes.h b/src/include/panes.h
index 01af585..1efc7f8 100644
--- a/src/include/panes.h
+++ b/src/include/panes.h
@@ -2,4 +2,6 @@ Evas_Object *panes_init(Evas_Object *parent);
 void panes_term(void);
 void panes_full_view_right(void);
 void panes_full_view_left(void);
+void panes_full_view_top(void);
+void panes_full_view_bottom(void);
 void panes_content_set(const char *part, Evas_Object *content);

-- 


Reply via email to