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