Február – Lekérdezés tulajdonságai

Zolnai Tamás, 2013. március 5.

     A múlt hónapban írtam arról, hogy a limit megadására szolgáló eszköztári elem megvalósítása során milyen programozói eszközök és lehetőségek álltak rendelkezésemre, és hogy az adott megoldásnak milyen korlátai és lehetőségei vannak. Miután a módosításokat tartalmazó patch-et beküldetem elbírálásra, felmerültek további lehetőségek és igények a megvalósítással kapcsolatban.
   Néhány kisebb meggondolandó dolog mellett a leginkább kiemelhető igény a nem arab számjegyek használatára volt. Felmerült, hogy lehetővé lehetne-e tenni az olyan számjegyek használatát, melyek például a hindi, a kínai vagy a héber nyelvben találhatóak. A LibreOffice kódbázisában éppenséggel vannak erre szolgáló eszközök, és így sikerült is valamilyen szinten megvalósítani ezt a feladatot. Egy kicsit jobban utána nézve ennek a területnek azonban kiderült, hogy ha sikerül is teljes mértékben megteremteni az ilyen számjegyek használatának lehetőségét, akkor ez a beviteli mező lesz az egyetlen, amely ilyen tulajdonságokkal bír. Éppen ezért ezt az ötletet végül elvetettem. Ugyanakkor a megvalósításhoz kiválasztott osztályok megléte előrevetíti annak lehetőségét, hogy a jövőben ez a lehetőség globálisan elérhetővé váljon a LibreOffice-on belül.
   Egy másik jóval égetőbb igény a későbbi fejleszthetőség szempontjából jobb megvalósítás elérése volt. Felhívták figyelmemet egy olyan osztályra (NumericBox), mely olyan kombinált listát valósít meg, mely számokat vár a felhasználótól és ellenőrzi is, hogy vajon a begépelt szöveg az számként értelmezhető-e vagy sem. Ezen osztály használata egyrészről a későbbiekben elősegíti az olyan általános funkciók bevezetését, mint például a nem arab számok használata a beviteli mezőkben. Másrészről ez az osztály olyan funkciókat is tartalmaz, melyek növelik a felhasználói élményt. Ilyen funkció például a számok három számjegyenkénti elkülönítése a beállított szeparátorral (2,000,000) vagy a felhasználó által elgépelt szöveg automatikus javítása. (123h → 123).
    Tehát néhány változtatás után végül bekerült az új funkció a központi kódbázisba. Általános elvárás azonban minden eszköztári elemmel kapcsolatban, hogy azok elérhetőek legyenek a menürendszerből is. A tervező nézethez tartozó eszköztár összes többi eleme hasonló módon a „Szerkesztés” vagy a „Nézet” menüpontok alatt érhetőek el. Azonban ezek az elemek csak kapcsolóként működnek és így azok két állapotát (aktív/inaktív) a menüsorban közvetlenül jelezni lehet, pipával vagy grafikus effekttel rendszertől függően. Az általam megvalósított elem azonban egy beviteli mező, éppen ezért azt egy ablakban kellett elhelyezni. Mivel azonban a tervező nézetben nincs olyan ablak, mely tartalmilag megfelelne erre a célra, ezért egy új párbeszédablakot készítettem. Ez az ablak a Szerkesztés menüben érhető el, a “Query Properties” (magyar megfelelője valahogy így hangzik majd: „Lekérdezés tulajdonságai”) menüpontot választva jelenik meg. Az itt elért ablak a limit érték beállítása mellett lehetővé teszi a „Különböző értékek” kapcsoló állapotának változtatását is.
  A párbeszédablak megvalósításának három szintje van, melyeket már az eszköztári beviteli mező esetén is említettem. Ebből kettőnek a használat változatlan módon jelenik meg. Ez a kettő a központi vezérlő, mely a belső állapotokat tárolja, illetve az olyan felhasználói események kezelése, mint begépelés, lista megnyitása, szöveg kijelölés stb. A harmadik szintet a felhasználói felületet leíró XML fájlt jelenti. Ezen a téren már megfigyelhető néhány különbség. Az eszköztárak és a menüsorok leírására olyan XML fájlokat használ a rendszer, melyben valójában csak az adott elem azonosítója és az elemek sorrendje van definiálva. Ilyen esetekben ez elég is, hiszen elég kötött az egyes elemek elrendezése. Egy párbeszédablak, illetve bármely más ablak esetén azonban a leíró fájlban definiálni kell az elemek elhelyezkedését, méretét, méretezhetőségét, stb.
     A LibreOffice-ban nemrég került bevezetésére az XML fájlok használata (.ui kiterjesztés) az ablakok leírására. Azelőtt más típusú fájlok (.src\.hrc) segítségével lehetett definiálni a megjelenést. Ugyan én nem nagyon mélyedtem bele a régi típusú tervezés lehetőségeibe, de annyit tudok, hogy azelőtt koordináták alapján, manuálisan lehetett megadni az egyes elemek elhelyezkedését és a méret is statikusan volt megadva. Az új koncepcióban a koordináták teljesen eltűntek és leginkább a weboldalak írásához hasonló módon lehet tervezni, melyben dinamikus méretezési lehetőségek is helyet kapnak. Egyik legnagyobb előnye, hogy a Glade nevű programmal lehetővé válik, hogy a fájlok manuális módosítása helyett grafikus felületen lehessen megtervezni a kinézetet, azonnal látva a változtatások eredményét.
   Elég egyszerű ablakról lévén szó, sikerült megoldanom nagyobb stílustervezői tapasztalat nélkül, köszönhetően azon útmutatóknak, melyek találhatóak ebben a témában. Ezután már csak egyetlen dolog maradt hátra: a párbeszédablakhoz elkészíteni a súgót, melyet többek között szükségessé tesz az ablakhoz tartozó súgó gomb megléte is. Egyúttal a limit tervező nézetben való használatának útmutatóját is elkészítettem és ezzel vált teljessé az új funkció megvalósítása. Éppen ezért a következő hónapban áttérek tevékenységi köröm másik területére, a lokalizációra, mely ugyan láthatóan jól bírta az átállást, de hatékonyság területén még van mit javítani rajta.

A „Lekérdezés tulajdonságai” ablak megvalósításának kódja itt elérhető: https://gerrit.libreoffice.org/#/c/2508/

Címkék: , , ,

Itt lehet hozzászólni !