summaryrefslogtreecommitdiff
path: root/Base
diff options
context:
space:
mode:
authorelectrikmilk <brandonjordan124@gmail.com>2022-02-09 18:11:07 -0500
committerBrian Gianforcaro <b.gianfo@gmail.com>2022-03-03 14:59:00 -0800
commit58a865f34967c750dab86929bcdaf603ce0cde3e (patch)
treeb82d696f291be37b53759837b22ef2281003c441 /Base
parentd01d754b83a03beb372046e5db24644289341516 (diff)
downloadserenity-58a865f34967c750dab86929bcdaf603ce0cde3e.zip
Base+Manpages: Add basic GML documentation
First draft of GML documentation, just to get things started.
Diffstat (limited to 'Base')
-rw-r--r--Base/usr/share/man/man5/GML-CoreObject.md14
-rw-r--r--Base/usr/share/man/man5/GML-Define-property.md20
-rw-r--r--Base/usr/share/man/man5/GML-Define-widget.md36
-rw-r--r--Base/usr/share/man/man5/GML-Introduction.md17
-rw-r--r--Base/usr/share/man/man5/GML-Link-widget.md48
-rw-r--r--Base/usr/share/man/man5/GML-Syntax.md39
-rw-r--r--Base/usr/share/man/man5/GML-Widget-Breadcrumbbar.md19
-rw-r--r--Base/usr/share/man/man5/GML-Widget-Button.md33
-rw-r--r--Base/usr/share/man/man5/GML-Widget-Calendar.md19
-rw-r--r--Base/usr/share/man/man5/GML-Widget-CheckBox.md32
-rw-r--r--Base/usr/share/man/man5/GML-Widget-ColorInput.md32
-rw-r--r--Base/usr/share/man/man5/GML-Widget-ComboBox.md32
-rw-r--r--Base/usr/share/man/man5/GML-Widget-Frame.md32
-rw-r--r--Base/usr/share/man/man5/GML-Widget-GroupBox.md25
-rw-r--r--Base/usr/share/man/man5/GML-Widget-HorizontalBoxLayout.md19
-rw-r--r--Base/usr/share/man/man5/GML-Widget-HorizontalProgressbar.md20
-rw-r--r--Base/usr/share/man/man5/GML-Widget-HorizontalSeperator.md19
-rw-r--r--Base/usr/share/man/man5/GML-Widget-HorizontalSlider.md19
-rw-r--r--Base/usr/share/man/man5/GML-Widget-HorizontalSplitter.md19
-rw-r--r--Base/usr/share/man/man5/GML-Widget-IconView.md19
-rw-r--r--Base/usr/share/man/man5/GML-Widget-ImageWidget.md26
-rw-r--r--Base/usr/share/man/man5/GML-Widget-Label.md30
-rw-r--r--Base/usr/share/man/man5/GML-Widget-LinkLabel.md19
-rw-r--r--Base/usr/share/man/man5/GML-Widget-ListView.md19
-rw-r--r--Base/usr/share/man/man5/GML-Widget-MultiView.md19
-rw-r--r--Base/usr/share/man/man5/GML-Widget-OpacitySlider.md20
-rw-r--r--Base/usr/share/man/man5/GML-Widget-PasswordBox.md21
-rw-r--r--Base/usr/share/man/man5/GML-Widget-Progressbar.md32
-rw-r--r--Base/usr/share/man/man5/GML-Widget-RadioButton.md26
-rw-r--r--Base/usr/share/man/man5/GML-Widget-ScrollableContainerWidget.md26
-rw-r--r--Base/usr/share/man/man5/GML-Widget-Scrollbar.md24
-rw-r--r--Base/usr/share/man/man5/GML-Widget-Slider.md25
-rw-r--r--Base/usr/share/man/man5/GML-Widget-SpinBox.md28
-rw-r--r--Base/usr/share/man/man5/GML-Widget-StackWidget.md19
-rw-r--r--Base/usr/share/man/man5/GML-Widget-Statusbar.md26
-rw-r--r--Base/usr/share/man/man5/GML-Widget-TabWidget.md27
-rw-r--r--Base/usr/share/man/man5/GML-Widget-TableView.md20
-rw-r--r--Base/usr/share/man/man5/GML-Widget-TextBox.md25
-rw-r--r--Base/usr/share/man/man5/GML-Widget-TextEditor.md28
-rw-r--r--Base/usr/share/man/man5/GML-Widget-Toolbar.md19
-rw-r--r--Base/usr/share/man/man5/GML-Widget-ToolbarContainer.md23
-rw-r--r--Base/usr/share/man/man5/GML-Widget-Tray.md19
-rw-r--r--Base/usr/share/man/man5/GML-Widget-TreeView.md20
-rw-r--r--Base/usr/share/man/man5/GML-Widget-UrlBox.md19
-rw-r--r--Base/usr/share/man/man5/GML-Widget-ValueSlider.md23
-rw-r--r--Base/usr/share/man/man5/GML-Widget-VerticalBoxLayout.md19
-rw-r--r--Base/usr/share/man/man5/GML-Widget-VerticalProgressbar.md20
-rw-r--r--Base/usr/share/man/man5/GML-Widget-VerticalSeparator.md19
-rw-r--r--Base/usr/share/man/man5/GML-Widget-VerticalSlider.md19
-rw-r--r--Base/usr/share/man/man5/GML-Widget-VerticalSplitter.md19
-rw-r--r--Base/usr/share/man/man5/GML-Widget.md50
51 files changed, 1242 insertions, 0 deletions
diff --git a/Base/usr/share/man/man5/GML-CoreObject.md b/Base/usr/share/man/man5/GML-CoreObject.md
new file mode 100644
index 0000000000..520c2b7166
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-CoreObject.md
@@ -0,0 +1,14 @@
+## Name
+
+A brief description of Core::Object and how it relates to GML
+
+## Description
+
+All GML widgets inherit properties from `Core::Object`.
+
+## Registered Properties
+
+| Property | Type | Possible values | Description |
+|-------------|-----------------|-----------------|------------------------------------------------|
+| name | string | Any string | Name of widget, to be referenced later in C++. |
+| class_name | readonly_string | Class name | Object class |
diff --git a/Base/usr/share/man/man5/GML-Define-property.md b/Base/usr/share/man/man5/GML-Define-property.md
new file mode 100644
index 0000000000..5dcc3d17bc
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Define-property.md
@@ -0,0 +1,20 @@
+## Name
+
+GML Property Definition
+
+## Description
+
+How to register property to a widget.
+
+**LIbGUI** widget definitions contain macros that define the properties that can be used for a given widget.
+
+However, widgets also understand properties defined by their parents. Such as `x`, `y`, `name`, etc.
+
+## Examples
+
+```cpp
+REGISTER_ENUM_PROPERTY(
+ "button_style", button_style, set_button_style, Gfx::ButtonStyle,
+ { Gfx::ButtonStyle::Normal, "Normal" },
+ { Gfx::ButtonStyle::Coolbar, "Coolbar" });
+```
diff --git a/Base/usr/share/man/man5/GML-Define-widget.md b/Base/usr/share/man/man5/GML-Define-widget.md
new file mode 100644
index 0000000000..4628104c1e
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Define-widget.md
@@ -0,0 +1,36 @@
+## Name
+
+Library or Application Defined Widgets
+
+## Description
+
+Some applications and libraries find it useful to define their own **LibGUI** widgets.
+
+## Examples
+
+```gml
+@Web::OutOfProcessWebView {
+ name: "web_view"
+ min_width: 340
+ min_height: 160
+ visible: false
+}
+```
+
+They are defined using `REGISTER_WIDGET()`, just as they are in **LIbGUI**.
+
+```cpp
+REGISTER_WIDGET(Web, OutOfProcessWebView)
+
+...
+
+OutOfProcessWebView::OutOfProcessWebView()
+{
+ set_should_hide_unnecessary_scrollbars(true);
+ set_focus_policy(GUI::FocusPolicy::StrongFocus);
+
+ create_client();
+}
+
+...
+```
diff --git a/Base/usr/share/man/man5/GML-Introduction.md b/Base/usr/share/man/man5/GML-Introduction.md
new file mode 100644
index 0000000000..3b866e308b
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Introduction.md
@@ -0,0 +1,17 @@
+## Name
+
+GUI Markup Language (GML)
+
+## Description
+
+GML is Serenity's graphic user interface markup language. GML files are human-readable and have no easily detectable filemagic. The format is strongly influenced by QML, the Qt Modeling Language.
+
+It allows you to easily define GUI interfaces for your applications. It is easy to learn and link to your C++ code.
+
+You can easily add GML files to your project in Hack Studio either using
+
+`Project > New > GML File`
+
+Or right clicking on a folder in the TreeView and using
+
+`New > GML File`
diff --git a/Base/usr/share/man/man5/GML-Link-widget.md b/Base/usr/share/man/man5/GML-Link-widget.md
new file mode 100644
index 0000000000..6fcf198825
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Link-widget.md
@@ -0,0 +1,48 @@
+## Name
+
+Linking to GML widgets
+
+## Description
+
+How to link to your GML widgets in C++
+
+## CMake
+
+Include `compile_gml()` your applications CMake file.
+
+```cmake
+compile_gml(YourGMLFile.gml MyGML.h my_gml)
+```
+
+Include the name of the header file that will be compiled from your GML file in your `SOURCES`.
+
+```cmake
+set(SOURCES
+ MyGML.h
+)
+```
+
+## C++
+
+You can then reference the variable you set (e.g. `calculator_gml`) in your main C++ file using `load_from_gml()`.
+
+```cpp
+load_from_gml(my_gml);
+```
+
+From there, you can use `find_descendant_of_type_named` to select widgets from your GML from their `name` property.
+
+```gml
+@GUI::Button {
+ name: "mem_add_button"
+ text: "M+"
+ fixed_width: 35
+ fixed_height: 28
+ foreground_color: "red"
+}
+```
+Is referenced using...
+```cpp
+load_from_gml(calculator_gml);
+m_mem_add_button = *find_descendant_of_type_named<GUI::Button>("mem_add_button");
+```
diff --git a/Base/usr/share/man/man5/GML-Syntax.md b/Base/usr/share/man/man5/GML-Syntax.md
new file mode 100644
index 0000000000..5c5e16e6b0
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Syntax.md
@@ -0,0 +1,39 @@
+## Name
+
+GML Basic Syntax
+
+# Description
+
+How to write GML using proper syntax.
+
+## Basic Syntax
+
+Each widget begins with `@GUI::`, with the name of the widget following. To define the properties of this widget, we follow with curly brackets and a list of properties.
+
+## Properties
+
+A property's `value` is required to be in the property's set `type`:
+
+- `int`
+- `bool`
+- `string`
+- `readonly_string`
+- `enum`
+- `font_weight`
+- `text_alignment`
+- `text_wrapping`
+- `rect`
+- `size`
+- `margins`
+
+Properties are never ended with `;` or `,`, and the property name is never enclosed in quotes or double quotes.
+
+Properties are always surrounded by curly brackets (e.g. `{}`). If no properties are set however, no brackets are required.
+
+## Examples
+
+```gml
+@GUI::Widget {
+ name: "my_first_widget"
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget-Breadcrumbbar.md b/Base/usr/share/man/man5/GML-Widget-Breadcrumbbar.md
new file mode 100644
index 0000000000..8ef8b8d204
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-Breadcrumbbar.md
@@ -0,0 +1,19 @@
+## Name
+
+GML Breadcrumb Bar Widget
+
+## Description
+
+Defines a GUI bread crumb toolbar widget.
+
+## Synopsis
+
+`@GUI::Breadcrumbbar`
+
+## Examples
+
+```gml
+@GUI::Breadcrumbbar {
+ name: "breadcrumbbar"
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget-Button.md b/Base/usr/share/man/man5/GML-Widget-Button.md
new file mode 100644
index 0000000000..1a8b07630d
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-Button.md
@@ -0,0 +1,33 @@
+## Name
+
+## Description
+
+Defines a GUI Button widget.
+
+## Synopsis
+
+`@GUI::Button`
+
+## Examples
+
+```gml
+@GUI::Button {
+ name: "normal_button"
+ text: "Button"
+}
+
+@GUI::Button {
+ name: "disabled_normal_button"
+ text: "Disabled"
+ enabled: "false"
+}
+```
+
+## Registered Properties
+
+| Property | Type | Possible values | Description |
+|--------------|--------|-----------------|------------------------------|
+| button_style | enum | Normal, Coolbar | Sets the style of the button |
+| text | string | Any string | Sets the label text |
+| checked | bool | true or false | |
+| checkable | bool | true or false | |
diff --git a/Base/usr/share/man/man5/GML-Widget-Calendar.md b/Base/usr/share/man/man5/GML-Widget-Calendar.md
new file mode 100644
index 0000000000..301af8bff0
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-Calendar.md
@@ -0,0 +1,19 @@
+## Name
+
+GML Calendar Widget
+
+## Description
+
+Defines a GUI calendar widget.
+
+## Synopsis
+
+`@GUI::Calendar`
+
+## Examples
+
+```gml
+@GUI::Calendar {
+ name: "calendar"
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget-CheckBox.md b/Base/usr/share/man/man5/GML-Widget-CheckBox.md
new file mode 100644
index 0000000000..a150cec85f
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-CheckBox.md
@@ -0,0 +1,32 @@
+## Name
+
+GML Checkbox Widget
+
+## Description
+
+Defines a GUI checkbox widget.
+
+## Synopsis
+
+`@GUI::CheckBox`
+
+## Examples
+
+```gml
+@GUI::CheckBox {
+ name: "top_checkbox"
+ text: "Checkbox"
+}
+
+@GUI::CheckBox {
+ name: "bottom_checkbox"
+ text: "Disabled"
+ enabled: false
+}
+```
+
+## Registered Properties
+
+| Property | Type | Possible values | Description |
+|----------|------|-----------------|--------------------------|
+| autosize | bool | true or false | Determines if auto-sized |
diff --git a/Base/usr/share/man/man5/GML-Widget-ColorInput.md b/Base/usr/share/man/man5/GML-Widget-ColorInput.md
new file mode 100644
index 0000000000..4bed8ca95d
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-ColorInput.md
@@ -0,0 +1,32 @@
+## Name
+
+GML Color Input Widget
+
+## Description
+
+Defines a GUI color input widget.
+
+## Synopsis
+
+`@GUI::ColorInput`
+
+## Examples
+
+```gml
+@GUI::ColorInput {
+ name: "font_colorinput"
+ placeholder: "Color dialog"
+}
+
+@GUI::ColorInput {
+ placeholder: "Disabled"
+ enabled: false
+}
+```
+
+## Registered Properties
+
+| Property | Type | Possible values | Description |
+|--------------------|--------|-----------------|---------------------------------------------------------|
+| color_picker_title | string | Any string | Sets the title of the input |
+| has_alpha_channel | bool | true or false | Whether to include the alpha channel in color selection |
diff --git a/Base/usr/share/man/man5/GML-Widget-ComboBox.md b/Base/usr/share/man/man5/GML-Widget-ComboBox.md
new file mode 100644
index 0000000000..513cdd8dd8
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-ComboBox.md
@@ -0,0 +1,32 @@
+## Name
+
+GML Combo Box Widget
+
+## Description
+
+Defines a GUI combo box widget. Another name for this would be a dropdown or select.
+
+## Synopsis
+
+`@GUI::ComboBox`
+
+## Examples
+
+```gml
+@GUI::ComboBox {
+ name: "msgbox_icon_combobox"
+ model_only: true
+}
+
+@GUI::ComboBox {
+ name: "msgbox_buttons_combobox"
+ model_only: true
+}
+```
+
+## Registered Properties
+
+| Property | Type | Possible values | Description |
+|-------------|--------|-----------------|------------------------------|
+| placeholder | string | Any string | Editor placeholder |
+| model_only | bool | true or false | Only allow values from model |
diff --git a/Base/usr/share/man/man5/GML-Widget-Frame.md b/Base/usr/share/man/man5/GML-Widget-Frame.md
new file mode 100644
index 0000000000..da66e93a27
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-Frame.md
@@ -0,0 +1,32 @@
+## Name
+
+GML Frame Widget
+
+## Description
+
+Defines a GUI frame widget. Frames can contain other GUI widgets.
+
+## Synopsis
+
+`@GUI::Frame`
+
+## Examples
+
+```gml
+@GUI::Frame {
+ name: "tip_frame"
+ min_width: 340
+ min_height: 160
+ layout: @GUI::HorizontalBoxLayout {
+ margins: [0, 16, 0, 0]
+ }
+}
+```
+
+## Registered Properties
+
+| Property | Type | Possible values | Description |
+|-----------|---------|--------------------------------------------------------------|--------------------|
+| thickness | integer | 64-bit integer | Sets the thickness |
+| shadow | enum | Plain, Raised, Sunken | Sets the shadow |
+| shape | enum | NoFrame, Box, Container, Panel, VerticalLine, HorizontalLine | Sets the shape |
diff --git a/Base/usr/share/man/man5/GML-Widget-GroupBox.md b/Base/usr/share/man/man5/GML-Widget-GroupBox.md
new file mode 100644
index 0000000000..b1db09260c
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-GroupBox.md
@@ -0,0 +1,25 @@
+## Name
+
+GML Group Box Widget
+
+## Description
+
+Defines a GUI group box widget. Used to contain widgets in a border with a title.
+
+## Synopsis
+
+`@GUI::GroupBox`
+
+## Examples
+
+```gml
+@GUI::GroupBox {
+ title: "Appearance"
+}
+```
+
+## Registered Properties
+
+| Property | Type | Possible values | Description |
+|----------|--------|-----------------|----------------|
+| title | string | Any string | Sets the title |
diff --git a/Base/usr/share/man/man5/GML-Widget-HorizontalBoxLayout.md b/Base/usr/share/man/man5/GML-Widget-HorizontalBoxLayout.md
new file mode 100644
index 0000000000..26dedaa80e
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-HorizontalBoxLayout.md
@@ -0,0 +1,19 @@
+## Name
+
+GML Horizontal Box Layout Widget
+
+## Description
+
+Defines a horizontal GUI box layout widget.
+
+## Synopsis
+
+`@GUI::HorizontalBoxLayout`
+
+## Examples
+
+```gml
+@GUI::HorizontalBoxLayout {
+ spacing: 2
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget-HorizontalProgressbar.md b/Base/usr/share/man/man5/GML-Widget-HorizontalProgressbar.md
new file mode 100644
index 0000000000..41132aac19
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-HorizontalProgressbar.md
@@ -0,0 +1,20 @@
+## Name
+
+GML Horizontal Progress Bar Widget
+
+## Description
+
+Defines a GUI horizontal progress bar widget.
+
+## Synopsis
+
+`@GUI::HorizontalProgressbar`
+
+## Examples
+
+```gml
+@GUI::HorizontalProgressbar {
+ name: "horizontal_progressbar"
+ fixed_height: 20
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget-HorizontalSeperator.md b/Base/usr/share/man/man5/GML-Widget-HorizontalSeperator.md
new file mode 100644
index 0000000000..f1b520b2c5
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-HorizontalSeperator.md
@@ -0,0 +1,19 @@
+## Name
+
+GML Horizontal Seperator Widget
+
+## Description
+
+Defines a horizontal seperator widget. Creates a horizontal line separating elements.
+
+## Synopsis
+
+`@GUI::HorizontalSeparator`
+
+## Examples
+
+```gml
+@GUI::HorizontalSeparator {
+ fixed_height: 2
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget-HorizontalSlider.md b/Base/usr/share/man/man5/GML-Widget-HorizontalSlider.md
new file mode 100644
index 0000000000..d2a3f98a8c
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-HorizontalSlider.md
@@ -0,0 +1,19 @@
+## Name
+
+GML Horizontal Slider Widget
+
+## Description
+
+Defines a GUI horizontal slider widget.
+
+## Synopsis
+
+`@GUI::HorizontalSlider`
+
+## Examples
+
+```gml
+@GUI::HorizontalSlider {
+
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget-HorizontalSplitter.md b/Base/usr/share/man/man5/GML-Widget-HorizontalSplitter.md
new file mode 100644
index 0000000000..9cef0fab7e
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-HorizontalSplitter.md
@@ -0,0 +1,19 @@
+## Name
+
+GUI Horizontal Spitter Widget
+
+## Description
+
+Defines a GUI horizontal splitter widget.
+
+## Synopsis
+
+`@GUI::HorizontalSpitter`
+
+## Examples
+
+```gml
+@GUI::HorizontalSpitter {
+
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget-IconView.md b/Base/usr/share/man/man5/GML-Widget-IconView.md
new file mode 100644
index 0000000000..5977f42941
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-IconView.md
@@ -0,0 +1,19 @@
+## Name
+
+GML Icon View Widget
+
+## Description
+
+Defines a GUI icon view widget.
+
+## Synopsis
+
+`@GUI::IconView`
+
+## Examples
+
+```gml
+@GUI::IconView {
+
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget-ImageWidget.md b/Base/usr/share/man/man5/GML-Widget-ImageWidget.md
new file mode 100644
index 0000000000..6dd7973161
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-ImageWidget.md
@@ -0,0 +1,26 @@
+## Name
+
+GML Image Widget
+
+## Description
+
+Defines a GUI image widget.
+
+## Synopsis
+
+`@GUI::ImageWidget`
+
+## Examples
+
+```gml
+@GUI::ImageWidget {
+
+}
+```
+
+## Registered Properties
+
+| Property | Type | Possible values | Description |
+|----------------|------|-----------------|-------------------------------------|
+| auto_resize | bool | true or false | Set if the image should auto-resize |
+| should_stretch | bool | true or false | Set if the image should stretch |
diff --git a/Base/usr/share/man/man5/GML-Widget-Label.md b/Base/usr/share/man/man5/GML-Widget-Label.md
new file mode 100644
index 0000000000..f53b5273c3
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-Label.md
@@ -0,0 +1,30 @@
+## Name
+
+GML Label Widget
+
+## Description
+
+Defines a GUI label widget.
+
+## Synopsis
+
+`@GUI::Label`
+
+## Examples
+
+```
+@GUI::Label {
+ text: "Copying files..."
+ text_alignment: "CenterLeft"
+ font_weight: "Bold"
+ fixed_height: 32
+ name: "files_copied_label"
+}
+```
+
+## Registered Properties
+
+| Property | Type | Possible values | Description |
+|-----------------|----------------|-----------------------------------------------------------------------------|----------------------------|
+| text_alignment | text_alignment | Center, CenterLeft, CenterRight, TopLeft, TopRight, BottomLeft, BottomRight | Sets alignment of the text |
+| text_wrapping | text_wrapping | | | | |
diff --git a/Base/usr/share/man/man5/GML-Widget-LinkLabel.md b/Base/usr/share/man/man5/GML-Widget-LinkLabel.md
new file mode 100644
index 0000000000..05d32feee2
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-LinkLabel.md
@@ -0,0 +1,19 @@
+## Name
+
+GML Link Label Widget
+
+## Description
+
+Defines a GUI link label widget.
+
+## Synopsis
+
+`@GUI::LinkLabel`
+
+## Examples
+
+```gml
+@GUI::LinkLabel {
+
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget-ListView.md b/Base/usr/share/man/man5/GML-Widget-ListView.md
new file mode 100644
index 0000000000..7bb7b76858
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-ListView.md
@@ -0,0 +1,19 @@
+## Name
+
+GML List-view Widget
+
+## Synopsis
+
+`@GUI::ListView`
+
+## Description
+
+Defines a GUI list view widget.
+
+## Examples
+
+```gml
+@GUI::ListView {
+ name: "list_view"
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget-MultiView.md b/Base/usr/share/man/man5/GML-Widget-MultiView.md
new file mode 100644
index 0000000000..ffa72f2f05
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-MultiView.md
@@ -0,0 +1,19 @@
+## Name
+
+GML Multi-view Widget
+
+## Description
+
+Defines a GUI multi view widget.
+
+## Synopsis
+
+`@GUI::MultiView`
+
+## Examples
+
+```gml
+@GUI::MultiView {
+
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget-OpacitySlider.md b/Base/usr/share/man/man5/GML-Widget-OpacitySlider.md
new file mode 100644
index 0000000000..f3303f0cdf
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-OpacitySlider.md
@@ -0,0 +1,20 @@
+## Name
+
+GML Opacity Slider Widget
+
+## Description
+
+Defines a GUI opacity slider widget.
+
+## Synopsis
+
+`@GUI::OpacitySlider`
+
+## Examples
+
+```gml
+@GUI::OpacitySlider {
+ name: "opacity_slider"
+ tooltip: "Opacity Slider"
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget-PasswordBox.md b/Base/usr/share/man/man5/GML-Widget-PasswordBox.md
new file mode 100644
index 0000000000..7d91887a62
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-PasswordBox.md
@@ -0,0 +1,21 @@
+## Name
+
+GML Password Box Widget
+
+## Description
+
+Defines a GUI password box widget.
+
+## Synopsis
+
+```gml
+@GUI::PasswordBox
+```
+
+## Examples
+
+```gml
+@GUI::PasswordBox {
+
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget-Progressbar.md b/Base/usr/share/man/man5/GML-Widget-Progressbar.md
new file mode 100644
index 0000000000..5f10831ee3
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-Progressbar.md
@@ -0,0 +1,32 @@
+## Name
+
+GML Progress Bar Widget
+
+## Description
+
+Defines a GUI progress bar widget.
+
+## Synopsis
+
+```gml
+@GUI::Progressbar
+```
+
+## Examples
+
+```gml
+@GUI::Progressbar {
+ fixed_height: 22
+ name: "progressbar"
+ min: 0
+}
+```
+
+## Registered Properties
+
+| Property | Type | Possible values | Description |
+|----------|--------|-----------------------------------|--------------------------------------------|
+| text | string | Any string | Sets progress text |
+| format | enum | NoText, Percentage, ValueSlashMax | Sets the format of the progress indication |
+| min | int | Any 64 bit integer | Sets the minimum progress value |
+| max | int | Any 64 bit integer | Set the maximum progress value |
diff --git a/Base/usr/share/man/man5/GML-Widget-RadioButton.md b/Base/usr/share/man/man5/GML-Widget-RadioButton.md
new file mode 100644
index 0000000000..c761e9a221
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-RadioButton.md
@@ -0,0 +1,26 @@
+## Name
+
+GML Radio Button Widget
+
+## Description
+
+Defines a GUI radio button widget.
+
+## Synopsis
+
+`@GUI::RadioButton`
+
+## Examples
+
+```gml
+@GUI::RadioButton {
+ name: "top_radiobutton"
+ text: "Radio 1"
+ checked: true
+}
+
+@GUI::RadioButton {
+ name: "bottom_radiobutton"
+ text: "Radio 2"
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget-ScrollableContainerWidget.md b/Base/usr/share/man/man5/GML-Widget-ScrollableContainerWidget.md
new file mode 100644
index 0000000000..50047c6b51
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-ScrollableContainerWidget.md
@@ -0,0 +1,26 @@
+## Name
+
+GML Scrollable Container Widget
+
+## Description
+
+Defines a GUI scrollable container widget.
+
+## Synopsis
+
+`@GUI::ScrollableContainerWidget`
+
+## Examples
+
+```gml
+@GUI::ScrollableContainerWidget {
+
+}
+```
+
+## Registered Properties
+
+| Property | Type | Possible values | Description |
+|------------------------------------|------|-----------------|---------------------------------------------|
+| scrollbars_enabled | bool | true or false | Status of scrollbar |
+| should_hide_unnecessary_scrollbars | bool | true or false | Whether to hide scrollbars when unnecessary |
diff --git a/Base/usr/share/man/man5/GML-Widget-Scrollbar.md b/Base/usr/share/man/man5/GML-Widget-Scrollbar.md
new file mode 100644
index 0000000000..aea511b962
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-Scrollbar.md
@@ -0,0 +1,24 @@
+## Name
+
+GML Scrollbar Widget
+
+## Description
+
+Defines a GUI scrollbar widget.
+
+## Synopsis
+
+`@GUI::Scrollbar`
+
+## Examples
+
+```gml
+@GUI::Scrollbar {
+ name: "enabled_scrollbar"
+ fixed_height: 16
+ fixed_width: -1
+ min: 0
+ max: 100
+ value: 50
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget-Slider.md b/Base/usr/share/man/man5/GML-Widget-Slider.md
new file mode 100644
index 0000000000..d69183bc21
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-Slider.md
@@ -0,0 +1,25 @@
+## Name
+
+GML Slider Widget
+
+## Description
+
+Defines a GUI slider widget.
+
+## Synopsis
+
+`@GUI::Slider`
+
+## Examples
+
+```gml
+@GUI::Slider {
+
+}
+```
+
+## Registered Properties
+
+| Property | Type | Possible values | Description |
+|----------------|------|---------------------|---------------------------|
+| knob_size_mode | enum | Fixed, Proportional | Sets the slider knob size |
diff --git a/Base/usr/share/man/man5/GML-Widget-SpinBox.md b/Base/usr/share/man/man5/GML-Widget-SpinBox.md
new file mode 100644
index 0000000000..7612510c6d
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-SpinBox.md
@@ -0,0 +1,28 @@
+## Name
+
+GML Spin Box Widget
+
+## Description
+
+Defines a GUI spin box widget. This is a number input with buttons to increment and decrement the value.
+
+## Synopsis
+
+`@GUI::SpinBox`
+
+## Examples
+
+```gml
+@GUI::SpinBox {
+ name: "thickness_spinbox"
+ min: 0
+ max: 2
+}
+```
+
+## Registered Properties
+
+| Property | Type | Possible values | Description |
+|----------|-------|--------------------|----------------------------------------------|
+| min | int | Any 64 bit integer | Minimum number the spin box can increment to |
+| max | int | Any 64 bit integer | Maximum number the spin box can increment to |
diff --git a/Base/usr/share/man/man5/GML-Widget-StackWidget.md b/Base/usr/share/man/man5/GML-Widget-StackWidget.md
new file mode 100644
index 0000000000..f282738fd5
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-StackWidget.md
@@ -0,0 +1,19 @@
+## Name
+
+GML Stack Widget
+
+## Description
+
+Defines a GUI stack widget.
+
+## Synopsis
+
+`@GUI::StackWidget`
+
+## Examples
+
+```gml
+@GUI::StackWidget {
+
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget-Statusbar.md b/Base/usr/share/man/man5/GML-Widget-Statusbar.md
new file mode 100644
index 0000000000..0dd3989b41
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-Statusbar.md
@@ -0,0 +1,26 @@
+## Name
+
+GML Status Bar Widget
+
+## Description
+
+Defines a GUI status bar widget.
+
+## Synopsis
+
+`@GUI::Statusbar`
+
+## Examples
+
+```gml
+@GUI::Statusbar {
+
+}
+```
+
+## Registered Properties
+
+| Property | Type | Possible values | Description |
+|-------------|--------|--------------------|---------------------------------|
+| text | string | Any string | Sets the text of the status bar |
+| label_count | int | Any 64 bit integer | Sets the label count |
diff --git a/Base/usr/share/man/man5/GML-Widget-TabWidget.md b/Base/usr/share/man/man5/GML-Widget-TabWidget.md
new file mode 100644
index 0000000000..ca94982e3d
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-TabWidget.md
@@ -0,0 +1,27 @@
+## Name
+
+GML Tab Widget
+
+## Description
+
+Defines a GUI tab widget.
+
+## Synopsis
+
+`@GUI::TabWidget`
+
+## Examples
+
+```gml
+@GUI::TabWidget {
+ uniform_tabs: true
+}
+```
+
+## Registered Properties
+
+| Property | Type | Possible values | Description |
+|-------------------|----------------|-----------------------------------------------------------------------------|-------------------------------|
+| container_margins | margins | | Set container margins |
+| uniform_tabs | bool | true or false | Set uniform tabs |
+| text_alignment | text_alignment | Center, CenterLeft, CenterRight, TopLeft, TopRight, BottomLeft, BottomRight | Set the alignment of tab text |
diff --git a/Base/usr/share/man/man5/GML-Widget-TableView.md b/Base/usr/share/man/man5/GML-Widget-TableView.md
new file mode 100644
index 0000000000..f36aec53c7
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-TableView.md
@@ -0,0 +1,20 @@
+## Name
+
+GML Table View Widget
+
+## Description
+
+Defines a GUI table view widget.
+
+## Synopsis
+
+`@GUI::TableView`
+
+## Examples
+
+```gml
+@GUI::TableView {
+ name: "cursors_tableview"
+ font_size: 12
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget-TextBox.md b/Base/usr/share/man/man5/GML-Widget-TextBox.md
new file mode 100644
index 0000000000..aa53070e39
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-TextBox.md
@@ -0,0 +1,25 @@
+## Name
+
+GML Text Box Widget
+
+## Description
+
+Defines a GUI text box widget.
+
+## Synopsis
+
+`@GUI::TextBox`
+
+## Examples
+
+```gml
+@GUI::TextBox {
+ placeholder: "Text box"
+ mode: "Editable"
+}
+
+@GUI::TextBox {
+ text: "Disabled"
+ enabled: false
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget-TextEditor.md b/Base/usr/share/man/man5/GML-Widget-TextEditor.md
new file mode 100644
index 0000000000..6bc5174e3a
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-TextEditor.md
@@ -0,0 +1,28 @@
+## Name
+
+GML Text Editor Widget
+
+## Description
+
+Defines a GUI text editor widget.
+
+## Synopsis
+
+`@GUI::TextEditor`
+
+## Examples
+
+```gml
+@GUI::TextEditor {
+ name: "text_editor"
+ placeholder: "Text editor"
+}
+```
+
+## Registered Properties
+
+| Property | Type | Possible values | Description |
+|-------------|--------|---------------------------------|-----------------|
+| text | string | Any string | Set text |
+| placeholder | string | Any string | Set placeholder |
+| mode | enum | Editable, ReadOnly, DisplayOnly | Set editor mode |
diff --git a/Base/usr/share/man/man5/GML-Widget-Toolbar.md b/Base/usr/share/man/man5/GML-Widget-Toolbar.md
new file mode 100644
index 0000000000..b385f71dab
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-Toolbar.md
@@ -0,0 +1,19 @@
+## Name
+
+GML Toolbar Widget
+
+## Description
+
+Defines a GUI toolbar widget.
+
+## Synopsis
+
+`@GUI::Toolbar`
+
+## Examples
+
+```gml
+@GUI::Toolbar {
+ name: "toolbar"
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget-ToolbarContainer.md b/Base/usr/share/man/man5/GML-Widget-ToolbarContainer.md
new file mode 100644
index 0000000000..27d5e77014
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-ToolbarContainer.md
@@ -0,0 +1,23 @@
+## Name
+
+GML Toolbar Container Widget
+
+## Description
+
+Defines a GUI toolbar container widget.
+
+## Synopsis
+
+`@GUI::ToolbarContainer`
+
+## Examples
+
+```gml
+@GUI::ToolbarContainer {
+ name: "toolbar_container"
+
+ @GUI::Toolbar {
+ name: "toolbar"
+ }
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget-Tray.md b/Base/usr/share/man/man5/GML-Widget-Tray.md
new file mode 100644
index 0000000000..a7a2e9b3be
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-Tray.md
@@ -0,0 +1,19 @@
+## Name
+
+GML Tray Widget
+
+## Description
+
+Defines a GUI tray widget.
+
+## Synopsis
+
+`@GUI::Tray`
+
+## Examples
+
+```gml
+@GUI::Tray {
+
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget-TreeView.md b/Base/usr/share/man/man5/GML-Widget-TreeView.md
new file mode 100644
index 0000000000..578bdb56be
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-TreeView.md
@@ -0,0 +1,20 @@
+## Name
+
+GML Tree View Widget
+
+## Description
+
+Defines a GUI tree view widget.
+
+## Synopsis
+
+`@GUI::TreeView`
+
+## Examples
+
+```gml
+@GUI::TreeView {
+ name: "tree_view"
+ fixed_width: 200
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget-UrlBox.md b/Base/usr/share/man/man5/GML-Widget-UrlBox.md
new file mode 100644
index 0000000000..59d2280f93
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-UrlBox.md
@@ -0,0 +1,19 @@
+## Name
+
+GML URL Box Widget
+
+## Description
+
+Defines a GUI url box widget.
+
+## Synopsis
+
+`@GUI::UrlBox`
+
+## Examples
+
+```gml
+@GUI::UrlBox {
+
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget-ValueSlider.md b/Base/usr/share/man/man5/GML-Widget-ValueSlider.md
new file mode 100644
index 0000000000..1dd2eded43
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-ValueSlider.md
@@ -0,0 +1,23 @@
+## Name
+
+GML Value Slider Widget
+
+## Description
+
+Defines a GUI value slider widget.
+
+## Synopsis
+
+`@GUI::ValueSlider`
+
+## Examples
+
+```gml
+@GUI::ValueSlider {
+ name: "value_slider"
+ min: 0
+ max: 100
+ value: 100
+ tooltip: "Value Slider"
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget-VerticalBoxLayout.md b/Base/usr/share/man/man5/GML-Widget-VerticalBoxLayout.md
new file mode 100644
index 0000000000..aa0d003065
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-VerticalBoxLayout.md
@@ -0,0 +1,19 @@
+## Name
+
+GML Vertical Box Layout Widget
+
+## Description
+
+Defines a vertical GUI box layout.
+
+## Synopsis
+
+`@GUI::VerticalBoxLayout`
+
+## Examples
+
+```gml
+@GUI::VerticalBoxLayout {
+ spacing: 2
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget-VerticalProgressbar.md b/Base/usr/share/man/man5/GML-Widget-VerticalProgressbar.md
new file mode 100644
index 0000000000..ec9d1f64ca
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-VerticalProgressbar.md
@@ -0,0 +1,20 @@
+## Name
+
+GML Vertical Progress Bar Widget
+
+## Description
+
+Defines a GUI vertical progress bar widget.
+
+## Synopsis
+
+`@GUI::VerticalProgressbar`
+
+## Examples
+
+```gml
+@GUI::VerticalProgressbar {
+ name: "vertical_progressbar_left"
+ fixed_width: 36
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget-VerticalSeparator.md b/Base/usr/share/man/man5/GML-Widget-VerticalSeparator.md
new file mode 100644
index 0000000000..21e2e4a152
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-VerticalSeparator.md
@@ -0,0 +1,19 @@
+## Name
+
+GML Vertical Seperator Widget
+
+## Description
+
+Defines a GUI vertical separator.
+
+## Synopsis
+
+`@GUI::VerticalSeparator`
+
+## Examples
+
+```gml
+@GUI::VerticalSeparator {
+
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget-VerticalSlider.md b/Base/usr/share/man/man5/GML-Widget-VerticalSlider.md
new file mode 100644
index 0000000000..963fc1d163
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-VerticalSlider.md
@@ -0,0 +1,19 @@
+## Name
+
+GML Vertical Slider Widget
+
+## Description
+
+Defines a GUI vertical slider widget.
+
+## Synopsis
+
+`@GUI::VerticalSlider`
+
+## Examples
+
+```gml
+@GUI::VerticalSlider {
+
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget-VerticalSplitter.md b/Base/usr/share/man/man5/GML-Widget-VerticalSplitter.md
new file mode 100644
index 0000000000..3cda095754
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget-VerticalSplitter.md
@@ -0,0 +1,19 @@
+## Name
+
+GML Vertical Spliiter Widget
+
+## Description
+
+Defines a GUI vertical splitter widget.
+
+## Synopsis
+
+`@GUI::VerticalSplitter`
+
+## Examples
+
+```gml
+@GUI::VerticalSplitter {
+
+}
+```
diff --git a/Base/usr/share/man/man5/GML-Widget.md b/Base/usr/share/man/man5/GML-Widget.md
new file mode 100644
index 0000000000..c0fe2430b7
--- /dev/null
+++ b/Base/usr/share/man/man5/GML-Widget.md
@@ -0,0 +1,50 @@
+# Widget
+
+Defines a GUI widget.
+
+```gml
+@GUI::Widget {
+ fixed_width: 250
+ fixed_height: 215
+ fill_with_background_color: true
+ layout: @GUI::VerticalBoxLayout {
+
+ }
+}
+```
+
+## Registered Properties
+
+| Property | Type | Possible values | Description |
+|-----------------------------|-------------|----------------------------------------------------|------------------------------------------------|
+| x | int | | |
+| y | int | | |
+| visible | bool | | |
+| focused | bool | | |
+| enabled | bool | | |
+| tooltip | string | | |
+| min_size | size | | |
+| max_size | size | | |
+| width | int | | |
+| height | int | | |
+| min_width | int | | |
+| min_height | int | | |
+| max_width | int | | |
+| max_height | int | | |
+| fixed_width | int | | |
+| fixed_height | int | | |
+| fixed_size | size | | |
+| shrink_to_fit | bool | | |
+| font | string | | |
+| font_size | int | | |
+| font_weight | font_weight | | |
+| font_type | enum | FixedWidth, Normal | |
+| foreground_color | color | | |
+| foreground_role | string | | |
+| background_color | color | | |
+| background_role | string | | |
+| fill_width_background_color | bool | | |
+| layout | widget | @GUI::VerticalBoxLayout, @GUI::HorizontalBoxLayout | |
+| relative_rect | rect | | |
+| focus_policy | enum | ClickFocus, NoFocus, TabFocus, StrongFocus | |
+| margins | | | |