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-
- A hozzászóláshoz be kell jelentkezni
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-
- A hozzászóláshoz be kell jelentkezni
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....
- A hozzászóláshoz be kell jelentkezni
Nekem a wxWidgets jött be, és nem szórakozok közvetlenül a GTK-val.
- A hozzászóláshoz be kell jelentkezni