202 lines
6.6 KiB
C
202 lines
6.6 KiB
C
#include <stdio.h>
|
|
#include <gtk/gtk.h>
|
|
#include <phat/phat.h>
|
|
|
|
enum
|
|
{
|
|
SPACING = 5,
|
|
};
|
|
|
|
static void cb_inverted (GtkCheckButton* check, PhatFanSlider* slider)
|
|
{
|
|
phat_fan_slider_set_inverted (slider, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (check)));
|
|
}
|
|
|
|
void cb_slider_value (PhatFanSlider* slider)
|
|
{
|
|
printf("slider val %f \n", phat_fan_slider_get_value(slider));
|
|
}
|
|
|
|
static void cb_sensitive (GtkCheckButton* check, GtkWidget* slider)
|
|
{
|
|
gtk_widget_set_sensitive (slider, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (check)));
|
|
}
|
|
|
|
static void cb_lower (GtkAdjustment* lower, GtkAdjustment* slider)
|
|
{
|
|
if (lower->value >= slider->upper)
|
|
{
|
|
gtk_adjustment_set_value (lower, slider->upper - 0.01);
|
|
return;
|
|
}
|
|
|
|
if (lower->value > slider->value)
|
|
{
|
|
gtk_adjustment_set_value (lower, slider->value);
|
|
return;
|
|
}
|
|
|
|
slider->lower = lower->value;
|
|
gtk_adjustment_changed (slider);
|
|
}
|
|
|
|
static void cb_upper (GtkAdjustment* upper, GtkAdjustment* slider)
|
|
{
|
|
if (upper->value <= slider->lower)
|
|
{
|
|
gtk_adjustment_set_value (upper, slider->lower + 0.01);
|
|
return;
|
|
}
|
|
|
|
if (upper->value < slider->value)
|
|
{
|
|
gtk_adjustment_set_value (upper, slider->value);
|
|
return;
|
|
}
|
|
|
|
slider->upper = upper->value;
|
|
gtk_adjustment_changed (slider);
|
|
}
|
|
|
|
int main (int argc, char* argv[])
|
|
{
|
|
GtkWidget* window;
|
|
GtkWidget* vbox;
|
|
GtkWidget* hbox;
|
|
GtkWidget* slider;
|
|
GtkWidget* label;
|
|
GtkWidget* spin;
|
|
GtkWidget* check;
|
|
GtkAdjustment* adj;
|
|
GtkAdjustment* spin_adj;
|
|
|
|
gtk_init (&argc, &argv);
|
|
|
|
/* main window */
|
|
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
|
gtk_window_set_title (GTK_WINDOW (window), "Fanslider Demo");
|
|
gtk_container_set_border_width (GTK_CONTAINER (window), SPACING);
|
|
gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
|
|
g_signal_connect (G_OBJECT (window), "delete-event",
|
|
G_CALLBACK (gtk_main_quit), NULL);
|
|
|
|
vbox = gtk_vbox_new (FALSE, SPACING);
|
|
gtk_container_add (GTK_CONTAINER (window), vbox);
|
|
gtk_widget_show (vbox);
|
|
|
|
/* horizontal slider */
|
|
adj = (GtkAdjustment*) gtk_adjustment_new (0, 1, 2, .01, .1, 0);
|
|
slider = phat_hfan_slider_new (adj);
|
|
g_signal_connect (G_OBJECT (slider), "value-changed",
|
|
G_CALLBACK (cb_slider_value), (gpointer) slider);
|
|
gtk_box_pack_start (GTK_BOX (vbox), slider, TRUE, TRUE, 0);
|
|
gtk_widget_show (slider);
|
|
|
|
/* horizontal slider controls */
|
|
hbox = gtk_hbox_new (FALSE, SPACING);
|
|
gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);
|
|
gtk_widget_show (hbox);
|
|
|
|
label = gtk_label_new ("Value:");
|
|
gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
|
|
gtk_widget_show (label);
|
|
|
|
spin = gtk_spin_button_new (adj, 0, 2);
|
|
gtk_box_pack_start (GTK_BOX (hbox), spin, TRUE, TRUE, 0);
|
|
gtk_widget_show (spin);
|
|
|
|
label = gtk_label_new ("Lower:");
|
|
gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
|
|
gtk_widget_show (label);
|
|
|
|
spin_adj = (GtkAdjustment*) gtk_adjustment_new (1, 1, 300, .01, 0, 0);
|
|
g_signal_connect (G_OBJECT (spin_adj), "value-changed",
|
|
G_CALLBACK (cb_lower), (gpointer) adj);
|
|
spin = gtk_spin_button_new (spin_adj, 0, 2);
|
|
gtk_box_pack_start (GTK_BOX (hbox), spin, TRUE, TRUE, 0);
|
|
gtk_widget_show (spin);
|
|
|
|
label = gtk_label_new ("Upper:");
|
|
gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
|
|
gtk_widget_show (label);
|
|
|
|
spin_adj = (GtkAdjustment*) gtk_adjustment_new (20, 1, 20000, .01, 0, 0);
|
|
g_signal_connect (G_OBJECT (spin_adj), "value-changed",
|
|
G_CALLBACK (cb_upper), (gpointer) adj);
|
|
spin = gtk_spin_button_new (spin_adj, 0, 2);
|
|
gtk_box_pack_start (GTK_BOX (hbox), spin, TRUE, TRUE, 0);
|
|
gtk_widget_show (spin);
|
|
|
|
check = gtk_check_button_new_with_label ("Inverted");
|
|
g_signal_connect (G_OBJECT (check), "toggled",
|
|
G_CALLBACK (cb_inverted), (gpointer) slider);
|
|
gtk_box_pack_start (GTK_BOX (hbox), check, TRUE, TRUE, 0);
|
|
gtk_widget_show (check);
|
|
|
|
check = gtk_check_button_new_with_label ("Sensitive");
|
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check), TRUE);
|
|
g_signal_connect (G_OBJECT (check), "toggled",
|
|
G_CALLBACK (cb_sensitive), (gpointer) slider);
|
|
gtk_box_pack_start (GTK_BOX (hbox), check, TRUE, TRUE, 0);
|
|
gtk_widget_show (check);
|
|
|
|
/* vertical slider */
|
|
adj = (GtkAdjustment*) gtk_adjustment_new (0, 0, 1, .01, .1, 0);
|
|
slider = phat_vfan_slider_new (adj);
|
|
gtk_box_pack_start (GTK_BOX (vbox), slider, TRUE, TRUE, 0);
|
|
gtk_widget_show (slider);
|
|
|
|
/* vertical slider controls */
|
|
hbox = gtk_hbox_new (FALSE, SPACING);
|
|
gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);
|
|
gtk_widget_show (hbox);
|
|
|
|
label = gtk_label_new ("Value:");
|
|
gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
|
|
gtk_widget_show (label);
|
|
|
|
spin = gtk_spin_button_new (adj, 0, 2);
|
|
gtk_box_pack_start (GTK_BOX (hbox), spin, TRUE, TRUE, 0);
|
|
gtk_widget_show (spin);
|
|
|
|
label = gtk_label_new ("Lower:");
|
|
gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
|
|
gtk_widget_show (label);
|
|
|
|
spin_adj = (GtkAdjustment*) gtk_adjustment_new (0, -5, 0, .01, 0, 0);
|
|
g_signal_connect (G_OBJECT (spin_adj), "value-changed",
|
|
G_CALLBACK (cb_lower), (gpointer) adj);
|
|
spin = gtk_spin_button_new (spin_adj, 0, 2);
|
|
gtk_box_pack_start (GTK_BOX (hbox), spin, TRUE, TRUE, 0);
|
|
gtk_widget_show (spin);
|
|
|
|
label = gtk_label_new ("Upper:");
|
|
gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
|
|
gtk_widget_show (label);
|
|
|
|
spin_adj = (GtkAdjustment*) gtk_adjustment_new (1, 0, 5, .01, 0, 0);
|
|
g_signal_connect (G_OBJECT (spin_adj), "value-changed",
|
|
G_CALLBACK (cb_upper), (gpointer) adj);
|
|
spin = gtk_spin_button_new (spin_adj, 0, 2);
|
|
gtk_box_pack_start (GTK_BOX (hbox), spin, TRUE, TRUE, 0);
|
|
gtk_widget_show (spin);
|
|
|
|
check = gtk_check_button_new_with_label ("Inverted");
|
|
g_signal_connect (G_OBJECT (check), "toggled",
|
|
G_CALLBACK (cb_inverted), (gpointer) slider);
|
|
gtk_box_pack_start (GTK_BOX (hbox), check, TRUE, TRUE, 0);
|
|
gtk_widget_show (check);
|
|
|
|
check = gtk_check_button_new_with_label ("Sensitive");
|
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check), TRUE);
|
|
g_signal_connect (G_OBJECT (check), "toggled",
|
|
G_CALLBACK (cb_sensitive), (gpointer) slider);
|
|
gtk_box_pack_start (GTK_BOX (hbox), check, TRUE, TRUE, 0);
|
|
gtk_widget_show (check);
|
|
|
|
gtk_widget_show (window);
|
|
gtk_main ( );
|
|
return 0;
|
|
}
|
|
|