Enlightenment CVS committal

Author  : sndev
Project : e_modules
Module  : language

Dir     : e_modules/language/src/module


Modified Files:
        e_mod_config.c e_mod_lang.c e_mod_lang.h e_mod_main.c 
        e_mod_main.h 


Log Message:


* new policy per window is added. unfortunatelly, it works a little bit slowly 
for now,
  but this will be fixed.

===================================================================
RCS file: /cvs/e/e_modules/language/src/module/e_mod_config.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -3 -r1.12 -r1.13
--- e_mod_config.c      18 May 2006 16:32:17 -0000      1.12
+++ e_mod_config.c      23 May 2006 09:41:18 -0000      1.13
@@ -121,6 +121,7 @@
 static Evas_Object *
 _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data 
*cfdata)
 {
+   E_Radio_Group  *rg;
    Evas_Object *o, *of, *ob, *ot, *ot2, *oft;
 
    cfdata->evas = evas;
@@ -137,7 +138,7 @@
            ob = e_widget_ilist_add(evas, ILIST_ICON_LANG_WIDTH, 
ILIST_ICON_LANG_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, 250, 250);
+           e_widget_min_size_set(ob, 250, 170);
            e_widget_ilist_go(ob);
            e_widget_framelist_object_append(of, ob);
         }
@@ -150,7 +151,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, 250, 250);
+           e_widget_min_size_set(ob, 250, 170);
            e_widget_ilist_go(ob);
            e_widget_frametable_object_append(oft, ob, 0, 0, 4, 1, 1, 1, 1, 1);
 
@@ -184,7 +185,7 @@
            e_widget_on_change_hook_set(ob, _lang_kbd_model_ilist_cb_change, 
cfdata);
            cfdata->gui.kbd_model_ilist = ob;
            {
-              e_widget_min_size_set(ob, 380, 100);
+              e_widget_min_size_set(ob, 380, 80);
               e_widget_ilist_go(ob);
            }
            e_widget_framelist_object_append(of, ob);
@@ -197,7 +198,7 @@
            e_widget_on_change_hook_set(ob, 
_lang_kbd_layout_variant_ilist_cb_change, cfdata);
            cfdata->gui.kbd_layout_variant_ilist = ob;
            {
-              e_widget_min_size_set(ob, 120, 100);
+              e_widget_min_size_set(ob, 120, 80);
               e_widget_ilist_go(ob);
            }
            e_widget_framelist_object_append(of, ob);
@@ -208,11 +209,26 @@
    }
    e_widget_list_object_append(o, ot, 1, 1, 0.5);
 
-   /*of = e_widget_framelist_add(evas, _("Options"), 0);
-   ob = e_widget_check_add(evas, _("Show Language Indicator"), 
(&(cfdata->lang_show_indicator)));
-   e_widget_framelist_object_append(of, ob);
+   
 
-   e_widget_list_object_append(o, of, 1, 1, 0.5);*/
+   of = e_widget_framelist_add(evas, _("Language Switching Policy"), 1);
+   { 
+      rg = e_widget_radio_group_new((int *)&(cfdata->lang_policy));
+
+      ob = e_widget_radio_add(evas, "Global", LS_GLOBAL_POLICY, rg);
+      e_widget_framelist_object_append(of, ob);
+
+      ob = e_widget_radio_add(evas, "Window", LS_WINDOW_POLICY, rg);
+      e_widget_framelist_object_append(of, ob);
+
+      ob = e_widget_radio_add(evas, "Application", LS_APPLICATION_POLICY, rg);
+      e_widget_framelist_object_append(of, ob);
+      e_widget_disabled_set(ob, 1);
+   }
+
+   e_widget_list_object_append(o, of, 1, 1, 0.5);
+
+   /****************************************************/
 
    _lang_update_lang_defined_list(cfdata);
    _lang_update_selected_lang_list(cfdata);
@@ -231,6 +247,17 @@
    Language    *lang, *lang2;
 
    cfdata->conf->lang_policy = cfdata->lang_policy;
+   if (cfdata->conf->lang_policy == LS_GLOBAL_POLICY)
+     { 
+       language_clear_border_language_setup_list();
+       language_unregister_callback_handlers();
+     }
+   else if (cfdata->conf->lang_policy == LS_WINDOW_POLICY ||
+           cfdata->conf->lang_policy == LS_APPLICATION_POLICY)
+     { 
+       language_register_callback_handlers();
+     }
+
    cfdata->conf->lang_show_indicator = cfdata->lang_show_indicator;
 
    while (cfdata->conf->languages)
@@ -246,10 +273,10 @@
          cfdata->conf->languages = evas_list_append(cfdata->conf->languages, 
lang);
      }
    cfdata->conf->language_selector = 0;
-   //e_config_save_queue();
-   e_config_save();
+   e_config_save_queue();
+   //e_config_save();
 
-   lang_language_switch_to(cfdata->conf, cfdata->conf->language_selector = 0);
+   lang_language_switch_to(cfdata->conf, (cfdata->conf->language_selector = 
0), 0);
    return 1;
 }
 static void
===================================================================
RCS file: /cvs/e/e_modules/language/src/module/e_mod_lang.c,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -3 -r1.21 -r1.22
--- e_mod_lang.c        18 May 2006 15:00:30 -0000      1.21
+++ e_mod_lang.c        23 May 2006 09:41:18 -0000      1.22
@@ -35,18 +35,18 @@
 #define KEYMAP_INDX    12
 #define NUM_OF_INDX    13
 
-#define LXC_FREE(p) \
+#define LXC_FREE(__p) \
    { \
       int i; \
       for (i = 0; i < NUM_OF_INDX; i++) \
-        if (p->sv[i]) evas_stringshare_del(p->sv[i]); \
-      if (p->dpy) XCloseDisplay(p->dpy); \
-      E_FREE(p); \
+        if (__p->sv[i]) evas_stringshare_del(__p->sv[i]); \
+      if (__p->dpy) XCloseDisplay(__p->dpy); \
+      E_FREE(__p); \
    }
 
-#define LANG_SETTING_SET_RETURN_ON_ERROR(p) \
+#define LANG_SETTING_SET_RETURN_ON_ERROR(__p) \
    { \
-      LXC_FREE(p); \
+      LXC_FREE(__p); \
       e_module_dialog_show("Error", "Error: The module was not able to switch 
between the<br>" \
                                    "selected languages. The main reason could 
be is that X<br>" \
                                    "keyboard rules file cannot be loaded 
propertly, or it <br>" \
@@ -99,42 +99,173 @@
 /****************************************/
 
 void
-lang_language_switch_to(Config *cfg, unsigned int n)
+lang_language_switch_to(Config *cfg, unsigned int n, int ignore_n)
 {
-   if (!cfg || n >= evas_list_count(cfg->languages)) return;
+#define APPLY_LANGUAGE_SETTINGS(__c) \
+   { \
+      Language *__l = evas_list_nth(__c->languages, __c->language_selector); \
+      if (__l) _lang_apply_language_settings(__l->kbd_model, __l->kbd_layout, 
__l->kbd_variant); \
+   }
+   
+   
+   if (!cfg) return;
 
-   cfg->language_selector = n;
+   if (cfg->lang_policy == LS_GLOBAL_POLICY)
+     { 
+       if (n < 0) n = 0;
+       else if (n >= evas_list_count(cfg->languages))
+         n = evas_list_count(cfg->languages) - 1;
 
-   /* here goes the actuall work that calls X to switch the kbd layout, etc. */
+       cfg->language_selector = n; 
+        
+       APPLY_LANGUAGE_SETTINGS(cfg);
+     }
+   else if (cfg->lang_policy == LS_WINDOW_POLICY)
+     {
+       if (ignore_n)
+         { 
+            Evas_List *l;
+            E_Border *bd = NULL;
+            E_Desk *desk;
 
-   {
-      Language  *l;
+            desk = e_desk_current_get
+                    
(e_zone_current_get(e_container_current_get(e_manager_current_get())));
 
-      l = evas_list_nth(cfg->languages, cfg->language_selector);
-      if (l)
-       {
-          _lang_apply_language_settings(l->kbd_model, l->kbd_layout, 
l->kbd_variant);
-       }
-   }
+            for (l = e_border_focus_stack_get(); l; l = l->next) 
+              { 
+                 bd = l->data; 
+                 if ((!bd->iconic) && (bd->visible) && 
+                     (((bd->desk == desk) ||
+                      ((bd->sticky) && (bd->zone == desk->zone))))) 
+                   { 
+                      break; 
+                   } 
+                 bd = NULL;
+              }
 
-   /* debug */
-#if 0
-   {
-   char buf[4096];
-   Language *l;
-
-   l = evas_list_nth(cfg->languages, cfg->language_selector);
-
-   snprintf(buf, sizeof(buf), 
-           "message 1: current_lang_selector : %d : 
lang->confg->languages.size() : %d<br>"
-           "ll->lang_name: %s<br>ll->lang_shortcut: %s<br>ll->lang_flag: 
%s<br>ll->kbd_model:"
-           "%s<br>ll->kbd_layout: %s<br>ll->kbd_variant: %s",
-           cfg->language_selector, evas_list_count(cfg->languages),
-           l->lang_name, l->lang_shortcut, l->lang_flag, l->kbd_model,
-           l->kbd_layout, l->kbd_variant);
-   e_module_dialog_show( _("Enlightenment Language Enhancment Module"), buf);
-   }
-#endif
+            cfg->language_selector = 0;
+            if (bd)
+              {
+                 // here we have to set the language used by the window
+                 // if at all we have to do this ???? QUESTION - because,
+                 // if we just switch the desktop and we have focused window 
on it
+                 // them most probably !!! the focus_in callback will activate
+                 Border_Language_Settings *bls = NULL;
+
+                 for (l = cfg->border_lang_setup; l; l = l->next)
+                   {
+                      bls = l->data;
+
+                      if (bls->bd == bd)
+                        {
+                           // so we found a window with border settings set
+                           // 
+                           Language *lang = evas_list_nth(cfg->languages,
+                                                          
bls->language_selector);
+                           if (strcmp(bls->language_name, lang->lang_name))
+                             {
+                                // here we will be smart :) we will try first 
to
+                                // find correct language settings and if we 
fail
+                                // then to fallback to default language
+
+                                bls->language_selector = 0;
+
+                                /*Evas_List *l2;
+                                int j = 0;
+                                for (l2 = cfg->languages; l2; l2 = l2->next, 
j++)
+                                  {
+                                     lang = l->data;
+                                     if (!strcmp(bls->language_name, 
lang->lang_name))
+                                       break;
+                                  }
+
+                                if (j) 
+                                  bls->language_selector = j;
+                                else
+                                  {
+                                     //hhhhmmm the language_settings of the 
border is incorrect.
+                                     //remove them. and fallback to default 
language.
+                                     if (bls->language_name)
+                                       
evas_stringshare_del(bls->language_name);
+                                     E_FREE(bls);
+                                     cfg->border_lang_setup = 
evas_list_remove_list
+                                        (cfg->border_lang_setup, l);
+                                  }*/
+                             }
+                           break;
+                        }
+                      bls = NULL;
+                   }
+
+                 if (bls) 
+                   cfg->language_selector = bls->language_selector;
+              } 
+            APPLY_LANGUAGE_SETTINGS(cfg);
+         }
+       else
+         { 
+            Evas_List *l;
+            E_Border *bd = NULL;
+
+            if (n >= evas_list_count(cfg->languages))
+              n = evas_list_count(cfg->languages) - 1;
+
+            bd = e_border_focused_get();
+
+            if (bd)
+              {
+                 Evas_List *l;
+                 Border_Language_Settings *bls; 
+                 Language *lang;
+                 // we have a border. Let find it in the list of borders that 
have
+                 // language settings.
+
+                 cfg->language_selector = n;
+                 lang = evas_list_nth(cfg->languages, n);
+
+                 bls = NULL;
+                 for (l = cfg->border_lang_setup; l; l = l->next)
+                   {
+                      bls = l->data;
+                      if (bls && (bls->bd = bd))
+                        break;
+                      bls = NULL;
+                   }
+
+                 if (bls)
+                   {
+                      // kewl (ooohhh devilhorns :)) we have a border with 
language 
+                      // settings set. Updata them
+                      bls->language_selector = n;
+                      if (bls->language_name) 
evas_stringshare_del(bls->language_name);
+                      bls->language_name = 
evas_stringshare_add(lang->lang_name);
+                   }
+                 else
+                   {
+                      // there is no window.
+                      if (n) 
+                        {
+                           // we need to save none default lang settings
+                           bls = E_NEW(Border_Language_Settings, 1);
+                           bls->bd = bd;
+                           bls->language_selector = n;
+                           bls->language_name = 
evas_stringshare_add(lang->lang_name);
+
+                           cfg->border_lang_setup = 
evas_list_append(cfg->border_lang_setup, bls);
+                        }
+                   }
+              }
+            else
+              cfg->language_selector = n;
+
+            APPLY_LANGUAGE_SETTINGS(cfg);
+                 //e_module_dialog_show("Warning", "Focused window on 
desktop");
+         }
+     }
+   else if (cfg->lang_policy == LS_APPLICATION_POLICY)
+     {
+       //e_module_dialog_show("Warning" , "Warning : This feature is not 
implemented yet.");
+     }
 
    language_face_language_indicator_update();
 }
@@ -148,9 +279,9 @@
    if (size <= 1) return;
 
    if (cfg->language_selector >= size - 1)
-     lang_language_switch_to(cfg, 0);
+     lang_language_switch_to(cfg, 0, 0);
    else
-     lang_language_switch_to(cfg, cfg->language_selector + 1);
+     lang_language_switch_to(cfg, cfg->language_selector + 1, 0);
 }
 void
 lang_language_switch_to_prev(Config *cfg)
@@ -162,9 +293,9 @@
    if (size <= 1) return;
 
    if (cfg->language_selector == 0)
-     lang_language_switch_to(cfg, size - 1);
+     lang_language_switch_to(cfg, size - 1, 0);
    else
-     lang_language_switch_to(cfg, cfg->language_selector - 1);
+     lang_language_switch_to(cfg, cfg->language_selector - 1, 0);
 }
 Language *
 lang_get_default_language(Config *cfg)
@@ -428,7 +559,7 @@
 const char *
 lang_language_current_kbd_model_get()
 {
-   //FIXME: make the function return the actuall keyboard model
+   //FIXME: make the function return the actual keyboard model
    return evas_stringshare_add("compaqik13");
 } 
 
@@ -799,6 +930,134 @@
      }
    return 1;
 }
+
+/********************** event callbacks 
***************************************/
+int
+lang_cb_event_desk_show(void *data, int type, void *event)
+{
+   E_Event_Desk_Show *ev;
+   Config           *conf;
+   Evas_List        *l;
+   E_Border         *bd;
+
+   if (!(conf = data)) return 1;
+
+   ev = event;
+   // Actually this code should be executed only if WINDOW ir APPLICATION 
policy
+   // is used.
+   if (conf->lang_policy == LS_GLOBAL_POLICY)
+     { 
+       e_module_dialog_show("Warning", "Warning: This is a bug in the code. 
This message<br>"
+                                       "should in this context when GLOBAL 
policy is used.<br>"
+                                       "Please report this behaviour.");
+       return 1;
+     }
+
+   for (l = e_border_focus_stack_get(); l; l = l->next) 
+     { 
+       bd = l->data; 
+       if ((!bd->iconic) && (bd->visible) && 
+           (((bd->desk == ev->desk) ||
+            ((bd->sticky) && (bd->zone == ev->desk->zone))))) 
+         { 
+            break; 
+         } 
+       bd = NULL; 
+     }
+
+   if (!bd)
+     lang_language_switch_to(conf, 0, 0);
+
+   return 1;
+}
+
+int lang_cb_event_border_focus_in(void *data, int type, void *ev)
+{
+   E_Event_Border_Focus_In *e;
+
+   e = ev;
+
+   lang_language_switch_to(data, 0, 1);
+   return 1;
+}
+
+int lang_cb_event_border_remove(void *data, int type, void *ev)
+{
+   E_Event_Border_Remove      *e;
+   Border_Language_Settings   *bls;
+
+   Evas_List   *l;
+   Config      *cfg;
+
+   e = ev;
+   cfg = data;
+
+   for (l = cfg->border_lang_setup; l; l = l->next)
+     {
+       bls = l->data;
+
+       if (bls->bd == e->border)
+         {
+            cfg->border_lang_setup = evas_list_remove(cfg->border_lang_setup, 
bls);
+            if (bls->language_name) evas_stringshare_del(bls->language_name);
+            E_FREE(bls);
+            break;
+         }
+     }
+
+   if (!e_border_focused_get())
+     lang_language_switch_to(cfg, 0, 0);
+
+   return 1;
+}
+
+int
+lang_cb_event_border_iconify(void *data, int type, void *ev)
+{
+   E_Event_Border_Iconify *e;
+
+   e = ev;
+
+   if (!e_border_focused_get())
+     lang_language_switch_to(data, 0, 0);
+
+   return;
+}
+
+#if 0
+int
+lang_cb_event_border_iconify(void *data, int type, void *event)
+{
+  // e_module_dialog_show("1", "lang_cb_event_border_iconify");
+   return 1;
+}
+int
+lang_cb_event_border_uniconify(void *data, int type, void *event)
+{
+   //e_module_dialog_show("1", "lang_cb_event_border_uniconify");
+   return 1;
+}
+int
+lang_cb_event_border_zone_set(void *data, int type, void *event)
+{
+   //e_module_dialog_show("1", "lang_cb_event_border_zone_set");
+   return 1;
+}
+int
+lang_cb_event_border_desk_set(void *data, int type, void *event)
+{
+   //e_module_dialog_show("1", "lang_cb_event_border_desk_set");
+   return 1;
+}
+int
+lang_cb_event_border_hide(void *data, int type, void *event)
+{
+   //e_module_dialog_show("1", "lang_cb_event_border_hide");
+   return 1;
+}
+#endif
+
+/******************************************************************************/
 
 #if 0
 static int 
===================================================================
RCS file: /cvs/e/e_modules/language/src/module/e_mod_lang.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -3 -r1.11 -r1.12
--- e_mod_lang.h        18 May 2006 15:03:28 -0000      1.11
+++ e_mod_lang.h        23 May 2006 09:41:18 -0000      1.12
@@ -4,9 +4,10 @@
 #include <e.h>
 #include "e_mod_main.h"
 
-typedef struct _Language           Language;
-typedef struct _Language_Predef            Language_Predef;
-typedef struct _Language_Kbd_Model  Language_Kbd_Model;
+typedef struct _Language                 Language;
+typedef struct _Language_Predef                  Language_Predef;
+typedef struct _Language_Kbd_Model       Language_Kbd_Model;
+typedef struct _Border_Language_Settings  Border_Language_Settings;
 
 struct _Language_Kbd_Model
 {
@@ -14,6 +15,13 @@
    const char *kbd_model_desctiption;
 };
 
+struct _Border_Language_Settings
+{
+   E_Border    *bd;
+   int        language_selector;
+   const char  *language_name;
+};
+
 struct _Language
 {
    unsigned int          id;
@@ -34,7 +42,7 @@
    Evas_List   *kbd_variant; // const char *
 };
 
-void       lang_language_switch_to(Config *cfg, unsigned int n);
+void       lang_language_switch_to(Config *cfg, unsigned int n, int ignore_n);
 void       lang_language_switch_to_next(Config *cfg);
 void       lang_language_switch_to_prev(Config *cfg);
 
@@ -50,5 +58,19 @@
 void       lang_language_free(Language *l);
 
 const char *lang_language_current_kbd_model_get();
+
+/*************** border callback handlers *****************/
+
+int lang_cb_event_desk_show(void *data, int type, void *ev);
+int lang_cb_event_border_focus_in(void *data, int type, void *ev);
+int lang_cb_event_border_remove(void *data, int type, void *ev);
+int lang_cb_event_border_iconify(void *data, int type, void *ev);
+
+#if 0
+int lang_cb_event_border_zone_set(void *data, int type, void *event);
+int lang_cb_event_border_desk_set(void *data, int type, void *event);
+int lang_cb_event_border_show(void *data, int type, void *event);
+int lang_cb_event_border_hide(void *data, int type, void *event);
+#endif
 
 #endif
===================================================================
RCS file: /cvs/e/e_modules/language/src/module/e_mod_main.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -3 -r1.12 -r1.13
--- e_mod_main.c        18 May 2006 16:32:17 -0000      1.12
+++ e_mod_main.c        23 May 2006 09:41:18 -0000      1.13
@@ -77,8 +77,7 @@
                                  _lang_button_cb_mouse_down, inst);
 
    language_config->instances = evas_list_append(language_config->instances, 
inst);
-   //language_face_language_indicator_update();
-   lang_language_switch_to(language_config, 
language_config->language_selector);
+   lang_language_switch_to(language_config, 
language_config->language_selector, 0);
    return gcc;
 }
 static void
@@ -179,7 +178,6 @@
 
    if (load_default_config)
      {
-       e_module_dialog_show("aaaaaaaaa", "neeewwwwwwwww config!!!!!!!!!!!");
        Language  *lang;
        language_config->lang_policy = LS_GLOBAL_POLICY;
        language_config->lang_show_indicator = 1;
@@ -209,9 +207,12 @@
    E_CONFIG_LIMIT(language_config->lang_show_indicator, 0, 1);
 
    language_config->module = m;
+
+
    e_gadcon_provider_register((E_Gadcon_Client_Class *)(&_gadcon_class));
 
-   //language_face_language_indicator_update();
+   language_register_callback_handlers();
+
    lang_register_module_actions();
    lang_register_module_keybindings();
 }
@@ -221,8 +222,11 @@
 {
    e_gadcon_provider_unregister((E_Gadcon_Client_Class *)(&_gadcon_class));
 
+   language_unregister_callback_handlers();
+   language_clear_border_language_setup_list();
+
    //
-   lang_language_switch_to(language_config, 0);
+   lang_language_switch_to(language_config, 0, 0);
 
    if (language_config->config_dialog)
      e_object_del(E_OBJECT(language_config->config_dialog));
@@ -239,6 +243,7 @@
    lang_unregister_module_keybindings();
    lang_unregister_module_actions();
 
+
    free(language_config);
    language_config = NULL;
 
@@ -304,6 +309,68 @@
      }
 }
 
+void language_register_callback_handlers()
+{
+   if (language_config->lang_policy == LS_GLOBAL_POLICY ||
+       language_config->handlers) return;
+
+   language_config->handlers = evas_list_append
+      (language_config->handlers, ecore_event_handler_add
+       (E_EVENT_DESK_SHOW, lang_cb_event_desk_show, language_config));
+
+   language_config->handlers = evas_list_append
+      (language_config->handlers, ecore_event_handler_add
+       (E_EVENT_BORDER_FOCUS_IN, lang_cb_event_border_focus_in, 
language_config));
+
+   language_config->handlers = evas_list_append
+      (language_config->handlers, ecore_event_handler_add
+       (E_EVENT_BORDER_REMOVE, lang_cb_event_border_remove, language_config));
+
+   language_config->handlers = evas_list_append
+      (language_config->handlers, ecore_event_handler_add
+       (E_EVENT_BORDER_ICONIFY, lang_cb_event_border_iconify, 
language_config));
+
+   /*language_config->handlers = evas_list_append
+      (language_config->handlers, ecore_event_handler_add
+       (E_EVENT_BORDER_ZONE_SET, lang_cb_event_border_zone_set, 
language_config));
+
+   language_config->handlers = evas_list_append
+      (language_config->handlers, ecore_event_handler_add
+       (E_EVENT_BORDER_DESK_SET, lang_cb_event_border_desk_set, 
language_config));
+
+   language_config->handlers = evas_list_append
+      (language_config->handlers, ecore_event_handler_add
+       (E_EVENT_BORDER_SHOW, lang_cb_event_border_show, language_config));
+
+   language_config->handlers = evas_list_append
+      (language_config->handlers, ecore_event_handler_add
+       (E_EVENT_BORDER_HIDE, lang_cb_event_border_hide, language_config));*/
+}
+void language_unregister_callback_handlers()
+{ 
+   while (language_config->handlers) 
+     { 
+       ecore_event_handler_del(language_config->handlers->data);
+       language_config->handlers = 
evas_list_remove_list(language_config->handlers,
+                                                         
language_config->handlers);
+     }
+}
+void language_clear_border_language_setup_list()
+{
+   if (!language_config) return;
+
+   while (language_config->border_lang_setup)
+     {
+       Border_Language_Settings *bls = 
language_config->border_lang_setup->data;
+
+       if (bls->language_name) evas_stringshare_del(bls->language_name);
+       E_FREE(bls);
+
+       language_config->border_lang_setup = 
+          evas_list_remove_list(language_config->border_lang_setup,
+                                language_config->border_lang_setup);
+     }
+}
 /************************* Private funcs 
*************************************************/
 static void 
 _lang_button_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void 
*event_info)
@@ -426,7 +493,7 @@
             if (language_config->language_selector == indx)
               break;
 
-            lang_language_switch_to(language_config, indx);
+            lang_language_switch_to(language_config, indx, 0);
             break;
          }
      }
===================================================================
RCS file: /cvs/e/e_modules/language/src/module/e_mod_main.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -3 -r1.11 -r1.12
--- e_mod_main.h        18 May 2006 15:03:28 -0000      1.11
+++ e_mod_main.h        23 May 2006 09:41:18 -0000      1.12
@@ -6,6 +6,7 @@
 /******************* Shelf Code ****************************/
 typedef enum { LS_GLOBAL_POLICY,
               LS_WINDOW_POLICY,
+              LS_APPLICATION_POLICY,
               LS_UNKNOWN_POLICY }lang_switch_policy_t;
 
 typedef struct _Config Config;
@@ -27,10 +28,14 @@
    Evas_List        *instances; // Instance
    E_Menu           *menu;
 
+   Evas_List        *handlers;
+
    /* lang related stuff */
    unsigned int          language_selector;
    Evas_List     *language_predef_list; // Language_Predef
    Evas_List     *language_kbd_model_list; // Language_Kbd_Model
+
+   Evas_List     *border_lang_setup; // Border_Language_Settings
 };
 
 /********** module api *********************/
@@ -48,14 +53,11 @@
 
 /************ Just publics *****************/
 void language_face_language_indicator_update();
-/*******************************************/
 
-/**********************************************************/
+void language_register_callback_handlers();
+void language_unregister_callback_handlers();
 
-/*
-
-void  lang_face_language_indicator_set(Lang *l);
-void  lang_face_menu_language_indicator_set(Lang *l);
-void  lang_face_menu_regenerate(Lang_Face *lf);*/
+void language_clear_border_language_setup_list();
+/*******************************************/
 
 #endif




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