Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/modules/start


Modified Files:
        Makefile.am e_mod_main.c e_mod_main.h 
Added Files:
        e_mod_config.c e_mod_config.h 


Log Message:


2 pending patches in my inbox.

1. "allow overlap" patch for modules - needs better names in the gui (Allow
windows to overlap maybe - as allow overlap is very vague)
2. itray module (buggy - buggy - beware. i know why. beware i said!)
3. TODO items

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/start/Makefile.am,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- Makefile.am 18 May 2005 05:06:04 -0000      1.1
+++ Makefile.am 20 Jan 2006 04:04:14 -0000      1.2
@@ -20,7 +20,9 @@
 pkgdir                 = 
$(libdir)/enlightenment/modules/$(MODULE)/$(MODULE_ARCH)
 pkg_LTLIBRARIES        = module.la
 module_la_SOURCES      = e_mod_main.c \
-                         e_mod_main.h
+                         e_mod_main.h \
+                        e_mod_config.c \
+                        e_mod_config.h
 module_la_LIBADD       = @e_libs@ @dlopen_libs@
 module_la_LDFLAGS      = -module -avoid-version
 module_la_DEPENDENCIES = $(top_builddir)/config.h
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/start/e_mod_main.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -3 -r1.12 -r1.13
--- e_mod_main.c        7 Jan 2006 10:39:46 -0000       1.12
+++ e_mod_main.c        20 Jan 2006 04:04:14 -0000      1.13
@@ -6,7 +6,7 @@
 #include "e_int_menus.h"
 
 static Start *_start_new(void);
-static Start_Face *_start_face_new(E_Container *con);
+static Start_Face *_start_face_new(Start *s, E_Container *con);
 static void _start_free(Start *e);
 static void _start_face_free(Start_Face *face);
 static void _start_face_disable(Start_Face *e);
@@ -17,6 +17,9 @@
 static void _start_face_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, 
void *event_info);
 static void _start_menu_cb_post_deactivate(void *data, E_Menu *m);
 
+static void _start_face_cb_menu_configure(void *data, E_Menu *m, E_Menu_Item 
*mi);
+static void _start_cb_update_policy(void *data);
+
 static int button_count;
 static E_Config_DD *conf_edd;
 static E_Config_DD *conf_face_edd;
@@ -79,6 +82,21 @@
    return 1;
 }
 
+int
+e_modapi_config(E_Module *m)
+{
+  Start *s;
+  Start_Face *face;
+
+  s = m->data;
+  if (s == NULL) return 0;
+  if (s->faces == NULL) return 0;
+  face = s->faces->data;
+  if (face == NULL) return 0;
+  _config_start_module(e_container_current_get(e_manager_current_get()), s);
+  return 1;
+}
+
 static Start *
 _start_new(void)
 {
@@ -103,9 +121,15 @@
 #define T Config
 #define D conf_edd
    E_CONFIG_LIST(D, T, faces, conf_face_edd);
+   E_CONFIG_VAL(D, T, allow_overlap, INT);
    
    e->conf = e_config_domain_load("module.start", conf_edd);
-   if (!e->conf) e->conf = E_NEW(Config, 1);
+   if (!e->conf)
+     {
+       e->conf = E_NEW(Config, 1);
+       e->conf->allow_overlap = 0;
+     }
+   E_CONFIG_LIMIT(e->conf->allow_overlap, 0, 1);
    
    _start_config_menu_new(e);
    
@@ -122,9 +146,10 @@
             Start_Face *face;
             
             con = l2->data;
-            face = _start_face_new(con);
+            face = _start_face_new(e, con);
             if (face)
               {
+                 face->start = e;
                  e->faces = evas_list_append(e->faces, face);
                  /* Config */
                  if (!cl)
@@ -142,6 +167,10 @@
                  /* Menu */
                  /* This menu must be initialized after conf */
                  _start_face_menu_new(face);
+
+                 mi = e_menu_item_new(e->config_menu);
+                 e_menu_item_label_set(mi, _("Configuration"));
+                 e_menu_item_callback_set(mi, _start_face_cb_menu_configure, 
face);
                  
                  mi = e_menu_item_new(e->config_menu);
                  e_menu_item_label_set(mi, con->name);
@@ -157,10 +186,11 @@
 }
 
 static Start_Face *
-_start_face_new(E_Container *con)
+_start_face_new(Start *s, E_Container *con)
 {
    Start_Face *face;
    Evas_Object *o;
+   E_Gadman_Policy policy;
    
    face = E_NEW(Start_Face, 1);
    if (!face) return NULL;
@@ -186,12 +216,20 @@
    
    face->gmc = e_gadman_client_new(con->gadman);
    e_gadman_client_domain_set(face->gmc, "module.start", button_count++);
-   e_gadman_client_policy_set(face->gmc,
-                             E_GADMAN_POLICY_ANYWHERE |
-                             E_GADMAN_POLICY_HMOVE |
-                             E_GADMAN_POLICY_VMOVE |
-                             E_GADMAN_POLICY_HSIZE |
-                             E_GADMAN_POLICY_VSIZE);
+
+   policy = E_GADMAN_POLICY_ANYWHERE |
+           E_GADMAN_POLICY_HMOVE |
+           E_GADMAN_POLICY_VMOVE |
+           E_GADMAN_POLICY_HSIZE |
+           E_GADMAN_POLICY_VSIZE;
+
+   if (s->conf->allow_overlap == 0)
+     policy &= ~E_GADMAN_POLICY_ALLOW_OVERLAP;
+   else
+     policy |= E_GADMAN_POLICY_ALLOW_OVERLAP;
+
+   e_gadman_client_policy_set(face->gmc, policy);
+
    e_gadman_client_min_size_set(face->gmc, 4, 4);
    e_gadman_client_max_size_set(face->gmc, 512, 512);
    e_gadman_client_auto_size_set(face->gmc, 40, 40);
@@ -226,6 +264,10 @@
    
    /* Edit */
    mi = e_menu_item_new(mn);
+   e_menu_item_label_set(mi, _("Configuration"));
+   e_menu_item_callback_set(mi, _start_face_cb_menu_configure, face);
+
+   mi = e_menu_item_new(mn);
    e_menu_item_label_set(mi, _("Edit Mode"));
    e_menu_item_callback_set(mi, _start_face_cb_menu_edit, face);
    
@@ -358,3 +400,39 @@
    e_object_del(E_OBJECT(face->main_menu));
    face->main_menu = NULL;
 }
+void _start_cb_config_updated( void *data )
+{
+  _start_cb_update_policy(data);
+}
+
+void
+_start_face_cb_menu_configure(void *data, E_Menu *m, E_Menu_Item *mi)
+{
+   Start_Face *face;
+
+   face = (Start_Face*)data;
+   if (!face) return;
+   _config_start_module(face->con, face->start);
+}
+
+static void _start_cb_update_policy(void *data)
+{
+  Start     *s;
+  Start_Face *sf;
+  Evas_List   *l;
+  E_Gadman_Policy policy;
+
+  s = data;
+  for (l = s->faces; l; l = l->next)
+    {
+      sf = l->data;
+      policy = sf->gmc->policy;
+
+      if (s->conf->allow_overlap == 0)
+        policy &= ~E_GADMAN_POLICY_ALLOW_OVERLAP;
+      else
+        policy |= E_GADMAN_POLICY_ALLOW_OVERLAP;
+      e_gadman_client_policy_set(sf->gmc , policy);
+    }
+}
+
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/start/e_mod_main.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- e_mod_main.h        27 Dec 2005 17:16:58 -0000      1.4
+++ e_mod_main.h        20 Jan 2006 04:04:14 -0000      1.5
@@ -9,6 +9,7 @@
 struct _Config
 {
    Evas_List *faces;
+   int      allow_overlap;
 };
 
 struct _Config_Face
@@ -29,6 +30,7 @@
    E_Container *con;
    E_Menu      *menu;
    E_Menu      *main_menu;
+   Start       *start;
    
    Config_Face *conf;
    
@@ -47,4 +49,6 @@
 EAPI int   e_modapi_about    (E_Module *m);
 /* EAPI int   e_modapi_config   (E_Module *module); */
 
+EAPI void  _start_cb_config_updated(void *data);
+
 #endif




-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to