Compilarea unui program folosind gtk :
Pentru a compila aplicatii GTK+, avem un tool pkg-config care returneaza metadata despre librariile instalate.
gcc example.c -o example `pkg-config --cflags --libs gtk+-2.0`
Exemplu foarte simplu:
#include
int main( int argc, char *argv[])
{
GtkWidget *window;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(window);
return 0;
}
gtk_init(&arsgc,&argv); //initializarea librariei gtk
GtkWidget *window; //declara un GtkWindow widget
window = gtk_window_new(GTK_WINDOW_TOPLEVEL); //crearea unei fereastre de tipul GTK_WINDOW_TOPLEVEL acestea au bara de sus si margine.
gtk_main();//intra in loop-ul principal GTK+
In urma rularii se obtine fereastra:

Acum voi arata exemple de ferestre pentru un Messenger folosind gtk:
Fereastra de sign-in:
GtkWidget *window;
GdkColor colorWindow;
colorWindow.red=204*256;
colorWindow.green=255*256;
colorWindow.blue=224*256;
gdk_color_parse ("honeydew2", &colorWindow); //culoarea de background a ferestrei
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window),"Name"); //titlul ferestrei
gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);//pozitia ferestrei
gtk_window_set_icon_from_file (GTK_WINDOW window),"kite_icon2.jpg",NULL);
//adaug o imagine
//pun ca background culoarea
gtk_widget_modify_bg (window, GTK_STATE_NORMAL,&colorWindow);
gtk_widget_modify_bg (window, GTK_STATE_PRELIGHT, &colorWindow);
gtk_signal_connect (GTK_OBJECT (window), "destroy",
GTK_SIGNAL_FUNC (gtk_main_quit), NULL);
g_signal_connect (GTK_OBJECT (window), "delete_event",
GTK_SIGNAL_FUNC (gtk_main_quit), NULL);
Iata cum se creeaza un box vertical ce va contine tot si va fi continut apoi in window
GtkWidget *main_box;
main_box=gtk_vbox_new (FALSE, 0);
gtk_container_set_border_width (GTK_CONTAINER (main_box), 2);
Tabel 2x2:
gtk_table_set_row_spacing(GTK_TABLE(table),0,80);
gtk_table_set_row_spacing(GTK_TABLE(table),2,20);
gtk_table_set_row_spacing(GTK_TABLE(table),3,60);
gtk_table_set_row_spacing(GTK_TABLE(table),4,200);
Adaugarea unei imagini:
image=gtk_image_new_from_file ("kite1.jpeg");
Crearea unui label:
sigin_lbl_password = gtk_label_new("Password:");
Entry:
sigin_password_entry = gtk_entry_new();
Entry care pentru password este ascuns
gtk_entry_set_visibility( (GtkEntry *)sigin_password_entry,
FALSE );
Crearea unui check button:
sigin_ckb_invisible=gtk_check_button_new_with_label ("Invizible for all");
Crearea unui buton de logare:
sigin_bt_signin = gtk_button_new ();
Aici se apeleaza functia de callback la click pe butunul de logare:
g_signal_connect (G_OBJECT (sigin_bt_signin), "clicked",
G_CALLBACK (sign_in), (gpointer) "cool button");
Userul poate declansa sign_in si dupa ce introduce parola si executa enter
g_signal_connect (G_OBJECT (sigin_password_entry), "activate",
G_CALLBACK (sign_in), (gpointer) "data");
box = xpm_label_box ("access_16x16.gif", "Sign In");
gtk_widget_show (box);
Adaug boxul la buton:
gtk_container_add (GTK_CONTAINER (sigin_bt_signin), box);
gtk_widget_show (sigin_bt_signin);
Link catre alta fereastra:
event_box = gtk_event_box_new ();
sigin_lbl_signup = gtk_label_new("New Account");
gtk_container_add (GTK_CONTAINER (event_box), sigin_lbl_signup);
gtk_event_box_set_visible_window (GTK_EVENT_BOX(event_box),FALSE);
gtk_widget_set_events (event_box, GDK_BUTTON_PRESS_MASK);
g_signal_connect (G_OBJECT (event_box), "button_press_event",
G_CALLBACK (cont_nou),NULL);
Adaugarea de elemente in tabel
gtk_table_attach(GTK_TABLE(table), image, 0, 2, 0, 1, 0, 0, 0, 0);
gtk_table_attach(GTK_TABLE(table), sigin_lbl_username, 0, 1, 1, 2, 0, 0, 0, 0);
gtk_table_attach(GTK_TABLE(table), sigin_lbl_password, 0, 1, 2, 3, 0, 0, 0, 0);
gtk_table_attach(GTK_TABLE(table), sigin_username_entry, 1, 2, 1, 2, 0, 0, 0, 0);
gtk_table_attach(GTK_TABLE(table), sigin_password_entry, 1, 2, 2, 3, 0, 0, 0, 0);
gtk_table_attach(GTK_TABLE(table), sigin_ckb_invisible, 1, 2, 3, 4, 0, 0, 0, 0);
gtk_table_attach(GTK_TABLE(table), sigin_bt_signin, 1, 2, 4, 5, 0, 0, 0, 0);
gtk_table_attach(GTK_TABLE(table), event_box, 1, 2, 5, 6, 0, 0, 0, 0);
Toate elementele adaugate sunt vizibile
gtk_widget_show(table);
gtk_widget_show(sigin_username_entry);
gtk_widget_show(sigin_password_entry);
gtk_widget_show(sigin_lbl_username);
gtk_widget_show(sigin_lbl_password);
gtk_widget_show(sigin_lbl_signup);
gtk_widget_show(image);
gtk_widget_show(sigin_ckb_invisible);
gtk_widget_show(event_box);
gtk_container_add(GTK_CONTAINER(main_box), table);
Seteaza marginile:
gtk_container_set_border_width (GTK_CONTAINER (window),50);
Adaugarea vertical box la fereastra
gtk_widget_show (main_box);
gtk_container_add (GTK_CONTAINER (window), main_box);
Se obtine:

Niciun comentariu:
Trimiteți un comentariu