Guest User

GTK 2 Code blocks Cpp

a guest
Jul 10th, 2014
314
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.91 KB | None | 0 0
  1. #include <gtk/gtk.h>
  2. #include <glib.h>
  3. #include <gdk/gdkdrawable.h>
  4. #include <gdkconfig.h>
  5. #include <gdk/gdk.h>
  6. #include <gdk/gdkwin32.h>
  7.  
  8. //#include <stdio.h>
  9. #include <iostream>
  10. #include <cairo.h>
  11.  
  12. gint count = 0;
  13. char buf[5];
  14.  
  15. int liczniczek;
  16.  
  17.  
  18.  
  19. void increase(GtkWidget *widget, gpointer label)
  20. {
  21.   count++;
  22.  
  23.   sprintf(buf, "%d", count);
  24.   gtk_label_set_text(GTK_LABEL(label), buf);
  25. }
  26.  
  27. void decrease(GtkWidget *widget, gpointer label)
  28. {
  29.   count--;
  30.  
  31.   sprintf(buf, "%d", count);
  32.   gtk_label_set_text(GTK_LABEL(label), buf);
  33. }
  34.  
  35. void policz (GtkWidget *widget, gpointer label)
  36. {
  37.     liczniczek++;
  38.     //printf("dupa %i", liczniczek);
  39.     std::cout << liczniczek << std::endl;
  40. }
  41.  
  42. void ptaszek_sprawdz (GtkWidget *widget, gpointer label)
  43. {
  44.     if( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget ) ) ) //jeśli ptaszek zaznaczony
  45.         gtk_button_set_label( GTK_BUTTON( widget ), "Wciśnięto!" );
  46.     else
  47.          gtk_button_set_label( GTK_BUTTON( widget ), "Nie wciśnięto!" );
  48. }
  49.  
  50.  
  51. int main(int argc, char** argv) {
  52.  
  53.   GtkWidget *label; //etykieta do wyświetlania tekstu
  54.   GtkWidget *window; //głowne okno programu
  55.   GtkWidget *frame; //frame - ramka w której wyświetlamy zawartość fixed, użyta pod menu
  56.   GtkWidget *plus; //przycisk
  57.   GtkWidget *minus; //przycisk
  58.  
  59.         GtkWidget *vbox; //vbox, pionowy zbiór pudełek
  60.  
  61.       GtkWidget *menubar; //pasek menu
  62.       GtkWidget *filemenu; //menu plik
  63.       GtkWidget *btn_file; // przycisk na pasku menu "plik"
  64.       GtkWidget *btn_add; //przycisk dodawania liczby w menu plik
  65.       GtkWidget *btn_quit; // przycisk na menu plik
  66.  
  67.         GtkWidget * checkButton; //przycisk ptaszkowany
  68.         GtkWidget * pole_rysunek; //obszar rysunku
  69.  
  70.   gtk_init(&argc, &argv);
  71.  
  72.   window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  73.   gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
  74.   gtk_window_set_default_size(GTK_WINDOW(window), 250, 180);
  75.   gtk_window_set_title(GTK_WINDOW(window), "+-");
  76.  
  77.     vbox = gtk_vbox_new(FALSE, 0); //nowy obiekt vbox
  78.     gtk_container_add(GTK_CONTAINER(window), vbox); //dodanie obiektu vbox do okna głównego
  79.  
  80.   frame = gtk_fixed_new(); //nowy obiekt ramka
  81.  
  82. //utworzenie paska menu:
  83.     menubar = gtk_menu_bar_new();
  84.     filemenu = gtk_menu_new();
  85.  
  86.     btn_file = gtk_menu_item_new_with_label("File");
  87.     btn_add = gtk_menu_item_new_with_label("Add");
  88.     btn_quit = gtk_menu_item_new_with_label("Quit");
  89.  
  90.     gtk_menu_item_set_submenu(GTK_MENU_ITEM(btn_file), filemenu);
  91.     gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), btn_add);
  92.     gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), btn_quit);
  93.     gtk_menu_shell_append(GTK_MENU_SHELL(menubar), btn_file);
  94.     gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, FALSE, 3); //wstawiamy menubar do vboxa
  95.  
  96.   //gtk_container_add(GTK_CONTAINER(vbox), frame); //do vboxa dodajemy frame, ale dopiero po wyswietleniu menu w tym vboxie
  97. //// zmiana gtk_container_add na gtk_box_pack_start:
  98.     gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 3); //wstawiamy frame do vboxa
  99. ////
  100.         gtk_container_set_border_width (GTK_CONTAINER (frame), 8);
  101.  
  102.             checkButton = gtk_check_button_new_with_label( "Nie wciśnięto!" ); //przycisk ptaszkowany
  103.             ////
  104.             gtk_box_pack_start( GTK_BOX( vbox ), checkButton, TRUE, TRUE, 0 ); //wstawiamy checkButtona do vboxa
  105.             ////
  106.             pole_rysunek = gtk_drawing_area_new(); //utworzenie pola rysunku
  107.             gtk_drawing_area_size (GTK_DRAWING_AREA(pole_rysunek), 200, 200); //rozmiar pola rysunek szerokość wysokość
  108.             gtk_box_pack_start( GTK_BOX( vbox ), pole_rysunek, TRUE, TRUE, 0 ); //wstawienie pola rysunku do vboxa
  109.  
  110.             GdkPixmap  * rysunek = pole_rysunek->window;
  111.             gdk_draw_rectangle(rysunek, pole_rysunek->style->white_gc, TRUE, 0, 0, 200, 200);
  112.             gdk_draw_point(rysunek, pole_rysunek->style->white_gc, 5, 5);
  113.  
  114.   plus = gtk_button_new_with_label("+");
  115.   gtk_widget_set_size_request(plus, 80, 35);
  116.   gtk_fixed_put(GTK_FIXED(frame), plus, 50, 20);
  117.  
  118.   minus = gtk_button_new_with_label("-");
  119.   gtk_widget_set_size_request(minus, 80, 35);
  120.   gtk_fixed_put(GTK_FIXED(frame), minus, 50, 80);
  121.  
  122.   label = gtk_label_new("0");
  123.   gtk_fixed_put(GTK_FIXED(frame), label, 190, 58);
  124.  
  125.   gtk_widget_show_all(window);
  126.  
  127.         //gtk_widget_show_all(frame);
  128.  
  129.  
  130.  
  131.   g_signal_connect_swapped(window, "destroy",
  132.       G_CALLBACK (gtk_main_quit), NULL);
  133.  
  134.   g_signal_connect(btn_quit, "activate",
  135.       G_CALLBACK(gtk_main_quit), label);
  136.  
  137.   g_signal_connect(plus, "clicked",
  138.       G_CALLBACK(increase), label);
  139.  
  140.   g_signal_connect(minus, "clicked",
  141.       G_CALLBACK(decrease), label);
  142.  
  143.   g_signal_connect(btn_add, "activate",
  144. //      G_CALLBACK(increase), label);
  145.         G_CALLBACK(policz), label);
  146.  
  147.     g_signal_connect( checkButton, "clicked", G_CALLBACK( ptaszek_sprawdz ), NULL );
  148.  
  149.   gtk_main();
  150.  
  151.   return 0;
  152. }
Advertisement
Add Comment
Please, Sign In to add comment