Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

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


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


Log Message:


patches from people (see mail list) and stuff.

===================================================================
RCS file: /cvs/e/e17/apps/e/src/modules/pager/e_mod_config.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -3 -r1.22 -r1.23
--- e_mod_config.c      3 Sep 2006 07:40:45 -0000       1.22
+++ e_mod_config.c      19 Nov 2006 08:58:05 -0000      1.23
@@ -1,11 +1,37 @@
 #include "e.h"
 #include "e_mod_main.h"
 
+typedef enum _Pager_Grab_Button Pager_Grab_Button;
+enum _Pager_Grab_Button
+{
+   GRAB_BUTTON_DRAG,
+   GRAB_BUTTON_NOPLACE
+};
+
 struct _E_Config_Dialog_Data
 {
    int show_popup;
    double popup_speed;
    int drag_resist;
+   unsigned char btn_drag;
+   unsigned char btn_noplace;
+   int flip_desk;
+
+   struct
+     {
+       Ecore_X_Window bind_win;
+       E_Dialog *dia;
+       Evas_List *handlers;
+
+       unsigned char *button1;
+       unsigned char *button2;
+     } grab;
+
+   struct
+     {
+       Evas_Object *o_btn1;
+       Evas_Object *o_btn2;
+     } gui;
 };
 
 /* Protos */
@@ -15,6 +41,11 @@
 static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data 
*cfdata);
 static Evas_Object *_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, 
E_Config_Dialog_Data *cfdata);
 static int _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data 
*cfdata);
+static void _advanced_update_button_label(E_Config_Dialog_Data *cfdata);
+static void _grab_wnd_show(void *data1, void *data2);
+static void _grab_wnd_hide(E_Config_Dialog_Data *cfdata);
+static int _grab_mouse_down_cb(void *data, int type, void *event);
+static int _grab_key_down_cb(void *data, int type, void *event);
 
 void 
 _config_pager_module(Config_Item *ci)
@@ -47,6 +78,9 @@
    cfdata->show_popup = pager_config->popup;
    cfdata->popup_speed = pager_config->popup_speed;
    cfdata->drag_resist = pager_config->drag_resist;
+   cfdata->btn_drag = pager_config->btn_drag;
+   cfdata->btn_noplace = pager_config->btn_noplace;
+   cfdata->flip_desk = pager_config->flip_desk;
 }
 
 static void *
@@ -111,6 +145,25 @@
    e_widget_framelist_object_append(of, ob);
    e_widget_list_object_append(o, of, 1, 1, 0.5);   
 
+   of = e_widget_frametable_add(evas, _("Buttons Settings"), 0);
+   ob = e_widget_label_add(evas, _("Drag and select button"));
+   e_widget_frametable_object_append(of, ob, 1, 1, 1, 1, 1, 1, 1, 1);
+   ob = e_widget_label_add(evas, _("Drag no place button"));
+   e_widget_frametable_object_append(of, ob, 1, 2, 1, 1, 1, 1, 1, 1);
+   ob = e_widget_button_add(evas, _("Click to set"), NULL, _grab_wnd_show, 
(void *)GRAB_BUTTON_DRAG, cfdata);
+   e_widget_frametable_object_append(of, ob, 2, 1, 1, 1, 1, 1, 0, 0);
+   cfdata->gui.o_btn1 = ob;
+   ob = e_widget_button_add(evas, _("Click to set"), NULL, _grab_wnd_show, 
(void *)GRAB_BUTTON_NOPLACE, cfdata);
+   e_widget_frametable_object_append(of, ob, 2, 2, 1, 1, 1, 1, 0, 0);
+   cfdata->gui.o_btn2 = ob;
+   _advanced_update_button_label(cfdata);
+   e_widget_list_object_append(o, of, 1, 1, 0.5);   
+   
+   of = e_widget_framelist_add(evas, _("Wheel callback"), 0);   
+   ob = e_widget_check_add(evas, _("Flip desktop on mouse wheel"), 
&(cfdata->flip_desk));
+   e_widget_framelist_object_append(of, ob);
+   e_widget_list_object_append(o, of, 1, 1, 0.5);   
+
    return o;
 }
 
@@ -120,7 +173,135 @@
    pager_config->popup = cfdata->show_popup;
    pager_config->popup_speed = cfdata->popup_speed;
    pager_config->drag_resist = cfdata->drag_resist;
+   pager_config->btn_drag = cfdata->btn_drag;
+   pager_config->btn_noplace = cfdata->btn_noplace;
+   pager_config->flip_desk = cfdata->flip_desk;
    _pager_cb_config_updated();
    e_config_save_queue();
+   return 1;
+}
+
+static void
+_advanced_update_button_label(E_Config_Dialog_Data *cfdata)
+{
+   char label[256] = "";
+   
+   if (cfdata->btn_drag)
+     snprintf(label, sizeof(label), _("Button %i"), cfdata->btn_drag);
+   else
+     snprintf(label, sizeof(label), _("Click to set"));
+   e_widget_button_label_set(cfdata->gui.o_btn1, label);
+   
+   if (cfdata->btn_noplace)
+     snprintf(label, sizeof(label), _("Button %i"), cfdata->btn_noplace);
+   else
+     snprintf(label, sizeof(label), _("Click to set"));
+   e_widget_button_label_set(cfdata->gui.o_btn2, label);
+}
+
+static void
+_grab_wnd_show(void *data1, void *data2)
+{
+   E_Manager *man;
+   E_Config_Dialog_Data *cfdata;
+
+   man = e_manager_current_get();
+   cfdata = data2;
+
+   if ((Pager_Grab_Button)data1 == GRAB_BUTTON_DRAG)
+     {
+       cfdata->grab.button1 = &(cfdata->btn_drag);
+       cfdata->grab.button2 = &(cfdata->btn_noplace);
+     }
+   else
+     {
+       cfdata->grab.button1 = &(cfdata->btn_noplace);
+       cfdata->grab.button2 = &(cfdata->btn_drag);
+     }
+
+   cfdata->grab.dia = e_dialog_new(e_container_current_get(man), "Pager", 
"_pager_button_grab_dialog");
+   if (!cfdata->grab.dia) return;
+   e_dialog_title_set(cfdata->grab.dia, _("Pager Button Grab"));
+   e_dialog_icon_set(cfdata->grab.dia, "enlightenment/mouse_clean", 48);
+   e_dialog_text_set(cfdata->grab.dia, _("Please press a mouse button<br>"
+                                        "Press <hilight>Escape</hilight> to 
abort.<br>"
+                                        "Or <hilight>Del</hilight> to reset 
the button."));
+   e_win_centered_set(cfdata->grab.dia->win, 1);
+   e_win_borderless_set(cfdata->grab.dia->win, 1);
+
+   cfdata->grab.bind_win = ecore_x_window_input_new(man->root, 0, 0, 1, 1);
+   ecore_x_window_show(cfdata->grab.bind_win);
+   e_grabinput_get(cfdata->grab.bind_win, 0, cfdata->grab.bind_win);
+
+   cfdata->grab.handlers = evas_list_append(cfdata->grab.handlers,
+                           ecore_event_handler_add(ECORE_X_EVENT_KEY_DOWN,
+                                _grab_key_down_cb, cfdata));
+   cfdata->grab.handlers = evas_list_append(cfdata->grab.handlers,
+                             
ecore_event_handler_add(ECORE_X_EVENT_MOUSE_BUTTON_DOWN,
+                                _grab_mouse_down_cb, cfdata));
+
+   e_dialog_show(cfdata->grab.dia);
+}
+
+static void
+_grab_wnd_hide(E_Config_Dialog_Data *cfdata)
+{
+   while (cfdata->grab.handlers)
+     {
+       ecore_event_handler_del(cfdata->grab.handlers->data);
+       cfdata->grab.handlers = evas_list_remove_list(cfdata->grab.handlers, 
cfdata->grab.handlers);
+     }
+   cfdata->grab.handlers = NULL;
+   e_grabinput_release(cfdata->grab.bind_win, cfdata->grab.bind_win);
+   ecore_x_window_del(cfdata->grab.bind_win);
+   cfdata->grab.bind_win = 0;
+
+   e_object_del(E_OBJECT(cfdata->grab.dia));
+   cfdata->grab.dia = NULL;
+   _advanced_update_button_label(cfdata);
+}
+
+static int
+_grab_mouse_down_cb(void *data, int type, void *event)
+{
+   E_Config_Dialog_Data *cfdata;
+   Ecore_X_Event_Mouse_Button_Down *ev;
+   
+   ev = event;
+   cfdata = data;
+
+   if (ev->button != 3)
+     {
+       if (ev->button == *(cfdata->grab.button2))
+         {
+            *(cfdata->grab.button2) = *(cfdata->grab.button1);
+            *(cfdata->grab.button1) = ev->button;
+         }
+       else
+         {
+            *(cfdata->grab.button1) = ev->button;
+         } 
+     }
+
+   _grab_wnd_hide(cfdata);
+   return 1;
+}
+
+static int
+_grab_key_down_cb(void *data, int type, void *event)
+{
+   E_Config_Dialog_Data *cfdata;
+   Ecore_X_Event_Key_Down *ev = event;
+
+   cfdata = data;
+
+   if (ev->win != cfdata->grab.bind_win) return 1;
+
+   if (!strcmp(ev->keyname, "Escape")) _grab_wnd_hide(cfdata);
+   if (!strcmp(ev->keyname, "Delete"))
+     {
+       *(cfdata->grab.button1) = 0;
+       _grab_wnd_hide(cfdata);
+     }
    return 1;
 }
===================================================================
RCS file: /cvs/e/e17/apps/e/src/modules/pager/e_mod_main.c,v
retrieving revision 1.195
retrieving revision 1.196
diff -u -3 -r1.195 -r1.196
--- e_mod_main.c        18 Nov 2006 05:40:29 -0000      1.195
+++ e_mod_main.c        19 Nov 2006 08:58:05 -0000      1.196
@@ -99,6 +99,7 @@
 static void _button_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void 
*event_info);
 static void _menu_cb_post(void *data, E_Menu *m);
 static void _pager_inst_cb_menu_configure(void *data, E_Menu *m, E_Menu_Item 
*mi);
+static void _pager_inst_cb_menu_virtual_desktops_dialog(void *data, E_Menu *m, 
E_Menu_Item *mi);
 static void _pager_instance_drop_zone_recalc(Instance *inst);
 static int _pager_cb_event_border_resize(void *data, int type, void *event);
 static int _pager_cb_event_border_move(void *data, int type, void *event);
@@ -629,6 +630,11 @@
        e_util_menu_item_edje_icon_set(mi, "enlightenment/configuration");
        e_menu_item_callback_set(mi, _pager_inst_cb_menu_configure, NULL);
        
+       mi = e_menu_item_new(mn);
+       e_menu_item_label_set(mi, _("Virtual Desktops Configuration"));
+       e_util_menu_item_edje_icon_set(mi, "enlightenment/desktops");
+       e_menu_item_callback_set(mi, 
_pager_inst_cb_menu_virtual_desktops_dialog, inst);
+       
        e_gadcon_client_util_menu_items_append(inst->gcc, mn, 0);
        
        e_gadcon_canvas_zone_geometry_get(inst->gcc->gadcon,
@@ -661,6 +667,13 @@
    _config_pager_module(NULL);
 }
 
+static void _pager_inst_cb_menu_virtual_desktops_dialog(void *data, E_Menu *m, 
E_Menu_Item *mi)
+{
+   Instance *inst;
+   inst = data;
+   e_int_config_desks(inst->gcc->gadcon->zone->container);
+}
+
 static void
 _pager_instance_drop_zone_recalc(Instance *inst)
 {
@@ -1319,8 +1332,8 @@
    pw = data;
    if (!pw) return;
    if (pw->border->lock_user_location) return;
-   /* FIXME: make this configurable */
-   if ((ev->button == 1) || (ev->button == 2))
+   if ((ev->button == pager_config->btn_drag) || 
+       (ev->button == pager_config->btn_noplace))
      {
        Evas_Coord ox, oy;
 
@@ -1333,7 +1346,8 @@
        pw->drag.start = 1;
        pw->drag.no_place = 0;
        pw->drag.button = ev->button;
-       if (ev->button == 2) pw->drag.no_place = 1;
+       if (ev->button == pager_config->btn_noplace) 
+         pw->drag.no_place = 1;
      }
 }
 
@@ -1346,8 +1360,8 @@
    ev = event_info;
    pw = data;
    if (!pw) return;
-   /* FIXME: make this configurable as above */
-   if ((ev->button == 1) || (ev->button == 2))
+   if ((ev->button == pager_config->btn_drag) ||
+       (ev->button ==pager_config->btn_noplace))
      {  
        if (!pw->drag.from_pager)
          {
@@ -1712,7 +1726,7 @@
    ev = event_info;
    pd = data;
 
-   e_zone_desk_linear_flip_by(pd->desk->zone, ev->z);
+   if (pager_config->flip_desk) e_zone_desk_linear_flip_by(pd->desk->zone, 
ev->z);
 }
 
 static int
@@ -1747,6 +1761,9 @@
    E_CONFIG_VAL(D, T, drag_resist, UINT);
    E_CONFIG_VAL(D, T, scale, UCHAR);
    E_CONFIG_VAL(D, T, resize, UCHAR);
+   E_CONFIG_VAL(D, T, btn_drag, UCHAR);
+   E_CONFIG_VAL(D, T, btn_noplace, UCHAR);
+   E_CONFIG_VAL(D, T, flip_desk, UINT);
 
    pager_config = e_config_domain_load("module.pager", conf_edd);
 
@@ -1758,12 +1775,18 @@
        pager_config->drag_resist = 3;
        pager_config->scale = 1;
        pager_config->resize = PAGER_RESIZE_BOTH;
+       pager_config->btn_drag = 1;
+       pager_config->btn_noplace = 2;
+       pager_config->flip_desk = 0;
      }
    E_CONFIG_LIMIT(pager_config->popup_speed, 0.1, 10.0);
    E_CONFIG_LIMIT(pager_config->popup, 0, 1);
    E_CONFIG_LIMIT(pager_config->drag_resist, 0, 50);
-   E_CONFIG_LIMIT(pager_config->scale, 0, 1);
    E_CONFIG_LIMIT(pager_config->resize, PAGER_RESIZE_HORZ, PAGER_RESIZE_BOTH);
+   E_CONFIG_LIMIT(pager_config->flip_desk, 0, 1);
+   E_CONFIG_LIMIT(pager_config->scale, 0, 1);
+   E_CONFIG_LIMIT(pager_config->btn_drag, 1, 32);
+   E_CONFIG_LIMIT(pager_config->btn_noplace, 1, 32);
 
    pager_config->handlers = evas_list_append
      (pager_config->handlers, ecore_event_handler_add
===================================================================
RCS file: /cvs/e/e17/apps/e/src/modules/pager/e_mod_main.h,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -3 -r1.48 -r1.49
--- e_mod_main.h        6 Jun 2006 15:23:44 -0000       1.48
+++ e_mod_main.h        19 Nov 2006 08:58:05 -0000      1.49
@@ -33,6 +33,10 @@
    Evas_List       *instances;
    E_Menu          *menu;
    Evas_List       *handlers;
+
+   unsigned char    btn_drag;
+   unsigned char    btn_noplace;
+   unsigned int     flip_desk;
 };
 
 struct _Config_Item



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to