Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        Makefile.am e_apps.c e_main.c e_remote_main.c 
Added Files:
        e_eapp_main.c 


Log Message:


new eapp file format.. now to do the file layout arrangement we discussed...
btw - u'll need to update eet for this...

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/Makefile.am,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- Makefile.am 26 Nov 2004 11:11:05 -0000      1.3
+++ Makefile.am 2 Dec 2004 04:24:54 -0000       1.4
@@ -6,7 +6,7 @@
           @e_cflags@ \
           @EDJE_DEF@
 
-bin_PROGRAMS = enlightenment enlightenment_remote
+bin_PROGRAMS = enlightenment enlightenment_remote enlightenment_eapp
 
 enlightenment_SOURCES = \
 e.h \
@@ -67,3 +67,9 @@
 e_remote_main.c
 
 enlightenment_remote_LDFLAGS = @e_libs@ @dlopen_libs@
+
+enlightenment_eapp_SOURCES = \
+e.h \
+e_eapp_main.c
+
+enlightenment_eapp_LDFLAGS = @e_libs@ @dlopen_libs@
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_apps.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- e_apps.c    25 Nov 2004 03:37:44 -0000      1.1
+++ e_apps.c    2 Dec 2004 04:24:54 -0000       1.2
@@ -2,7 +2,7 @@
 
 /* TODO List:
  * 
- * * if a application .eet file is added in a different location in a 
monitored app tree but has the same filename as an existing one somewhere else, 
the existing one gets a changed callback, not an dded callback for the new one
+ * * if a application .eapp file is added in a different location in a 
monitored app tree but has the same filename as an existing one somewhere else, 
the existing one gets a changed callback, not an dded callback for the new one
  * * track app execution state, visibility state etc. and call callbacks
  * * calls to execute an app or query its runing/starting state etc.
  */
@@ -80,7 +80,7 @@
        char buf[4096];
        
        a->path = strdup(path);
-       snprintf(buf, sizeof(buf), "%s/.directory.eet", path);
+       snprintf(buf, sizeof(buf), "%s/.directory.eapp", path);
        a->directory_mod_time = e_file_mod_time(buf);
        if (e_file_exists(buf))
          _e_app_fields_fill(a, buf);
@@ -92,7 +92,7 @@
      {
        char *p;
        
-       /* check if file ends in .eet */
+       /* check if file ends in .eapp */
        p = strrchr(path, '.');
        if (!p)
          {
@@ -100,7 +100,7 @@
             return NULL;
          }
        p++;
-       if (strcasecmp(p, "eet"))
+       if (strcasecmp(p, "eapp"))
          {
             free(a);
             return NULL;
@@ -283,45 +283,119 @@
 static void
 _e_app_fields_fill(E_App *a, char *path)
 {
+   Eet_File *ef;
    char buf[4096];
-   char *str;
+   char *str, *v;
    char *lang;
+   int size;
    
    /* get our current language */
    lang = getenv("LANG");
    /* if its "C" its the default - so drop it */
    if ((lang) && (!strcmp(lang, "C")))
      lang = NULL;
-   /* get fields (language local preferred) */
-   if (lang)
+   ef = eet_open(a->path, EET_FILE_MODE_READ);
+   if (!ef) return;
+   if (lang) snprintf(buf, sizeof(buf), "app/info/name[%s]", lang);
+   v = eet_read(ef, buf, &size);
+   if (v)
+     {
+       str = malloc(size + 1);
+       memcpy(str, v, size);
+       str[size] = 0;
+       a->name = str;
+       free(v);
+     }
+   else
      {
-       snprintf(buf, sizeof(buf), "app/name[%s]", lang);
-       a->name = edje_file_data_get(path, buf);
+       v = eet_read(ef, "app/info/name", &size);
+       if (v)
+         {
+            str = malloc(size + 1);
+            memcpy(str, v, size);
+            str[size] = 0;
+            a->name = str;
+            free(v);
+         }
+     }
+   if (lang) snprintf(buf, sizeof(buf), "app/info/generic[%s]", lang);
+   v = eet_read(ef, buf, &size);
+   if (v)
+     {
+       str = malloc(size + 1);
+       memcpy(str, v, size);
+       str[size] = 0;
+       a->generic = str;
+       free(v);
      }
-   if (!a->name) a->name = edje_file_data_get(path, "app/name");
-   if (lang)
+   else
      {
-       snprintf(buf, sizeof(buf), "app/generic[%s]", lang);
-       a->generic = edje_file_data_get(path, buf);
+       v = eet_read(ef, "app/info/generic", &size);
+       if (v)
+         {
+            str = malloc(size + 1);
+            memcpy(str, v, size);
+            str[size] = 0;
+            a->generic = str;
+            free(v);
+         }
+     }
+   if (lang) snprintf(buf, sizeof(buf), "app/info/comment[%s]", lang);
+   v = eet_read(ef, buf, &size);
+   if (v)
+     {
+       str = malloc(size + 1);
+       memcpy(str, v, size);
+       str[size] = 0;
+       a->comment = str;
+       free(v);
      }
-   if (!a->generic) a->generic = edje_file_data_get(path, "app/generic");
-   if (lang)
+   else
      {
-       snprintf(buf, sizeof(buf), "app/comment[%s]", lang);
-       a->comment = edje_file_data_get(path, buf);
+       v = eet_read(ef, "app/info/comment", &size);
+       if (v)
+         {
+            str = malloc(size + 1);
+            memcpy(str, v, size);
+            str[size] = 0;
+            a->comment = str;
+            free(v);
+         }
+     }
+   v = eet_read(ef, "app/info/exe", &size);
+   if (v)
+     {
+       str = malloc(size + 1);
+       memcpy(str, v, size);
+       str[size] = 0;
+       a->exe = str;
+       free(v);
+     }
+   v = eet_read(ef, "app/window/name", &size);
+   if (v)
+     {
+       str = malloc(size + 1);
+       memcpy(str, v, size);
+       str[size] = 0;
+       a->win_name = str;
+       free(v);
+     }
+   v = eet_read(ef, "app/window/class", &size);
+   if (v)
+     {
+       str = malloc(size + 1);
+       memcpy(str, v, size);
+       str[size] = 0;
+       a->win_class = str;
+       free(v);
      }
-   if (!a->comment) a->comment = edje_file_data_get(path, "app/comment");
-   
-   a->exe = edje_file_data_get(path, "app/exe");
-   a->win_name = edje_file_data_get(path, "app/window/name");
-   a->win_class = edje_file_data_get(path, "app/window/class");
-   
-   str = edje_file_data_get(path, "app/startup_notify");       
-   if (str)
+   v = eet_read(ef, "app/info/startup_notify", &size);
+   if (v)
      {
-       a->startup_notify = atoi(str);
-       free(str);
+       a->startup_notify = *v;
+       free(v);
      }
+   eet_close(ef);
 }
 
 static void
@@ -567,7 +641,7 @@
        mod_time = e_file_mod_time(a->path);
        snprintf(buf, sizeof(buf), "%s/.order", a->path);
        order_mod_time = e_file_mod_time(buf);
-       snprintf(buf, sizeof(buf), "%s/.directory.eet", a->path);
+       snprintf(buf, sizeof(buf), "%s/.directory.eapp", a->path);
        directory_mod_time = e_file_mod_time(buf);
        if ((mod_time != a->mod_time) ||
            (order_mod_time != a->order_mod_time) ||
@@ -594,7 +668,7 @@
                    }
                  if (directory_mod_time != a->directory_mod_time)
                    {
-                      snprintf(buf, sizeof(buf), "%s/.directory.eet", a->path);
+                      snprintf(buf, sizeof(buf), "%s/.directory.eapp", 
a->path);
                       _e_app_fields_empty(a);
                       _e_app_fields_fill(a, buf);
                       ch = calloc(1, sizeof(E_App_Change_Info));
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_main.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- e_main.c    26 Nov 2004 11:11:05 -0000      1.3
+++ e_main.c    2 Dec 2004 04:24:54 -0000       1.4
@@ -63,8 +63,11 @@
      {
        if ((!strcmp(argv[i], "-display")) && (i < (argc - 1)))
          {
+            char buf[1024];
             i++;
-            display_name = argv[i];
+            
+            snprintf(buf, sizeof(buf), "DISPLAY=%s", argv[i]);
+            putenv(buf);
          }
      }
   
@@ -94,7 +97,7 @@
    _e_main_idle_enterer_before = 
ecore_idle_enterer_add(_e_main_cb_idler_before, NULL);
    
    /* init x */
-   if (!ecore_x_init(display_name))
+   if (!ecore_x_init(NULL))
      {
        e_error_message_show("Enlightenment cannot initialize its X 
connection.\n"
                             "Have you set your DISPLAY variable?");
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_remote_main.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- e_remote_main.c     1 Dec 2004 07:01:31 -0000       1.3
+++ e_remote_main.c     2 Dec 2004 04:24:54 -0000       1.4
@@ -1,5 +1,18 @@
 #include "e.h"
 
+typedef struct _E_IPC_Opt_Handler E_IPC_Opt_Handler;
+
+struct _E_IPC_Opt_Handler
+{
+   char *option;
+   char *desc;
+   int   num_params;
+   int   replies;
+   int   type;
+   int   simple_request_id;
+   void (*func) (char **params);
+};
+
 /* local subsystem functions */
 static int  _e_cb_signal_exit(void *data, int ev_type, void *ev);
 static int  _e_ipc_init(void);
@@ -9,12 +22,32 @@
 static int _e_ipc_cb_server_del(void *data, int type, void *event);
 static int _e_ipc_cb_server_data(void *data, int type, void *event);
 
+static void _e_help(void);
+
 /* local subsystem globals */
 static Ecore_Ipc_Server *_e_ipc_server  = NULL;
 static const char *display_name = NULL;
 static int reply_count = 0;
 static int reply_expect = 0;
 
+#define SIMPLE_REQ     0
+#define SIMPLE_STR_REQ 1
+#define FULL_FUNC      2
+
+#define REQ(opt, desc, ipc, rep) {opt, desc, 0, rep, SIMPLE_REQ, ipc, NULL}
+#define STR(opt, desc, ipc, rep) {opt, desc, 1, rep, SIMPLE_STR_REQ, ipc, NULL}
+#define FNC(opt, desc, param, fn, rep) {opt, desc, param, rep, SIMPLE_FUNC, 0, 
fn}
+
+E_IPC_Opt_Handler handlers[] =
+{
+   STR("-module-load", "Load module OPT1 into memory", E_IPC_OP_MODULE_LOAD, 
0),
+   STR("-module-unload", "Unload (and disable) module OPT1 from memory", 
E_IPC_OP_MODULE_UNLOAD, 0),
+   STR("-module-enable", "Enable module OPT1 if not enabled", 
E_IPC_OP_MODULE_ENABLE, 0),
+   STR("-module-disable", "Disable module OPT1 if not disabled", 
E_IPC_OP_MODULE_DISABLE, 0),
+   REQ("-module-list", "List all loaded modules and their states", 
E_IPC_OP_MODULE_LIST, 1),
+   STR("-bg-set", "Set the background edje file to be OPT1", E_IPC_OP_BG_SET, 
0)
+};
+
 /* externally accessible functions */
 int
 main(int argc, char **argv)
@@ -30,6 +63,14 @@
             i++;
             display_name = argv[i];
          }
+       else if ((!strcmp(argv[i], "-h")) ||
+                (!strcmp(argv[i], "-help")) ||
+                (!strcmp(argv[i], "--h")) ||
+                (!strcmp(argv[i], "--help")))
+         {
+            _e_help();
+            exit(0);
+         }
      }
   
    /* basic ecore init */
@@ -121,73 +162,63 @@
    int argc;
    char **argv;
    int i;
+   int process_count = 0;
    
    e = event;
    ecore_app_args_get(&argc, &argv);
    for (i = 1; i < argc; i++)
      {
        char *v;
-            
-       if ((!strcmp(argv[i], "-load-module")) && (i < (argc - 1)))
+       int j;
+       
+       for (j = 0; j < (sizeof(handlers) / sizeof(E_IPC_Opt_Handler)); j++)
          {
-            i++;
-            v = argv[i];
-            ecore_ipc_server_send(_e_ipc_server,
-                                  E_IPC_DOMAIN_REQUEST,
-                                  E_IPC_OP_MODULE_LOAD,
-                                  0/*ref*/, 0/*ref_to*/, 0/*response*/,
-                                  v, strlen(v));
-         }
-       else if ((!strcmp(argv[i], "-unload-module")) && (i < (argc - 1)))
-         {
-            i++;
-            v = argv[i];
-            ecore_ipc_server_send(_e_ipc_server,
-                                  E_IPC_DOMAIN_REQUEST,
-                                  E_IPC_OP_MODULE_UNLOAD,
-                                  0/*ref*/, 0/*ref_to*/, 0/*response*/,
-                                  v, strlen(v));
-         }
-       else if ((!strcmp(argv[i], "-enable-module")) && (i < (argc - 1)))
-         {
-            i++;
-            v = argv[i];
-            ecore_ipc_server_send(_e_ipc_server,
-                                  E_IPC_DOMAIN_REQUEST,
-                                  E_IPC_OP_MODULE_ENABLE,
-                                  0/*ref*/, 0/*ref_to*/, 0/*response*/,
-                                  v, strlen(v));
+            E_IPC_Opt_Handler *handler;
+            
+            handler = &handlers[j];
+            if (!strcmp(handler->option, argv[i]))
+              {
+                 if (i >= (argc - handler->num_params))
+                   {
+                      printf("ERROR: option %s expects %i parameters\n",
+                             handler->option, handler->num_params);
+                      exit(-1);
+                   }
+                 else
+                   {
+                      switch (handler->type)
+                        {
+                         case SIMPLE_REQ:
+                           ecore_ipc_server_send(_e_ipc_server,
+                                                 E_IPC_DOMAIN_REQUEST,
+                                                 handler->simple_request_id,
+                                                 0/*ref*/, 0/*ref_to*/, 
0/*response*/,
+                                                 NULL, 0);
+                           break;
+                         case SIMPLE_STR_REQ:
+                           v = argv[i + 1];
+                           ecore_ipc_server_send(_e_ipc_server,
+                                                 E_IPC_DOMAIN_REQUEST,
+                                                 handler->simple_request_id,
+                                                 0/*ref*/, 0/*ref_to*/, 
0/*response*/,
+                                                 v, strlen(v));
+                           break;
+                         case FULL_FUNC:
+                           handler->func(argv + i + 1);
+                           break;
+                         default:
+                           break;
+                        }
+                      process_count++;
+                      reply_expect += handler->replies;
+                      i += handler->num_params;
+                      break;
+                   }
+              }
          }
-       else if ((!strcmp(argv[i], "-disable-module")) && (i < (argc - 1)))
-         {
-            i++;
-            v = argv[i];
-            ecore_ipc_server_send(_e_ipc_server,
-                                  E_IPC_DOMAIN_REQUEST,
-                                  E_IPC_OP_MODULE_DISABLE,
-                                  0/*ref*/, 0/*ref_to*/, 0/*response*/,
-                                  v, strlen(v));
-         }
-       else if ((!strcmp(argv[i], "-list-modules")))
-         {
-            reply_expect++;
-            ecore_ipc_server_send(_e_ipc_server,
-                                  E_IPC_DOMAIN_REQUEST,
-                                  E_IPC_OP_MODULE_LIST,
-                                  0/*ref*/, 0/*ref_to*/, 0/*response*/,
-                                  NULL, 0);
-         }
-       else if ((!strcmp(argv[i], "-bg-set")) && (i < (argc - 1)))
-          {
-             i++;
-             v = argv[i];
-             ecore_ipc_server_send(_e_ipc_server,
-                                   E_IPC_DOMAIN_REQUEST,
-                                   E_IPC_OP_BG_SET,
-                                   0/*ref*/, 0/*ref_to*/, 0/*response*/,
-                                   v, strlen(v));
-          }
      }
+   if (process_count <= 0)
+     _e_help();
    if (reply_count >= reply_expect) ecore_main_loop_quit();
    return 1;
 }
@@ -207,6 +238,8 @@
    Ecore_Ipc_Event_Server_Data *e;
    
    e = event;
+   /* FIXME: should make this function/callback based in a table like the */
+   /* option handlers... */
    printf("REPLY: BEGIN\n");
    switch (e->minor)
      {  
@@ -247,3 +280,46 @@
    if (reply_count >= reply_expect) ecore_main_loop_quit();
    return 1;
 }
+
+static void
+_e_help(void)
+{
+   int j, k, l;
+   E_IPC_Opt_Handler *handler;
+   char buf[128];
+   int parsize = 0, opsize = 0;
+   
+   printf("OPTIONS:\n");
+   for (j = 0; j < (sizeof(handlers) / sizeof(E_IPC_Opt_Handler)); j++)
+     {
+       handler = &handlers[j];
+       if (strlen(handler->option) > parsize) parsize = 
strlen(handler->option);
+       l = 0;
+       for (k = 0; k < handler->num_params; k++)
+         {
+            snprintf(buf, sizeof(buf), " OPT%i", k + 1);
+            l += strlen(buf);
+         }
+       if (l > opsize) opsize = l;
+     }
+   for (j = 0; j < (sizeof(handlers) / sizeof(E_IPC_Opt_Handler)); j++)
+     {
+       handler = &handlers[j];
+       printf("  %s", handler->option);
+       l = parsize - strlen(handler->option);
+       for (k = 0; k < l; k++) printf(" ");
+       l = 0;
+       for (k = 0; k < handler->num_params; k++)
+         {
+            snprintf(buf, sizeof(buf), " OPT%i", k + 1);
+            printf("%s", buf);
+            l += strlen(buf);
+         }
+       while (l < opsize)
+         {
+            printf(" ");
+            l++;
+         }
+       printf("  - %s\n", handler->desc);
+     }
+}




-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now. 
http://productguide.itmanagersjournal.com/
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to