ďťż

Blog literacki, portal erotyczny - seks i humor nie z tej ziemi


 











































Strefa Linuksa



















Strona główna  | 
Spis treści  | 
O autorze  | 
Księga gości  | 
Sonda  | 
Forum  | 
Reklama  | 
Kontakt  | 
Linki   | 





















GTK+ - to biblioteka graficznych elementów interfejsu użytkownika,
stworzona pierwotnie dla GIMP'a (GIMP ToolKit). Pozwala na łatwe budowanie
skomplikowanych interfejsów użytkownika. Cechuje ją obiektowa budowa -
elementy są obiektami ze skomplikowanymi zależnościami dziedziczenia.
Biblioteka niestety nie jest napisana w C++ - istnieje jednak dla niej wrapper
GTK-- i GNOME--. Jest też wrapper dla Pythona i PERLa.
GTK+ jest biblioteką bazującą na pojemnikach (GtkContainer). Oznacza to,
że nie podajesz, w jakim miejscu znajduje się element, tylko w jakim znajduje
się pojemniku. Na przykład przycisk z podpisem jest przyciskiem, w którym
umieściliśmy podpis. Chcąc umieścić więcej elementów w przycisku, np.
ikonę, musisz dodać pojemnik, który może mieć więcej niż jeden element w
sobie, np. pionowe pudełko (GtkVBox), które zawiera wiele elementów w
pionowym rzędzie.
Wszystkie elementy GTK+ pochodzą od GtkObject. Nie jest to zbyt użyteczna
klasa - stanowi najwyższy poziom abstrakcji. Z niej wywodzi się klasa
GtkWidget - podstawowa klasa GTK+, definiująca wszystko, co niezbędne każdemu
elementowi interfejsu użytkownika, ale wciąż niezwykle abstrakcyjna. Od niej
pochodzą wszystkie "widgety", niektóre bezpośrednio, a niektóre pośrednio
przez kolejne poziomy abstrakcji. Najważniejszym jest GtkContainer, definiujący
zachowanie elementów mogących zawierać w sobie inne elementy. Od GtkContainer
wywodzą się GtkBin - pojemnik z jednym elementem, GtkBox - "pudełka"
na wiele elementów ułożonych w jednej linii, i GtkTable - tabela, w której
można umieszczać inne elementy.
Między klasami GTK+ można przechodzić używając mechanizmu castingu C -
np. chcąc uzyskać obiekt GtkWidget z obiektu GtkWindow, napiszemy: (GtkWidget
*)okno. To działa, lecz jest mało bezpieczne. GTK+ udostępnia mechanizmy
kontrolne dla przechodzenia między klasami. Wykorzystując te mechanizmy
napiszemy: GTK_WIDGET(okno). Prawda, że proste?
Żeby skompilować program pod GTK+ i GNOME, należy skorystać ze skryptu
gnome-config. Kompilację należy przeprowadzić z parametrem `gnome-config
--cflags gnome gnomeui`, a linking z `gnome-config --libs gnome gnomeui`.
Tworzenie makefile'a zostawiam Waszej inwencji.
Oto przykładowy program GNOME, żywcem zaczerpnięty z dokumentacji. Nie chcę
się tu rozpisywać, ale analiza będzie chyba prosta...


#include <gnome.h>

void
hello (GtkWidget *widget, gpointer data)
{
g_print ("Witaj świecie!\n");
}

gint
delete_event(GtkWidget *widget, GdkEvent *event, gpointer data)
{
gtk_main_quit (); // to spowoduje wyjście z pętli GTK+
return (FALSE); // zwrócenie FALSE spowoduje zamknięcie okna
}

int
main(int argc, char *argv[])
{
GtkWidget *app;
GtkWidget *button;
// Inicjalizacja GNOME
gnome_init ("buttons-basic-example", "0.1", argc, argv);
// stworzenie elementu GnomeApp - potomka GtkWindow
app = gnome_app_new ("buttons-basic-example", "Prosta aplikacja
GNOME");
// to spowoduje, że z zamknięciem okna uruchomiona zostanie funkcja
// delete_event
gtk_signal_connect (GTK_OBJECT (app), "delete_event", GTK_SIGNAL_FUNC
(delete_event), NULL);
// Tworzy przycisk z podpisem "Witaj świecie!"
button = gtk_button_new_with_label ("Witaj świecie!");
// kiedy przycisk będzie kliknięty, uruchomiona zostanie funkcja hello
gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC
(hello), NULL);
// to umieszcza przycisk button w pojemniku window
// (okno programu)
gtk_container_add (GTK_CONTAINER (window), button);
// wyświetla wszystkie elementy w oknie i same okno
gtk_widget_show_all(app);
// uruchamia główną pętlę GTK+
gtk_main ();
return 0;
}






















Strona testowana z Mozillą 0.9.1, Konquerorem, Lynxem, Linksem oraz IE 5.5.




































w górę


















Copyright © 2000-2001 Marek Materzok  Wszelkie Prawa Zastrzeżone.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • qualintaka.pev.pl
  •