<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.wesnoth.org/index.php?action=history&amp;feed=atom&amp;title=LuaAPI%2Fgui%2Fexample</id>
	<title>LuaAPI/gui/example - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.wesnoth.org/index.php?action=history&amp;feed=atom&amp;title=LuaAPI%2Fgui%2Fexample"/>
	<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=LuaAPI/gui/example&amp;action=history"/>
	<updated>2026-05-06T00:57:48Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=LuaAPI/gui/example&amp;diff=73540&amp;oldid=prev</id>
		<title>Celtic Minstrel: /* The Implementation */ Use schema validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=LuaAPI/gui/example&amp;diff=73540&amp;oldid=prev"/>
		<updated>2024-08-22T05:27:42Z</updated>

		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;The Implementation: &lt;/span&gt; Use schema validation&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 05:27, 22 August 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l217&quot; &gt;Line 217:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 217:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; selection = self.characters.selected_index&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; selection = self.characters.selected_index&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; end&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; local dialog_wml = wml.load &amp;quot;character_select.cfg&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; local dialog_wml = wml.load&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;(&lt;/ins&gt;&amp;quot;character_select.cfg&amp;quot;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;, true, &amp;quot;schema/gui_window.cfg&amp;quot;)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; wml.variables.selected_character = wesnoth.sync.evaluate_single(function()&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; wml.variables.selected_character = wesnoth.sync.evaluate_single(function()&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; local result = false&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; local result = false&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Celtic Minstrel</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=LuaAPI/gui/example&amp;diff=68320&amp;oldid=prev</id>
		<title>Celtic Minstrel: /* The Implementation */ Update to synchronize the dialog result</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=LuaAPI/gui/example&amp;diff=68320&amp;oldid=prev"/>
		<updated>2021-07-05T23:38:04Z</updated>

		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;The Implementation: &lt;/span&gt; Update to synchronize the dialog result&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 23:38, 5 July 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l218&quot; &gt;Line 218:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 218:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; end&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; local dialog_wml = wml.load &amp;quot;character_select.cfg&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; local dialog_wml = wml.load &amp;quot;character_select.cfg&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; if -1 == gui.show_dialog(wml.get_child(dialog_wml, 'resolution'), pre_show, post_show) then&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;wml.variables.selected_character = wesnoth.sync.evaluate_single(function()&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160; wml.variables.selected_character &lt;/del&gt;= characters[selection].id&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160; local result = false&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; else&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160; &lt;/ins&gt;if -1 == gui.show_dialog(wml.get_child(dialog_wml, 'resolution'), pre_show, post_show) then&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;wml.variables.selected_character &lt;/del&gt;= &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;nil&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160; &amp;#160; result &lt;/ins&gt;= characters[selection].id&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; end&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#160; &amp;#160; end&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;return {selected &lt;/ins&gt;= &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;result}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; end&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;).selected&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;end&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;end&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Celtic Minstrel</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=LuaAPI/gui/example&amp;diff=68307&amp;oldid=prev</id>
		<title>Celtic Minstrel: Example of creating a custom GUI2 dialog from Lua; probably needs some work but is basically complete and functional</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=LuaAPI/gui/example&amp;diff=68307&amp;oldid=prev"/>
		<updated>2021-07-05T03:45:11Z</updated>

		<summary type="html">&lt;p&gt;Example of creating a custom GUI2 dialog from Lua; probably needs some work but is basically complete and functional&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
Using the [[../#gui.show_dialog|gui.show_dialog]] function, you can create pretty much any custom dialog you want using the standard GUI2 markup that constructs most of Wesnoth's built-in UIs. This page is dedicated to a fully-working example that demonstrates some of the intricacies of the system.&lt;br /&gt;
&lt;br /&gt;
We're going to create a character selection dialog, similar to the tutorial dialog, but with more than two choices. Since there will be several choices, we'll use a listbox. In order to be as user-friendly as possible, we'll register an ActionWML tag that calls the dialog and stores an ID in a variable.&lt;br /&gt;
&lt;br /&gt;
=== The Dialog WML ===&lt;br /&gt;
&lt;br /&gt;
First, you need to write your GUI2 WML. We recommend putting the WML in a .cfg file, in a [resolution] tag. Though the resolution tag is not required, using it means you could have multiple versions of the dialog in the same file (for example, a different layout for small screens) and choose between them, if the API is updated to support this in the future (which is likely).&lt;br /&gt;
&lt;br /&gt;
The remainder of this example will assume this code is pasted into a file called &amp;quot;Your_Addon/character_select.cfg&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang='wml'&amp;gt;&lt;br /&gt;
#textdomain wesnoth-gui-example&lt;br /&gt;
{gui/macros} # Built-in macros that are useful for GUI WML; not used in this example &lt;br /&gt;
[resolution]&lt;br /&gt;
  definition = &amp;quot;default&amp;quot;&lt;br /&gt;
  automatic_placement = true&lt;br /&gt;
  vertical_placement = &amp;quot;center&amp;quot;&lt;br /&gt;
  horizontal_placement = &amp;quot;center&amp;quot;&lt;br /&gt;
  maximum_width = 800&lt;br /&gt;
  maximum_height = 600&lt;br /&gt;
  [linked_group]&lt;br /&gt;
    id = &amp;quot;image&amp;quot;&lt;br /&gt;
    fixed_width = true&lt;br /&gt;
  [/linked_group]&lt;br /&gt;
  [linked_group]&lt;br /&gt;
    id = &amp;quot;item&amp;quot;&lt;br /&gt;
    fixed_width = true&lt;br /&gt;
  [/linked_group]&lt;br /&gt;
  [tooltip]&lt;br /&gt;
    id = &amp;quot;tooltip&amp;quot;&lt;br /&gt;
  [/tooltip]&lt;br /&gt;
  [helptip]&lt;br /&gt;
    id = &amp;quot;tooltip&amp;quot;&lt;br /&gt;
  [/helptip]&lt;br /&gt;
  [grid]&lt;br /&gt;
    [row]&lt;br /&gt;
      grow_factor = 0&lt;br /&gt;
        [column]&lt;br /&gt;
          grow_factor = 1&lt;br /&gt;
          border = &amp;quot;all&amp;quot;&lt;br /&gt;
          border_size = 5&lt;br /&gt;
          horizontal_alignment = &amp;quot;left&amp;quot;&lt;br /&gt;
          [label]&lt;br /&gt;
            id =  &amp;quot;title&amp;quot;&lt;br /&gt;
            definition = &amp;quot;title&amp;quot;&lt;br /&gt;
          [/label]&lt;br /&gt;
        [/column]&lt;br /&gt;
      [/row]&lt;br /&gt;
      [row]&lt;br /&gt;
        grow_factor = 0&lt;br /&gt;
        [column]&lt;br /&gt;
          grow_factor = 1&lt;br /&gt;
          border = &amp;quot;all&amp;quot;&lt;br /&gt;
          border_size = 5&lt;br /&gt;
          horizontal_alignment = &amp;quot;left&amp;quot;&lt;br /&gt;
          [scroll_label]&lt;br /&gt;
            id = &amp;quot;message&amp;quot;&lt;br /&gt;
            definition = &amp;quot;default&amp;quot;&lt;br /&gt;
          [/scroll_label]&lt;br /&gt;
        [/column]&lt;br /&gt;
      [/row]&lt;br /&gt;
      [row]&lt;br /&gt;
        grow_factor = 1&lt;br /&gt;
        [column]&lt;br /&gt;
          grow_factor = 1&lt;br /&gt;
          horizontal_grow = true&lt;br /&gt;
          vertical_grow = true&lt;br /&gt;
          border = &amp;quot;all&amp;quot;&lt;br /&gt;
          border_size = 5&lt;br /&gt;
          [listbox]&lt;br /&gt;
            id = &amp;quot;characters&amp;quot;&lt;br /&gt;
            definition = &amp;quot;default&amp;quot;&lt;br /&gt;
            [list_definition]&lt;br /&gt;
              [row]&lt;br /&gt;
                [column]&lt;br /&gt;
                  vertical_grow = true&lt;br /&gt;
                  horizontal_grow = true&lt;br /&gt;
                  [toggle_panel]&lt;br /&gt;
                    definition = &amp;quot;default&amp;quot;&lt;br /&gt;
                    return_value_id = &amp;quot;ok&amp;quot;&lt;br /&gt;
                    [grid]&lt;br /&gt;
                      [row]&lt;br /&gt;
                          [column]&lt;br /&gt;
                            grow_factor = 0&lt;br /&gt;
                            horizontal_grow = false&lt;br /&gt;
                            border = &amp;quot;all&amp;quot;&lt;br /&gt;
                            border_size = 5&lt;br /&gt;
                            [image]&lt;br /&gt;
                              id = &amp;quot;image&amp;quot;&lt;br /&gt;
                              definition = &amp;quot;default&amp;quot;&lt;br /&gt;
                              linked_group = &amp;quot;image&amp;quot;&lt;br /&gt;
                            [/image]&lt;br /&gt;
                          [/column]&lt;br /&gt;
                          [column]&lt;br /&gt;
                            grow_factor = 0&lt;br /&gt;
                            horizontal_grow = false&lt;br /&gt;
                            border = &amp;quot;all&amp;quot;&lt;br /&gt;
                            border_size = 5&lt;br /&gt;
                            [label]&lt;br /&gt;
                              id = &amp;quot;item&amp;quot;&lt;br /&gt;
                              definition = &amp;quot;default&amp;quot;&lt;br /&gt;
                              linked_group = &amp;quot;item&amp;quot;&lt;br /&gt;
                            [/label]&lt;br /&gt;
                          [/column]&lt;br /&gt;
                          [column]&lt;br /&gt;
                            grow_factor = 1&lt;br /&gt;
                            horizontal_grow = true&lt;br /&gt;
                            border = &amp;quot;all&amp;quot;&lt;br /&gt;
                            border_size = 5&lt;br /&gt;
                            [label]&lt;br /&gt;
                              id = &amp;quot;description&amp;quot;&lt;br /&gt;
                              definition = &amp;quot;default&amp;quot;&lt;br /&gt;
                              linked_group = &amp;quot;item&amp;quot;&lt;br /&gt;
                            [/label]&lt;br /&gt;
                          [/column]&lt;br /&gt;
                      [/row]&lt;br /&gt;
                    [/grid]&lt;br /&gt;
                  [/toggle_panel]&lt;br /&gt;
                [/column]&lt;br /&gt;
              [/row]&lt;br /&gt;
            [/list_definition]&lt;br /&gt;
          [/listbox]&lt;br /&gt;
        [/column]&lt;br /&gt;
      [/row]&lt;br /&gt;
      [row]&lt;br /&gt;
        grow_factor = 0&lt;br /&gt;
        [column]&lt;br /&gt;
          horizontal_alignment = &amp;quot;right&amp;quot;&lt;br /&gt;
          [grid]&lt;br /&gt;
            [row]&lt;br /&gt;
              grow_factor = 0&lt;br /&gt;
              [column]&lt;br /&gt;
                border = &amp;quot;all&amp;quot;&lt;br /&gt;
                border_size = 5&lt;br /&gt;
                horizontal_alignment = &amp;quot;right&amp;quot;&lt;br /&gt;
                [button]&lt;br /&gt;
                  id = &amp;quot;ok&amp;quot;&lt;br /&gt;
                  definition = &amp;quot;default&amp;quot;&lt;br /&gt;
                  label = _ &amp;quot;OK&amp;quot;&lt;br /&gt;
                [/button]&lt;br /&gt;
              [/column]&lt;br /&gt;
              [column]&lt;br /&gt;
                border = &amp;quot;all&amp;quot;&lt;br /&gt;
                border_size = 5&lt;br /&gt;
                horizontal_alignment = &amp;quot;right&amp;quot;&lt;br /&gt;
                [button]&lt;br /&gt;
                  id = &amp;quot;cancel&amp;quot;&lt;br /&gt;
                  definition = &amp;quot;default&amp;quot;&lt;br /&gt;
                  label = _ &amp;quot;Cancel&amp;quot;&lt;br /&gt;
                [/button]&lt;br /&gt;
              [/column]&lt;br /&gt;
            [/row]&lt;br /&gt;
          [/grid]&lt;br /&gt;
        [/column]&lt;br /&gt;
      [/row]&lt;br /&gt;
    [/grid]&lt;br /&gt;
[/resolution]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The Implementation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=lua&amp;gt;&lt;br /&gt;
local _ = wesnoth.textdomain &amp;quot;wesnoth-gui-example&amp;quot;&lt;br /&gt;
-- Some sample data for the dialog&lt;br /&gt;
local characters = {&lt;br /&gt;
  {&lt;br /&gt;
    id = &amp;quot;konrad&amp;quot;,&lt;br /&gt;
    name = _ &amp;quot;Konrad&amp;quot;,&lt;br /&gt;
    image = &amp;quot;units/konrad-fighter.png&amp;quot;,&lt;br /&gt;
    description = _ &amp;quot;A bright young prince, skilled with the sword!&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    id = &amp;quot;lisar&amp;quot;,&lt;br /&gt;
    name = _ &amp;quot;Li'sar&amp;quot;,&lt;br /&gt;
    image = &amp;quot;units/human-princess.png~RC(magenta&amp;gt;red)&amp;quot;,&lt;br /&gt;
    description = _ &amp;quot;A bright young princess, skilled with the sword!&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    id = &amp;quot;delfador&amp;quot;,&lt;br /&gt;
    name = _ &amp;quot;Delfador&amp;quot;,&lt;br /&gt;
    image = &amp;quot;units/human-magi/elder-mage.png~RC(magenta&amp;gt;red)&amp;quot;,&lt;br /&gt;
    description = _ &amp;quot;A jaded old mage, wields powerful lightning magic!&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  {&lt;br /&gt;
    id = &amp;quot;kalenz&amp;quot;,&lt;br /&gt;
    name = _ &amp;quot;Kalenz&amp;quot;,&lt;br /&gt;
    image = &amp;quot;units/elves-wood/high-lord.png~RC(magenta&amp;gt;green)&amp;quot;,&lt;br /&gt;
    description = _ &amp;quot;A jaded old mage, wields powerful lightning magic!&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  -- Add more characters here, if you want!&lt;br /&gt;
}&lt;br /&gt;
function wesnoth.wml_actions.select_character(cfg)&lt;br /&gt;
  -- If you uncomment this line you can specify the character options directly in the WML tag.&lt;br /&gt;
  -- Just add a [character] subtag for each character with id, name, image, and description.&lt;br /&gt;
  --local characters = wml.child_array(cfg, 'character')&lt;br /&gt;
  local selection = 1&lt;br /&gt;
  function pre_show(self)&lt;br /&gt;
    -- Set the title and text.&lt;br /&gt;
    -- Normally you'd do this in the WML if they're static text, but for this example we show how you can update them dynamically if needed.&lt;br /&gt;
    self.title.label = _ &amp;quot;Select a Character&amp;quot;&lt;br /&gt;
    self.message.label = _ &amp;quot;Before you get started, you need to select a character.&amp;quot;&lt;br /&gt;
    -- Look up the list box by its ID&lt;br /&gt;
    local listbox = self.characters&lt;br /&gt;
    for i, character in ipairs(characters) do&lt;br /&gt;
      -- Add a new blank item to the list&lt;br /&gt;
      local new_item = listbox:add_item()&lt;br /&gt;
      -- The new item has &amp;quot;image&amp;quot; and &amp;quot;item&amp;quot; subwidgets,&lt;br /&gt;
      -- so set their values appropriately&lt;br /&gt;
      new_item.image.label = character.image&lt;br /&gt;
      new_item.item.label = character.name&lt;br /&gt;
      new_item.description.label = character.description&lt;br /&gt;
    end&lt;br /&gt;
    listbox.selected_index = selection&lt;br /&gt;
  end&lt;br /&gt;
  function post_show(self)&lt;br /&gt;
    selection = self.characters.selected_index&lt;br /&gt;
  end&lt;br /&gt;
  local dialog_wml = wml.load &amp;quot;character_select.cfg&amp;quot;&lt;br /&gt;
  if -1 == gui.show_dialog(wml.get_child(dialog_wml, 'resolution'), pre_show, post_show) then&lt;br /&gt;
    wml.variables.selected_character = characters[selection].id&lt;br /&gt;
  else&lt;br /&gt;
    wml.variables.selected_character = nil&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Celtic Minstrel</name></author>
		
	</entry>
</feed>