Portál AbcLinuxu, 29. října 2025 15:49
Stále mě ještě nepřestalo bavit pracovat na Toolkitu. Dnes jsem se definitivně rozhodl, že nebude defaultně vytvořená statická knihovna, ale jen dynamická. Velikost knihovny je zatím 276 kB (překládáno s parametrem -fPIC). Defaultně jí nebudu stripovat, ale bude možné to udělat příkazem make strip. Po stripnutí má nějakých 70 kB. configure skriptu bude možné předat parametr --enable-static. To bude mít za následek i vytvoření statické knihovny.
Tak a teď k tomu stavu Toolkitu. Mám zatím dokončenu implementaci jen těchto widgetů:
Dále jsou dokončeny třídy AnsiString, WideString a UnicodeString s možností konverze mezi jednotlivými znakovými sadami nebo kódováními, třídy pro čtení a zápis souborů (File, InputFile, OutputFile) a nakonec třídy Array a Application.
Následuje zdrojový kód (pro ukázku), který je již opravdu přeložitelný (ten posledně byl jen návrh). Nejsou v něm ukázány všechny dosavadně implementované možnosti Toolkitu, spíš takové minimum. Je to prostě jen ukázka.
#include <Toolkit/Application.h>
#include <Toolkit/Window.h>
#include <Toolkit/Label.h>
Toolkit::Application *app;
class MainWindow: public Toolkit::Window{
public:
MainWindow()
{
setTitle( app->getName() );
setDefaultSize( 500, 480 );
new Toolkit::Label( L"Hello world!\nHlavní okno", this );
}
~MainWindow()
{
app->quit(0);
}
};
class ChildWindow: public Toolkit::Window{
public:
ChildWindow()
{
setDefaultSize( 400, 250 );
setTitle( L"Modální dialog" );
new Toolkit::Label( L"Hello world!\nModální okno", this );
}
~ChildWindow()
{
}
};
MainWindow *mainWindow;
ChildWindow *childWindow;
int main( int argc, char **argv )
{
app = new Toolkit::Application( &argc, &argv );
app->init( L"JXP Commander" );
mainWindow = new MainWindow;
mainWindow->showAll();
childWindow = new ChildWindow;
childWindow->setTransientFor(mainWindow);
childWindow->setSkipTaskbarHint(true);
childWindow->setModal(true);
childWindow->showAll();
return app->run();
}
Update: Jedna výborná zpráva - glib obsahuje konverzní funkce pro řetězce používající iconv. Licence tedy zůstává BSD.
Tiskni
Sdílej:
Mohla by vzniknout nová vrstva mezi programem a X serverem. Jakýsi správce GUI, který by zobrazoval palety s nástroji zadokované v pevných docích na okraji displeje (nikoliv okna, ani jako samostatné okno) a menu by mohlo být jako je už dlouho na Macu. Jen by to šlo daleko dál.
Prakticky by mohl přestat existovat současný desktop s okny. Myšlenka zachycená Ionem by se mohla dál rozvinout,... pak by uživatel přepnul téma a koukal by na desktop ve stylu Windows 3.1, žádné panely, jen okna...
Tohle by ale neznamenalo konec toolkitu jako takového, ten by byl použit na vykreslování tlačítek, menu,... prostě to co dělá teď, jen by ho nepoužíval program, ale nějaký ten správce GUI.
Pak je ještě problém se zobrazením onoho dokumentu. To může být prakticky cokoliv, nemyslím tím jen kus textu či obrázek, ale třeba i hru, mail klient, terminál, prostě cokoliv. Jak tohle zapasovat do tak obecného návrhu je trošku problém. Viděl bych to tak, že by se program prostě staral o ten jeden widget. Ale jen o ten.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.