I THI U V GTK+

t k và đ

ử ụ

ế ế

ng ng

ươ ươ

ế

t riêng b công ộ

c g i là b công c GIMP

ư ắ ầ ọ

ượ

t l

i đ h ế ạ ể ướ

ố ượ

ượ

ế c vi c đ i tên thành GTK+.

ề ự ng đ i t

ướ

ữ ộ ố

ự ệ ố

ữ ậ

GI Ề Ớ -GTK có tên đ y đ là Gimp Toolkit . ủ ầ c s d ng trong ch c thi -GTK ban đ u đ ượ ượ trình GNU Manipulation Program (GIMP) nh là m t ch ư trình thay th cho b công c Motif.Nh ng v sau Peter ề ụ Mattis th y th t v ng v MoTif và b t đ u vi ế ề ấ ọ c giao di n đ h a c a ông đ ộ ủ ồ ọ ụ và đã thành công thay th Motif.Và trong b n phát hành 0,99 ả c a GIMP GTK đã đ ng h n và ng đ i t ủ ơ đ ượ -GTK+ là m t ph n m m v a miên phí v a đ c quy n,là ừ ộ m t ph n n m trong d án GNU(GNU's Not Unix). GTK+ bao ằ ầ ộ ng d a trên ngôn ng C có g m m t c u trúc h ố ượ ộ ấ ồ s linh ho t tuy t v i và có quan h đ i tác v i m t s ngôn ệ ờ ớ ạ ự ng l p trình nh C + +, Objective-C, Perl, Python, TOM, ư Ada95, Free Pascal , Eiffel, vv

H

NG D N CÀI Đ T

ƯỚ

Cài đ t online: -Ta dùng l nh:ệ

sudo apt-get install libgtk3.0-dev

Đ l p trình giao di n v i toolkit GTK thì ta c n thêm: ể ậ ệ ầ ớ

sudo apt-get install gnome-core-devel

ư ệ ữ ầ

Cái này s cài libgtk2.0-dev, libglib2.0-dev..., nh ng th vi n c n thi t cho l p trình GTK. ế

ẽ ậ sudo apt-get install pkg-config

ượ ự

ộ c dùng đ biên d ch các GTK procedures và t ị ị ư ệ ủ

ng d n GTK devhelp . R t h u ích. Cái này s cài tài li u h pkg-config đ ể đ ng xác đ nh v trí c a các th vi n và head file. ị sudo apt-get install devhelp ướ ấ ữ ẽ ệ ẫ

sudo apt-get install libglib2.0-doc libgtk2.0-doc

ẽ ệ ợ

Cái này s cài API reference manuals và các tài li u tr giúp cho gtk / glib.

sudo apt-get install glade libglade2-dev sudo apt-get install glade ế ế ụ ặ t k giao di n d a vào GTK (tên ự ệ ẽ

Cái này s cài đ t công c thi ng trình là Glade). ch ươ

H ng d n vi

ng trình

ướ

ế

ươ

ộ ạ đ n gi n

t và ch y m t vài ch ả

ơ

ươ

• Ch • Chúng ta s vi

ươ

ng trình hi n lên m t c a s ổ

ộ ử

ng trình s 1: ố t m t m t đo n mã đ ch ạ ẽ ế window tên la ThanhHung:

#include int main( int argc, char *argv[]) {

}

GtkWidget *window; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_widget_show(window); gtk_main(); return 0;

Cách biên dich

i th m c ch a file chúng ta v a t o ẫ ớ ư ụ ừ ạ ứ

• Chúng ta dùng lenh cd /d n t • Sau đó dùng câu l nh:ệ

– gcc thanhhung.c -o ThanhHung `pkg-config gtk+-2.0 --cflags

--libs` -I/usr/include/libglade-2.0/ -lglade-2.0

thanh trên cùng c a – thanhhung:là tên file chúng ta t o ra. – ThanhHung:là tên chúng ta mu n hi n ra ệ ạ ố ở ủ

window.

• Ch ng trinh s 2 k th a trên ch ng trình s 1:Ta thêm 2 button ươ ế ừ ố ươ

ế ố ả ẽ ệ

và 1 Label,2 button là nút + và -,label và k t qu s hi n ra trên Label.

#include

gint count = 0; char buf[5];

void increase(GtkWidget *widget, gpointer label){

count++;

sprintf(buf, "%d", count); gtk_label_set_text(label, buf);}

void decrease(GtkWidget *widget, gpointer label){ count--;

sprintf(buf, "%d", count); gtk_label_set_text(label, buf);}

ở ạ

ổ ể ử ạ ị

int main(int argc, char** argv) { GtkWidget *label; GtkWidget *window; GtkWidget *frame; GtkWidget *plus; GtkWidget *minus; /* kh i t o GTK */ gtk_init(&argc, &argv); /* T o c a s hi n th */ 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), "+-");

frame = gtk_fixed_new(); gtk_container_add(GTK_CONTAINER(window), frame);

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); /* khai báo lable lúc đ u = 0 */ label = gtk_label_new("0"); gtk_fixed_put(GTK_FIXED(frame), label, 190, 58);

gtk_widget_show_all(window);

g_signal_connect(window, "destroy", G_CALLBACK (gtk_main_quit), NULL);

g_signal_connect(plus, "clicked", G_CALLBACK(increase), label);

g_signal_connect(minus, "clicked",

G_CALLBACK(decrease), label);

gtk_main();

return 0;}

• Glade Glade g m nhi u nhóm công c xây d ng

ư

ụ ạ

ơ

ướ ị

ồ giao di n nh textbox, nhãn tho i, m c nh p ệ ậ d ng s , h p ch n và th c đ n. B n thi t k ự ế ế ố ộ ả ọ i đ nh d ng XML (có giao di n đ c l u d ượ ư ệ c trên các công c khác). Cài đ t th m đ ặ ụ ể ở ượ Glade cũng r t đ n gi n: ấ ơ 1.sudo apt-get install glade-2 2.sudo apt-get install autoconf automake libglib2.0-dev libc6-dev libgtk2.0-dev

#include #include int main (int argc, char *argv[]) { GladeXML *ui; gtk_init(&argc, &argv); ui = glade_xml_new ("glade_hello.glade",

"main_window", NULL);

glade_xml_signal_autoconnect(ui); gtk_main(); return 0; }

The end

• Cám n các b n và quí th y cô đã quan

ơ tâm theo dõi

Tài li u tham kh o: www.glade.gnome.org www.gtk.org http://

wingtk.sourceforge.net/ishan/starting.html