Enlightenment CVS committal

Author  : dj2
Project : e17
Module  : apps/e_utils

Dir     : e17/apps/e_utils/src/bin/entangle


Modified Files:
        Entangle.h entangle_ui.c main.c 


Log Message:
- entangle now takes some options
- -h for help
- -display STR to set the display
- -theme STR to set the theme (untested)

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e_utils/src/bin/entangle/Entangle.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- Entangle.h  29 Apr 2005 01:55:49 -0000      1.1
+++ Entangle.h  16 May 2005 04:03:50 -0000      1.2
@@ -57,7 +57,7 @@
 void entangle_apps_dump(void);
 Ecore_List *entangle_apps_list_get(const char *list);
 
-int entangle_ui_init(void);
+int entangle_ui_init(const char *display, const char *theme);
 void entangle_ui_shutdown(void);
 
 #endif
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/apps/e_utils/src/bin/entangle/entangle_ui.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- entangle_ui.c       16 May 2005 03:39:45 -0000      1.5
+++ entangle_ui.c       16 May 2005 04:03:50 -0000      1.6
@@ -79,12 +79,12 @@
 static void entangle_ui_dir_add_name(void *data, const char *str);
 
 int
-entangle_ui_init(void)
+entangle_ui_init(const char *display, const char *theme)
 {
     Evas *evas;
     Evas_Object *o, *edje;
 
-    ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, WIDTH, HEIGHT);
+    ee = ecore_evas_software_x11_new(display, 0, 0, 0, WIDTH, HEIGHT);
     ecore_evas_title_set(ee, "entangle");
     ecore_evas_name_class_set(ee, "entangle", "entangle");
     ecore_evas_callback_resize_set(ee, entangle_ui_cb_resize);
@@ -93,8 +93,7 @@
     evas = ecore_evas_get(ee);
 
     edje = edje_object_add(evas);
-    if (!edje_object_file_set(edje,
-            PACKAGE_DATA_DIR"/data/entangle/default.edj", "Main"))
+    if (!edje_object_file_set(edje, theme, "Main"))
     {
         fprintf(stderr, "Unable to locate theme.\n");
         return 0;
@@ -438,7 +437,7 @@
     {
         Entangle_App *app;
         Evas_Object *obj;
-        Evas_Object *o;
+        Evas_Object *o = NULL;
 
         app = ecore_list_goto_index(apps, i);
         obj = edje_object_add(evas);
@@ -830,7 +829,7 @@
     Evas *evas;
     Entangle_App *app;
     Ecore_List *list;
-    char path[PATH_MAX], exe[PATH_MAX], *p;
+    char path[PATH_MAX], exe[PATH_MAX];
     const char *rel_path;
 
     o = data;
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e_utils/src/bin/entangle/main.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- main.c      29 Apr 2005 01:55:49 -0000      1.1
+++ main.c      16 May 2005 04:03:50 -0000      1.2
@@ -1,11 +1,15 @@
 #include "Entangle.h"
 
 static int entangle_cb_exit(void *data, int type, void *ev);
+static void entangle_usage(char ** argv);
 
 int
 main(int argc, char ** argv)
 {
+    char *display = NULL;
+    char *theme = NULL;
     int ret = 1;
+    int i;
 
     if (!ecore_init())
     {
@@ -15,6 +19,101 @@
     ecore_app_args_set(argc, (const char **)argv);
     ecore_event_handler_add(ECORE_EVENT_SIGNAL_EXIT, entangle_cb_exit, NULL);
 
+    for (i = 1; i < argc; i++)
+    {
+        if ((!strcmp(argv[i], "-display")) || (!strcmp(argv[i], "-d")))
+        {
+            if (++i < argc)
+            {
+                IF_FREE(display);
+                display = strdup(argv[i]);
+            }
+            else
+            {
+                fprintf(stderr, "ERROR: Missing argument to -display\n");
+                goto ECORE_SHUTDOWN;
+            }
+        }
+        else if ((!strcmp(argv[i], "-theme")) || (!strcmp(argv[i], "-t")))
+        {
+            if (++i < argc)
+            {
+                IF_FREE(theme);
+                theme = strdup(argv[i]);
+            }
+            else
+            {
+                fprintf(stderr, "ERROR: Missing argument to -theme\n");
+                goto ECORE_SHUTDOWN;
+            }
+        }
+        else if ((!strcmp(argv[i], "-help")) || (!strcmp(argv[i], "-h")))
+        {
+            entangle_usage(argv);
+            return 0;
+        }
+    }
+
+    /* make sure the theme is valid */
+    if (theme)
+    {
+        char *p;
+        p = strstr(theme, ".edj");
+
+        if (p && (strlen(theme) - (p - theme) == strlen(".edj")))
+        {
+            if (!ecore_file_exists(theme))
+            {
+                char tmp[PATH_MAX];
+                snprintf(tmp, PATH_MAX, PACKAGE_DATA_DIR"/data/entangle/%s", 
theme);
+                FREE(theme);
+
+                if (ecore_file_exists(tmp)) theme = strdup(tmp);
+            }
+        }
+        else
+        {
+            char tmp[PATH_MAX];
+            snprintf(tmp, PATH_MAX, PACKAGE_DATA_DIR"/data/entangle/%s.edj", 
theme);
+            FREE(theme);
+
+            if (ecore_file_exists(tmp)) theme = strdup(tmp);
+        }
+    }
+    if (!theme) theme = strdup(PACKAGE_DATA_DIR"/data/entangle/default.edj");
+
+    /* make sure the display is valid */
+    if (!display) 
+    {
+        char *tmp = getenv("DISPLAY");
+        if (tmp) display = strdup(tmp);
+    }
+    if (display)
+    {
+        char *p;
+        char buf[1024];
+
+        p = strrchr(display, ':');
+        if (!p)
+        {
+            snprintf(buf, sizeof(buf), "%s:0.0", display);
+            FREE(display);
+            display = strdup(buf);
+        }
+        else
+        {
+            p = strrchr(p, '.');
+            if (!p)
+            {
+                snprintf(buf, sizeof(buf), "%s.0", display);
+                FREE(display);
+                display = strdup(buf);
+            }
+        }
+    }
+    else
+        display = strdup(":0.0");
+
     if (!ecore_file_init())
     {
         fprintf(stderr, "Error initing Ecore_File.\n");
@@ -51,7 +150,7 @@
         goto ENTANGLE_EAPPS_SHUTDOWN;
     }
 
-    if (!entangle_ui_init())
+    if (!entangle_ui_init(display, theme))
     {
         fprintf(stderr, "Error initing Entangle_Ui.\n");
         goto ENTANGLE_APPS_SHUTDOWN;
@@ -76,6 +175,9 @@
 ECORE_SHUTDOWN:
     ecore_shutdown();
 SHUTDOWN:
+
+    IF_FREE(display);
+    IF_FREE(theme);
     return ret;
 }
 
@@ -87,3 +189,16 @@
     return 0;
 }
 
+static void
+entangle_usage(char ** argv)
+{
+    printf("%s -- Enlightenment 17 Menu Editor\n\n"
+            "Usage: %s [OPTIONS]\n"
+            "  OPTIONS:\n"
+            "   -display STR    \t - Use the given display variable\n"
+            "   -theme STR      \t - Use the given theme variable\n"
+            "   -help           \t - This help text\n"
+            "\n", argv[0], argv[0]);
+}
+
+




-------------------------------------------------------
This SF.Net email is sponsored by Oracle Space Sweepstakes
Want to be the first software developer in space?
Enter now for the Oracle Space Sweepstakes!
http://ads.osdn.com/?ad_id=7412&alloc_id=16344&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to