Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_border.c e_config.c e_config.h e_ipc.c e_ipc.h 
        e_remote_main.c 


Log Message:


fix focus loss on window unfocus so keybindings still work

some start on language set/get/list ipc

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v
retrieving revision 1.173
retrieving revision 1.174
diff -u -3 -r1.173 -r1.174
--- e_border.c  2 May 2005 09:19:55 -0000       1.173
+++ e_border.c  2 May 2005 10:16:30 -0000       1.174
@@ -1327,7 +1327,11 @@
        e_object_del(E_OBJECT(bd->border_menu));
        bd->border_menu = NULL;
      }
-   if (focused == bd) focused = NULL;
+   if (focused == bd)
+     {
+       ecore_x_window_focus(bd->container->manager->root);
+       focused = NULL;
+     }
    while (bd->handlers)
      {
        Ecore_Event_Handler *h;
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_config.c,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -3 -r1.33 -r1.34
--- e_config.c  1 May 2005 19:54:00 -0000       1.33
+++ e_config.c  2 May 2005 10:16:31 -0000       1.34
@@ -83,6 +83,7 @@
    E_CONFIG_VAL(D, T, font_cache, INT);
    E_CONFIG_VAL(D, T, zone_desks_x_count, INT);
    E_CONFIG_VAL(D, T, zone_desks_y_count, INT);
+   E_CONFIG_VAL(D, T, language, STR);
    E_CONFIG_LIST(D, T, modules, _e_config_module_edd);
    E_CONFIG_LIST(D, T, font_fallbacks, _e_config_font_fallback_edd);
    E_CONFIG_LIST(D, T, font_defaults, _e_config_font_default_edd);
@@ -106,6 +107,7 @@
        e_config->zone_desks_x_count = 4;
        e_config->zone_desks_y_count = 1;
        e_config->use_virtual_roots = 0;
+       e_config->language = strdup("");
          {
             E_Config_Module *em;
 
@@ -194,6 +196,11 @@
    E_CONFIG_LIMIT(e_config->image_cache, 0, 256 * 1024);
    E_CONFIG_LIMIT(e_config->font_cache, 0, 32 * 1024);
 
+   /* apply config */
+   
+   if ((e_config->language) && (strlen(e_config->language) > 0))
+     e_intl_language_set(e_config->language);
+   
      {
        Evas_List *l;
        
@@ -258,6 +265,7 @@
          }
 
        E_FREE(e_config->desktop_default_background);
+       E_FREE(e_config->language);
        E_FREE(e_config);
      }
    E_CONFIG_DD_FREE(_e_config_edd);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_config.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -3 -r1.14 -r1.15
--- e_config.h  1 May 2005 16:21:57 -0000       1.14
+++ e_config.h  2 May 2005 10:16:31 -0000       1.15
@@ -55,6 +55,7 @@
    int         zone_desks_x_count;
    int         zone_desks_y_count;
    int         use_virtual_roots;
+   char       *language;
    Evas_List  *modules;
    Evas_List  *font_fallbacks;
    Evas_List  *font_defaults;
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_ipc.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -3 -r1.15 -r1.16
--- e_ipc.c     24 Apr 2005 19:56:42 -0000      1.15
+++ e_ipc.c     2 May 2005 10:16:31 -0000       1.16
@@ -5,6 +5,7 @@
 static int _e_ipc_cb_client_del(void *data, int type, void *event);
 static int _e_ipc_cb_client_data(void *data, int type, void *event);
 static char *_e_ipc_path_str_get(char **paths, int *bytes);
+static char *_e_ipc_str_list_get(Evas_List *strs, int *bytes);
 static char *_e_ipc_simple_str_dec(char *data, int bytes);
 static char **_e_ipc_multi_str_dec(char *data, int bytes, int str_count);
 
@@ -14,6 +15,7 @@
 ECORE_IPC_ENC_EVAS_LIST_PROTO(_e_ipc_font_fallback_list_enc);
 ECORE_IPC_ENC_EVAS_LIST_PROTO(_e_ipc_font_default_list_enc);
 ECORE_IPC_ENC_STRUCT_PROTO(_e_ipc_font_default_enc);
+//ECORE_IPC_ENC_STRUCT_PROTO(_e_ipc_string_list_enc);
 
 /* local subsystem globals */
 static Ecore_Ipc_Server *_e_ipc_server  = NULL;
@@ -213,9 +215,9 @@
       case E_IPC_OP_BG_GET:
          {
             char *bg;
+            
             bg = e_config->desktop_default_background;
-            if (!bg)
-              bg = "";
+            if (!bg) bg = "";
             ecore_ipc_client_send(e->client,
                                   E_IPC_DOMAIN_REPLY,
                                   E_IPC_OP_BG_GET_REPLY,
@@ -328,7 +330,7 @@
             int bytes;
             
             text_class = _e_ipc_simple_str_dec(e->data, e->size);           
-            efd = e_font_default_get (text_class);          
+            efd = e_font_default_get(text_class);           
             free(text_class);
             data = _e_ipc_font_default_enc(efd, &bytes);
             ecore_ipc_client_send(e->client,
@@ -399,6 +401,45 @@
             ecore_main_loop_quit();
          }
        break;
+      case E_IPC_OP_LANG_LIST:
+         {
+            Evas_List *langs;
+            int bytes;
+            char *data;
+            
+            langs = (Evas_List *)e_intl_language_list();
+            data = _e_ipc_str_list_get(langs, &bytes);
+            ecore_ipc_client_send(e->client,
+                                  E_IPC_DOMAIN_REPLY,
+                                  E_IPC_OP_LANG_LIST_REPLY,
+                                  0/*ref*/, 0/*ref_to*/, 0/*response*/,
+                                  data, bytes);
+            free(data);
+         }
+      case E_IPC_OP_LANG_SET:
+         {
+            char *lang;
+            
+            lang = _e_ipc_simple_str_dec(e->data, e->size);
+            IF_FREE(e_config->language);
+            e_config->language = lang;
+            e_intl_language_set(e_config->language);
+             e_config_save_queue();
+         }
+      case E_IPC_OP_LANG_GET:
+         {
+            char *lang;
+            
+            lang = e_config->language;
+            if (!lang) lang = "";
+            ecore_ipc_client_send(e->client,
+                                  E_IPC_DOMAIN_REPLY,
+                                  E_IPC_OP_LANG_GET_REPLY,
+                                  0/*ref*/, 0/*ref_to*/, 0/*response*/,
+                                  lang, strlen(lang) + 1);
+            free(data);
+         }
+       break;
       default:
        break;
      }
@@ -422,7 +463,7 @@
    char *data = NULL, **cur, *home;
    int pos = 0;
    char tmp[PATH_MAX];
-
+   
    *bytes = 0;
    home = e_user_homedir_get();
    for (cur = paths; *cur != NULL; cur++)
@@ -444,6 +485,30 @@
    return data;
 }
 
+static char *
+_e_ipc_str_list_get(Evas_List *strs, int *bytes)
+{
+   char *data = NULL, **cur;
+   int pos = 0;
+   Evas_List *l;
+   
+   *bytes = 0;
+   for (l = strs; l; l = l->next)
+     {
+       char *p;
+
+       p = l->data;
+
+       *bytes += strlen(p) + 1;
+       data = realloc(data, *bytes);
+
+       memcpy(data + pos, p, strlen(p));
+       pos = *bytes;
+       data[pos - 1] = 0;
+     }
+   return data;
+}
+
 /**
  * Decode a simple string that was passed by an IPC client
  *
@@ -452,13 +517,13 @@
 static char *
 _e_ipc_simple_str_dec(char *data, int bytes)
 {
-    char *str;
-    
-    str = malloc(bytes + 1);
-    str[bytes] = 0;
-    memcpy(str, data, bytes);
-    
-    return str;
+   char *str;
+   
+   str = malloc(bytes + 1);
+   str[bytes] = 0;
+   memcpy(str, data, bytes);
+   
+   return str;
 }
 
 /**
@@ -472,26 +537,25 @@
 static char **
 _e_ipc_multi_str_dec(char *data, int bytes, int str_count)
 {
-    char ** str_array;
-    int i;
- 
-    /* Make sure our data is packed for us <str>0<str>0 */
-    if( data[bytes - 1] != 0) {
-       return NULL;
-    }
-
-    str_array = malloc(sizeof(char *)*str_count);
-
-    for(i = 0; i < str_count; i++) 
-    {
+   char **str_array;
+   int i;
+   
+   /* Make sure our data is packed for us <str>0<str>0 */
+   if (data[bytes - 1] != 0)
+     return NULL;
+   
+   str_array = malloc(sizeof(char *) * str_count);
+   
+   for (i = 0; i < str_count; i++) 
+     {
         str_array[i] = data;
        data += strlen(str_array[i]) + 1;
-    }
-
-    return str_array;
+     }
+   
+   return str_array;
 }
-
-
+   
+   
 /* list/struct encoding functions */
 ECORE_IPC_ENC_EVAS_LIST_PROTO(_e_ipc_module_list_enc)
 {
@@ -556,3 +620,16 @@
    ECORE_IPC_PUT32(size);
    ECORE_IPC_ENC_STRUCT_FOOT();
 }
+
+/*
+ECORE_IPC_ENC_STRUCT_PROTO(_e_ipc_string_list_enc)
+{
+    ECORE_IPC_ENC_EVAS_LIST_HEAD_START(E_String);
+       ECORE_IPC_CNTS(str);
+    ECORE_IPC_ENC_EVAS_LIST_HEAD_FINISH();
+       int l1;
+       ECORE_IPC_SLEN(l1, str);
+       ECORE_IPC_PUTS(str, l1);
+    ECORE_IPC_ENC_EVAS_LIST_FOOT();
+}
+*/
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_ipc.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -3 -r1.10 -r1.11
--- e_ipc.h     9 Apr 2005 06:06:38 -0000       1.10
+++ e_ipc.h     2 May 2005 10:16:31 -0000       1.11
@@ -44,6 +44,11 @@
    E_IPC_OP_FONT_DEFAULT_LIST_REPLY,
    E_IPC_OP_RESTART,
    E_IPC_OP_SHUTDOWN,
+   E_IPC_OP_LANG_LIST,
+   E_IPC_OP_LANG_LIST_REPLY,
+   E_IPC_OP_LANG_SET,
+   E_IPC_OP_LANG_GET,
+   E_IPC_OP_LANG_GET_REPLY,
    E_IPC_OP_LAST
 } E_Ipc_Op;
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_remote_main.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -3 -r1.13 -r1.14
--- e_remote_main.c     22 Apr 2005 04:25:51 -0000      1.13
+++ e_remote_main.c     2 May 2005 10:16:31 -0000       1.14
@@ -72,7 +72,10 @@
    OREQ("-font-default-list", "List all configured text classes", 
E_IPC_OP_FONT_DEFAULT_LIST, 1),
    OMUL("-font-default-set", "Set textclass (OPT1) font (OPT2) and size 
(OPT3)", E_IPC_OP_FONT_DEFAULT_SET, 0, 3),
    OREQ("-restart", "Restart E17", E_IPC_OP_RESTART, 0),
-   OREQ("-shutdown", "Shutdown E17", E_IPC_OP_SHUTDOWN, 0)
+   OREQ("-shutdown", "Shutdown E17", E_IPC_OP_SHUTDOWN, 0),
+   OREQ("-lang-get", "Get the current language", E_IPC_OP_LANG_GET, 1),
+   OREQ("-lang-list", "List all available languages", E_IPC_OP_LANG_LIST, 1),
+   OSTR("-lang-set", "Set the current language", E_IPC_OP_LANG_SET, 0)
 };
 
 /* externally accessible functions */
@@ -338,7 +341,7 @@
        else
          printf("REPLY: MODULE NONE\n");
        break;
-       case E_IPC_OP_MODULE_DIRS_LIST_REPLY:
+      case E_IPC_OP_MODULE_DIRS_LIST_REPLY:
        if (e->data)
          {
             char *p;
@@ -347,35 +350,35 @@
             while (p < (char *)(e->data + e->size))
               {
                  char *dir;
-
+                 
                  dir = p;
                  printf("REPLY: MODULE DIR=%s\n", dir);
                  p += strlen(dir) + 1;
               }
          }
-      break;
+       break;
       case E_IPC_OP_BG_GET_REPLY:
-      if (e->data)
-       {
-          printf("REPLY: %s\n", e->data);
-       }
-      break;
+       if (e->data)
+         {
+            printf("REPLY: %s\n", e->data);
+         }
+       break;
       case E_IPC_OP_BG_DIRS_LIST_REPLY:
-      if (e->data)
-       {       
-          char *p;
- 
-          p = e->data;
-          while (p < (char *)(e->data + e->size))
-            {
-                char *dir;
-
-                dir = p;
-                printf("REPLY: BG DIR=%s\n", dir);
-                p += strlen(dir) + 1;
-            }
-        }
-      break;
+       if (e->data)
+         {     
+            char *p;
+            
+            p = e->data;
+            while (p < (char *)(e->data + e->size))
+              {
+                 char *dir;
+                 
+                 dir = p;
+                 printf("REPLY: BG DIR=%s\n", dir);
+                 p += strlen(dir) + 1;
+              }
+         }
+       break;
       case E_IPC_OP_FONT_FALLBACK_LIST_REPLY:
        if (e->data)
          {
@@ -384,12 +387,12 @@
             
             fallbacks = _e_ipc_font_fallback_list_dec(e->data, e->size);
             while(fallbacks)
-               {
-                   eff = fallbacks->data;
-                   printf("REPLY: FALLBACK NAME=\"%s\"\n", eff->name);
-                   fallbacks = evas_list_remove_list(fallbacks, fallbacks);
-                   E_FREE(eff);
-               }
+              {
+                 eff = fallbacks->data;
+                 printf("REPLY: FALLBACK NAME=\"%s\"\n", eff->name);
+                 fallbacks = evas_list_remove_list(fallbacks, fallbacks);
+                 E_FREE(eff);
+              }
          }
        else
          printf("REPLY: FALLBACK NONE\n");
@@ -399,15 +402,15 @@
           {
              Evas_List *available;
             E_Font_Available *fa;
-       
+            
             available = _e_ipc_font_available_list_dec(e->data, e->size);
             while(available)
-               {
-                   fa = available->data;
-                   printf("REPLY: AVAILABLE NAME=\"%s\"\n", fa->name);
-                   available = evas_list_remove_list(available, available);
-                   E_FREE(fa);
-               }
+              {
+                 fa = available->data;
+                 printf("REPLY: AVAILABLE NAME=\"%s\"\n", fa->name);
+                 available = evas_list_remove_list(available, available);
+                 E_FREE(fa);
+              }
           }
         else
           printf("REPLY: AVAILABLE NONE\n"); 
@@ -418,7 +421,7 @@
              E_Font_Default efd;
              _e_ipc_font_default_dec(e->data, e->size, &efd);
              printf("REPLY: DEFAULT TEXT_CLASS=\"%s\" NAME=\"%s\" SIZE=%d\n",
-                                  efd.text_class, efd.font, efd.size);
+                   efd.text_class, efd.font, efd.size);
           }
         else
           printf("REPLY: DEFAULT NONE\n"); 
@@ -428,13 +431,13 @@
           {
              Evas_List *defaults;
              E_Font_Default *efd;
-          
+            
              defaults = _e_ipc_font_default_list_dec(e->data, e->size);
              while(defaults)
                {
-                 efd = defaults->data;
-                 printf("REPLY: DEFAULT TEXT_CLASS=\"%s\" NAME=\"%s\" 
SIZE=%d\n",
-                                  efd->text_class, efd->font, efd->size);  
+                 efd = defaults->data;
+                 printf("REPLY: DEFAULT TEXT_CLASS=\"%s\" NAME=\"%s\" 
SIZE=%d\n",
+                        efd->text_class, efd->font, efd->size);  
                   defaults = evas_list_remove_list(defaults, defaults);
                  E_FREE(efd);
               }
@@ -442,6 +445,13 @@
         else
           printf("REPLY: DEFAULT NONE\n"); 
         break; 
+      case E_IPC_OP_LANG_LIST_REPLY:
+        if (e->data)
+          {
+          }
+        else
+          printf("REPLY: AVAILABLE NONE\n"); 
+        break;   
       default:
        break;
      }




-------------------------------------------------------
This SF.Net email is sponsored by: NEC IT Guy Games.
Get your fingers limbered up and give it your best shot. 4 great events, 4
opportunities to win big! Highest score wins.NEC IT Guy Games. Play to
win an NEC 61 plasma display. Visit http://www.necitguy.com/?r=20
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to