]> Pileus Git - ~andy/gtk/blobdiff - tests/testscale.c
gail: Copy gail-util functions into gail
[~andy/gtk] / tests / testscale.c
index 3ed22b2469335b757cfbac17db6bf03bcc1e8d26..6acb497b10e6c9397256bea544f95286f6e2dd80 100755 (executable)
 
 #include <gtk/gtk.h>
 
+static void
+show_trough_toggled (GtkToggleButton *button,
+                     GtkScale        *scale)
+{
+  gboolean value;
+
+  value = gtk_toggle_button_get_active (button);
+  gtk_range_set_range (GTK_RANGE (scale), 0., value ? 100.0 : 0.);
+}
+
 int main (int argc, char *argv[])
 {
   GtkWidget *window;
@@ -27,6 +37,7 @@ int main (int argc, char *argv[])
   GtkWidget *box2;
   GtkWidget *frame;
   GtkWidget *scale;
+  GtkWidget *toggle;
   gdouble marks[3] = { 0.0, 50.0, 100.0 };
   const gchar *labels[3] = { 
     "<small>Left</small>", 
@@ -42,11 +53,14 @@ int main (int argc, char *argv[])
     "<span color='Red' size='small'>Hot</span>" 
   };
 
+  gdouble pos_marks[4] = { 0.0, 33.3, 66.6, 100.0 };
+  const gchar *pos_labels[4] = { "Left", "Right", "Top", "Bottom" };
+
   gtk_init (&argc, &argv);
 
   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
   gtk_window_set_title (GTK_WINDOW (window), "Ranges with marks");
-  box = gtk_vbox_new (FALSE, 5);
+  box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
 
   frame = gtk_frame_new ("No marks");
   scale = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL,
@@ -96,7 +110,31 @@ int main (int argc, char *argv[])
   gtk_container_add (GTK_CONTAINER (frame), scale);
   gtk_box_pack_start (GTK_BOX (box), frame, FALSE, FALSE, 0);
 
-  box2 = gtk_hbox_new (FALSE, 5);
+  frame = gtk_frame_new ("Positions");
+  scale = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL,
+                                    0, 100, 1);
+  gtk_scale_set_draw_value (GTK_SCALE (scale), FALSE);
+  gtk_scale_add_mark (GTK_SCALE (scale), pos_marks[0], GTK_POS_LEFT, pos_labels[0]);
+  gtk_scale_add_mark (GTK_SCALE (scale), pos_marks[1], GTK_POS_RIGHT, pos_labels[1]);
+  gtk_scale_add_mark (GTK_SCALE (scale), pos_marks[2], GTK_POS_TOP, pos_labels[2]);
+  gtk_scale_add_mark (GTK_SCALE (scale), pos_marks[3], GTK_POS_BOTTOM, pos_labels[3]);
+  gtk_container_add (GTK_CONTAINER (frame), scale);
+  gtk_box_pack_start (GTK_BOX (box), frame, FALSE, FALSE, 0);
+
+  frame = gtk_frame_new ("Show/hide trough");
+  box2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
+  scale = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL,
+                                    0, 100, 1);
+  gtk_box_pack_start (GTK_BOX (box2), scale, TRUE, TRUE, 0);
+  toggle = gtk_toggle_button_new_with_label ("Show slider trough");
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), TRUE);
+  g_signal_connect (G_OBJECT (toggle), "toggled",
+                    G_CALLBACK (show_trough_toggled), scale);
+  gtk_box_pack_start (GTK_BOX (box2), toggle, TRUE, TRUE, 0);
+  gtk_container_add (GTK_CONTAINER (frame), box2);
+  gtk_box_pack_start (GTK_BOX (box), frame, FALSE, FALSE, 0);
+
+  box2 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5);
   gtk_box_pack_start (GTK_BOX (box), box2, TRUE, TRUE, 0);
 
   frame = gtk_frame_new ("No marks");
@@ -147,6 +185,17 @@ int main (int argc, char *argv[])
   gtk_container_add (GTK_CONTAINER (frame), scale);
   gtk_box_pack_start (GTK_BOX (box2), frame, FALSE, FALSE, 0);
 
+  frame = gtk_frame_new ("Positions");
+  scale = gtk_scale_new_with_range (GTK_ORIENTATION_VERTICAL,
+                                    0, 100, 1);
+  gtk_scale_set_draw_value (GTK_SCALE (scale), FALSE);
+  gtk_scale_add_mark (GTK_SCALE (scale), pos_marks[0], GTK_POS_LEFT, pos_labels[0]);
+  gtk_scale_add_mark (GTK_SCALE (scale), pos_marks[1], GTK_POS_RIGHT, pos_labels[1]);
+  gtk_scale_add_mark (GTK_SCALE (scale), pos_marks[2], GTK_POS_TOP, pos_labels[2]);
+  gtk_scale_add_mark (GTK_SCALE (scale), pos_marks[3], GTK_POS_BOTTOM, pos_labels[3]);
+  gtk_container_add (GTK_CONTAINER (frame), scale);
+  gtk_box_pack_start (GTK_BOX (box2), frame, FALSE, FALSE, 0);
+
   gtk_container_add (GTK_CONTAINER (window), box);
   gtk_widget_show_all (window);