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