|
|
Bu makalenin farkl� dillerde bulundu�u adresler: English Castellano ChineseGB Deutsch Francais Italiano Nederlands Russian Turkce |
�zcan G�NG�R <ozcangungor(at)netscape.net> Yazar hakk�nda: Askerli�imi Linux, Oracle y�neticisi ve web programc�s� olarak yapmaktay�m. ��erik: |
GTK ile GUI Programlama�zet:
Bu makale dizisinde, grafiksel kullan�c� aray�zlerini GTK ile nas�l yazabilece�imizi ��renece�iz. Bu dizinin ne kadar s�rece�ini hakk�nda fikrim yok. Bu dizinin anla��labilmesi i�in C dili hakk�nda a�a��daki konular�n bilinmesi gerekmektedir:
Askeli�imi yapt���m i�in bu makale birazc�k k�sa. |
Bu d��me normal bir d��me olarak g�r�nmektedir ancak iki durumu vard�r: Bas�l� ya da de�il. Bir toggle d��mesi olu�turmak i�in a�a��daki fonksiyon kullan�l�r :
GtkWidget *toggle=gtk_toggle_button_new(void); GtkWidget *toggle=gtk_toggle_button_new_with_label(const gchar *label);
�lk fonksiyon toggle butonunu �zerinde bir yaz� olmadan olu�turur ancak ikincisi, d��meyi �zerinde label yaz�s� ile birlikte olu�turur.
D��menin durumunu a�a��daki fonksiyonla belirleyebilirsiniz:
gtk_toggle_button_set_active (GtkToggleButton *toggle_button, gboolean is_active);
toggle_button, durumunu de�i�tirmek istedi�imiz d��medir ve is_active, durumdur (0 ya da 1). 0 ise bas�l� de�ildir; 1 ise bas�l�d�r.
D��menin durumunu a�a��daki fonksiyonla ��renebiliriz:
gboolean gtk_toggle_button_get_active(GtkToggleButton *button);
"toggled" olay�, bu d��meye eklenebilir:
��te bir �rnek:
#include <gtk/gtk.h> void togg(GtkWidget *widget, gpointer *data){ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data))) g_print("Durum: 1\n"); else g_print("Durum: 0\n"); } int main( int argc,char *argv[] ) { GtkWidget *window; GtkWidget *button; gtk_init (&argc, &argv); /* Bir pencere olu�turur */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "Toggle D��mesi"); /* destroy olay�n� pncereye ekler */ gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC(gtk_main_quit), NULL); /* bir toggle d��mesi olu�turur */ button=gtk_toggle_button_new_with_label("Ben bir toggle d��mesiyim"); /* D��meyi pencereye ekler */ gtk_container_add(GTK_CONTAINER(window),button); /* toggled olay�n� d��meye ekler*/ gtk_signal_connect (GTK_OBJECT (button), "toggled", GTK_SIGNAL_FUNC(togg),(gpointer *)button); gtk_widget_show(button); gtk_widget_show (window); gtk_main (); return(0); }
��aretleme d��mesi ( i�aretleme kutusu olarak da bilinir), toggle d��mesinin bir alts�n�f�d�r. Birka� se�ene�i i�aretlemek i�in kullan�labilir:
GtkWidget* gtk_check_button_new (void); GtkWidget* gtk_check_button_new_with_label (const gchar *label);
A��klamalar toggle d��mesi ile ayn�d�r.
�rnek :
#include <gtk/gtk.h> void togg(GtkWidget *widget, gpointer *data){ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data))) g_print("Durum: 1\n"); else g_print("Durum: 0\n"); } int main( int argc,char *argv[] ) { GtkWidget *window; GtkWidget *button; gtk_init (&argc, &argv); /* Yeni bir pencere olu�turur */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "��aretleme D��mesi"); /* destroy olay�n� pencereye ekler. */ gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC(gtk_main_quit), NULL); /* bir i�aretleme d��mesi olu�turur */ button=gtk_check_button_new_with_label("Ben bir i�aretleme kutusuyum"); /* D��meyi pencereye ekler */ gtk_container_add(GTK_CONTAINER(window),button); /* toggled olay�n� d��meye ekler */ gtk_signal_connect (GTK_OBJECT (button), "toggled", GTK_SIGNAL_FUNC(togg), (gpointer *)button); gtk_widget_show(button); gtk_widget_show (window); gtk_main (); return(0); }
Etikeler, herhangi bir yaz�y� pencerinin herhangi bir yerine yerle�tirmenizi sa�lar.
Bir etiket olu�turmak i�in a�a��daki fonksiyon kullan�l�r:
GtkWidget* gtk_label_new(const gchar *text);
A�a��daki fonksiyon ile
gtk_label_set_text(GtkLabel *label, gchar *text);
bir etiket �zerindeki yaz�y� istedi�niz zaman de�i�tirebilirsiniz.
gtk_label_set_justify(GtkLabel *label, GtkJustification jtype);
gtk_label_set_justify fonksiyonu, etiket �zerindeki yaz�n�n yerle�imini ayarlar. jtype, a�a��daki de�erleri alabilir:
gtk_label_set_line_wrap (GtkLabel *label,gboolean wrap);
fonksiyonu, yaz�n�n yerle�tirilmeis gereken yere s��mad��� zaman b�l�nebilip b�l�nemeyece�ini belirler. wrap, 1 ise yaz� b�l�nebilir; 0 ise b�l�nemez.
gtk_label_get(GtkLabel *label, gchar **str)
fonksiyonu, etiket �zerindeki yaz�y� str de�i�kenine atar.
Ara� a��klamas�, fare bir arac�n �st�ne geldi�inde k���k bir a��klama yaz�s�n�n ��kmas�n� sa�lar. �rne�in, bir d��me i�in a��klama haz�rlars�n�z ve fare, bu d��menin �st�ne geldi�inde "bilgileri g�nder" �eklinde bir a��klama ��kar.
Bunun i�in �nce GtkToolTips olu�turulmal�d�r:
GtkToolTips* gtk_tooltips_new();
Bu a��klama bir araca eklenir:
gtk_tooltips_set_tip(GtkTooltips *tooltips, GtkWidget *widget, const gchar *tip_text,const gchar *tip_private);
K���k bir �rnek:
#include <gtk/gtk.h> int main( int argc,char *argv[] ) { GtkWidget *window; GtkWidget *button; GtkTooltips *tip; gtk_init (&argc, &argv); /* Bir pencere olu�turulur */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "Tooltips"); /* destroy olay� pencereye eklenir */ gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_main_quit), NULL); /* D��me olu�turlur */ button=gtk_button_new_with_label("Ben bir d��meyim"); /* D��me pencereye eklenir */ gtk_container_add(GTK_CONTAINER(window),button); /* a��klama olu�turulur*/ tip=gtk_tooltips_new(); /* bu a��klama bir yaz� ile d��meye eklenir*/ gtk_tooltips_set_tip(tip, button, "Beni T�kla!",NULL); gtk_widget_show(button); gtk_widget_show (window); gtk_main (); return(0); }
Di�er baz� fonksiyonlar:
gtk_tooltips_enable (GtkTooltips *tooltips);
Fare ara� �zerine geldi�inde a��klama ��kmas�n� sa�lar.
gtk_tooltips_disable (GtkTooltips *tooltips);
Fare ara� �zerine geldi�inde a��klama ��kmamas�n� sa�lar.
Herhangi bir araca ait a��klamaya� almak i�in �u fonksiyonu kullan�r�z:
GtkTooltipsData* gtk_tooltips_get_data(GtkWidget *widget);
GtkTooltipsData, a�a��daki �ekilde bir yap�d�r:
struct _GtkTooltipsData { GtkTooltips *tooltips; GtkWidget *widget; gchar *tip_text; gchar *tip_private; GdkFont *font; gint width; GList *row; };A��klaman�n g�r�nmesi i�in ge�en zaman� a�a��daki fonksiyonla de�i�tirebilirsiniz:
gtk_tooltips_set_delay (GtkTooltips *tip, guint delay)
Combo kutusu, t�kland���nda a�a�� do�ru uzayan bir liste i�inde size se�enekler sunan bir kutudur.
A�a��daki fonksiyonla bir combo kutusu olu�turulabilir:
GtkWidget *gtk_combo_new();
GList yap�s�nda se�enekler listesine gereksinim vard�r:
GList *glist=NULL;
�u fonksiyon ile listeye se�enekler eklenir:
GList *g_list_append(GList *list, gchar *option);
Ve bu liste kutuya eklenmelidir:
gtk_combo_set_popdown_strings(GtkCombo *combo, GList *List);
Kutu haz�r. Se�imi �u �ekilde elde edebiliriz :
gchar *gtk_entry_get_text(GtkEntry *entry);
entry bizim durumumuzda GTK_ENTRY(GTK_COMBO(combo)->entry))'dir.
gtk_combo_set_use_arrows(GtkCombo *combo,gint val);
Bu fonksiyon, klavye �zerindeki a�a��/yukar� tu�lar�n�n se�enekleri de�i�tirmesini sa�lar ya da iptal eder. val 0 ise tu�lar i�e yaramaz; 1 ise tu�lar �al���r. Unutmay�n, e�er yazarak girdi�iniz de�er listedeki de�erlerden farkl� ise bu tu�lar hi�bir �ekilde etkin de�ildir.
gtk_combo_set_use_arrows_always(GtkCombo *combo,gint val);
Bu fonksiyon gtk_combo_set_use_arrows ile ayn� i�i yapar ama bir farkla: Yazarak girdi�iniz de�er listedeki de�erden farkl� ise de tu�lar etkindir.
gtk_combo_set_case_sensetive(GtkCombo *combo, gint val);
val 1 ise hergangi bir�ey yazabilirsiniz. 0 ise e�er yazd���n�z de�er listedeki bir de�erle ayn� ise otomatik olarak listedeki de�ere d�n��t�r�l�r.
#include <gtk/gtk.h> void act(GtkWidget *widget, gpointer *data){ g_print((gchar *)data); } int main( int argc,char *argv[] ) { GtkWidget *window; GtkWidget *combo; GtkWidget *button; GtkWidget *box; GList *list=NULL; list=g_list_append(list,"Slackware"); list=g_list_append(list,"RedHat"); list=g_list_append(list,"SuSE"); gtk_init (&argc, &argv); /* Bir pencere olu�turur */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "Combo Kutusu"); /* destroy olay�n� pencereye ekler*/ gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC(gtk_main_quit), NULL); /* yatay bir kutu olu�turur */ box=gtk_hbox_new(1,0); gtk_container_add(GTK_CONTAINER(window),box); /* combo kutusu olu�turur */ combo=gtk_combo_new(); /* listeyi kutuya ekler */ gtk_combo_set_popdown_strings(GTK_COMBO(combo),list); /* a�a��/yukar� tu�lar�n� etkinle�tirir */ gtk_combo_set_use_arrows_always(GTK_COMBO(combo),1); gtk_box_pack_start(GTK_BOX(box), combo,1,1,1); button=gtk_button_new_with_label("De�eri Yaz"); gtk_signal_connect(GTK_OBJECT(button),"clicked",GTK_SIGNAL_FUNC(act), gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(combo)->entry))); gtk_box_pack_start(GTK_BOX(box), button,1,1,1); gtk_widget_show(box); gtk_widget_show(combo); gtk_widget_show(button); gtk_widget_show (window); gtk_main (); return(0); }Her t�rl� �neri ve ele�tirilerinizi g�nderebilirsiniz.
|
G�rsely�re sayfalar�n�n bak�m�, LinuxFocus Edit�rleri taraf�ndan yap�lmaktad�r
© �zcan G�NG�R, FDL LinuxFocus.org |
�eviri bilgisi:
|
2004-03-04, generated by lfparser version 2.43