wxWindows Dialog Editor

Title wxWindows Dialog Editor
Author Jindřich Houska
Date 27.10.1998
Reference houska@kolej.mff.cuni.cz
File (none)
Project KTTV, LeNoLin, Linoleum, Mighty Point, Powerless Point
Version 2

WxWindows Dialog Editor

 

Tento program, jak už napovídá název je editor dialogů pro wxWindows. V programu lze celkem jednoduchým způsobem (WYSIWYG) vytvářet projekty obsahující více dialogových oken. Program se ovládá především myší pomocí panelu s ikonami a menu. Vytvořené dialogy se na disk ukládájí ve formátu wxr, což je formát resourců ve wxWindows.

Objekty v dialogových oknech se vytvářejí kliknutím na příslušnou ikonu v toolbaru a poté kliknutím na místo v dialogu, kam se má objekt umístit. Umístěný objekt je možné uchopením myší přesouvat, po označení skupiny více objektu se dá přesouvat celá skupina. Ve skupině také program umožňuje různé způsoby vertikálního a horizontálního zarovnávání. U každého objektu lze editovat jeho vlastnosti, jako je třeba poloha, šířka a výška a další dále uvedené vlastnosti.

Objekty, se kterými editor pracuje:

A na závěr bych ještě shrnul kladné a záporné vlastnosti programu:

Takže nejprve ty kladné – program má jednoduché ovládání, dialogová okna se vytvářejí velice rychle. Má docela dobře zpracovanou dokumentaci ve formě klasické nápovědy ve Windows. Na druhou stranu zde toho na dokumentování moc není.

A teď ty záporné – v programu lze editovat jenom dialogová okna, různá menu asi programátor musí napsat ručně do zdrojového kódu. V dialogových oknech navíc neumožňuje vše, co umožňují wxWindows, například několik panelů s objekty v jednom okně. Tento dialog editor existuje pouze pod Windows, takže pokud s ním bude někdo pracovat, bude asi muset občas rebootovat počítač. Potom program obsahuje některé chyby, kdy například objekt RadioButtons nereaguje na změnu seřazení jeho tlačítek z vertikálního na horizontální, ale řídí se pouze zadaným počtem sloupců. K určení tab-order u jednotlivých objektů se mi podařilo zjistit pouze toto: program obsahuje dvě tlačítka v tool-baru, kterými je možné přesunout objekt v okně na popředí nebo na pozadí. Ve výsledném wxr souboru se však tímto způsobem nic nezmění.

 

Propojení DE s wxWindows:

Data jsou v souboru .wxr uložena jako deklarace statického řetězce v jazyce C. Například definice dialogu Muj_dialog vypadá následovně:

static char *Muj_dialog = "dialog(name = 'Muj_dialog'\

style = ' ...

… ”;

Tím pádem je možné vložit celý wxr soubor do zdrojového textu. Pro zpracování tohoto řetězce je zapotřebí zavolat funkci wxResourceParseData, která parsuje vstupní řetězec.

V některých překladačích pro Windows (podle komentářů ve zdrojákách) není možné vložit wxr soubor s dlouhým řetězcem do zdrojového textu a je zapotřebí vytvořit standartní resource soubor Windows (.rc) s textem "mujResource TEXT soubor.wxr". V programu se potom podobně jako v prvním případě zpracuje příkazy wxLoadUserResource a wxResourceParseString.

Pro vytvoření dialogového okna z resourců je potřeba nejprve vyvořit dialog pomocí deafult konstruktoru a potom zavolat jeho metodu LoadFromResource s rodičem (vlastníkem) objektu a názvem dialogu daném wxr souborem. Stejně tak lze vytvořit například menu, které sice Dialog Editor neumožňuje sestavit, ale v resourcech wxWindows je podporováno. Pro změnu atributů jednotlivých objektů v dialogu vytvořeném v Dialog Editoru existuje funkce wxFindWindowByName, která podle názvu objektu vrátí ukazatel na něj. Tímto způsobem lze pouze volat metody objektu, popřípadě měnit některé proměnné objektu. Není však možné předefinovat jeho metody (a tím pádem například odchytávat některé další události nebo případně měnit chování okna on-line v závislosti na uživatelem zadaných datech), protože se instance těchto objektů vytvářejí ze základních tříd wxWindows (a je to natvrdo zapsané do zdrojáků). Z toho vyplývá, že se tyto resourci a Dialog Editor hodí na vytváření spíše jednodušších oken, kdy si ušetříme námahu s vypočítáváním jednotlivých souřadnic a ručním konstruováním objektů v okně.