-
Notifications
You must be signed in to change notification settings - Fork 0
dbsoft/dwib
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Dynamic Windows Interface Builder Initial Design Specification By: Brian Smith Purpose: A graphical tool for creating user interfaces in cross platform applications and managing associated resources. There will be three main components: Creator - Graphical tools for actually designing the user interface. Manager - Graphical tools for managing the generated interface bundles and resources (images). Loader - Shared library for loading the generated interfaces in the application. The Creator will have a toolbar with available controls/widgets/windows, a tree view showing the hierarchy for the currently edited window and a property inspector/editor for the currently selected control. Finally when the interface is designed it will output the window specification in XML. The Manager will automate generation of platform specific make files, resource files, images, icons and anything else required on that platform (manifests on Windows, definition files on OS/2, configure scripts on Unix, Application bundles on Mac). Possibly also launching the build system to generate the application. The Loader is a shared library that will link with the application and programmatically load the XML files generated by the Creator, this is the most simple but arguably most important component. It will use the Dynamic Windows API calls to create the windows and controls based on the XML specification and save the window handles as data on the top-level window finally returning the toplevel window handle to the application. Future Development: In a later iteration I intend to have more code generation functionality to aid in creation of signal handlers with their appropriate prototypes and casting automatically. Third party software: I have decided to use libxml2 to generate and load the XML. The reason for this choice is it is stable software written in C under a liberal MIT license. Additionally it is included on MacOS, almost any Linux and any Unix with Gnome by default. It will likely only need to be included or statically linked on Windows and OS/2. Notes for building libxml2 on Windows, these are the commands I use from the win32 directory: cscript configure.js compiler=msvc prefix=\Work\GitHub\libxml2 include=\Work\GitHub\libxml2\include lib=\Work\GitHub\libxml2\lib iconv=no cruntime=/MT dynruntime=no http=no ftp=no nmake /f makefile.msvc /a nmake /f makefile.msvc install cd ..\lib mkdir %VSCMD_ARG_TGT_ARCH% copy * %VSCMD_ARG_TGT_ARCH% set XML2INCDIR=\Work\GitHub\libxml2\include set XML2LIBDIR=\Work\GitHub\libxml2\lib
About
Dynamic Windows Interface Builder Mirror
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published