Difference between revisions of "LavishGUI 2"

From Lavish Software Wiki
Jump to: navigation, search
(Topics)
Line 33: Line 33:
 
** [[LGUI2:Pixel Shaders|Pixel Shaders]]
 
** [[LGUI2:Pixel Shaders|Pixel Shaders]]
 
* [[LGUI2:Fonts|Fonts]]
 
* [[LGUI2:Fonts|Fonts]]
 +
* [[LGUI2:Item Lists|Item Lists]]
 +
** [[LGUI2:Items|Items]]
 
* [[LGUI2:Event Handlers|Event Handlers]]
 
* [[LGUI2:Event Handlers|Event Handlers]]
 
* [[LGUI2:Hooks|Hooks]]
 
* [[LGUI2:Hooks|Hooks]]

Revision as of 20:18, 13 July 2018

LavishGUI 2 (LGUI2) is a work-in-progress GUI system for Inner Space (build 6269 or later) 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 Layout Engine 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

We're filling in the documentation and some features are not yet implemented, so please excuse the mess in the meantime.

Types of Elements

LavishGUI 2 Element Types

LavishGUI 2 LavishScript Object Types

Core API (see Using LavishGUI 2 from LavishScript)
lgui2 - lgui2eventargs - lgui2eventhandler - lgui2elementtype - lgui2itemviewgeneratorargs - lgui2inputbinding - lgui2layer - lgui2skin
Enums
elgui2dpad - elgui2edge - elgui2fontflags - elgui2horizontalalignment - elgui2imageorientation - elgui2progresstext - elgui2scrollbar - elgui2verticalignment
Element Components
lgui2brush - lgui2fontstyle - lgui2margins - lgui2item
Element Base Types
lgui2element - lgui2bordered - lgui2contentbase - lgui2headeredcontentbase - lgui2itemlist
Elements