gtk01.c 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /*
  2. * Copyright © Jan Newmarch, jan@newmarch.name
  3. * https://jan.newmarch.name/Wayland/GTK/
  4. */
  5. #include <gtk-3.0/gtk/gtk.h>
  6. gint count = 0;
  7. char buf[5];
  8. void increase(GtkWidget *widget, gpointer label) {
  9. count++;
  10. sprintf(buf, "%d", count);
  11. gtk_label_set_text(GTK_LABEL(label), buf);
  12. }
  13. void decrease(GtkWidget *widget, gpointer label) {
  14. count--;
  15. sprintf(buf, "%d", count);
  16. gtk_label_set_text(GTK_LABEL(label), buf);
  17. }
  18. int main(int argc, char **argv) {
  19. GtkWidget *label;
  20. GtkWidget *window;
  21. GtkWidget *frame;
  22. GtkWidget *plus;
  23. GtkWidget *minus;
  24. gtk_init(&argc, &argv);
  25. window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  26. gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER_ALWAYS);
  27. gtk_window_set_default_size(GTK_WINDOW(window), 250, 180);
  28. gtk_window_set_title(GTK_WINDOW(window), "+-");
  29. frame = gtk_fixed_new();
  30. gtk_container_add(GTK_CONTAINER(window), frame);
  31. plus = gtk_button_new_with_label("+");
  32. gtk_widget_set_size_request(plus, 80, 35);
  33. gtk_fixed_put(GTK_FIXED(frame), plus, 50, 20);
  34. minus = gtk_button_new_with_label("-");
  35. gtk_widget_set_size_request(minus, 80, 35);
  36. gtk_fixed_put(GTK_FIXED(frame), minus, 50, 80);
  37. label = gtk_label_new("0");
  38. gtk_fixed_put(GTK_FIXED(frame), label, 190, 58);
  39. gtk_widget_show_all(window);
  40. g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
  41. g_signal_connect(plus, "clicked", G_CALLBACK(increase), label);
  42. g_signal_connect(minus, "clicked", G_CALLBACK(decrease), label);
  43. gtk_main();
  44. return 0;
  45. }