Table of Contents
About | News | Mde's GUI | Features | Ideas | Platforms | Building | Utility Programs | Forum | Trac Wiki Help |
Features
This page lists current features and plans regarding further features. These are not put in a roadmap because I prefer to code however seems best at the time.
Current features
- Graphical User Interface
- Immediate mode: GUI can be redesigned without recompiling any code, currently only by editing config files
- No need to specify any dimensions: Widgets stretch to fit their contents and many are resizable
- Flexible and generic content system for connecting the gui to the program.
- Widgets:
- Grid layout widget - puts sub-widgets in a grid, aligning and "sizing" them.
- Content list widget - horizontal or vertical list of widgets each created with a member of a content list; e.g. this allows the dynamically generated options list.
- Floating area widget - each sub-widget is a optionally movable and resizable "window" in the parent's area
- Switch widget - like classic tab widgets, but the tab buttons aren't built in (it's connected to a "content" which can be adjusted by widgets anywhere in the gui or program).
- Content editing widgets - text-box or a check-box widget, functions to automatically pick an appropriate widget
- Buttons - use an "event content" to connect to the program
- Pop-up widget - can be used to create a popup menu (in-fact the pop-up can contain any widgets).
- File IO library (named mergetag)
- Data stored in tags within each section, designed to be
- a compromise between flexibility and ease of use
- allow easy merging where content is stored in multiple files
- Designed goals:
- Flexibility in using the library
- Speed
- Easy merging of options stored in multiple files
- Data can be received via callbacks or via containing classes, and output in similar ways.
- Data stored in tags within each section, designed to be
- Initialisation/cleanup system
- Configurable input system
- Extensible, for example (not currently implemented, but framework exists):
- Timed buttons (i.e. click or hold)
- Button sequences
- Modifiers (using a flexible-but-low-level approach)
- Extensible, for example (not currently implemented, but framework exists):
- String translation module
- Translate an identifier using a string from data files
- Each locale can include dependency locales to avoid redefining identical symbols
- Falls back on supplied identifier if no translated string is available
- Options module
- Eases loading and saving of configuration variables
- Variables are declared on the stack for maximal reading speeds
- Allows generic handling for all variables; e.g. generic GUI options screen
- Locally changed options tracking
- Requires using a function call to set options
- Options set during run are merged with options stored under the user path and saved on exit
- Remaining options are loaded from system/install config files
- Paths module
- Defines OS-specific paths
- Allows multiple paths to be transparently accessed as one directory (using mergetag package)
- Static data dir and preconfigured configuration dir
- User-specific dirs with modified data and config files
- All paths merged together upon loading
- Basic 2D graphics
- Temporary functions to draw boxes, etc. for the GUI
- Text rendering