Enlightenment CVS committal

Author  : sndev
Project : e_modules
Module  : language

Dir     : e_modules/language


Modified Files:
        Makefile.am configure.in e_mod_config.c e_mod_lang.c 
        e_mod_lang.h e_mod_main.c 


Log Message:

Just next step forward :) Going with the config dialog(still ugly).
Adding deps for the exml lib.

===================================================================
RCS file: /cvs/e/e_modules/language/Makefile.am,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- Makefile.am 10 May 2006 22:49:01 -0000      1.1
+++ Makefile.am 12 May 2006 11:02:31 -0000      1.2
@@ -30,7 +30,7 @@
                         e_mod_keybind.c \
                         e_mod_lang.h \
                         e_mod_lang.c
-module_la_LIBADD       = @e_libs@ 
+module_la_LIBADD       = @e_libs@ -lexml
 module_la_LDFLAGS      = -module -avoid-version
 module_la_DEPENDENCIES = $(top_builddir)/config.h
 
===================================================================
RCS file: /cvs/e/e_modules/language/configure.in,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- configure.in        10 May 2006 22:49:01 -0000      1.1
+++ configure.in        12 May 2006 11:02:31 -0000      1.2
@@ -97,6 +97,8 @@
 AC_CHECK_LIB(dl, dlopen, dlopen_libs=-ldl)
 AC_SUBST(dlopen_libs)
 
+AC_CHECK_HEADERS(EXML.h,, AC_MSG_ERROR([Cannot find EXML.h. Make sure your 
CFLAGS environment variable contains include lines for the location of this 
file and EXML lib is installed]))
+
 AC_ARG_WITH(edje-config,
 [  --with-edje-config=EDJE_CONFIG      use edje-config specified ],
 [
===================================================================
RCS file: /cvs/e/e_modules/language/e_mod_config.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- e_mod_config.c      10 May 2006 22:49:01 -0000      1.1
+++ e_mod_config.c      12 May 2006 11:02:31 -0000      1.2
@@ -4,8 +4,8 @@
 #include "e_mod_config.h"
 #include "config.h"
 
-#define ILIST_ICON_WIDTH   48
-#define ILIST_ICON_HEIGHT  48
+#define ILIST_ICON_WIDTH   32
+#define ILIST_ICON_HEIGHT  32
 
 #define ILIST_LANGUAGE_LABEL_FORMAT "%s (%s)"
 
@@ -17,6 +17,9 @@
    //Lang       *lang;
    
    Evas_List   *selected_languages;
+   Evas_List   *kbd_models;
+
+   Evas         *evas;
 
    struct 
      {
@@ -30,7 +33,10 @@
      } gui;
 };
 
+/************** extern *****************************/
 extern Evas_List   *language_def_list;
+extern Evas_List   *language_kbd_model_list;
+/**************************************************/
 
 static void        *_create_data(E_Config_Dialog *cfd);
 static void        _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data 
*cfdata);
@@ -51,6 +57,8 @@
 static void _lang_languages_ilist_cb_change(void *data, Evas_Object *obj);
 static void _lang_selected_languages_ilist_cb_change(void *data, Evas_Object 
*obj);
 
+void _lang_update_kbd_model_list(E_Config_Dialog_Data *cfdata);
+
 static void _lang_free_language(Language  *lang);
 /************************************************************/
 
@@ -109,6 +117,9 @@
    //cfdata->lang = l;
 
    _fill_data(l, cfdata);
+
+   lang_load_kbd_models();
+   lang_load_xfree_languages();
    return cfdata;
 }
 
@@ -125,6 +136,9 @@
                                                           
cfdata->selected_languages);
      }
 
+   lang_free_kbd_models();
+   lang_free_xfree_languages();
+
    l = cfd->data;
    l->cfd = NULL;
    free(cfdata);
@@ -137,12 +151,13 @@
    Lang *l;
 
    l = cfd->data;
+   cfdata->evas = evas;
 
    o = e_widget_list_add(evas, 0, 0);
 
    ot = e_widget_table_add(evas, 0);
    {
-      ot2 = e_widget_table_add(evas, 1);
+      ot2 = e_widget_table_add(evas, 0);
       {
         of = e_widget_framelist_add(evas, _("Languages"), 0);
         {
@@ -150,7 +165,7 @@
            ob = e_widget_ilist_add(evas, ILIST_ICON_WIDTH, ILIST_ICON_HEIGHT, 
NULL);
            e_widget_on_change_hook_set(ob, _lang_languages_ilist_cb_change, 
cfdata);
            cfdata->gui.lang_ilist = ob;
-           e_widget_min_size_set(ob, 150, 200);
+           e_widget_min_size_set(ob, 250, 300);
            e_widget_ilist_go(ob);
            e_widget_framelist_object_append(of, ob);
         }
@@ -170,7 +185,7 @@
            ob = e_widget_ilist_add(evas, ILIST_ICON_WIDTH, ILIST_ICON_HEIGHT, 
NULL);
            e_widget_on_change_hook_set(ob, 
_lang_selected_languages_ilist_cb_change, cfdata);
            cfdata->gui.selected_lang_ilist = ob;
-           e_widget_min_size_set(ob, 150, 200);
+           e_widget_min_size_set(ob, 250, 200);
            e_widget_ilist_go(ob);
            e_widget_framelist_object_append(of, ob);
         }
@@ -185,7 +200,7 @@
            ob = e_widget_ilist_add(evas, ILIST_ICON_WIDTH, ILIST_ICON_HEIGHT, 
NULL);
            cfdata->gui.kbd_model_ilist = ob;
            {
-              e_widget_min_size_set(ob, 150, 75);
+              e_widget_min_size_set(ob, 250, 150);
               e_widget_ilist_go(ob);
            }
            e_widget_framelist_object_append(of, ob);
@@ -257,6 +272,7 @@
 static void 
 _lang_update_lang_defined_list(E_Config_Dialog_Data *cfdata)
 {
+   //FIXME: optimize - too slow
    char buf[1024];
    Evas_List     *l, *l2;
    Language_Def          *ld;
@@ -279,6 +295,7 @@
    e_widget_ilist_clear(cfdata->gui.lang_ilist);
    for (l = language_def_list; l; l = l->next)
      {
+       Evas_Object  *ic = NULL;
        int found = 0;
        ld = l->data;
 
@@ -294,7 +311,10 @@
        if (found) continue;
 
        snprintf(buf, sizeof(buf), ILIST_LANGUAGE_LABEL_FORMAT, ld->lang_name, 
ld->lang_shortcut);
-       e_widget_ilist_append(cfdata->gui.lang_ilist, NULL, buf, NULL, NULL, 
NULL);
+
+       ic = edje_object_add(cfdata->evas);
+       e_util_edje_icon_set(ic, "enlightenment/e");
+       e_widget_ilist_append(cfdata->gui.lang_ilist, ic, buf, NULL, NULL, 
NULL);
      }
 
    if (sel_label)
@@ -319,6 +339,7 @@
 static void 
 _lang_update_selected_lang_list(E_Config_Dialog_Data *cfdata)
 {
+   //FIXME: optimize - too slow
    char buf[1024];
    Evas_List   *l;
    Language    *lang;
@@ -334,11 +355,15 @@
    e_widget_ilist_clear(cfdata->gui.selected_lang_ilist);
    for (l = cfdata->selected_languages; l; l = l->next)
      {
+       Evas_Object *ic;
        lang = l->data;
 
        snprintf(buf, sizeof(buf), ILIST_LANGUAGE_LABEL_FORMAT, lang->lang_name,
                 lang->lang_shortcut);
-       e_widget_ilist_append(cfdata->gui.selected_lang_ilist, NULL, buf, NULL, 
NULL, NULL);
+
+       ic = edje_object_add(cfdata->evas);
+       e_util_edje_icon_set(ic, "enlightenment/e");
+       e_widget_ilist_append(cfdata->gui.selected_lang_ilist, ic, buf, NULL, 
NULL, NULL);
      }
 
    if (indx >= 0)
@@ -475,7 +500,48 @@
    if (!(cfdata = data)) return;
 
    _lang_update_unselect_button(cfdata);
+
+   _lang_update_kbd_model_list(cfdata);
 }
+
+void
+_lang_update_kbd_model_list(E_Config_Dialog_Data *cfdata)
+{
+   char *sel_lang_label;
+   if (!cfdata) return;
+
+   sel_lang_label = 
e_widget_ilist_selected_label_get(cfdata->gui.selected_lang_ilist);
+   if (!sel_lang_label)
+     {
+       e_widget_ilist_clear(cfdata->gui.kbd_model_ilist);
+       return;
+     }
+
+   if (!e_widget_ilist_count(cfdata->gui.kbd_model_ilist))
+     {
+       int indx = 0;
+       char buf[4096];
+       Language *lang;
+       Evas_List *l;
+       Language_Kbd_Model *lkm;
+
+       //FIXME: determine the selection index in advance
+       /*for (l = cfdata->selected_languages; l; l = l->next)
+         {
+         }*/
+
+       for (l = language_kbd_model_list; l; l = l->next)
+         {
+            lkm = l->data;
+            snprintf(buf, sizeof(buf), "%s (%s)", lkm->kbd_model_desctiption, 
lkm->kbd_model);
+            e_widget_ilist_append(cfdata->gui.kbd_model_ilist, NULL, buf, 
NULL, NULL, NULL);
+         }
+     }
+   e_widget_ilist_go(cfdata->gui.kbd_model_ilist);
+
+   //FIXME: select the appropriate kbd_model
+}
+
 static void
 _lang_free_language(Language  *lang)
 {
===================================================================
RCS file: /cvs/e/e_modules/language/e_mod_lang.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- e_mod_lang.c        10 May 2006 22:49:01 -0000      1.1
+++ e_mod_lang.c        12 May 2006 11:02:31 -0000      1.2
@@ -2,51 +2,242 @@
 #include "e_mod_lang.h"
 #include "e_mod_main.h"
 
-Evas_List  *language_def_list = NULL;
+#include <EXML.h>
+
+#define EXML_RETURN_ON_ERROR(xml) \
+   { \
+      exml_destroy(xml); \
+      return 0; \
+   }
+
+Evas_List   *language_def_list = NULL; // Language_Def
+Evas_List   *language_kbd_model_list = NULL; // Language_Kbd_Model
 
 /************ private ********************/
 int _lang_def_language_sort_cb(void *e1, void *e2);
+
+int  _lang_load_xfree_languages_load_configItem(EXML *xml, Language_Def *ld);
+int  _lang_load_xfree_languages_load_variantList(EXML *xml, Language_Def *ld);
+static void _lang_register_language(const char *lang_name, const char 
*lang_shortcut,
+                                   const char *lang_flag, Evas_List 
*kbd_layout,
+                                   Evas_List *kbd_layout_variant);
 /****************************************/
 
-void 
-lang_register_language(const char *lang_name, const char *lang_shortcut,
-                      const char *lang_flag, const char *kbd_layout,
-                      const char *kbd_layout_variant)
+
+int
+lang_load_kbd_models()
 {
-   Language_Def          *ld;
-   Evas_List     *l;
-   int found = 0;
-   int i;
+   EXML         *exml;
+   int  found;
 
-   if (!lang_name || !lang_shortcut || !kbd_layout) return;
+   exml = exml_new();
 
-   for (l = language_def_list; l && !found; l = l->next)
-     {
-       ld = l->data;
+   if (!exml) return 0;
+   if (!exml_init(exml))
+     EXML_RETURN_ON_ERROR(exml);
 
-       if (!strcmp(ld->lang_name, lang_name))
+   if (!exml_file_read(exml, "/usr/lib/X11/xkb/rules/xfree86.xml")) 
+     EXML_RETURN_ON_ERROR(exml)
+
+   if (strcasecmp(exml_tag_get(exml), "xkbConfigRegistry"))
+     EXML_RETURN_ON_ERROR(exml);
+
+   exml_down(exml);
+
+   found = 0;
+   while (!found)
+     {
+       if (!strcasecmp(exml_tag_get(exml), "modelList"))
          found = 1;
+       else
+         { 
+            if (!exml_next_nomove(exml)) 
+              break;
+         }
      }
-   if (found) return;
 
-   ld = E_NEW(Language_Def, 1);
-   if (!ld) return;
+   if (!found)
+     EXML_RETURN_ON_ERROR(exml);
 
-   ld->lang_name = evas_stringshare_add(lang_name);
-   ld->lang_shortcut = evas_stringshare_add(lang_shortcut);
-   ld->lang_flag = !lang_flag ? NULL : evas_stringshare_add(lang_flag);
-   ld->kbd_layout = evas_list_append(ld->kbd_layout, 
evas_stringshare_add(kbd_layout));
-   if (kbd_layout_variant)
-     ld->kbd_variant = evas_list_append(ld->kbd_variant, 
evas_stringshare_add(kbd_layout_variant));
+   exml_down(exml);
 
-   language_def_list = evas_list_append(language_def_list, ld);
+   if (strcasecmp(exml_tag_get(exml), "model"))
+     EXML_RETURN_ON_ERROR(exml);
 
-   language_def_list = evas_list_sort(language_def_list, 
evas_list_count(language_def_list),
-                                     _lang_def_language_sort_cb);
+   // here we run through all the kbd_models
+   while (1)
+     {
+       char buf[1024];
+       static counter = 0;
+       Language_Kbd_Model *lkm;
+
+       EXML_Node *current_model_node = exml_get(exml);
+
+       exml_down(exml);
+       //here we should have an configItem tag
+       if (!strcasecmp(exml_tag_get(exml), "configItem"))
+         {
+            Language_Kbd_Model  *lkm;
+
+            lkm = E_NEW(Language_Kbd_Model, 1);
+            if (lkm)
+              { 
+                 // here we step into configItem 
+                 exml_down(exml); 
+                 
+                 // here we run over the all elements in configItem
+                 while (1)
+                   {
+                      char *tag = exml_tag_get(exml);
+
+                      if (!strcasecmp(tag, "name")) 
+                        lkm->kbd_model = 
evas_stringshare_add(exml_value_get(exml));
+
+                      if (!strcasecmp(tag, "description"))
+                        {
+                           char *attr = exml_attribute_get(exml, "xml:lang");
+                           //FIXME: take into account current E localization
+                           if (!attr) 
+                             lkm->kbd_model_desctiption =
+                                evas_stringshare_add(exml_value_get(exml));
+                        }
+
+                      if (lkm->kbd_model && lkm->kbd_model_desctiption)
+                        break;
+
+                      if (!exml_next_nomove(exml))
+                        break;
+                   }
+
+                 if (lkm->kbd_model && lkm->kbd_model_desctiption)
+                    language_kbd_model_list = 
evas_list_append(language_kbd_model_list, lkm);
+                 else
+                   {
+                      if (lkm->kbd_model) evas_stringshare_del(lkm->kbd_model);
+                      if (lkm->kbd_model_desctiption)
+                        evas_stringshare_del(lkm->kbd_model_desctiption);
+                      E_FREE(lkm);
+                   }
+              }
+         }
+
+       exml_goto_node(exml, current_model_node);
+       if (!exml_next_nomove(exml))
+         break;
+     }
+   exml_destroy(exml);
+
+   return 1;
 }
+void
+lang_free_kbd_models()
+{
+   Language_Kbd_Model  *lkm;
+
+   while (language_kbd_model_list)
+     {
+       lkm = language_kbd_model_list->data;
 
-void 
-lang_unregister_all_languages()
+       if (lkm->kbd_model) evas_stringshare_del(lkm->kbd_model);
+       if (lkm->kbd_model_desctiption) 
evas_stringshare_del(lkm->kbd_model_desctiption);
+       E_FREE(lkm);
+       language_kbd_model_list = evas_list_remove_list(language_kbd_model_list,
+                                                       
language_kbd_model_list);
+     }
+}
+int
+lang_load_xfree_languages()
+{
+   EXML         *exml;
+   int found;
+
+   exml = exml_new();
+
+   if (!exml) return 0;
+   if (!exml_init(exml))
+     EXML_RETURN_ON_ERROR(exml)
+
+   if (!exml_file_read(exml, "/usr/lib/X11/xkb/rules/xfree86.xml"))
+     EXML_RETURN_ON_ERROR(exml)
+
+   if (strcasecmp(exml_tag_get(exml), "xkbConfigRegistry"))
+     EXML_RETURN_ON_ERROR(exml)
+
+   exml_down(exml);
+
+   found = 0;
+   while (!found)
+     {
+       if (!strcasecmp(exml_tag_get(exml), "layoutList"))
+         found = 1;
+       else
+         { 
+            if (!exml_next_nomove(exml)) 
+              break;
+         }
+     }
+
+   if (!found)
+     EXML_RETURN_ON_ERROR(exml)
+
+   exml_down(exml);
+
+   if (strcasecmp(exml_tag_get(exml), "layout"))
+     EXML_RETURN_ON_ERROR(exml)
+
+   while (1)
+     { 
+       Language_Def *ld;
+       EXML_Node *cur_layout_node = exml_get(exml);
+
+       ld = E_NEW(Language_Def, 1);
+       if (ld)
+         { 
+            // here we enter into "layout" tag 
+            exml_down(exml); 
+            // now we loop in "loyout" tag 
+            while (1) 
+              { 
+                 _lang_load_xfree_languages_load_configItem(exml, ld);
+                 _lang_load_xfree_languages_load_variantList(exml, ld); 
+
+                 if (ld->lang_name && ld->lang_shortcut && ld->kbd_layout)
+                   break;
+
+                 if (!exml_next_nomove(exml)) 
+                   break; 
+              }
+
+            if (ld->lang_name && ld->lang_shortcut && ld->kbd_layout)
+              {
+                 _lang_register_language(ld->lang_name, ld->lang_shortcut,
+                                         ld->lang_flag, ld->kbd_layout,
+                                         ld->kbd_variant);
+
+                 if (ld->lang_name) evas_stringshare_del(ld->lang_name);
+                 if (ld->lang_shortcut) 
evas_stringshare_del(ld->lang_shortcut);
+                 if (ld->lang_flag) evas_stringshare_del(ld->lang_flag);
+
+                 while (ld->kbd_layout) 
+                   ld->kbd_layout = evas_list_remove_list(ld->kbd_layout, 
ld->kbd_layout);
+
+                 while (ld->kbd_variant)
+                   ld->kbd_variant = evas_list_remove_list(ld->kbd_variant,
+                                                           ld->kbd_variant);
+                 E_FREE(ld);
+              }
+         }
+
+       exml_goto_node(exml, cur_layout_node);
+       if (!exml_next_nomove(exml))
+         break;
+     }
+
+   exml_destroy(exml);
+   return 1;
+}
+void
+lang_free_xfree_languages()
 {
    Language_Def          *ld;
    while (language_def_list)
@@ -70,6 +261,176 @@
 
        language_def_list = evas_list_remove_list(language_def_list, 
language_def_list);
      }
+}
+
+/******************* private *********************/
+
+int
+_lang_load_xfree_languages_load_configItem(EXML *xml, Language_Def *ld)
+{
+   EXML_Node   *current_node;
+   if (!xml || !ld) return 0;
+
+   if (strcasecmp(exml_tag_get(xml), "configItem")) return 0;
+
+   current_node = exml_get(xml);
+
+   exml_down(xml);
+
+   while (1)
+     {
+       char *tag = exml_tag_get(xml);
+
+       if (!strcasecmp(tag, "name"))
+         {
+            ld->kbd_layout = evas_list_append(ld->kbd_layout,
+                                              
evas_stringshare_add(exml_value_get(xml)));
+         }
+
+       if (!strcasecmp(tag, "shortDescription"))
+         {
+            char *attr = exml_attribute_get(xml, "xml:lang");
+            //FIXME: take into account current E localization
+            if (!attr)
+              { 
+                 if (ld->lang_shortcut) 
evas_stringshare_del(ld->lang_shortcut);
+                 ld->lang_shortcut = evas_stringshare_add(exml_value_get(xml));
+              }
+
+            if (!attr)
+              {
+                 char buf[1024];
+                 if (ld->lang_flag) evas_stringshare_del(ld->lang_flag);
+                 snprintf(buf, sizeof(buf), "%s_flag", exml_value_get(xml));
+                 ld->lang_flag = evas_stringshare_add(buf);
+              }
+         }
+
+       if (!strcasecmp(tag, "description"))
+         {
+            char *attr = exml_attribute_get(xml, "xml:lang");
+            //FIXME: take into account current E localization
+            if (!attr)
+              {
+                 if (ld->lang_name) evas_stringshare_del(ld->lang_name);
+                 ld->lang_name = evas_stringshare_add(exml_value_get(xml));
+              }
+         }
+
+       if (ld->lang_name && ld->lang_shortcut && ld->kbd_layout)
+         break;
+
+       if (!exml_next_nomove(xml))
+         break;
+     }
+   exml_goto_node(xml, current_node);
+   return 1;
+}
+
+int
+_lang_load_xfree_languages_load_variantList(EXML *xml, Language_Def *ld)
+{
+   EXML_Node   *current_node;
+   if (!xml || !ld) return 0;
+
+   if (strcasecmp(exml_tag_get(xml), "variantList")) return 0;
+
+   current_node = exml_get(xml);
+
+   if (!exml_down(xml)) return 0;
+
+   // now we run through the variantList
+   while (1)
+     {
+       if (!strcasecmp(exml_tag_get(xml), "variant"))
+         {
+            EXML_Node  *current_variant_node = exml_get(xml);
+
+            exml_down(xml);
+            if (!strcasecmp(exml_tag_get(xml), "configItem"))
+              {
+                 exml_down(xml);
+                 // running inside the configItem
+                 while (1)
+                   {
+                      char *tag = exml_tag_get(xml);
+                      if (!strcasecmp(tag, "name"))
+                        {
+                           //we found a name of the variant
+                           ld->kbd_variant = evas_list_append(ld->kbd_variant,
+                                                              
exml_value_get(xml));
+                           break;
+                        }
+
+                      if (!exml_next_nomove(xml))
+                        break;
+                   }
+              }
+            exml_goto_node(xml, current_variant_node);
+         }
+
+       if (!exml_next_nomove(xml))
+         break;
+     }
+
+   exml_goto_node(xml, current_node);
+
+   return 1;
+}
+
+static void 
+_lang_register_language(const char *lang_name, const char *lang_shortcut,
+                       const char *lang_flag, Evas_List *kbd_layout,
+                       Evas_List *kbd_layout_variant)
+{
+   Language_Def          *ld;
+   Evas_List     *l;
+   int found = 0;
+   int i;
+
+   if (!lang_name || !lang_shortcut || !kbd_layout) return;
+
+   for (l = language_def_list; l && !found; l = l->next)
+     {
+       ld = l->data;
+
+       if (!strcmp(ld->lang_name, lang_name))
+         found = 1;
+     }
+   if (found)
+     {
+       for (l = kbd_layout; l; l = l->next) 
+         ld->kbd_layout = evas_list_append(ld->kbd_layout, 
evas_stringshare_add(l->data)); 
+       
+       if (kbd_layout_variant) 
+         { 
+            for (l = kbd_layout_variant; l; l = l->next) 
+              ld->kbd_variant = evas_list_append(ld->kbd_variant, 
evas_stringshare_add(l->data));
+         }
+     }
+   else
+     {
+       ld = E_NEW(Language_Def, 1); 
+       if (!ld) return; 
+       
+       ld->lang_name = evas_stringshare_add(lang_name); 
+       ld->lang_shortcut = evas_stringshare_add(lang_shortcut); 
+       ld->lang_flag = !lang_flag ? NULL : evas_stringshare_add(lang_flag); 
+       
+       for (l = kbd_layout; l; l = l->next) 
+         ld->kbd_layout = evas_list_append(ld->kbd_layout, 
evas_stringshare_add(l->data)); 
+       
+       if (kbd_layout_variant) 
+         { 
+            for (l = kbd_layout_variant; l; l = l->next) 
+              ld->kbd_variant = evas_list_append(ld->kbd_variant, 
evas_stringshare_add(l->data));
+         }
+     }
+
+   language_def_list = evas_list_append(language_def_list, ld);
+
+   language_def_list = evas_list_sort(language_def_list, 
evas_list_count(language_def_list),
+                                     _lang_def_language_sort_cb);
 }
 
 int
===================================================================
RCS file: /cvs/e/e_modules/language/e_mod_lang.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- e_mod_lang.h        10 May 2006 22:49:01 -0000      1.1
+++ e_mod_lang.h        12 May 2006 11:02:31 -0000      1.2
@@ -3,8 +3,15 @@
 
 #include <e.h>
 
-typedef struct _Language Language;
-typedef struct _Language_Def  Language_Def;
+typedef struct _Language           Language;
+typedef struct _Language_Def       Language_Def;
+typedef struct _Language_Kbd_Model  Language_Kbd_Model;
+
+struct _Language_Kbd_Model
+{
+   const char *kbd_model;
+   const char *kbd_model_desctiption;
+};
 
 struct _Language
 {
@@ -25,13 +32,19 @@
    Evas_List   *kbd_variant;
 };
 
-void  lang_register_language(const char *lang_name, const char *lang_shortcut,
+/*void  lang_register_language(const char *lang_name, const char 
*lang_shortcut,
                             const char *lang_flag, const char *kbd_layout,
-                            const char *kbd_layout_variant);
+                            const char *kbd_layout_variant);*/
+
+/*void lang_register_language_layout(const char *lang_name, const char 
*kbd_layout);*/
+/*void lang_register_language_layout_variant(const char *lang_name, const char 
*kbd_layout_variant);*/
+
+/*void  lang_unregister_all_languages();*/
 
-void lang_register_language_layout(const char *lang_name, const char 
*kbd_layout);
-void lang_register_language_layout_variant(const char *lang_name, const char 
*kbd_layout_variant);
+int   lang_load_kbd_models();
+void  lang_free_kbd_models();
 
-void  lang_unregister_all_languages();
+int   lang_load_xfree_languages();
+void  lang_free_xfree_languages();
 
 #endif
===================================================================
RCS file: /cvs/e/e_modules/language/e_mod_main.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- e_mod_main.c        10 May 2006 22:49:01 -0000      1.1
+++ e_mod_main.c        12 May 2006 11:02:31 -0000      1.2
@@ -200,11 +200,13 @@
    const char *en_v[] = {"basic", NULL};
    const char *ru_l[] = {"ru", "ru_KOI", NULL};
    const char *ru_v[] = {"basic", "difficult", NULL};*/
-   lang_register_language("English", "EN", NULL, "en", "basic");
+   //lang_register_language("English", "EN", NULL, "en", "basic");
 
-   lang_register_language("Russian", "RU", NULL, "ru", NULL);
+   //lang_register_language("Russian", "RU", NULL, "ru", NULL);
 
-   lang_register_language("Lithuanian", "LT", NULL, "lt", NULL);
+   //lang_register_language("Lithuanian", "LT", NULL, "lt", NULL);
+
+   //lang_load_kbd_models();
    return l;
 }
 
@@ -214,6 +216,9 @@
    _lang_unregister_module_actions();
    _lang_unregister_module_keybindings(l);
 
+   //lang_unregister_all_languages();
+   //lang_free_kbd_models();
+
    while (l->conf->languages)
      {
        Language  *lang = l->conf->languages->data;
@@ -506,6 +511,7 @@
    E_CONFIG_LIMIT(l->conf->lang_show_indicator, 0, 1);
 
    /* this is for debug */
+#if 0
    Language *ll;
 
    ll = E_NEW(Language, 1);
@@ -546,6 +552,7 @@
 
        l->conf->languages = evas_list_append(l->conf->languages, ll);
      }
+#endif
 }
 
 /*static void




-------------------------------------------------------
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