Enlightenment CVS committal

Author  : moom
Project : e17
Module  : libs/etk

Dir     : e17/libs/etk/src/bin


Modified Files:
        etk_slider_test.c 


Log Message:
* [Slider] You can now change the update-policy of a slider with 
etk_slider_update_policy_set()


===================================================================
RCS file: /cvs/e/e17/libs/etk/src/bin/etk_slider_test.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -3 -r1.10 -r1.11
--- etk_slider_test.c   21 Feb 2007 05:19:17 -0000      1.10
+++ etk_slider_test.c   21 Feb 2007 18:27:03 -0000      1.11
@@ -1,14 +1,20 @@
 #include "etk_test.h"
 
+static void _slider_value_changed_cb(Etk_Object *object, double value, void 
*data);
 static void _inverted_toggled_cb(Etk_Object *object, void *data);
+static void _show_label_toggled_cb(Etk_Object *object, void *data);
+static void _continuous_toggled_cb(Etk_Object *object, void *data);
+
+static Etk_Widget *_label = NULL;
+static Etk_Widget *_hslider = NULL;
+static Etk_Widget *_vslider = NULL;
 
 /* Creates the window for the slider test */
 void etk_test_slider_window_create(void *data)
 {
    static Etk_Widget *win = NULL;
    Etk_Widget *table;
-   Etk_Widget *hslider;
-   Etk_Widget *vslider;
+   Etk_Widget *table2;
    Etk_Widget *separator;
    Etk_Widget *frame;
    Etk_Widget *vbox;
@@ -27,56 +33,92 @@
    
    table = etk_table_new(2, 3, ETK_FALSE);
    etk_container_add(ETK_CONTAINER(win), table);
+   table2 = etk_table_new(2, 2, ETK_FALSE);
+   etk_table_attach_default(ETK_TABLE(table), table2, 0, 1, 0, 0);
+   
+   /* Create the main label */
+   _label = etk_label_new("<title><font_size=28>128 x 
128</font_size></title>");
+   etk_label_alignment_set(ETK_LABEL(_label), 0.5, 0.5);
+   etk_widget_size_request_set(_label, 150, 150);
+   etk_table_attach_default(ETK_TABLE(table2), _label, 0, 0, 0, 0);
    
    /* Create the horizontal slider */
-   hslider = etk_hslider_new(0.0, 255.0, 128.0, 1.0, 10.0);
-   etk_slider_label_set(ETK_SLIDER(hslider), "%.0f");
-   etk_widget_size_request_set(hslider, 130, 130);
-   etk_table_attach_default(ETK_TABLE(table), hslider, 0, 0, 0, 0);
+   _hslider = etk_hslider_new(0.0, 255.0, 128.0, 1.0, 10.0);
+   etk_slider_label_set(ETK_SLIDER(_hslider), "%.0f");
+   etk_table_attach(ETK_TABLE(table2), _hslider, 0, 0, 1, 1, 0, 0, 
ETK_TABLE_HEXPAND | ETK_TABLE_HFILL);
+   etk_signal_connect("value_changed", ETK_OBJECT(_hslider), 
ETK_CALLBACK(_slider_value_changed_cb), NULL);
    
    /* Create the vertical slider */
-   vslider = etk_vslider_new(0.0, 255.0, 128.0, 1.0, 10.0);
-   etk_slider_label_set(ETK_SLIDER(vslider), "%.0f");
-   etk_widget_size_request_set(vslider, 130, 130);
-   etk_table_attach_default(ETK_TABLE(table), vslider, 1, 1, 0, 0);
+   _vslider = etk_vslider_new(0.0, 255.0, 128.0, 1.0, 10.0);
+   etk_slider_label_set(ETK_SLIDER(_vslider), "%.0f");
+   etk_table_attach(ETK_TABLE(table2), _vslider, 1, 1, 0, 0, 0, 0, 
ETK_TABLE_VEXPAND | ETK_TABLE_VFILL);
+   etk_signal_connect("value_changed", ETK_OBJECT(_vslider), 
ETK_CALLBACK(_slider_value_changed_cb), NULL);
    
    separator = etk_hseparator_new();
    etk_table_attach(ETK_TABLE(table), separator, 0, 1, 1, 1, 0, 0, 
ETK_TABLE_HFILL);
    
    
    /* Create the settings frame for the horizontal slider */
-   frame = etk_frame_new("Horizontal");
+   frame = etk_frame_new("HSlider Properties");
    etk_table_attach(ETK_TABLE(table), frame, 0, 0, 2, 2, 0, 0, 
ETK_TABLE_HEXPAND | ETK_TABLE_FILL);
    vbox = etk_vbox_new(ETK_TRUE, 0);
    etk_container_add(ETK_CONTAINER(frame), vbox);
    
+   check = etk_check_button_new_with_label("Show Label");
+   etk_toggle_button_active_set(ETK_TOGGLE_BUTTON(check), ETK_TRUE);
+   etk_box_append(ETK_BOX(vbox), check, ETK_BOX_START, ETK_BOX_EXPAND, 0);
+   etk_signal_connect("toggled", ETK_OBJECT(check), 
ETK_CALLBACK(_show_label_toggled_cb), _hslider);
+   
    check = etk_check_button_new_with_label("Inverted");
    etk_box_append(ETK_BOX(vbox), check, ETK_BOX_START, ETK_BOX_EXPAND, 0);
-   etk_signal_connect("toggled", ETK_OBJECT(check), 
ETK_CALLBACK(_inverted_toggled_cb), hslider);
+   etk_signal_connect("toggled", ETK_OBJECT(check), 
ETK_CALLBACK(_inverted_toggled_cb), _hslider);
    
    check = etk_check_button_new_with_label("Continuous Update");
    etk_toggle_button_active_set(ETK_TOGGLE_BUTTON(check), ETK_TRUE);
    etk_box_append(ETK_BOX(vbox), check, ETK_BOX_START, ETK_BOX_EXPAND, 0);
+   etk_signal_connect("toggled", ETK_OBJECT(check), 
ETK_CALLBACK(_continuous_toggled_cb), _hslider);
    
    
    /* Create the settings frame for the vertical slider */
-   frame = etk_frame_new("Vertical");
+   frame = etk_frame_new("VSlider Properties");
    etk_table_attach(ETK_TABLE(table), frame, 1, 1, 2, 2, 0, 0, 
ETK_TABLE_HEXPAND | ETK_TABLE_FILL);
    vbox = etk_vbox_new(ETK_TRUE, 0);
    etk_container_add(ETK_CONTAINER(frame), vbox);
    
+   check = etk_check_button_new_with_label("Show Label");
+   etk_toggle_button_active_set(ETK_TOGGLE_BUTTON(check), ETK_TRUE);
+   etk_box_append(ETK_BOX(vbox), check, ETK_BOX_START, ETK_BOX_EXPAND, 0);
+   etk_signal_connect("toggled", ETK_OBJECT(check), 
ETK_CALLBACK(_show_label_toggled_cb), _vslider);
+   
    check = etk_check_button_new_with_label("Inverted");
    etk_box_append(ETK_BOX(vbox), check, ETK_BOX_START, ETK_BOX_EXPAND, 0);
-   etk_signal_connect("toggled", ETK_OBJECT(check), 
ETK_CALLBACK(_inverted_toggled_cb), vslider);
+   etk_signal_connect("toggled", ETK_OBJECT(check), 
ETK_CALLBACK(_inverted_toggled_cb), _vslider);
    
    check = etk_check_button_new_with_label("Continuous Update");
    etk_toggle_button_active_set(ETK_TOGGLE_BUTTON(check), ETK_TRUE);
    etk_box_append(ETK_BOX(vbox), check, ETK_BOX_START, ETK_BOX_EXPAND, 0);
+   etk_signal_connect("toggled", ETK_OBJECT(check), 
ETK_CALLBACK(_continuous_toggled_cb), _vslider);
    
    
    etk_widget_show_all(win);
 }
 
+/**************************
+ *
+ * Callbacks
+ *
+ **************************/
+
+/* Called when one of the slider's value has been changed */
+static void _slider_value_changed_cb(Etk_Object *object, double value, void 
*data)
+{
+   char buf[128];
+   
+   snprintf(buf, sizeof(buf), "<title><font_size=28>%.0f x 
%.0f</font_size></title>",
+      etk_range_value_get(ETK_RANGE(_hslider)), 
etk_range_value_get(ETK_RANGE(_vslider)));
+   etk_label_set(ETK_LABEL(_label), buf);
+}
+
 /* Called when one of the "Inverted" check buttons is toggled */
 static void _inverted_toggled_cb(Etk_Object *object, void *data)
 {
@@ -86,4 +128,34 @@
    if (!(toggle = ETK_TOGGLE_BUTTON(object)) || !(slider = ETK_SLIDER(data)))
       return;
    etk_slider_inverted_set(slider, etk_toggle_button_active_get(toggle));
+}
+
+/* Called when one of the "Show Label" check buttons is toggled */
+static void _show_label_toggled_cb(Etk_Object *object, void *data)
+{
+   Etk_Toggle_Button *toggle;
+   Etk_Slider *slider;
+   
+   if (!(toggle = ETK_TOGGLE_BUTTON(object)) || !(slider = ETK_SLIDER(data)))
+      return;
+   
+   if (etk_toggle_button_active_get(toggle))
+      etk_slider_label_set(slider, "%.0f");
+   else
+      etk_slider_label_set(slider, NULL);
+}
+
+/* Called when one of the "Continuous Update" check buttons is toggled */
+static void _continuous_toggled_cb(Etk_Object *object, void *data)
+{
+   Etk_Toggle_Button *toggle;
+   Etk_Slider *slider;
+   
+   if (!(toggle = ETK_TOGGLE_BUTTON(object)) || !(slider = ETK_SLIDER(data)))
+      return;
+   
+   if (etk_toggle_button_active_get(toggle))
+      etk_slider_update_policy_set(slider, ETK_SLIDER_CONTINUOUS);
+   else
+      etk_slider_update_policy_set(slider, ETK_SLIDER_DELAYED);
 }



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