GtkSharp
A napokban volt szerencsém Gtk alkalmazást fejleszteni MonoDevelop segítségével. Kezdetben nagyon tetszett a dolog, a Label és Button widgetek kezelése zseniális. Tetszik az ablak méretével változó widget szélesség is. A MonoDevelop beépített Glade szerű GUI szerkesztője egész jól használható.
Semmiképpen sem szerettem volna zárt forrású fejlesztőeszközt használni. Még akkor sem, ha itt van a polcon egy Borland C++ Builder 6-os licensz. Nem, nem azért nem használtam, mert régi. Egyszerűen open source fanatikusként nem akartam használni. Pedig annak idején nagyon sokat fejlesztettem benne, igen komoly szoftvereket is. Ehhez képest a MonoDevelop eléggé bugos és kényelmetlen, de nem ezért bántam meg a választásomat.
Kezdjük először is a nyelvi beállítások körüli problémáknál. Elindítom a programot, az rc.conf szerint LANG=hu_HU. Ez rendben is van, a MonoDevelop szépen le van fordítva magyar nyelvre, látszólag minden működik. létrehozom a GtkSharp alkalmazásomat, a főablakra rádobálom a widgeteket (tisztára mint Borland C++ Builderen), majd rájövök, hogy kellene egy olyan widget, ami grafikonokat jelenít meg, de úgy, hogy a grafikon oszlopai fölé húzva az egeret, megjelenjen azok értéke egy tooltipben vagy valahol a program ablakában. A neten kutatva nem találok erre gyors megoldást, illetve amit találok, az túl robosztus az én elképzeléseimnek. Sebaj, leprogramozom.
Melyik widgetből származtassam a saját widgetemet? Gtk.DrawingArea jó lesz nekem. Létrehoznám a widgetet a MonoDevelop beépített felületén, erre kidob egy exceptionnel. Sokat molyoltam vele, hogy miért, aztán elindítottam így a programot és megjavult:
LANG=C monodevelop
Hoppá. Eltűnt fent az eszköztár, újra engedélyeznem kell a menüből az eszköztár elemeit. Semmi baj, megcsinálom. Létrehoztam a kellő widgetet, létrejött az új Project, benne a Gtk.DrawingArea leszármazott osztállyal, ahogy kell. Gondoltam, visszaváltok magyarra. Ismét eltűnik az eszköztár. Nem probléma, ez a szép a nyílt forrásban. Meglepő módon a widgetek az IDE jobb szélén kétszer szerepelnek. Egy magyar és egy angol névvel. A saját widgetem nem, azt még nem fordítottam le.
Használnom kellett a TreeView osztályt is. Amint ezt rátettem az alkalmazásomra, komoly keresgélésbe kelett kezdenem, mivel a Gtk dokumentációja enyhén szólva is hiányos. Értem ez alatt, hogy egy apró összefoglalón kívül, melyből megtudom, hogy “To be added”, tehát megírandó, nincs róla semmi. Levelezőlisták archívumában és különböző fórumok hozászólásain keresztül pedig igen nehéz megtanulni a dolgot. Azért sikerült, de ez iszonyú kényelmetlen dolog. Ehelyett ránéztem kíváncsiságból a Qt-ra, meglepően jól dokumentált és nem utolsó sorban jóval könyebben tanulható, egyszerűbb, logikusabb a felépítése. Ez ugyan szubjektív, de szerintem jóval szebb is. Legközelebb mindenképpen ezt használom.
Talán hasznosnak találod a létrehozott widgetemet, MIT licensz alá helyeztem:
http://wiki.eperpalanta.hu/projects:chartwidgetlibrary:start
Comments