Enlightenment CVS committal

Author  : handyande
Project : misc
Module  : engage

Dir     : misc/engage/src


Modified Files:
        Makefile.am config_menu.c 


Log Message:
Hook up Edit/Keep/Remove icon actions

===================================================================
RCS file: /cvs/e/misc/engage/src/Makefile.am,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -3 -r1.21 -r1.22
--- Makefile.am 7 Sep 2006 22:33:08 -0000       1.21
+++ Makefile.am 12 Sep 2006 17:50:17 -0000      1.22
@@ -25,9 +25,11 @@
 e_user.h \
 e_utils.h \
 engage.h \
+order.h \
 engage_element.h \
 battery.h \
 main.c \
+order.c \
 config.c \
 config_menu.c \
 dock.c \
===================================================================
RCS file: /cvs/e/misc/engage/src/config_menu.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- config_menu.c       10 Sep 2006 18:38:23 -0000      1.2
+++ config_menu.c       12 Sep 2006 17:50:17 -0000      1.3
@@ -1,13 +1,74 @@
 #include "engage.h"
+#include "order.h"
 #include "config.h"
+#include <string.h>
 
 #ifdef HAVE_ETK
 #include <Etk.h>
 
+OD_Icon *_od_config_menu_icon;
+
 Etk_Widget *_od_config_menu = NULL;
 Etk_Widget *_od_config_menu_app;
 Etk_Widget *_od_config_menu_app_keep, *_od_config_menu_app_remove;
 
+OD_Icon *_od_icon_at_x_get(int x) {
+  Evas_List *l;
+  Evas_Coord minx, maxx;
+
+  minx = x - options.size / 2;
+  maxx = x + options.size / 2;
+
+  l = dock.icons;
+  while (l) {
+    OD_Icon *icon;
+    icon = l->data;
+    if (icon->x >= minx && icon->x <= maxx)
+      return icon;
+
+    l = l->next;
+  }
+
+  return NULL;
+}
+
+void _od_config_menu_app_edit_cb(Etk_Object *object, void *data) {
+  int         len;
+  char       *cmd;
+
+  if (!_od_config_menu_icon)
+    return;
+
+  len = strlen(_od_config_menu_icon->a->path) + 8 + 2;
+  cmd = malloc(len * sizeof(char));
+  snprintf(cmd, len, "eap_edit %s", _od_config_menu_icon->a->path);
+  printf("running \"%s\"\n", cmd);
+  ecore_exe_run(cmd, NULL);
+  free(cmd);
+}
+
+void _od_config_menu_app_keep_cb(Etk_Object *object, void *data) {
+  const char *file;
+
+  if (!_od_config_menu_icon)
+    return;
+
+  _od_config_menu_icon->launcher = 1;
+  file = ecore_file_get_file(_od_config_menu_icon->a->path);
+  _od_dotorder_app_add(file);
+}
+
+void _od_config_menu_app_remove_cb(Etk_Object *object, void *data) {
+    const char *file;
+
+  if (!_od_config_menu_icon)
+    return;
+
+  _od_config_menu_icon->launcher = 0;
+  file = ecore_file_get_file(_od_config_menu_icon->a->path);
+  _od_dotorder_app_del(file);
+}
+
 void _od_config_menu_zoom_none_cb(Etk_Object *object, void *data) {
   ecore_config_int_set("engage.options.zoom", 0);
   ecore_config_int_set("engage.options.stretch", 0);
@@ -45,15 +106,15 @@
 
   menu_item = etk_menu_item_new_with_label("Edit Icon");
   etk_menu_shell_append(ETK_MENU_SHELL(sub_menu), ETK_MENU_ITEM(menu_item));
-//  etk_signal_connect("activated", ETK_OBJECT(menu_item), 
ETK_CALLBACK(_od_config_menu_app_edit_cb), NULL);
+  etk_signal_connect("activated", ETK_OBJECT(menu_item), 
ETK_CALLBACK(_od_config_menu_app_edit_cb), NULL);
   menu_item = etk_menu_item_new_with_label("Keep Icon");
   etk_menu_shell_append(ETK_MENU_SHELL(sub_menu), ETK_MENU_ITEM(menu_item));
-//  etk_signal_connect("activated", ETK_OBJECT(menu_item), 
ETK_CALLBACK(_od_config_menu_app_keep_cb), NULL);
+  etk_signal_connect("activated", ETK_OBJECT(menu_item), 
ETK_CALLBACK(_od_config_menu_app_keep_cb), NULL);
   _od_config_menu_app_keep = menu_item;
 
   menu_item = etk_menu_item_new_with_label("Remove Icon");
   etk_menu_shell_append(ETK_MENU_SHELL(sub_menu), ETK_MENU_ITEM(menu_item));
-//  etk_signal_connect("activated", ETK_OBJECT(menu_item), 
ETK_CALLBACK(_od_config_menu_app_remove_cb), NULL);
+  etk_signal_connect("activated", ETK_OBJECT(menu_item), 
ETK_CALLBACK(_od_config_menu_app_remove_cb), NULL);
   _od_config_menu_app_remove = menu_item;
 
   menu_item = etk_menu_item_image_new_with_label("Zoom Mode");
@@ -89,44 +150,33 @@
 }
 
 void od_config_menu_draw(Evas_Coord x, Evas_Coord y) {
-  Evas_List      *l;
-  Evas_Coord      minx, maxx;
-  char           *label;
-
+  OD_Icon        *icon;
+  const char     *label;
+  Etk_Widget     *image;
+  
+  image = NULL;
   if (_od_config_menu == NULL)
     od_config_menu_init();
 
-  minx = x - options.size / 2;
-  maxx = x + options.size / 2;
   label = "Not over icon";
   etk_widget_hide(_od_config_menu_app);
 
-  l = dock.icons;
-  while (l) {
-    OD_Icon *icon;
-    icon = l->data;
-    if (icon->x >= minx && icon->x <= maxx) {
-      int len;
-      char *full;
-      Etk_Image *image;
-
-      label = icon->a->name;
-      etk_widget_show(_od_config_menu_app);
-      image = NULL;
-      if (icon->a->path) {
-        image = etk_image_new_from_edje(icon->a->path, "icon");
-      }
-      etk_menu_item_image_set(ETK_MENU_ITEM_IMAGE(_od_config_menu_app), image);
-      if (icon->launcher) {
-        etk_widget_hide(_od_config_menu_app_keep);
-        etk_widget_show(_od_config_menu_app_remove);
-      } else {
-        etk_widget_show(_od_config_menu_app_keep);
-        etk_widget_hide(_od_config_menu_app_remove);
-      }
-      break;
+  icon = _od_icon_at_x_get(x);
+  _od_config_menu_icon = icon;
+  if (icon) {
+    label = icon->a->name;
+    etk_widget_show(_od_config_menu_app);
+    if (icon->a->path) {
+      image = etk_image_new_from_edje(icon->a->path, "icon");
+    }
+    etk_menu_item_image_set(ETK_MENU_ITEM_IMAGE(_od_config_menu_app), 
ETK_IMAGE(image));
+    if (icon->launcher) {
+      etk_widget_hide(_od_config_menu_app_keep);
+      etk_widget_show(_od_config_menu_app_remove);
+    } else {
+      etk_widget_show(_od_config_menu_app_keep);
+      etk_widget_hide(_od_config_menu_app_remove);
     }
-    l = l->next;
   }
 
   etk_menu_item_label_set(ETK_MENU_ITEM(_od_config_menu_app), label);



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to