Chili: Difference between revisions

From Spring
Jump to navigationJump to search
Gajop (talk | contribs)
No edit summary
mNo edit summary
 
(27 intermediate revisions by 5 users not shown)
Line 1: Line 1:
[[Main_Page|Wiki]] < {{FULLPAGENAME}}
== Chili UI ==
== Chili UI ==
ChiliUi is a framework still in development by author JK.  It's a very flexible class based framework, with it's structure derived from Delphi.  It has most of the basic components you expect a framework like for example Swing in java must have.  It might feel a bit daunting at first to get started but with a little reverse engineering and this tutorial page you'll get a long way !


== Getting Chili ==
Chili is Springs very own GUI framework. It's a flexible, class based framework which allows you to create great looking GUIs very quickly. See [[Chili:ScreenShots| Screenshots]].
[https://github.com/jk3064/chiliui Chili UI framework git hub]
=== Learning Chili ===
 
* [[Chili:Tutorial| Chili Tutorial]]
* [[Chili:Examples| Examples of Chili widgets]]
 
Before working with Chili, it is strongly recommended to be familiar with using [[Lua_Scripting| Lua in Spring]], in particular with writing simple widgets.
 
=== Including Chili ===
 
* [[Chili:Adding_To_Game|Adding Chili to a game]]
* [[Chili:Hiding_The_Default_GUI|Hiding Springs default GUI]]
 
== Documentation: Chili Component Hierarchy ==
 
The Chili framework is object orientated, and each different component is a class. The hierarchy of components, which is documented [https://gajop.github.io/chiliui/index.html here],  is as follows:
 
[https://gajop.github.io/chiliui/modules/controls.object.html Object]
|_ [https://gajop.github.io/chiliui/modules/controls.screen.html Screen]
|_ [https://gajop.github.io/chiliui/modules/controls.control.html Control]
  |_ [https://gajop.github.io/chiliui/modules/controls.button.html Button]
  |_ [https://gajop.github.io/chiliui/modules/controls.checkbox.html Checkbox]
  |_ [https://gajop.github.io/chiliui/modules/controls.checkbox.html ColorBars]
  |_ [https://gajop.github.io/chiliui/modules/controls.combobox.html ComboBox]
  |_ [https://gajop.github.io/chiliui/modules/controls.editbox.html EditBox]
  |_ [https://gajop.github.io/chiliui/modules/controls.font.html Font]
  |_ [https://gajop.github.io/chiliui/modules/controls.label.html Label]
  |_ [https://gajop.github.io/chiliui/modules/controls.layoutpanel.html LayoutPanel]
    |_ [https://gajop.github.io/chiliui/modules/controls.imagelistview.html ImageListView]
    |_ [https://gajop.github.io/chiliui/modules/controls.grid.html Grid]
    |_ [https://gajop.github.io/chiliui/modules/controls.stackpanel.html StackPanel]
    |_ [https://gajop.github.io/chiliui/modules/controls.tabpanel.html TabPanel]
  |_ [https://gajop.github.io/chiliui/modules/controls.line.html Line]
  |_ [https://gajop.github.io/chiliui/modules/controls.image.html Image]
  |_ [https://gajop.github.io/chiliui/modules/controls.multiprogressbar.html MultiProgressBar]
  |_ [https://gajop.github.io/chiliui/modules/controls.panel.html Panel]
  |_ [https://gajop.github.io/chiliui/modules/controls.progressbar.html ProgressBar]
  |_ [https://gajop.github.io/chiliui/modules/controls.scale.html Scale]
  |_ [https://gajop.github.io/chiliui/modules/controls.scrollpanel.html ScrollPanel]
  |_ [https://gajop.github.io/chiliui/modules/controls.textbox.html TextBox]
  |_ [https://gajop.github.io/chiliui/modules/controls.trackbar.html TrackBar]
  |_ [https://gajop.github.io/chiliui/modules/controls.treeview.html TreeView]
  |_ TreeViewNode
  |_ [https://gajop.github.io/chiliui/modules/controls.window.html Window]
 
Viewing the diagram as a tree, each component inherits from its parent in the tree. In practice, this means each component has the properties/functionality of its own type, and also of all components found upwards from it in the tree. For example, a Grid has it's own properties, but also has those of a LayoutPanel, Control and Object.
 
== Skinning Chili ==
Start with your desired <code>skin.lua</code>.
 
An example button skin will look like this:
 
<syntaxhighlight lang="lua">
skin.positive_button = {
  clone    = "window";
 
  TileImageBK = ":cl:tech_button_bright_small_bk.png",
  TileImageFG = ":cl:tech_button_bright_small_fg.png",
 
  tiles = {40, 40, 40, 40}, --// tile widths: left,top,right,bottom
  padding = {10, 10, 10, 10},
 
  backgroundColor = {0.50, 0.50, 0.50, 0.65},
  focusColor  = {0.50, 0.50, 0.50, 0.9},
  borderColor = {0.50, 0.50, 0.50, 0.15},
 
  DrawControl = DrawButton,
}
</syntaxhighlight>
 
 
* <code>TileImageBK</code> - This image will be the background of your control. Alpha values indicate transparency, and color values you will be multiplied with <code>backgroundColor</code>


Download it , and put the extracted files in LuaUi/widgets.  It should run out of the box, but user experiences have been conflicted on that. If you are in trouble getting Chili to run, I advice to login to the lobby and join /j moddev.  People there will help you figure it out.
* <code>TileImageFG</code> - This image will be the foreground (drawn over background) of your control. Alpha values indicate transparency, and color values you will be multiplied with <code>borderColor</code>


Here are some hints that helped me get a vanilla ChiliUI running as of Spring 94.x.
* <code>tiles</code> - This image will be the background of your control. Alpha values indicate transparency, and color values you will be multiplied with <code>backgroundColor</code>


* Create an empty file called lockluaui.txt in the gamedata folder of your game
* <code>padding</code> - This image will be the background of your control. Alpha values indicate transparency, and color values you will be multiplied with <code>backgroundColor</code>
* Copy luaui.lua from the spring root folder to your games root folder
* Copy main.lua and widgets.lua from the spring /luaUi folder to your games /luaUi folder


This helped me getting started again with a vanilla spring and chiliui install !
* <code>backgroundColor</code> - This image will be the background of your control. Alpha values indicate transparency, and color values you will be multiplied with <code>backgroundColor</code>


== Chili Component Hiearchy ==
* <code>focusColor</code> - This image will be the background of your control. Alpha values indicate transparency, and color values you will be multiplied with <code>backgroundColor</code>


object
* <code>borderColor</code> - This image will be the background of your control. Alpha values indicate transparency, and color values you will be multiplied with <code>backgroundColor</code>
|_font
|_screen
|_control
  |_button
    |_image
  |_checkbox
  |_colorbars
  |_combobox
  |_editbox
  |_label
  |_layoutpanel
    |_imagelistview
    |_grid
    |_stackpanel
    |_treeview
  |_line
  |_multiprogressbar
  |_panel
  |_progressbar
  |_scrollpanel
  |_tabpanel
  |_textbox
  |_trackbar
  |_treeview
  |_treeviewnode
  |_window


== Tutorials ==
[[Lesson 1 : Hello World]]


[[Lesson 2 : Dynamicly change label content]]


[[Lesson 3 : Command and Build commands in a chili window]]


[[Category:Libraries]]
[[Category:Libraries]]

Latest revision as of 12:32, 7 February 2021

Wiki < Chili

Chili UI

Chili is Springs very own GUI framework. It's a flexible, class based framework which allows you to create great looking GUIs very quickly. See Screenshots.

Learning Chili

Before working with Chili, it is strongly recommended to be familiar with using Lua in Spring, in particular with writing simple widgets.

Including Chili

Documentation: Chili Component Hierarchy

The Chili framework is object orientated, and each different component is a class. The hierarchy of components, which is documented here, is as follows:

Object
|_ Screen
|_ Control
 |_ Button
 |_ Checkbox
 |_ ColorBars
 |_ ComboBox
 |_ EditBox
 |_ Font
 |_ Label
 |_ LayoutPanel
   |_ ImageListView
   |_ Grid
   |_ StackPanel
   |_ TabPanel
 |_ Line
 |_ Image
 |_ MultiProgressBar
 |_ Panel
 |_ ProgressBar
 |_ Scale
 |_ ScrollPanel
 |_ TextBox
 |_ TrackBar
 |_ TreeView
  |_ TreeViewNode
 |_ Window

Viewing the diagram as a tree, each component inherits from its parent in the tree. In practice, this means each component has the properties/functionality of its own type, and also of all components found upwards from it in the tree. For example, a Grid has it's own properties, but also has those of a LayoutPanel, Control and Object.

Skinning Chili

Start with your desired skin.lua.

An example button skin will look like this:

<syntaxhighlight lang="lua"> skin.positive_button = {

 clone     = "window";
 TileImageBK = ":cl:tech_button_bright_small_bk.png",
 TileImageFG = ":cl:tech_button_bright_small_fg.png",
 tiles = {40, 40, 40, 40}, --// tile widths: left,top,right,bottom
 padding = {10, 10, 10, 10},
 backgroundColor = {0.50, 0.50, 0.50, 0.65},
 focusColor  = {0.50, 0.50, 0.50, 0.9},
 borderColor = {0.50, 0.50, 0.50, 0.15},
 DrawControl = DrawButton,

} </syntaxhighlight>


  • TileImageBK - This image will be the background of your control. Alpha values indicate transparency, and color values you will be multiplied with backgroundColor
  • TileImageFG - This image will be the foreground (drawn over background) of your control. Alpha values indicate transparency, and color values you will be multiplied with borderColor
  • tiles - This image will be the background of your control. Alpha values indicate transparency, and color values you will be multiplied with backgroundColor
  • padding - This image will be the background of your control. Alpha values indicate transparency, and color values you will be multiplied with backgroundColor
  • backgroundColor - This image will be the background of your control. Alpha values indicate transparency, and color values you will be multiplied with backgroundColor
  • focusColor - This image will be the background of your control. Alpha values indicate transparency, and color values you will be multiplied with backgroundColor
  • borderColor - This image will be the background of your control. Alpha values indicate transparency, and color values you will be multiplied with backgroundColor