1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| #include <gtk/gtk.h>
#include <stdlib.h>
gboolean on_scroll(GtkScrolledWindow *scrolled_window, GtkScrollType scroll, gboolean horizontal, gpointer user_data) {
GtkAdjustment *adj;
adj = gtk_scrolled_window_get_vadjustment (scrolled_window);
gdouble val, low, upp, sti, pai, pas;
val = gtk_adjustment_get_value (adj);
low = gtk_adjustment_get_lower (adj);
upp = gtk_adjustment_get_upper (adj);
sti = gtk_adjustment_get_step_increment (adj);
pai = gtk_adjustment_get_page_increment (adj);
pas = gtk_adjustment_get_page_size (adj);
g_print("value: %f lower: %f upper: %f stepinc: %f pageinc: %f pagesize: %f\n", val, low, upp, sti, pai, pas);
return TRUE;
}
int main(int argc, char *argv[])
{
GtkWidget *window, *scr_win, *grid;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_window_set_default_size(GTK_WINDOW(window), 150, 250);
gtk_window_set_title(GTK_WINDOW(window), "Test");
grid = gtk_grid_new();
int i=0;
int j=0;
GtkWidget *label, *alignment;
char *str_lab = malloc(sizeof(char[5]));
for (i=410; i>50; i=i-10) {
str_lab = g_strdup_printf ("%d", i);
label = gtk_label_new(str_lab);
gtk_widget_set_size_request(label, 100, 14);
gtk_grid_attach(GTK_GRID (grid), label, 0, j, 1, 1);
j++;
}
free(str_lab);
GtkAdjustment *adj;
adj = gtk_adjustment_new(50.0, 0.0, 576.0, 10.0, 50.0, 250.0);
scr_win = gtk_scrolled_window_new(NULL, adj);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(scr_win), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW (scr_win), grid);
gtk_container_add(GTK_CONTAINER(window), scr_win);
g_signal_connect(scr_win, "scroll-child", G_CALLBACK(on_scroll), NULL);
g_signal_connect_swapped(G_OBJECT(window), "destroy",
G_CALLBACK(gtk_main_quit), G_OBJECT(window));
gtk_widget_show_all(window);
gtk_main();
return 0;
} |