Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_gadcon.c e_gadcon.h e_int_config_modules.c 
        e_int_gadcon_config.c e_int_shelf_config.c e_widget_radio.c 


Log Message:


gadcons now can have their contents enabled/disabled depending on what is
providing it.

===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_gadcon.c,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -3 -r1.23 -r1.24
--- e_gadcon.c  5 May 2006 23:31:12 -0000       1.23
+++ e_gadcon.c  7 May 2006 09:49:37 -0000       1.24
@@ -49,6 +49,7 @@
 static void e_gadcon_layout_unpack(Evas_Object *obj);
 
 static Evas_Hash *providers = NULL;
+static Evas_List *providers_list = NULL;
 static Evas_List *gadcons = NULL;
 
 /* externally accessible functions */
@@ -71,6 +72,7 @@
    E_Gadcon *gc;
    
    providers = evas_hash_direct_add(providers, cc->name, cc);
+   providers_list = evas_list_append(providers_list, cc);
    for (l = gadcons; l; l = l->next)
      {
        gc = l->data;
@@ -102,6 +104,13 @@
        e_object_del(E_OBJECT(gcc));
      }
    providers = evas_hash_del(providers, cc->name, cc);
+   providers_list = evas_list_remove(providers_list, cc);
+}
+
+EAPI Evas_List *
+e_gadcon_provider_list(void)
+{
+   return providers_list;
 }
 
 EAPI E_Gadcon *
@@ -213,6 +222,7 @@
             E_Gadcon_Client_Class *cc;
             
             cf_gcc = l->data;
+            if (!cf_gcc->name) continue;
             cc = evas_hash_find(providers, cf_gcc->name);
             if (cc)
               {
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_gadcon.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -3 -r1.17 -r1.18
--- e_gadcon.h  5 May 2006 23:31:12 -0000       1.17
+++ e_gadcon.h  7 May 2006 09:49:37 -0000       1.18
@@ -124,6 +124,7 @@
 EAPI int              e_gadcon_shutdown(void);
 EAPI void             e_gadcon_provider_register(E_Gadcon_Client_Class *cc);
 EAPI void             e_gadcon_provider_unregister(E_Gadcon_Client_Class *cc);
+EAPI Evas_List       *e_gadcon_provider_list(void);
 EAPI E_Gadcon        *e_gadcon_swallowed_new(const char *name, char *id, 
Evas_Object *obj, char *swallow_name);
 EAPI void             e_gadcon_swallowed_min_size_set(E_Gadcon *gc, Evas_Coord 
w, Evas_Coord h);
 EAPI void             e_gadcon_min_size_request_callback_set(E_Gadcon *gc, 
void (*func) (void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord h), void 
*data);
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_int_config_modules.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -3 -r1.27 -r1.28
--- e_int_config_modules.c      4 Mar 2006 07:58:17 -0000       1.27
+++ e_int_config_modules.c      7 May 2006 09:49:37 -0000       1.28
@@ -250,8 +250,8 @@
    Evas_Object *o, *of, *ob, *ot, *ilist, *mt;
    E_Radio_Group *rg;
    E_Module *m;
+   Evas_List *l;
    char buf[4096];
-   int i;
 
    o = e_widget_list_add(evas, 1, 0);
    ot = e_widget_table_add(evas, 1);
@@ -262,12 +262,12 @@
    e_widget_on_change_hook_set(ilist, _ilist_cb_change, cfdata);
 
    cfdata->state = -1;
-   for (i = 0; i < evas_list_count(cfdata->modules); i++)
+   for (l = cfdata->modules; l; l = l->next)
      {
        CFModule *cm;
        Evas_Object *oc;
        
-       cm = evas_list_nth(cfdata->modules, i);
+       cm = l->data;
        if (cm)
          {
             cm->state = MOD_UNLOADED;
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_int_gadcon_config.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- e_int_gadcon_config.c       5 May 2006 23:31:12 -0000       1.2
+++ e_int_gadcon_config.c       7 May 2006 09:49:37 -0000       1.3
@@ -13,6 +13,9 @@
 struct _E_Config_Dialog_Data
 {
    E_Gadcon *gc;
+   char *cname;
+   int enabled;
+   Evas_Object *o_enabled, *o_disabled;
 };
 
 /* a nice easy setup function that does the dirty work */
@@ -43,27 +46,7 @@
 static void
 _fill_data(E_Config_Dialog_Data *cfdata)
 {
-/*   
-   if (cfdata->escfg->style)
-     cfdata->style = strdup(cfdata->escfg->style);
-   else
-     cfdata->style = strdup("");
-   cfdata->orient = cfdata->escfg->orient;
-   cfdata->fit_along = cfdata->escfg->fit_along;
-   cfdata->fit_size = cfdata->escfg->fit_size;
-   cfdata->size = cfdata->escfg->size;
-   if ((!cfdata->escfg->popup) && 
-       (cfdata->escfg->layer == 1))
-     cfdata->layering = 0;
-   else if ((cfdata->escfg->popup) && 
-           (cfdata->escfg->layer == 0))
-     cfdata->layering = 1;
-   else if ((cfdata->escfg->popup) && 
-           (cfdata->escfg->layer == 200))
-     cfdata->layering = 2;
-   else
-     cfdata->layering = 2;
- */
+   cfdata->cname = NULL;
 }
 
 static void *
@@ -86,7 +69,7 @@
 {
    /* Free the cfdata */
    cfdata->gc->config_dialog = NULL;
-//   if (cfdata->style) free(cfdata->style);
+   if (cfdata->cname) free(cfdata->cname);
    free(cfdata);
 }
 
@@ -94,53 +77,95 @@
 static int
 _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
 {
-/*   
-   E_Zone *zone;
-   int id;
-   
-   cfdata->escfg->orient = cfdata->orient;
-   cfdata->escfg->fit_along = cfdata->fit_along;
-   cfdata->escfg->fit_size = cfdata->fit_size;
-   cfdata->escfg->size = cfdata->size;
-   
-   if (cfdata->escfg->style) evas_stringshare_del(cfdata->escfg->style);
-   cfdata->escfg->style = evas_stringshare_add(cfdata->style);
-   if (cfdata->layering == 0)
-     {
-       cfdata->escfg->popup = 0;
-       cfdata->escfg->layer = 1;
-     }
-   else if (cfdata->layering == 1)
-     {
-       cfdata->escfg->popup = 1;
-       cfdata->escfg->layer = 0;
-     }
-   else if (cfdata->layering == 2)
-     {
-       cfdata->escfg->popup = 1;
-       cfdata->escfg->layer = 200;
-     }
-   zone = cfdata->es->zone;
-   id = cfdata->es->id;
-   cfdata->es->config_dialog = NULL;
-   e_object_del(E_OBJECT(cfdata->es));
-   cfdata->es = e_shelf_zone_new(zone, cfdata->escfg->name, 
-                                cfdata->escfg->style,
-                                cfdata->escfg->popup,
-                                cfdata->escfg->layer, id);
-   cfdata->es->cfg = cfdata->escfg;
-   cfdata->es->fit_along = cfdata->escfg->fit_along;
-   cfdata->es->fit_size = cfdata->escfg->fit_size;
-   e_shelf_orient(cfdata->es, cfdata->escfg->orient);
-   e_shelf_position_calc(cfdata->es);
-   e_shelf_populate(cfdata->es);
-   e_shelf_show(cfdata->es);
-   e_config_save_queue();
- */
+   Evas_List *l;
+   E_Config_Gadcon *cf_gc;
+   E_Config_Gadcon_Client *cf_gcc;
+   int ok = 0;
+
    cfdata->gc->config_dialog = cfd;
+   for (l = e_config->gadcons; l; l = l->next)
+     {
+       cf_gc = l->data;
+       if ((!strcmp(cf_gc->name, cfdata->gc->name)) &&
+           (!strcmp(cf_gc->id, cfdata->gc->id)))
+         {
+            ok = 1;
+            break;
+         }
+     }
+   if (!ok) return;
+   for (l = cf_gc->clients; l; l = l->next)
+     {
+       cf_gcc = l->data;
+       if (!cf_gcc->name) continue;
+       if (!strcmp(cf_gcc->name, cfdata->cname))
+         {
+            if (!cfdata->enabled)
+              {
+                 /* remove from list */
+                 cf_gc->clients = evas_list_remove_list(cf_gc->clients, l);
+                 if (cf_gcc->name) evas_stringshare_del(cf_gcc->name);
+                 if (cf_gcc->id) evas_stringshare_del(cf_gcc->id);
+                 if (cf_gcc->style) evas_stringshare_del(cf_gcc->style);
+                 free(cf_gcc);
+                 goto savedone;
+              }
+            return 1; /* Apply was OK */
+         }
+     }
+   cf_gcc = E_NEW(E_Config_Gadcon_Client, 1);
+   cf_gcc->name = evas_stringshare_add(cfdata->cname);
+   cf_gcc->id = evas_stringshare_add("default");
+   cf_gcc->geom.res = 800;
+   cf_gcc->geom.size = 80;
+   cf_gcc->geom.pos = cf_gcc->geom.res - cf_gcc->geom.size;
+   cf_gcc->autoscroll = 0;
+   cf_gcc->resizable = 0;
+   cf_gc->clients = evas_list_append(cf_gc->clients, cf_gcc);
+   savedone:
+   e_gadcon_unpopulate(cfdata->gc);
+   e_gadcon_populate(cfdata->gc);
+   e_config_save_queue();
    return 1; /* Apply was OK */
 }
 
+static void
+_cb_select(void *data)
+{
+   E_Config_Dialog_Data *cfdata;
+   Evas_List *l;
+   E_Config_Gadcon *cf_gc;
+   E_Config_Gadcon_Client *cf_gcc;
+   int ok = 0, enabled = 0;
+   
+   cfdata = data;
+   for (l = e_config->gadcons; l; l = l->next)
+     {
+       cf_gc = l->data;
+       if ((!strcmp(cf_gc->name, cfdata->gc->name)) &&
+           (!strcmp(cf_gc->id, cfdata->gc->id)))
+         {
+            ok = 1;
+            break;
+         }
+     }
+   if (!ok) return;
+   for (l = cf_gc->clients; l; l = l->next)
+     {
+       cf_gcc = l->data;
+       if (!cf_gcc->name) continue;
+       if (!strcmp(cf_gcc->name, cfdata->cname))
+         {
+            enabled = 1;
+            break;
+         }
+     }
+   e_widget_disabled_set(cfdata->o_enabled, 0);
+   e_widget_disabled_set(cfdata->o_disabled, 0);
+   e_widget_radio_toggle_set(cfdata->o_enabled, enabled);
+   e_widget_radio_toggle_set(cfdata->o_disabled, 1 - enabled);
+}
+
 /**--GUI--**/
 static Evas_Object *
 _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data 
*cfdata)
@@ -155,84 +180,42 @@
    /* FIXME: this is just raw config now - it needs UI improvments */
    o = e_widget_list_add(evas, 0, 1);
 
-/*   
-   o2 = e_widget_list_add(evas, 0, 0);
-   
-   of = e_widget_framelist_add(evas, _("Stacking"), 0);
-   rg = e_widget_radio_group_new(&(cfdata->layering));
-   ob = e_widget_radio_add(evas, _("Above Everything"), 2, rg);
-   e_widget_framelist_object_append(of, ob);
-   ob = e_widget_radio_add(evas, _("Below Windows"), 1, rg);
-   e_widget_framelist_object_append(of, ob);
-   ob = e_widget_radio_add(evas, _("Below Everything"), 0, rg);
-   e_widget_framelist_object_append(of, ob);
-   e_widget_list_object_append(o2, of, 1, 1, 0.5);
-   
-   of = e_widget_framelist_add(evas, _("Size"), 0);
-   ob = e_widget_check_add(evas, _("Shrink length fit contents"), 
&(cfdata->fit_along));
-   e_widget_framelist_object_append(of, ob);
-   ob = e_widget_label_add(evas, _("Shelf Size"));
-   e_widget_framelist_object_append(of, ob);
-   ob = e_widget_slider_add(evas, 1, 0, _("%3.0f pixels"), 4, 120, 4, 0, NULL, 
&(cfdata->size), 200);
-   e_widget_framelist_object_append(of, ob);
-   e_widget_list_object_append(o2, of, 1, 1, 0.5);
-
-   of = e_widget_framelist_add(evas, _("Layout"), 0);
-   rg = e_widget_radio_group_new(&(cfdata->orient));
-   ob = e_widget_radio_add(evas, _("Left"), E_GADCON_ORIENT_LEFT, rg);
-   e_widget_framelist_object_append(of, ob);
-   ob = e_widget_radio_add(evas, _("Right"), E_GADCON_ORIENT_RIGHT, rg);
-   e_widget_framelist_object_append(of, ob);
-   ob = e_widget_radio_add(evas, _("Top"), E_GADCON_ORIENT_TOP, rg);
-   e_widget_framelist_object_append(of, ob);
-   ob = e_widget_radio_add(evas, _("Bottom"), E_GADCON_ORIENT_BOTTOM, rg);
-   e_widget_framelist_object_append(of, ob);
-   ob = e_widget_radio_add(evas, _("Top Left"), E_GADCON_ORIENT_CORNER_TL, rg);
-   e_widget_framelist_object_append(of, ob);
-   ob = e_widget_radio_add(evas, _("Top Right"), E_GADCON_ORIENT_CORNER_TR, 
rg);
-   e_widget_framelist_object_append(of, ob);
-   ob = e_widget_radio_add(evas, _("Bottom Left"), E_GADCON_ORIENT_CORNER_BL, 
rg);
-   e_widget_framelist_object_append(of, ob);
-   ob = e_widget_radio_add(evas, _("Bottom Right"), E_GADCON_ORIENT_CORNER_BR, 
rg);
-   e_widget_framelist_object_append(of, ob);
-   ob = e_widget_radio_add(evas, _("Left Top"), E_GADCON_ORIENT_CORNER_LT, rg);
-   e_widget_framelist_object_append(of, ob);
-   ob = e_widget_radio_add(evas, _("Right Top"), E_GADCON_ORIENT_CORNER_RT, 
rg);
-   e_widget_framelist_object_append(of, ob);
-   ob = e_widget_radio_add(evas, _("Left Bottom"), E_GADCON_ORIENT_CORNER_LB, 
rg);
-   e_widget_framelist_object_append(of, ob);
-   ob = e_widget_radio_add(evas, _("Right Bottom"), E_GADCON_ORIENT_CORNER_RB, 
rg);
-   e_widget_framelist_object_append(of, ob);
-   e_widget_list_object_append(o2, of, 1, 1, 0.5);
+   of = e_widget_framelist_add(evas, _("Available Items"), 0);
    
-   e_widget_list_object_append(o, o2, 1, 1, 0.5);
-   
-   oi = e_widget_ilist_add(evas, 128, 20, &(cfdata->style));
-   
-   sel = 0;
-   styles = e_theme_shelf_list();
+   oi = e_widget_ilist_add(evas, 24, 24, &(cfdata->cname));
 
-   for (n = 0, l = styles; l; l = l->next, n++)
+   for (l = e_gadcon_provider_list(); l; l = l->next)
      {
-       char buf[4096];
+       E_Gadcon_Client_Class *cc;
        
-       ob = e_livethumb_add(evas);
-       e_livethumb_vsize_set(ob, 256, 40);
-       oj = edje_object_add(e_livethumb_evas_get(ob));
-       snprintf(buf, sizeof(buf), "shelf/%s/base", (char *)l->data);
-       e_theme_edje_object_set(oj, "base/theme/shelf", buf);
-       e_livethumb_thumb_set(ob, oj);
-       e_widget_ilist_append(oi, ob, (char *)l->data, NULL, NULL, l->data);
-       if (!strcmp(cfdata->es->style, (char *)l->data))
-         sel = n;
+       cc = l->data;
+       /* FIXME: need icon */
+       e_widget_ilist_append(oi, NULL, cc->name, _cb_select, cfdata, cc->name);
      }
+   
+   e_widget_ilist_go(oi);
+   
    e_widget_min_size_get(oi, &wmw, &wmh);
+   if (wmw < 200) wmw = 200;
    e_widget_min_size_set(oi, wmw, 250);
    
-   e_widget_ilist_go(oi);
-   e_widget_ilist_selected_set(oi, sel);
+   e_widget_framelist_object_append(of, oi);
+   
+   e_widget_list_object_append(o, of, 1, 1, 0.5);
+   
+   of = e_widget_framelist_add(evas, _("Status"), 0);
+   
+   rg = e_widget_radio_group_new(&(cfdata->enabled));
+   ob = e_widget_radio_add(evas, _("Enabled"), 1, rg);
+   e_widget_disabled_set(ob, 1);
+   e_widget_framelist_object_append(of, ob);
+   cfdata->o_enabled = ob;
+   ob = e_widget_radio_add(evas, _("Disabled"), 0, rg);
+   e_widget_disabled_set(ob, 1);
+   e_widget_framelist_object_append(of, ob);
+   cfdata->o_disabled = ob;
+   
+   e_widget_list_object_append(o, of, 0, 0, 0.0);
    
-   e_widget_list_object_append(o, oi, 1, 1, 0.5);
-*/   
    return o;
 }
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_int_shelf_config.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- e_int_shelf_config.c        5 May 2006 12:20:14 -0000       1.6
+++ e_int_shelf_config.c        7 May 2006 09:49:37 -0000       1.7
@@ -145,6 +145,14 @@
    return 1; /* Apply was OK */
 }
 
+static void
+_cb_configure(void *data, void *data2)
+{
+   E_Config_Dialog_Data *cfdata;
+   
+   e_int_gadcon_config(cfdata->es->gadcon);
+}
+    
 /**--GUI--**/
 static Evas_Object *
 _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data 
*cfdata)
@@ -212,6 +220,10 @@
    
    e_widget_list_object_append(o, o2, 1, 1, 0.5);
    
+   o2 = e_widget_list_add(evas, 0, 0);
+   
+   of = e_widget_framelist_add(evas, _("Styles"), 0);
+   
    oi = e_widget_ilist_add(evas, 128, 20, &(cfdata->style));
    
    sel = 0;
@@ -237,7 +249,14 @@
    e_widget_ilist_go(oi);
    e_widget_ilist_selected_set(oi, sel);
    
-   e_widget_list_object_append(o, oi, 1, 1, 0.5);
+   e_widget_framelist_object_append(of, oi);
+   
+   e_widget_list_object_append(o2, of, 0, 0, 0.5);
+   
+   ob = e_widget_button_add(evas, _("Configure Contents..."), "widget/config", 
_cb_configure, cfdata, NULL);
+   e_widget_list_object_append(o2, ob, 0, 0, 0.5);
+   
+   e_widget_list_object_append(o, o2, 0, 0, 0.0);
    
    return o;
 }
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_widget_radio.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -3 -r1.10 -r1.11
--- e_widget_radio.c    6 May 2006 09:35:05 -0000       1.10
+++ e_widget_radio.c    7 May 2006 09:49:37 -0000       1.11
@@ -88,7 +88,29 @@
    if (!wd) return;
 
    if (toggle)
-     edje_object_signal_emit(wd->o_radio, "toggle_on", "");
+     {
+       Evas_List *l;
+       int toggled = 0;
+       
+       for (l = wd->group->radios; l; l = l->next)
+         {
+            wd = e_widget_data_get(l->data);
+            if (l->data != obj)
+              {
+                 wd = e_widget_data_get(l->data);
+                 if (wd->valnum == *(wd->group->valptr))
+                   {
+                      edje_object_signal_emit(wd->o_radio, "toggle_off", "");
+                      toggled = 1;
+                      break;
+                   }
+              }
+         }
+       if (!toggled) return;
+       wd = e_widget_data_get(obj);
+       *(wd->group->valptr) = wd->valnum;
+       edje_object_signal_emit(wd->o_radio, "toggle_on", "");
+     }
    else
      edje_object_signal_emit(wd->o_radio, "toggle_off", "");
 }




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