gtk2 glade libglade: másnak mi vált be?

gtk2 glade libglade: másnak mi vált be?

Hozzászólások

Üdv!

Arra lennék kiváncsi, kinek milyen módszer vált be GTK-s program fejlesztésére C nyelven ?

Konkrétan hosszú távon hogy érdemes GUI-s programot fejleszteni:

- közvetlenül libGTK függvényeit használva

-glade-el készíteni a felületet és az alap kódgenerálást is a glade-re bízva (glade build)

-vagy glade a felülettervezésre, és libglade az XML dinamikus betöltésére.

Fórumokat nézegetve, sok helyen a Glade build kódját nagyon "rossznak " kiáltották ki. A glade saját definiált függvényeit sem kedvelik sokan -> lookupWidget()

Inkább a glade XML-jének libglade-el feldolgozását favorizálják.

Ez utóbbi módszer nekem is nagyon szimpatikusnak tűnik, de nem vagyok pontosan tisztában azzal, hogy ilyenkor a signal kezelést hogy oldja meg, több modul (külön programfile-ok) esetén. Minden Widget mutatója globális változó?
A signalt és a hozzá kapcsolódó callback függvényt a glade XML -jéből a libglade kihámozza, utána nem értem milyen módon kezeli ezeket (paraméterek, láthatóság, változók érvényességi tartománya, élettartama, stb ).

Vagy a callback kódokat simán manuálisan g_signal_connect() -el hívogassam?

Mivel a tervezett program több "form"-os ,elég nagy darab, a manuális GTK, glib signalkezelő írogatás, deklarálás elég macerásnak mutatkozott, ezért a libglade nagyon jónak tűnik.
Na meg nem kell mindíg ujraforgatni egy kis felület átrajzolgatás esetén!
Csak itt nem értem hogy működik a callback függvények hívogatása,hogy kapják meg a paramétereiket....

Tehát nálam gyakorlottabbak segítségét, ajánlásait szívesen venném.

Minden segíteni szándékozónak előre is köszönet!

-zoli-

Közben találtam egy álláspontot a signalkezelésre vonatkozóan:
http://www.gnome.org/~newren/tutorials/developing-with-gnome/html/re07.html

Eszerint érdemes a libglade használata a glade által készített XML értelmezésére, így lehet felületet módosítani a kód újrafordítása nélkül is.
A signalok lekezelése hatásosabb a sima glib függvényekkel (g_signal_connect)

Illetve, ha nem kell paraméterezni egy-egy signalkezelő fg-t pl: gtk_main_quit(), akkor az is mehet az XML-be a Glade-el deklarálva, és glade_xml_autoconnection()-t használni hozzá.

Egyéb esetben hatásosabb, ha a g_signal_connect() -et használom. igy lehet kedvünk szerint paraméterezni a callback fg-eket.

Egy-egy Widget mutatója kinyerhető az XML-ből a glade_xml_get_widget() -el a Widget nevére hivatkozva.

Igy nincs szükség a Glade által épített kódban a support.c lookupWidget() függvényére, ami paraméterként a keresett widget szülőjét, vagy vele azonos szülővel rendelkező widget mutatóját is igényli, aminek megadása saját fg esetén nehézkes lehet, esetleg globális változók dekralálását is igényelheti.

-zoli-

Ahogy látom jól elbeszélgetek magammal :))

Azon gondlokodom, nem lenne-e több értelme C++ -ban megírni ilyen ablakozós "eseményvezérelt" programokat.

Egyáltalán van-e értelme C-ben küzdeni, nem lenne-e inkább jobb osztályokkal kezelni a widget-ek tulajdonságait, függvényeit. (libglade-mm)

Na meg a kivételkezelés is hasznos lenne....

Nekem a wxWidgets jött be, és nem szórakozok közvetlenül a GTK-val.