Note: This website is archived. For up-to-date information about D projects and development, please visit wiki.dlang.org.

Table of Contents

  1. Current features

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.
  • 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)
  • 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