Difference between revisions of "LavishGUI 2"
(→Topics) |
|||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | [[LavishGUI 2]] (LGUI2) is a | + | [[LavishGUI 2]] (LGUI2) is a GUI system for [[Inner Space]] which supports DirectX and OpenGL renderers. LavishGUI 2 effectively replaces [[LavishGUI]], although both systems will be active in Inner Space. |
LavishGUI 2 interfaces are designed in [https://json.org JSON] format, and are scriptable with LavishScript. | LavishGUI 2 interfaces are designed in [https://json.org JSON] format, and are scriptable with LavishScript. | ||
Line 6: | Line 6: | ||
{ | { | ||
"type":"textblock", | "type":"textblock", | ||
− | "text":"Hello World!" | + | "text":"Hello World!" |
} | } | ||
Line 23: | Line 23: | ||
The above example will execute the [[LavishScript]] method MyBindingController:IDidIt when pressing or releasing Alt+Mouse1. [[LGUI2:Event Handlers|Event Handlers]] may also opt to directly embed LavishScript code (as done with [[LavishGUI]]), but we recommend providing a controller object as best practice. | The above example will execute the [[LavishScript]] method MyBindingController:IDidIt when pressing or releasing Alt+Mouse1. [[LGUI2:Event Handlers|Event Handlers]] may also opt to directly embed LavishScript code (as done with [[LavishGUI]]), but we recommend providing a controller object as best practice. | ||
− | LavishGUI 2 includes a new [[LGUI2: | + | LavishGUI 2 includes a new [[LGUI2:Composition|Composition]] system with fairly standard Box Model mechanics. LavishGUI 2 also uses Unicode UTF-16 encoding across the board for international language support -- additionally enabling us to eliminate the use of custom images in favor of Unicode glyphs that have been standardized for user interfaces (such as ☰ for a drop-down menu). |
== Topics == | == Topics == | ||
− | |||
− | |||
{{LGUI2:Topics}} | {{LGUI2:Topics}} | ||
Latest revision as of 14:47, 5 April 2022
LavishGUI 2 (LGUI2) is a GUI system for Inner Space which supports DirectX and OpenGL renderers. LavishGUI 2 effectively replaces LavishGUI, although both systems will be active in Inner Space.
LavishGUI 2 interfaces are designed in JSON format, and are scriptable with LavishScript.
- Here is a very simple (and completely valid) "Hello World!" example for LavishGUI 2
{ "type":"textblock", "text":"Hello World!" }
LavishGUI 2 also implements an input bindings system which includes support for axis (thumbsticks, triggers, etc) and directional pad (D-pad) controls. Input bindings are also designed in JSON format.
- Here is an example Input Bindings list that can be loaded into LavishGUI 2
[ { "name":"I did it!", "controls":"VK_LBUTTON", "modifiers":"alt", "eventHandler":["method","MyBindingController","IDidIt"] } ]
The above example will execute the LavishScript method MyBindingController:IDidIt when pressing or releasing Alt+Mouse1. Event Handlers may also opt to directly embed LavishScript code (as done with LavishGUI), but we recommend providing a controller object as best practice.
LavishGUI 2 includes a new Composition system with fairly standard Box Model mechanics. LavishGUI 2 also uses Unicode UTF-16 encoding across the board for international language support -- additionally enabling us to eliminate the use of custom images in favor of Unicode glyphs that have been standardized for user interfaces (such as ☰ for a drop-down menu).
Topics
LavishGUI 2 Topics
Types of Elements
LavishGUI 2 Element Types
- Base Element Types: Element - Content Container - Headered Content Container - Item List
- Layout: anchor - border - dockpanel - dragger - expander - hud - map - page - pagecontrol -panel - popup - radialpanel - screen - scrollviewer - stackpanel - tab - tabcontrol - table - treepanel - window - wrappanel
- Display: canvas - imagebox - progressbar - radialgauge - textblock
- Interaction: button - checkbox - combobox - contextmenu - dragin - filepicker - itemview - knob - listbox - mapitemview - objectview - propertyview - scrollbar - sensitivebutton - slider - textbox
LavishGUI 2 LavishScript Object Types
- Core API (see Using LavishGUI 2 from LavishScript)
- lgui2 - lgui2animateargs - lgui2animationtype - lgui2elementref - lgui2eventargs - lgui2eventhandler - lgui2elementtype - lgui2itemviewgeneratorargs - lgui2inputbinding - lgui2layer - lgui2skin - lgui2trigger
- Enums
- elgui2animationframestate - elgui2dpad - elgui2edge - elgui2fontflags - elgui2horizontalalignment - elgui2imageorientation - elgui2progresstext - elgui2scrollbar - elgui2sizetocontent - elgui2verticalignment - elgui2visibility
- Element Components
- lgui2animation - lgui2brush - lgui2fontstyle - lgui2margins - lgui2item - lgui2property - lgui2radialitem - lgui2radialgaugeneedle
- Element Base Types
- lgui2element - lgui2bordered - lgui2contentbase - lgui2headeredcontentbase - lgui2itemlist
- Elements
- Layout: lgui2anchor - lgui2border - lgui2dockpanel - lgui2dragger - lgui2expander - lgui2hud - lgui2map - lgui2page - lgui2pagecontrol - lgui2panel - lgui2popup - lgui2radialpanel - lgui2screen - lgui2scrollviewer - lgui2stackpanel - lgui2tab - lgui2tabcontrol - lgui2table - lgui2treepanel - lgui2window - lgui2wrappanel
- Display: lgui2canvas - lgui2imagebox - lgui2progressbar - lgui2radialgauge - lgui2textblock
- Interaction: lgui2button - lgui2checkbox - lgui2combobox - lgui2contextmenu - lgui2dragin - lgui2filepicker - lgui2itemview - lgui2knob - lgui2listbox - lgui2mapitemview - lgui2objectview - lgui2propertyview - lgui2scrollbar - lgui2sensitivebutton - lgui2slider - lgui2textbox