rimmed pushed a commit to branch master.

http://git.enlightenment.org/tools/eflete.git/commit/?id=2312a46b9e372a6e420c2dad6b617b3e324148c6

commit 2312a46b9e372a6e420c2dad6b617b3e324148c6
Author: Andrii Kroitor <an.kroi...@samsung.com>
Date:   Wed Mar 23 17:10:50 2016 +0200

    workspace: add shortcuts for new part(q), state(w), item(e) and program(r)
---
 src/bin/ui/tabs.c                      | 40 ++++++++++++++++++++++++++++++++++
 src/bin/ui/workspace/group_navigator.c | 32 ++++++++++++++++++++++++++-
 src/bin/ui/workspace/group_navigator.h | 12 ++++++++++
 src/bin/ui/workspace/workspace.c       | 32 +++++++++++++++++++++++++++
 src/bin/ui/workspace/workspace.h       | 12 ++++++++++
 5 files changed, 127 insertions(+), 1 deletion(-)

diff --git a/src/bin/ui/tabs.c b/src/bin/ui/tabs.c
index ef49dc2..7f8c665 100644
--- a/src/bin/ui/tabs.c
+++ b/src/bin/ui/tabs.c
@@ -565,6 +565,42 @@ _editor_part_item_restacked_cb(void *data __UNUSED__,
                                editor_part_item_restack->relative_part_item);
 }
 
+static void
+_shortcut_add_part_cb(void *data __UNUSED__,
+                      Evas_Object *obj __UNUSED__,
+                      void *event_info __UNUSED__)
+{
+   if (tabs.current_workspace)
+     workspace_add_part_request(tabs.current_workspace);
+}
+
+static void
+_shortcut_add_part_item_cb(void *data __UNUSED__,
+                           Evas_Object *obj __UNUSED__,
+                           void *event_info __UNUSED__)
+{
+   if (tabs.current_workspace)
+     workspace_add_part_item_request(tabs.current_workspace);
+}
+
+static void
+_shortcut_add_state_cb(void *data __UNUSED__,
+                       Evas_Object *obj __UNUSED__,
+                       void *event_info __UNUSED__)
+{
+   if (tabs.current_workspace)
+     workspace_add_state_request(tabs.current_workspace);
+}
+
+static void
+_shortcut_add_program_cb(void *data __UNUSED__,
+                         Evas_Object *obj __UNUSED__,
+                         void *event_info __UNUSED__)
+{
+   if (tabs.current_workspace)
+     workspace_add_program_request(tabs.current_workspace);
+}
+
 Evas_Object *
 tabs_add(void)
 {
@@ -665,6 +701,10 @@ tabs_add(void)
    evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_PROGRAM_ADDED, 
_editor_program_added_cb, NULL);
    evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_PROGRAM_DELETED, 
_editor_program_deleted_cb, NULL);
 
+   evas_object_smart_callback_add(ap.win, SIGNAL_SHORTCUT_ADD_PART, 
_shortcut_add_part_cb, NULL);
+   evas_object_smart_callback_add(ap.win, SIGNAL_SHORTCUT_ADD_ITEM, 
_shortcut_add_part_item_cb, NULL);
+   evas_object_smart_callback_add(ap.win, SIGNAL_SHORTCUT_ADD_STATE, 
_shortcut_add_state_cb, NULL);
+   evas_object_smart_callback_add(ap.win, SIGNAL_SHORTCUT_ADD_PROGRAM, 
_shortcut_add_program_cb, NULL);
    return tabs.layout;
 }
 
diff --git a/src/bin/ui/workspace/group_navigator.c 
b/src/bin/ui/workspace/group_navigator.c
index 3821bcb..ce7258d 100644
--- a/src/bin/ui/workspace/group_navigator.c
+++ b/src/bin/ui/workspace/group_navigator.c
@@ -817,7 +817,7 @@ _combobox_collapsed(void *data,
 
 static void
 _on_menu_add_part_clicked(void *data __UNUSED__,
-                          Evas_Object *obj __UNUSED__,
+                          Evas_Object *obj,
                           void *ei __UNUSED__)
 {
    Edje_Part_Type type;
@@ -1944,3 +1944,33 @@ group_navigator_part_update(Evas_Object *obj, Part *part)
         elm_genlist_item_update(part_item);
      }
 }
+
+void
+group_navigator_add_part_request(Evas_Object *obj)
+{
+   _on_menu_add_part_clicked(NULL, obj, NULL);
+}
+
+void
+group_navigator_add_part_item_request(Evas_Object *obj)
+{
+   Part_List *pl = evas_object_data_get(obj, GROUP_NAVIGATOR_DATA);
+
+   if (!elm_object_item_disabled_get(pl->add_part_item_menu_item))
+     _on_menu_add_item_clicked(NULL, obj, NULL);
+}
+
+void
+group_navigator_add_state_request(Evas_Object *obj)
+{
+   Part_List *pl = evas_object_data_get(obj, GROUP_NAVIGATOR_DATA);
+
+   if (!elm_object_item_disabled_get(pl->add_state_menu_item))
+     _on_menu_add_state_clicked(NULL, obj, NULL);
+}
+
+void
+group_navigator_add_program_request(Evas_Object *obj)
+{
+   _on_menu_add_program_clicked(NULL, obj, NULL);
+}
diff --git a/src/bin/ui/workspace/group_navigator.h 
b/src/bin/ui/workspace/group_navigator.h
index 16faccf..f39c3f1 100644
--- a/src/bin/ui/workspace/group_navigator.h
+++ b/src/bin/ui/workspace/group_navigator.h
@@ -99,4 +99,16 @@ group_navigator_program_add(Evas_Object *obj, 
Eina_Stringshare *program);
 void
 group_navigator_program_del(Evas_Object *obj, Eina_Stringshare *program);
 
+void
+group_navigator_add_part_request(Evas_Object *obj);
+
+void
+group_navigator_add_part_item_request(Evas_Object *obj);
+
+void
+group_navigator_add_state_request(Evas_Object *obj);
+
+void
+group_navigator_add_program_request(Evas_Object *obj);
+
 #endif /* GROUP_NAVIGATOR_H */
diff --git a/src/bin/ui/workspace/workspace.c b/src/bin/ui/workspace/workspace.c
index 2b41953..b4413a2 100644
--- a/src/bin/ui/workspace/workspace.c
+++ b/src/bin/ui/workspace/workspace.c
@@ -1072,3 +1072,35 @@ workspace_program_del(Evas_Object *obj, Eina_Stringshare 
*program_name)
    group_navigator_program_del(wd->group_navi, program_name);
    demo_group_program_del(wd->demo_navi, program_name);
 }
+
+void
+workspace_add_part_request(Evas_Object *obj)
+{
+   WS_DATA_GET(obj);
+
+   group_navigator_add_part_request(wd->group_navi);
+}
+
+void
+workspace_add_part_item_request(Evas_Object *obj)
+{
+   WS_DATA_GET(obj);
+
+   group_navigator_add_part_item_request(wd->group_navi);
+}
+
+void
+workspace_add_state_request(Evas_Object *obj)
+{
+   WS_DATA_GET(obj);
+
+   group_navigator_add_state_request(wd->group_navi);
+}
+
+void
+workspace_add_program_request(Evas_Object *obj)
+{
+   WS_DATA_GET(obj);
+
+   group_navigator_add_program_request(wd->group_navi);
+}
diff --git a/src/bin/ui/workspace/workspace.h b/src/bin/ui/workspace/workspace.h
index ab43267..c644751 100644
--- a/src/bin/ui/workspace/workspace.h
+++ b/src/bin/ui/workspace/workspace.h
@@ -323,4 +323,16 @@ TODO("remove after property refactor!!! HIGH LEVEL");
 Eina_Bool
 workspace_active_demo_mode_get(Evas_Object *obj);
 
+void
+workspace_add_part_request(Evas_Object *obj);
+
+void
+workspace_add_part_item_request(Evas_Object *obj);
+
+void
+workspace_add_state_request(Evas_Object *obj);
+
+void
+workspace_add_program_request(Evas_Object *obj);
+
 #endif /* WORKSPACE_H */

-- 


Reply via email to