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