÷ ÜÔÏÊ ÓÅÒÉÉ ÓÔÁÔÅÊ ÍÙ ÕÚÎÁÅÍ, ËÁË ÓÏÚÄÁ×ÁÔØ ĞÒÏÇÒÁÍÍÙ ÇÒÁÆÉŞÅÓËÏÇÏ ĞÏÌØÚÏ×ÁÔÅÌØÓËÏÇÏ ÉÎÔÅÒÆÅÊÓÁ (çğé) Ó ĞÏÍÏİØÀ GTK.ñ ÎÅ ÚÎÁÀ, ÎÁÓËÏÌØËÏ ÚÁÔÑÎÅÔÓÑ ÜÔÁ ÓÅÒÉÑ. şÔÏÂÙ ĞÏÎÑÔØ ÜÔÉ ÓÔÁÔØÉ ×ÁÍ ÎÅÏÂÈÏÄÉÍÙ ÓÌÅÄÕÀİÉÅ ÚÎÁÎÉÑ Ï ÑÚÙËÅ ĞÒÏÇÒÁÍÍÉÒÏ×ÁÎÉÑ C:
üÔÁ ËÎÏĞËÁ ×ÙÇÌÑÄÉÔ ËÁË ÏÂÙŞÎÁÑ ËÎÏĞËÁ ÎÏ ÉÍÅÅÔ Ä×Á ÓÏÓÔÏÑÎÉÑ: "ÎÁÖÁÔÁ" ÉÌÉ ÎÅÔ. äÌÑ ÓÏÚÄÁÎÉÑ ËÎÏĞËÉ toggle ÍÏÖÅÔ ÂÙÔØ ÉÓĞÏÌØÚÏ×ÁÎÁ ÏÄÎÁ ÉÚ ÓÌÅÄÕÀİÉÈ ÆÕÎËÃÉÊ:
GtkWidget *toggle=gtk_toggle_button_new(void); GtkWidget *toggle=gtk_toggle_button_new_with_label(const gchar *label);
ğÅÒ×ÁÑ ÆÕÎËÃÉÑ ÓÏÚÄÁÅÔ toggle ËÎÏĞËÕ ÂÅÚ ÔÅËÓÔÏ×ÏÊ ÍÅÔËÉ × ÔÏ ×ÒÅÍÑ ËÁË
×ÔÏÒÁÑ ÆÕÎËÃÉÑ ÓÏÚÄÁÅÔ ÅÅ ÓÏ ÓÔÒÏËÏÊ ÔÅËÓÔÁ label × ÎÅÊ..
÷Ù ÍÏÖÅÔÅ ÚÁÄÁÔØ ÓÏÓÔÏÑÎÉÅ ËÎÏĞËÉ ÓÌÅÄÕÀİÅÊ ÆÕÎËÃÉÅÊ:
gtk_toggle_button_set_active (GtkToggleButton *toggle_button, gboolean is_active);
ÇÄÅ toggle_button ÜÔÏ ËÎÏĞËÁ ÓÏÓÔÏÑÎÉÅ ËÏÔÏÒÏÊ ÈÏÔÉÔÅ ÉÚÍÅÎÉÔØ É is_active ÖÅÌÁÅÍÏÅ ÓÏÓÔÏÑÎÉÅ (0 ÉÌÉ 1). ëÏÇÄÁ ÏÎÏ 0 - ËÎÏĞËÁ ÎÅ × "ÎÁÖÁÔÏÍ" ÓÏÓÔÏÑÎÉÉ; ËÏÇÄÁ ÖÅ 1 ÔÏ ËÎÏĞËÁ × "ÎÁÖÁÔÏÍ" ÓÏÓÔÏÑÎÉÉ..
şÔÏÂÙ ÕÚÎÁÔØ ÓÏÓÔÏÑÎÉÅ ËÎÏĞËÉ ÉÓĞÌØÚÕÅÔÓÑ ÓÌÅÄÕÀİÁÑ ÆÕÎËÃÉÑ:
gboolean gtk_toggle_button_get_active(GtkToggleButton *button);
óÏÂÙÔÉÅ "toggled" (ÉÚÍÅÎÅÎÉÅ ÓÏÓÔÏÑÎÉÑ) ÍÏÖÅÔ ÂÙÔØ ĞÒÉ×ÑÚÁÎÏ Ë ËÎÏĞËÅ "toggle".
îÉÖÅ ĞÒÉ×ÅÄÅÎ ĞÒÉÍÅÒ:
#include <gtk/gtk.h> void togg(GtkWidget *widget, gpointer *data){ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data))) g_print("State is 1\n"); else g_print("State is 0\n"); } int main( int argc,char *argv[] ) { GtkWidget *window; GtkWidget *button; gtk_init (&argc, &argv); /* Create a new window */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "Toggle Button"); /* Connect destroy event to the window. */ gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC(gtk_main_quit), NULL); /* Creates a toggle button */ button=gtk_toggle_button_new_with_label("I'm a toggle button"); /* Add the button to window */ gtk_container_add(GTK_CONTAINER(window),button); /* Connect "toggled" event to the button */ 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); }
ëÎÏĞËÁ check (ÔÁË ÖÅ ÉÚ×ÅÓÔÎÁÑ ËÁË check box) ÜÔÏ ĞÏÄËÌÁÓÓ ËÎÏĞËÉ toggle.
ïÎÁ ÍÏÖÅÔ ÂÙÔØ
ÉÓĞÌØÚÏ×ÁÎÁ ÄÌÑ ×ÙÂÏÒÁ ËÁËÉÈ-ÌÉÂÏ ×ÁÒÉÁÎÔÏ×.
äÌÑ ÓÏÚÄÁÎÉÑ ËÎÏĞËÉ check ÉÓĞÏÌØÚÕÅÔÓÑ ÓÌÅÄÕÀİÁÑ ÆÕÎËÃÉÑ:
GtkWidget* gtk_check_button_new (void); GtkWidget* gtk_check_button_new_with_label (const gchar *label);
ğÏÑÓÎÅÎÉÑ ÔÕÔ ÔÁËÉÅ ÖÅ ËÁË ÄÌÑ ËÎÏĞËÉ toggle.
ğÒÉÍÅÒ:
#include <gtk/gtk.h> void togg(GtkWidget *widget, gpointer *data){ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data))) g_print("State is 1\n"); else g_print("State is 0\n"); } int main( int argc,char *argv[] ) { GtkWidget *window; GtkWidget *button; gtk_init (&argc, &argv); /* Create a new window */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "Check Button"); /* Connect destroy event to the window. */ gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC(gtk_main_quit), NULL); /* Creates a check button */ button=gtk_check_button_new_with_label("I'm a check button"); /* Add the button to window */ gtk_container_add(GTK_CONTAINER(window),button); /* Connect "toggled" event to the button */ 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); }
íÅÔËÉ ĞÏÚ×ÏÌÑÀÔ ÷ÁÍ ÒÁÓĞÏÌÏÖÉÔØ ÌÀÂÏÊ ÔÅËÓÔ × ÌÀÂÏÍ ÍÅÓÔÅ ÏËÎÁ.
äÌÑ ÓÏÚÄÁÎÉÑ ÍÅÔËÉ ÉÓĞÏÌØÚÕÊÔÅ ÓÌÅÄÕÀİÕÀ ÆÕÎËÃÉÀ:
GtkWidget* gtk_label_new(const gchar *text);
ó ÆÕÎËÃÉÅÊ
gtk_label_set_text(GtkLabel *label, gchar *text);
÷Ù ÍÏÖÅÔÅ ÉÚÍÅÎÉÔØ ÔÅËÓÔ ÎÁ ÍÅÔËÅ × ÌÀÂÏÅ ×ÒÅÍÑ.
gtk_label_set_justify(GtkLabel *label, GtkJustification jtype);
æÕÎËÃÉÑ gtk_label_set_justify ÉÓĞÏÌØÚÕÅÔÓÑ ÄÌÑ ×ÙÒÁ×ÎÉ×ÁÎÉÑ ÔÅËÓÔÁ ÎÁ ÍÅÔËÅ. jtype ÍÏÖÅÔ ÂÙÔØ :
gtk_label_set_line_wrap (GtkLabel *label,gboolean wrap);
ĞÏÚ×ÏÌÑÅÔ ÔÅËÓÔÕ ÂÙÔØ ÒÁÚÂÉÔÙÍ ÎÁ ŞÁÓÔÉ ÄÌÑ ĞÅÒÅÎÏÓÁ ÎÁ ÓÌÅÄÕÀİÕÀ ÓÔÒÏËÕ ÅÓÌÉ ÎÅ ×ÍÅİÁÅÔÓÑ ÎÁ ÏÄÎÏÊ.ëÏÇÄÁ wrap ÒÁ×ÎÏ 1 ÔÅËÓÔ ÂÕÄÅÔ ĞÒÏÄÏÌÖÅÎ ÎÁ ÓÌÅÄÕÀİÕÀ ÓÔÒÏËÕ, × ĞÒÏÔÉ×ÎÏÍ ÓÌÕŞÁÅ ÜÔÏÇÏ ÎÅ ĞÒÏÉÚÏÊÄÅÔ.
gtk_label_get(GtkLabel *label, gchar **str)
ÉÓĞÏÌØÚÕÅÔÓÑ ŞÔÏÂÙ ĞÏÍÅÓÔÉÔØ ÔÅËÓÔ ÍÅÔËÉ × ĞÅÒÅÍÅÎÎÕÀ str.
ToolTip ÜÔÏ ÔÅËÓÔ-ĞÏÄÓËÁÚËÁ ĞÏÑ×ÌÑÀİÉÊÓÑ ËÏÇÄÁ ËÕÒÓÏÒ ÍÙÛËÉ ÎÁÈÏÄÉÔÓÑ ÎÁÄ ÏÂßÅËÔÏÍ.îÁĞÒÉÍÅÒ ÷Ù ÍÏÖÅÔÅ ÚÁÄÁÔØ ÔÅËÓÔ-ĞÏÄÓËÁÚËÕ "ĞÏÓÌÁÔØ ÉÎÆÏÒÍÁÃÉÀ" ÄÌÑ ËÎÏĞËÉ É ÜÔÏÔ ÔÅËÓÔ ĞÏÑ×ÉÔÓÑ ËÏÇÄÁ ÍÙÛËÁ ÎÁÄ ÎÅÊ.
şÔÏÂÙ ÜÔÏ ÓÄÅÌÁÔØ ÓÎÁŞÁÌÁ ÎÕÖÎÏ ÓÏÚÄÁÔØ ÏÂßÅËÔ GtkToolTips:
GtkToolTips* gtk_tooltips_new();
É ÔÅĞÅÒØ ÄÌÑ ĞÒÉ×ÑÚËÉ ÔÅËÓÔÁ-ĞÏÄÓËÁÚËÉ:
gtk_tooltips_set_tip(GtkTooltips *tooltips, GtkWidget *widget, const gchar *tip_text,const gchar *tip_private);
îÅÂÏÌØÛÏÊ ĞÒÉÍÅÒ:
#include <gtk/gtk.h> int main( int argc,char *argv[] ) { GtkWidget *window; GtkWidget *button; GtkTooltips *tip; gtk_init (&argc, &argv); /* Create a new window */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "Tooltips"); /* Connect destroy event to the window. */ gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_main_quit), NULL); /* Creates a button */ button=gtk_button_new_with_label("I'm a Button"); /* Add the button to window */ gtk_container_add(GTK_CONTAINER(window),button); /* Creates a tooltips*/ tip=gtk_tooltips_new(); /* Attache this tooltips to button with text*/ gtk_tooltips_set_tip(tip, button, "Click me!",NULL); gtk_widget_show(button); gtk_widget_show (window); gtk_main (); return(0); }
åİÅ ÎÅÓËÏÌØËÏ ÆÕÎËÃÉÊ:
gtk_tooltips_enable (GtkTooltips *tooltips);
áËÔÉ×ÉÒÕÅÔ ÔÅËÓÔ-ĞÏÄÓËÁÚËÕ.
gtk_tooltips_disable (GtkTooltips *tooltips);
äÅÁËÔÉ×ÉÒÕÅÔ ÔÅËÓÔ-ĞÏÄÓËÁÚËÕ.
şÔÏÂÙ ĞÏÌÕŞÉÔØ ÌÀÂÕÀ ÉÎÆÏÒÍÁÃÉÀ ËÁÓÁÀİÕÀÓÑ ÔÅËÓÔ-ĞÏÄÓËÁÚËÏË ÏÂßÅËÔÁ.
GtkTooltipsData* gtk_tooltips_get_data(GtkWidget *widget);
GtkTooltipsData ÜÔÏ ÓÔÒÕËÔÕÒÁ ÓÌÅÄÕÀİÅÇÏ ×ÉÄÁ:
struct _GtkTooltipsData { GtkTooltips *tooltips; GtkWidget *widget; gchar *tip_text; gchar *tip_private; GdkFont *font; gint width; GList *row; };şÔÏÂÙ ÏĞÒÅÄÅÌÉÔØ ×ÒÅÍÑ ĞÏÑ×ÌÅÎÉÑ ÔÅËÓÔ-ĞÏÄÓËÁÚËÉ:
gtk_tooltips_set_delay (GtkTooltips *tip, guint delay)
Combo Box ÜÔÏ ÏÂßÅËÔ-ÏËÎÏ ÏÂßÅÄÉÎÅÎÎÙÊ Ó ×ÙĞÁÄÁÀİÉÍ ÓĞÉÓËÏÍ × ËÏÔÏÒÏÍ ÍÏÖÎÏ ÒÅÄÁËÔÉÒÏ×ÁÔØ ÔÅËÓÔ.
ïÎ ÍÏÖÅÔ ÂÙÔØ ÓÏÚÄÁÎ Ó ĞÏÍÏİØÀ:
GtkWidget *gtk_combo_new();
É ÎÁÍ ÎÕÖÅÎ ÓĞÉÓÏË ×ÏÚÍÏÖÎÙÈ ×ÁÒÉÁÎÔÏ× ÚÁÄÁ×ÁÅÍÙÊ Ó ĞÏÍÏİØÀ ÓÔÒÕËÔÕÒÙ GList:
GList *glist=NULL;
ÓÁÍÉ ×ÏÚÍÏÖÎÙÅ ×ÁÒÉÎÔÙ ÄÌÑ ×ÙÂÏÒÁ ×ÎÏÓÑÔÓÑ × ÓĞÉÓÏË ÔÁË:
GList *g_list_append(GList *list, gchar *option);
äÁÌÅÅ ÓÏÚÄÁÎÎÙÊ ÓĞÉÓÏË ÄÏÌÖÅÎ ÂÙÔØ ÄÏÂÁ×ÌÅÎ × Combo Box:
gtk_combo_set_popdown_strings(GtkCombo *combo, GList *List);
ôÅĞÅÒØ Combo Box ÇÏÔÏ×.ğÒÏŞÉÔÁÔØ ×ÙÂÒÁÎÎÙÊ ×ÁÒÉÁÎÔ ÍÏÖÎÏ ÉÓĞÏÌØÚÕÑ:
gchar *gtk_entry_get_text(GtkEntry *entry);
entry ÜÔÏ GTK_ENTRY(GTK_COMBO(combo)->entry)) × ÜÔÏÍ ÓÌÕŞÁÅ.
gtk_combo_set_use_arrows(GtkCombo *combo,gint val);
üÔÁ ÆÕÎËÃÉÑ ÉÓĞÏÌØÚÕÅÔÓÑ ŞÔÏÂÙ ÁËÔÉ×ÉÒÏ×ÁÔØ\ÄÅÁËÔÉ×ÉÒÏ×ÁÔØ ËÌÁ×ÉÛÉ ××ÅÒÈ\×ÎÉÚ ÎÁ ËÌÁ×ÉÁÔÕÒÅ ÉÓĞÏÌØÚÕÅÍÙÅ ÄÌÑ ÉÚÍÅÎÅÎÉÑ ÚÎÁŞÅÎÉÑ × Combo Box. ëÏÇÄÁ val ÒÁ×ÎÏ 0 ÜÔÉ ËÌÁ×ÉÛÉ ÎÅ ÆÕÎËÃÉÏÎÉÒÕÀÔ É ÎÁÏÂÏÒÏÔ × ĞÒÏÔÉ×ÏĞÏÌÏÖÎÏÍ ÓÌÕŞÁÅ. îÏ ËÏÇÄÁ ÚÎÁŞÅÎÉÅ × Combo Box ÏÔÌÉŞÎÏ ÏÔ ÚÎÁŞÅÎÉÊ ÎÁÈÏÄÑİÉÈÓÑ × ÓĞÉÓËÅ ÜÔÉ ËÌÁ×ÉÛÉ ÎÅ ÆÕÎËÃÉÏÎÉÒÕÀÔ..
gtk_combo_set_use_arrows_always(GtkCombo *combo,gint val);
üÔÁ ÆÕÎËÃÉÑ ÁÎÁÌÏÇÉŞÎÁ gtk_combo_set_use_arrows ÎÏ ËÏÇÄÁ ÚÎÁŞÅÎÉÅ × Combo Box ÏÔÌÉŞÎÏ ÏÔ ÚÎÁŞÅÎÉÊ ÎÁÈÏÄÑİÉÈÓÑ × ÓĞÉÓËÅ ÜÔÉ ËÌÁ×ÉÛÉ ÆÕÎËÃÉÏÎÉÒÕÀÔ..
gtk_combo_set_value_in_list(GtkCombo *combo, gboolean val, gboolean ok_if_empty);
ëÏÇÄÁ val ÒÁ×ÎÏ 1 ÷Ù ÍÏÖÅÔÅ ××ÅÓÔÉ ÚÎÁŞÅÎÉÅ ÉÚ ÓĞÉÓËÁ.ëÏÇÄÁ ok_if_empty ÒÁ×ÎÏ 1 ÚÎÁŞÅÎÉÅ ÍÏÖÅÔ ÂÙÔØ ĞÕÓÔÙÍ (ÏÔÓÕÔÓÔ×Ï×ÁÔØ). .
#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); /* Create a new window */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "Combo Box"); /* Connect destroy event to the window. */ gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC(gtk_main_quit), NULL); /* Create a new horizontal box */ box=gtk_hbox_new(1,0); gtk_container_add(GTK_CONTAINER(window),box); /* Creates a combo box */ combo=gtk_combo_new(); /* Sets the list */ gtk_combo_set_popdown_strings(GTK_COMBO(combo),list); /* Enables up/down keys change the value. */ 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("Write it"); 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); }ìÀÂÙÅ ÚÁÍÅŞÁÎÉÑ É ËÏÍÍÅÎÔÁÒÉÉ ĞÒÉÎÉÍÁÀÔÓÑ.