Sanal Kütüphane » Linux » GTK ile Programlama - 2. bölüm

GTK Nedir?, Derleme Nasıl yapılır?, Sinyaller ve Olaylar...

Yazar: Özcan Güngör
Gönderen: mkavici
Tarih: 09:40 14-12-2004
Derece:
Yorumlar: (0)
Sinyaller ve Olaylar

GTK programlarına fare veya klavye ile müdahalede (klavyeden bilgi girmek veya bir düğmeye tıklamak gibi) bulunmak gerecektir.Bunun için GTK kütüphanesinde şu fonksiyon kullanılır:
Kod:
guint gtk_signal_connect_object(GtkObject *object,const gchar *name,GtkSignalFu nc func,GtkObject *slot_object);

object, sinyali dinelenecek bileşendir.Örneğin bir düğme bileşine tıklandığını anlamak için object, düğme olacaktır. name , olayın ismidir ve şu değerleri alabilir:

* event
* button_press_event
* button_release_event
* motion_notify_event
* delete_event
* destroy_event
* expose_event
* key_press_event
* key_release_event
* enter_notify_event
* leave_notify_event
* configure_event
* focus_in_event
* focus_out_event
* map_event
* unmap_event
* property_notify_event
* selection_clear_event
* selection_request_event
* selection_notify_event
* proximity_in_event
* proximity_out_event
* drag_begin_event
* drag_request_event
* drag_end_event
* drop_enter_event
* drop_leave_event
* drop_data_available_event
* other_event

func olay gerçekleştiğinde çağırılacak fonksiyonun ismidir.Şimdi bir örnek verelim:

Kod:
#include <gtk/gtk.h>

void close( GtkWidget *widget,gpointer *data)
{
    gtk_main_quit();
}

int main( int   argc,char *argv[] )
{
    GtkWidget *window;

    gtk_init (&argc, &argv);

    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_signal_connect (GTK_OBJECT (window), "destroy",
                        GTK_SIGNAL_FUNC (close), NULL);
    gtk_widget_show  (window);

    gtk_main ();

    return(0);
}

The function
Kod:
gtk_signal_connect (GTK_OBJECT (window), "destroy",GTK_SIGNAL_FUNC (close), NULL)

komutu, pencerenin kapatılması sırasında çalışacak ve kapat fonksiyonunu çağıracaktır.Kapat fonksiyonu ise gtk_main_quit() fonksiyonunu çağırarak gtk_main() fonksiyonunun sona ermesini sağlar.Böylece pencere kapatıldığında programımız da sona erer.

Bu konuyla ilgili ayrıntılar daha ileriki bölümlerde anlatılacaktır.

Normal Düğmeler

Düğmler, genelde basıldığında bir işlem gerçekleştirmek için kullanılan bileşenlerdir.İster web sayfaları olsun ister grafik arayüzleri olsun, düğmelerin amaçları budur.GTK kütüphanesinde normal düğmeler iki şekilde oluşturulur:

1. GtkWidget* gtk_button_new (void);
2. GtkWidget* gtk_button_new_with_label (const gchar *label);

Birinci fonksiyon, isimsiz, boş bir düğme oluşturur.İkincisi ise üzerinde label yazan bir düğme oluşturur.

Burada yeni bir fonksiyon kullanacağız:

Kod:
void gtk_container_add(GtkContainer *container,GtkWidget *widget)


Bu fonksiyon ile bir bileşeni bir pencereye(daha genek olarak taşıyıcılar) ekleme işlemi yapılır.Bu örnekte taşıyıcı, window ve bileşen düğmedir.İleride başka taşıyıcılar da göreceğiz.

Düğmelerde en önemli şey, düğmeye basılmasıdır.Bunu anlamak için yine gtk_signal_connect fonksiyonunu kullanacağız ve bir fonksiyon çağıracağız.Bu fonksiyon içinde ne yapılacağını belirleyeceğiz.

Kod:
#include <gtk/gtk.h>

void close( GtkWidget *widget,gpointer *data)
{
    gtk_main_quit();
}

void clicked(GtkWidget *widget,gpointer *data)
{
        g_print("Button Clickedn");
}
int main( int   argc,char *argv[] )
{
    GtkWidget *window,*button;

    gtk_init (&argc, &argv);

    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_signal_connect (GTK_OBJECT (window), "destroy",
                        GTK_SIGNAL_FUNC (close), NULL);

    button=gtk_button_new_with_label("Button");
    gtk_container_add(GTK_CONTAINER(window),button);
    gtk_signal_connect(GTK_OBJECT(button),"clicked",
                       GTK_SIGNAL_FUNC(clicked),NULL);
    gtk_widget_show(button);

    gtk_widget_show(window);

    gtk_main ();

    return(0);
}


Henüz yorum yapılmamış