Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <gtk/gtk.h>
- #include <glib.h>
- #include <gdk/gdkdrawable.h>
- #include <gdkconfig.h>
- #include <gdk/gdk.h>
- #include <gdk/gdkwin32.h>
- //#include <stdio.h>
- #include <iostream>
- #include <cairo.h>
- gint count = 0;
- char buf[5];
- int liczniczek;
- void increase(GtkWidget *widget, gpointer label)
- {
- count++;
- sprintf(buf, "%d", count);
- gtk_label_set_text(GTK_LABEL(label), buf);
- }
- void decrease(GtkWidget *widget, gpointer label)
- {
- count--;
- sprintf(buf, "%d", count);
- gtk_label_set_text(GTK_LABEL(label), buf);
- }
- void policz (GtkWidget *widget, gpointer label)
- {
- liczniczek++;
- //printf("dupa %i", liczniczek);
- std::cout << liczniczek << std::endl;
- }
- void ptaszek_sprawdz (GtkWidget *widget, gpointer label)
- {
- if( gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON( widget ) ) ) //jeśli ptaszek zaznaczony
- gtk_button_set_label( GTK_BUTTON( widget ), "Wciśnięto!" );
- else
- gtk_button_set_label( GTK_BUTTON( widget ), "Nie wciśnięto!" );
- }
- int main(int argc, char** argv) {
- GtkWidget *label; //etykieta do wyświetlania tekstu
- GtkWidget *window; //głowne okno programu
- GtkWidget *frame; //frame - ramka w której wyświetlamy zawartość fixed, użyta pod menu
- GtkWidget *plus; //przycisk
- GtkWidget *minus; //przycisk
- GtkWidget *vbox; //vbox, pionowy zbiór pudełek
- GtkWidget *menubar; //pasek menu
- GtkWidget *filemenu; //menu plik
- GtkWidget *btn_file; // przycisk na pasku menu "plik"
- GtkWidget *btn_add; //przycisk dodawania liczby w menu plik
- GtkWidget *btn_quit; // przycisk na menu plik
- GtkWidget * checkButton; //przycisk ptaszkowany
- GtkWidget * pole_rysunek; //obszar rysunku
- 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), 250, 180);
- gtk_window_set_title(GTK_WINDOW(window), "+-");
- vbox = gtk_vbox_new(FALSE, 0); //nowy obiekt vbox
- gtk_container_add(GTK_CONTAINER(window), vbox); //dodanie obiektu vbox do okna głównego
- frame = gtk_fixed_new(); //nowy obiekt ramka
- //utworzenie paska menu:
- menubar = gtk_menu_bar_new();
- filemenu = gtk_menu_new();
- btn_file = gtk_menu_item_new_with_label("File");
- btn_add = gtk_menu_item_new_with_label("Add");
- btn_quit = gtk_menu_item_new_with_label("Quit");
- gtk_menu_item_set_submenu(GTK_MENU_ITEM(btn_file), filemenu);
- gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), btn_add);
- gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), btn_quit);
- gtk_menu_shell_append(GTK_MENU_SHELL(menubar), btn_file);
- gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, FALSE, 3); //wstawiamy menubar do vboxa
- //gtk_container_add(GTK_CONTAINER(vbox), frame); //do vboxa dodajemy frame, ale dopiero po wyswietleniu menu w tym vboxie
- //// zmiana gtk_container_add na gtk_box_pack_start:
- gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 3); //wstawiamy frame do vboxa
- ////
- gtk_container_set_border_width (GTK_CONTAINER (frame), 8);
- checkButton = gtk_check_button_new_with_label( "Nie wciśnięto!" ); //przycisk ptaszkowany
- ////
- gtk_box_pack_start( GTK_BOX( vbox ), checkButton, TRUE, TRUE, 0 ); //wstawiamy checkButtona do vboxa
- ////
- pole_rysunek = gtk_drawing_area_new(); //utworzenie pola rysunku
- gtk_drawing_area_size (GTK_DRAWING_AREA(pole_rysunek), 200, 200); //rozmiar pola rysunek szerokość wysokość
- gtk_box_pack_start( GTK_BOX( vbox ), pole_rysunek, TRUE, TRUE, 0 ); //wstawienie pola rysunku do vboxa
- GdkPixmap * rysunek = pole_rysunek->window;
- gdk_draw_rectangle(rysunek, pole_rysunek->style->white_gc, TRUE, 0, 0, 200, 200);
- gdk_draw_point(rysunek, pole_rysunek->style->white_gc, 5, 5);
- plus = gtk_button_new_with_label("+");
- gtk_widget_set_size_request(plus, 80, 35);
- gtk_fixed_put(GTK_FIXED(frame), plus, 50, 20);
- minus = gtk_button_new_with_label("-");
- gtk_widget_set_size_request(minus, 80, 35);
- gtk_fixed_put(GTK_FIXED(frame), minus, 50, 80);
- label = gtk_label_new("0");
- gtk_fixed_put(GTK_FIXED(frame), label, 190, 58);
- gtk_widget_show_all(window);
- //gtk_widget_show_all(frame);
- g_signal_connect_swapped(window, "destroy",
- G_CALLBACK (gtk_main_quit), NULL);
- g_signal_connect(btn_quit, "activate",
- G_CALLBACK(gtk_main_quit), label);
- g_signal_connect(plus, "clicked",
- G_CALLBACK(increase), label);
- g_signal_connect(minus, "clicked",
- G_CALLBACK(decrease), label);
- g_signal_connect(btn_add, "activate",
- // G_CALLBACK(increase), label);
- G_CALLBACK(policz), label);
- g_signal_connect( checkButton, "clicked", G_CALLBACK( ptaszek_sprawdz ), NULL );
- gtk_main();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment