Enlightenment CVS committal

Author  : handyande
Project : e17
Module  : apps/e

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


Modified Files:
        e_mod_main.c e_mod_main.h 


Log Message:
Sebastians module patch, tidy up and fix clock faces + menus
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/pager/e_mod_main.c,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -3 -r1.36 -r1.37
--- e_mod_main.c        1 Feb 2005 18:31:23 -0000       1.36
+++ e_mod_main.c        7 Feb 2005 11:29:36 -0000       1.37
@@ -1,26 +1,30 @@
 /*
  * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
  */
-
 #include "e.h"
 #include "e_mod_main.h"
 
 /* TODO List:
  *
+ * * Get E_EVENT_BORDER_ADD when a window is moved from one desk to another by 
the wm
  */
 
 /* module private routines */
-static Evas_List   *_pager_init(E_Module *m);
+static Evas_List   *_pager_init(E_Module *module);
 static void        _pager_shutdown(Evas_List *pagers);
 static E_Menu     *_pager_config_menu_new();
 static void        _pager_config_menu_del(E_Menu *menu);
 
 static Pager      *_pager_new(E_Zone *zone);
 static void        _pager_destroy(Pager *pager);
+static void        _pager_menu_new(Pager *pager);
+static void        _pager_menu_del(E_Menu *menu);
+static void        _pager_enable(Pager *pager);
+static void        _pager_disable(Pager *pager);
 static void        _pager_zone_set(Pager *pager, E_Zone *zone);
 static void        _pager_zone_leave(Pager *pager);
 
-static Pager_Desk *_pager_desk_new(Pager *pager, E_Desk *desk);
+static Pager_Desk *_pager_desk_new(Pager *pager, E_Desk *desk, int x, int y);
 static void        _pager_desk_destroy(Pager_Desk *d);
 static Pager_Win  *_pager_window_new(Pager_Desk *owner, E_Border *border);
 static void        _pager_window_destroy(Pager_Win *win);
@@ -41,14 +45,14 @@
 static int         _pager_cb_event_border_show(void *data, int type, void 
*event);
 static int         _pager_cb_event_border_desk_set(void *data, int type, void 
*event);
 static int         _pager_cb_event_zone_desk_count_set(void *data, int type, 
void *event);
+static void         _pager_cb_menu_enabled(void *data, E_Menu *m, E_Menu_Item 
*mi);
 
 static int         _pager_count;
 /* public module routines. all modules must have these */
 void *
 init(E_Module *module)
 {
-   Evas_List *pagers = NULL, *l;
-   Pager *pager;
+   Evas_List *pagers = NULL;
 
    /* check module api version */
    if (module->api->version < E_MODULE_API_VERSION)
@@ -63,13 +67,9 @@
        return NULL;
      }
    /* actually init pager */
-   pagers = _pager_init(module);
    module->config_menu = _pager_config_menu_new();
+   pagers = _pager_init(module);
 
-   for (l = pagers; l; l = l->next) {
-       pager = l->data;
-       pager->config_menu = module->config_menu;
-   }
    return pagers;
 }
 
@@ -114,7 +114,7 @@
 }
 
 int
-about(E_Module *m)
+about(E_Module *module)
 {
    e_error_dialog_show("Enlightenment Pager Module",
                       "A pager module to navigate E17 desktops.");
@@ -123,7 +123,7 @@
 
 /* module private routines */
 static Evas_List *
-_pager_init(E_Module *m)
+_pager_init(E_Module *module)
 {
    Evas_List   *pagers = NULL;
    Evas_List   *managers, *l, *l2, *l3;
@@ -131,8 +131,11 @@
    E_Container *con;
    E_Zone      *zone;
    Pager       *pager;
+   E_Menu      *mn;
+   E_Menu_Item *mi;
 
    _pager_count = 0;
+
 /*   e->conf_edd = E_CONFIG_DD_NEW("Pager_Config", Config);
 #undef T
 #undef D
@@ -154,13 +157,29 @@
          {
             con = l2->data;
 
+            mi = e_menu_item_new(module->config_menu);
+            e_menu_item_label_set(mi, con->name);
+
+            mn = e_menu_new();
+            e_menu_item_submenu_set(mi, mn);
+
             for (l3 = con->zones; l3; l3 = l3->next)
               {
                  zone = l3->data;
 
                  pager = _pager_new(zone);
                  if (pager)
-                   pagers = evas_list_append(pagers, pager);
+                   {
+                      /* FIXME : config */
+                      pager->enabled = 1;
+                      pagers = evas_list_append(pagers, pager);
+
+                      _pager_menu_new(pager);
+
+                      mi = e_menu_item_new(mn);
+                      e_menu_item_label_set(mi, zone->name);
+                      e_menu_item_submenu_set(mi, pager->menu);
+                   }
               }
          }
      }
@@ -175,9 +194,7 @@
 /*   E_CONFIG_DD_FREE(e->conf_edd);*/
 
    for (list = pagers; list; list = list->next)
-     {
-       _pager_destroy(list->data);
-     }
+     _pager_destroy(list->data);
    evas_list_free(pagers);
 }
 
@@ -185,13 +202,9 @@
 _pager_config_menu_new()
 {
    E_Menu *mn;
-   E_Menu_Item *mi;
 
    mn = e_menu_new();
 
-   mi = e_menu_item_new(mn);
-   e_menu_item_label_set(mi, "(Unused)");
-
    return mn;
 }
 
@@ -292,10 +305,93 @@
    ecore_event_handler_del(pager->ev_handler_border_desk_set);
    ecore_event_handler_del(pager->ev_handler_zone_desk_count_set);
 
+   _pager_menu_del(pager->menu);
+
    E_FREE(pager);
 }
 
 static void
+_pager_menu_new(Pager *pager)
+{
+   E_Menu *mn;
+   E_Menu_Item *mi;
+
+   mn = e_menu_new();
+
+   mi = e_menu_item_new(mn);
+   e_menu_item_label_set(mi, "Enabled");
+   e_menu_item_check_set(mi, 1);
+   if (pager->enabled) e_menu_item_toggle_set(mi, 1);
+   e_menu_item_callback_set(mi, _pager_cb_menu_enabled, pager);
+
+   pager->menu = mn;
+}
+
+static void
+_pager_menu_del(E_Menu *menu)
+{
+   e_object_del(E_OBJECT(menu));
+}
+
+static void
+_pager_enable(Pager *pager)
+{
+   Evas_List  *desks, *wins;
+   Pager_Desk *pd;
+   Pager_Win  *pw;
+
+   pager->enabled = 1;
+
+   evas_object_show(pager->base);
+   evas_object_show(pager->screen);
+   for (desks = pager->desks; desks; desks = desks->next)
+     {
+       pd = desks->data;
+       evas_object_show(pd->obj);
+
+       for (wins = pd->wins; wins; wins = wins->next)
+         {
+            pw = wins->data;
+            if (!pw->border->iconic)
+              {
+                 evas_object_show(pw->obj);
+                 if (pw->icon)
+                   evas_object_show(pw->icon);
+              }
+         }
+     }
+}
+
+static void
+_pager_disable(Pager *pager)
+{
+   Evas_List  *desks, *wins;
+   Pager_Desk *pd;
+   Pager_Win  *pw;
+
+   pager->enabled = 0;
+
+   evas_object_hide(pager->base);
+   evas_object_hide(pager->screen);
+   for (desks = pager->desks; desks; desks = desks->next)
+     {
+       pd = desks->data;
+       evas_object_hide(pd->obj);
+
+       for (wins = pd->wins; wins; wins = wins->next)
+         {
+            pw = wins->data;
+            if (!pw->border->iconic)
+              {
+                 evas_object_hide(pw->obj);
+                 if (pw->icon)
+                   evas_object_hide(pw->icon);
+              }
+         }
+     }
+}
+
+static void
 _pager_zone_set(Pager *pager, E_Zone *zone)
 {
    int          desks_x, desks_y, x, y;
@@ -315,7 +411,7 @@
          E_Desk     *desk;
 
          desk = e_desk_at_xy_get(zone, x, y);
-         pd = _pager_desk_new(pager, desk);
+         pd = _pager_desk_new(pager, desk, x, y);
          pager->desks = evas_list_append(pager->desks, pd);
        }
    evas_object_resize(pager->base, pager->fw * desks_x, pager->fh * desks_y);
@@ -328,14 +424,12 @@
    e_object_unref(E_OBJECT(pager->zone));
 
    for (list = pager->desks; list; list = list->next)
-     {
-       _pager_desk_destroy(list->data);
-     }
+     _pager_desk_destroy(list->data);
    evas_list_free(pager->desks);
 }
 
 static Pager_Desk *
-_pager_desk_new(Pager *pager, E_Desk *desk)
+_pager_desk_new(Pager *pager, E_Desk *desk, int xpos, int ypos)
 {
    Pager_Desk  *pd;
    Pager_Win   *pw;
@@ -344,20 +438,10 @@
 
    Evas_Object *o;
    Evas_List   *wins;
-   int          xpos, ypos, xcount, ycount;
 
    pd = E_NEW(Pager_Desk, 1);
-   e_zone_desk_count_get(desk->zone, &xcount, &ycount);
-   for (xpos = 0; xpos < xcount; xpos++)
-     for (ypos = 0; ypos < ycount; ypos++)
-       {
-         if (desk == e_desk_at_xy_get(desk->zone, xpos, ypos))
-           {
-              pd->xpos = xpos;
-              pd->ypos = ypos;
-              break;
-           }
-       }
+   pd->xpos = xpos;
+   pd->ypos = ypos;
    if (desk == e_desk_current_get(desk->zone))
      {
        pd->current = 1;
@@ -408,9 +492,7 @@
    e_object_unref(E_OBJECT(desk->desk));
 
    for (list = desk->wins; list; list = list->next)
-     {
-       _pager_window_destroy(list->data);
-     }
+     _pager_window_destroy(list->data);
    evas_list_free(desk->wins);
    E_FREE(desk);
 }
@@ -527,7 +609,7 @@
    pager = data;
    if (ev->button == 3)
      {
-       e_menu_activate_mouse(pager->config_menu, pager->zone,
+       e_menu_activate_mouse(pager->menu, pager->zone,
                              ev->output.x, ev->output.y, 1, 1,
                              E_MENU_POP_DIRECTION_DOWN);
        e_util_container_fake_mouse_up_all_later(pager->zone->container);
@@ -842,7 +924,7 @@
            {
               /* Add desk */
               desk = e_desk_at_xy_get(ev->zone, x, y);
-              pd = _pager_desk_new(pager, desk);
+              pd = _pager_desk_new(pager, desk, x, y);
               pager->desks = evas_list_append(pager->desks, pd);
            }
          else if ((x >= desks_x) || (y >= desks_y))
@@ -871,3 +953,22 @@
    _pager_draw(pager);
    return 1;
 }
+
+static void
+_pager_cb_menu_enabled(void *data, E_Menu *m, E_Menu_Item *mi)
+{
+   Pager *pager;
+   unsigned char enabled;
+
+   pager = data;
+   enabled = e_menu_item_toggle_get(mi);
+   if ((pager->enabled) && (!enabled))
+     {  
+       _pager_disable(pager);
+     }
+   else if ((!pager->enabled) && (enabled))
+     { 
+       _pager_enable(pager);
+     }
+   e_menu_item_toggle_set(mi, pager->enabled);
+}
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/pager/e_mod_main.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -3 -r1.10 -r1.11
--- e_mod_main.h        1 Feb 2005 18:21:46 -0000       1.10
+++ e_mod_main.h        7 Feb 2005 11:29:36 -0000       1.11
@@ -1,3 +1,6 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
 #ifndef E_MOD_MAIN_H
 #define E_MOD_MAIN_H
 
@@ -16,7 +19,7 @@
    E_Zone       *zone;
    Evas_List    *desks;
    
-   E_Menu       *config_menu;
+   E_Menu       *menu;
    Evas         *evas;
    Evas_Object  *base, *screen;
 
@@ -28,6 +31,8 @@
 
    /* Current nr. of desktops */
    int           xnum, ynum;
+
+   unsigned char enabled : 1;
    
    Ecore_Event_Handler *ev_handler_border_resize;
    Ecore_Event_Handler *ev_handler_border_move;




-------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
Tool for open source databases. Create drag-&-drop reports. Save time
by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
Download a FREE copy at http://www.intelliview.com/go/osdn_nl
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to