Enlightenment CVS committal

Author  : codewarrior
Project : e17
Module  : proto

Dir     : e17/proto/estickies/src/bin


Modified Files:
        conf.c stickies.c stickies.h 


Log Message:
- implement sticky note locking
- remember sticky / locked status across sessions


===================================================================
RCS file: /cvs/e/e17/proto/estickies/src/bin/conf.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- conf.c      5 Aug 2006 16:46:51 -0000       1.4
+++ conf.c      6 Aug 2006 16:55:06 -0000       1.5
@@ -174,7 +174,7 @@
    char     *home;
    int size;
    E_Config_Stickies *stickies = NULL;   
-   
+
    home = getenv("HOME");
    if(!home)
      {
@@ -250,7 +250,7 @@
    int        ret;
    E_Config_Stickies *stickies = NULL;
    Evas_List *l;
-   
+
    home = getenv("HOME");
    if(!home)
      return 0;
===================================================================
RCS file: /cvs/e/e17/proto/estickies/src/bin/stickies.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- stickies.c  4 Aug 2006 15:05:20 -0000       1.6
+++ stickies.c  6 Aug 2006 16:55:06 -0000       1.7
@@ -211,9 +211,10 @@
    E_Sticky *s;
    
    s = data;
-   
+
    etk_toggle_button_active_set(ETK_TOGGLE_BUTTON(s->stick_toggle),
                                etk_window_sticky_get(ETK_WINDOW(object)));
+   s->stick = etk_window_sticky_get(ETK_WINDOW(object));
 }
 
 static Etk_Widget *
@@ -259,7 +260,8 @@
    
    s = E_NEW(1, E_Sticky);
    s->theme = NULL;
-   
+   s->stick = 0;
+   s->locked = 0;
    _e_sticky_window_add(s);
    return s;
 }
@@ -278,7 +280,7 @@
    
    s->win = etk_window_new();
    etk_window_title_set(ETK_WINDOW(s->win), "estickies");
-   etk_window_wmclass_set(ETK_WINDOW(s->win), "_estickies", "_estickies");
+   etk_window_wmclass_set(ETK_WINDOW(s->win), "estickies", "estickies");
    etk_window_decorated_set(ETK_WINDOW(s->win), ETK_FALSE);
    etk_window_shaped_set(ETK_WINDOW(s->win), ETK_TRUE);
    etk_widget_theme_file_set(s->win, theme);
@@ -308,17 +310,19 @@
                                                "button_stick")));
    etk_signal_connect_swapped("clicked", ETK_OBJECT(s->stick_toggle),
                              ETK_CALLBACK(_e_sticky_stick_toggle), s);
-   //etk_tooltips_tip_set(button, "Make sticky visible on all desktops");   
+   //etk_tooltips_tip_set(button, "Make sticky visible on all desktops");
    etk_box_pack_start(ETK_BOX(hbox), s->stick_toggle, ETK_FALSE, ETK_FALSE, 0);
    
-   s->lock_button = etk_button_new();
-   etk_object_properties_set(ETK_OBJECT(s->lock_button),
+   s->lock_toggle = etk_toggle_button_new();
+   etk_object_properties_set(ETK_OBJECT(s->lock_toggle),
                             "focusable", ETK_FALSE, NULL);   
-   etk_button_image_set(ETK_BUTTON(s->lock_button), 
+   etk_button_image_set(ETK_BUTTON(s->lock_toggle), 
                        ETK_IMAGE(etk_image_new_from_edje(theme,
                                                "button_lock")));
-   //etk_tooltips_tip_set(button, "Lock sticky (read-only)");   
-   etk_box_pack_start(ETK_BOX(hbox), s->lock_button, ETK_FALSE, ETK_FALSE, 0);
+   etk_signal_connect_swapped("toggled", ETK_OBJECT(s->lock_toggle),
+                             ETK_CALLBACK(_e_sticky_lock_toggle), s);   
+   //etk_tooltips_tip_set(button, "Lock sticky (read-only)");
+   etk_box_pack_start(ETK_BOX(hbox), s->lock_toggle, ETK_FALSE, ETK_FALSE, 0);
    
    s->close_button = etk_button_new();
    etk_object_properties_set(ETK_OBJECT(s->close_button),
@@ -433,6 +437,30 @@
 {
    etk_window_sticky_set(ETK_WINDOW(s->win), 
                         !etk_window_sticky_get(ETK_WINDOW(s->win)));
+   s->stick = !etk_window_sticky_get(ETK_WINDOW(s->win));
+}
+
+void
+_e_sticky_lock_toggle(E_Sticky *s)
+{   
+   s->locked = 
etk_toggle_button_active_get(ETK_TOGGLE_BUTTON(s->lock_toggle));   
+   
etk_textblock_object_cursor_visible_set(ETK_TEXT_VIEW(s->textview)->textblock_object,
+                                          !s->locked);
+   etk_object_properties_set(ETK_OBJECT(s->textview),
+                            "focusable", !s->locked, NULL);
+   if(s->locked)
+     {
+       etk_object_properties_set(ETK_OBJECT(s->win),
+                                 "focusable", ETK_TRUE, NULL);
+       etk_widget_unfocus(s->textview);
+       etk_widget_focus(s->win);
+     }
+   else
+     {
+       etk_widget_focus(s->textview);
+       etk_object_properties_set(ETK_OBJECT(s->win),
+                                 "focusable", ETK_FALSE, NULL);
+     }
 }
 
 void
@@ -442,6 +470,21 @@
 }
 
 void
+_e_sticky_lock_set(E_Sticky *s, Etk_Bool on)
+{
+   etk_toggle_button_active_set(ETK_TOGGLE_BUTTON(s->lock_toggle), on);
+}
+
+void
+_e_sticky_properties_set(E_Sticky *s)
+{   
+   if(s->stick == 1)
+     etk_window_sticky_set(ETK_WINDOW(s->win), ETK_TRUE);
+   if(s->locked == 1)
+     _e_sticky_lock_set(s, ETK_TRUE);
+}
+
+void
 _e_sticky_theme_apply(E_Sticky *s, char *theme)
 {
    char theme_file[PATH_MAX];
@@ -466,7 +509,7 @@
    etk_button_image_set(ETK_BUTTON(s->stick_toggle),
                        ETK_IMAGE(etk_image_new_from_edje(theme_file,
                                                          "button_stick")));
-   etk_button_image_set(ETK_BUTTON(s->lock_button),
+   etk_button_image_set(ETK_BUTTON(s->lock_toggle),
                        ETK_IMAGE(etk_image_new_from_edje(theme_file,
                                                          "button_lock")));
    etk_button_image_set(ETK_BUTTON(s->close_button),
@@ -546,6 +589,7 @@
             _e_sticky_load_from(l->data);
             _e_sticky_show(l->data);
             _e_sticky_move_resize(l->data);
+            _e_sticky_properties_set(l->data);
          }
      }
    else
===================================================================
RCS file: /cvs/e/e17/proto/estickies/src/bin/stickies.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- stickies.h  4 Aug 2006 04:30:40 -0000       1.4
+++ stickies.h  6 Aug 2006 16:55:06 -0000       1.5
@@ -79,7 +79,7 @@
    Etk_Widget *textview;
    Etk_Widget *buttonbox;
    Etk_Widget *stick_toggle;
-   Etk_Widget *lock_button;
+   Etk_Widget *lock_toggle;
    Etk_Widget *close_button;   
 };
 
@@ -102,7 +102,10 @@
 void _e_sticky_move_resize(E_Sticky *s);
 void _e_sticky_menu_show(E_Sticky *s);
 void _e_sticky_stick_toggle(E_Sticky *s);
+void _e_sticky_lock_toggle(E_Sticky *s);
 void _e_sticky_load_from(E_Sticky *s);
+void _e_sticky_lock_set(E_Sticky *s, Etk_Bool on);    
+void _e_sticky_properties_set(E_Sticky *s);
 void _e_sticky_theme_apply(E_Sticky *s, char *theme);
 void _e_sticky_theme_apply_all(char *theme);  
 void _e_sticky_delete_confirm(E_Sticky *s);



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