ğÒÏÇÒÁÍÍÉÒÏ×ÁÎÉÅ çğé Ó ÉÓĞÏÌØÚÏ×ÁÎÉÅÍ GTK - ŞÁÓÔØ 3

ArticleCategory:

SoftwareDevelopment

AuthorImage:

Ozcan Gungor

TranslationInfo:

original in tr Özcan Güngör
en to tr Özcan Güngör
en to ru Yuri Slobodyanyuk

AboutTheAuthor

îÁ ÄÁÎÎÙÊ ÍÏÍÅÎÔ Ñ ÎÁÈÏÖÕÓØ ÎÁ ÁÒÍÅÊÓËÏÊ ÓÌÕÖÂÅ × ËÁŞÅÓÔ×Å ÁÄÍÉÎÉÓÔÒÁÔÏÒÁ Linux É Oracle É ×ÅÂ-ĞÒÏÇÒÁÍÍÉÓÔÁ.

Abstract

÷ ÜÔÏÊ ÓÅÒÉÉ ÓÔÁÔÅÊ ÍÙ ÕÚÎÁÅÍ, ËÁË ÓÏÚÄÁ×ÁÔØ ĞÒÏÇÒÁÍÍÙ ÇÒÁÆÉŞÅÓËÏÇÏ ĞÏÌØÚÏ×ÁÔÅÌØÓËÏÇÏ ÉÎÔÅÒÆÅÊÓÁ (çğé) Ó ĞÏÍÏİØÀ GTK.ñ ÎÅ ÚÎÁÀ, ÎÁÓËÏÌØËÏ ÚÁÔÑÎÅÔÓÑ ÜÔÁ ÓÅÒÉÑ. şÔÏÂÙ ĞÏÎÑÔØ ÜÔÉ ÓÔÁÔØÉ ×ÁÍ ÎÅÏÂÈÏÄÉÍÙ ÓÌÅÄÕÀİÉÅ ÚÎÁÎÉÑ Ï ÑÚÙËÅ ĞÒÏÇÒÁÍÍÉÒÏ×ÁÎÉÑ C:

ÒÅËÏÍÅÎÄÕÀ ĞÒÏŞÉÔÁÔØ ĞÒÅÄÙÄÕİÉÅ ÓÔÁÔØÉ:
ğÒÏÇÒÁÍÉÒÏ×ÁÎÉÅ çğé Ó ÉÓĞÏÌØÚÏ×ÁÎÉÅÍ GTK - ŞÁÓÔØ 1.,
ğÒÏÇÒÁÍÉÒÏ×ÁÎÉÅ çğé Ó ÉÓĞÏÌØÚÏ×ÁÎÉÅÍ GTK - ŞÁÓÔØ 2. .
üÔÁ ÓÔÁÔØÑ ÎÅÍÎÏÇÏ ËÏÒÏŞÅ ÏÓÔÁÌØÎÙÈ ÔÁË ËÁË Á×ÔÏÒ ÓÌÕÖÉÔ × ÁÒÍÉÉ.

ArticleIllustration:

GTK

ArticleBody:

Toggle ËÎÏĞËÁ.

üÔÁ ËÎÏĞËÁ ×ÙÇÌÑÄÉÔ ËÁË ÏÂÙŞÎÁÑ ËÎÏĞËÁ ÎÏ ÉÍÅÅÔ Ä×Á ÓÏÓÔÏÑÎÉÑ: "ÎÁÖÁÔÁ" ÉÌÉ ÎÅÔ. äÌÑ ÓÏÚÄÁÎÉÑ ËÎÏĞËÉ 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 (ÔÁË ÖÅ ÉÚ×ÅÓÔÎÁÑ ËÁË 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);
}

Label (ÍÅÔËÁ)

íÅÔËÉ ĞÏÚ×ÏÌÑÀÔ ÷ÁÍ ÒÁÓĞÏÌÏÖÉÔØ ÌÀÂÏÊ ÔÅËÓÔ × ÌÀÂÏÍ ÍÅÓÔÅ ÏËÎÁ.
äÌÑ ÓÏÚÄÁÎÉÑ ÍÅÔËÉ ÉÓĞÏÌØÚÕÊÔÅ ÓÌÅÄÕÀİÕÀ ÆÕÎËÃÉÀ:

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.

ToolTips (×ÓĞÌÙ×ÁÀİÁÑ ĞÏÄÓËÁÚËÁ)

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

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);
   }
ìÀÂÙÅ ÚÁÍÅŞÁÎÉÑ É ËÏÍÍÅÎÔÁÒÉÉ ĞÒÉÎÉÍÁÀÔÓÑ.