The Battle for Wesnoth  1.19.0-dev
Classes | Namespaces | Macros | Typedefs | Functions | Variables
lua_widget_attributes.cpp File Reference
#include "gui/auxiliary/iterator/iterator.hpp"
#include "gui/widgets/clickable_item.hpp"
#include "gui/widgets/styled_widget.hpp"
#include "gui/widgets/listbox.hpp"
#include "gui/widgets/multi_page.hpp"
#include "gui/widgets/progress_bar.hpp"
#include "gui/widgets/selectable_item.hpp"
#include "gui/widgets/slider.hpp"
#include "gui/widgets/stacked_widget.hpp"
#include "gui/widgets/text_box.hpp"
#include "gui/widgets/tree_view.hpp"
#include "gui/widgets/tree_view_node.hpp"
#include "gui/widgets/unit_preview_pane.hpp"
#include "gui/widgets/widget.hpp"
#include "gui/widgets/window.hpp"
#include "log.hpp"
#include "scripting/lua_common.hpp"
#include "scripting/lua_kernel_base.hpp"
#include "scripting/lua_unit.hpp"
#include "scripting/lua_unit_type.hpp"
#include "scripting/push_check.hpp"
#include "scripting/lua_widget.hpp"
#include "scripting/lua_widget_attributes.hpp"
#include "serialization/string_utils.hpp"
#include <functional>
#include <boost/preprocessor/cat.hpp>
#include <map>
#include <utility>
#include <vector>
Include dependency graph for lua_widget_attributes.cpp:

Go to the source code of this file.

Classes

struct  widget_getter< widget_type, value_type >
 
struct  widget_setter< widget_type, value_type >
 

Namespaces

 lua_widget
 

Macros

#define ERR_LUA   LOG_STREAM(err, log_scripting_lua)
 
#define WIDGET_GETTER4(name, value_type, widgt_type, id)
 
#define WIDGET_SETTER4(name, value_type, widgt_type, id)
 
#define WIDGET_GETTER(name, value_type, widgt_type)   WIDGET_GETTER4(name, value_type, widgt_type, __LINE__)
 
#define WIDGET_SETTER(name, value_type, widgt_type)   WIDGET_SETTER4(name, value_type, widgt_type, __LINE__)
 

Typedefs

using tgetters = std::map< std::string, std::vector< std::function< bool(lua_State *, gui2::widget &, bool)> >>
 
using tsetters = std::map< std::string, std::vector< std::function< bool(lua_State *, int, gui2::widget &, bool)> >>
 

Functions

static gui2::widgetfind_child_by_index (gui2::widget &w, int i)
 
static gui2::widgetfind_child_by_name (gui2::widget &w, const std::string &m)
 
template<typename widget_type , typename value_type , typename action_type , bool setter>
void register_widget_attribute (const char *name)
 
 WIDGET_GETTER ("value_compat,selected_index", int, gui2::listbox)
 CLASSIC. More...
 
 WIDGET_SETTER ("value_compat,selected_index", int, gui2::listbox)
 
 WIDGET_GETTER ("value_compat,selected_index", int, gui2::multi_page)
 
 WIDGET_SETTER ("value_compat,selected_index", int, gui2::multi_page)
 
 WIDGET_GETTER ("value_compat,selected_index", int, gui2::stacked_widget)
 
 WIDGET_SETTER ("value_compat,selected_index", int, gui2::stacked_widget)
 
 WIDGET_GETTER ("selected_index", int, gui2::selectable_item)
 
 WIDGET_SETTER ("selected_index", int, gui2::selectable_item)
 
 WIDGET_GETTER ("value_compat,selected", bool, gui2::selectable_item)
 
 WIDGET_SETTER ("value_compat,selected", bool, gui2::selectable_item)
 
 WIDGET_GETTER ("value_compat,text", std::string, gui2::text_box)
 
 WIDGET_SETTER ("value_compat,text", std::string, gui2::text_box)
 
 WIDGET_GETTER ("value_compat,value", int, gui2::slider)
 
 WIDGET_SETTER ("value_compat,value", int, gui2::slider)
 
 WIDGET_GETTER ("max_value", int, gui2::slider)
 
 WIDGET_SETTER ("max_value", int, gui2::slider)
 
 WIDGET_GETTER ("min_value", int, gui2::slider)
 
 WIDGET_SETTER ("min_value", int, gui2::slider)
 
 WIDGET_GETTER ("value_compat,percentage", int, gui2::progress_bar)
 
 WIDGET_SETTER ("value_compat,percentage", int, gui2::progress_bar)
 
 WIDGET_GETTER ("value_compat,selected_item_path", std::vector< int >, gui2::tree_view)
 
 WIDGET_GETTER ("path", std::vector< int >, gui2::tree_view_node)
 
 WIDGET_SETTER ("value_compat,unfolded", bool, gui2::tree_view_node)
 
 WIDGET_SETTER ("value_compat,unit", lua_index_raw, gui2::unit_preview_pane)
 
 WIDGET_GETTER ("item_count", int, gui2::multi_page)
 
 WIDGET_GETTER ("item_count", int, gui2::listbox)
 
 WIDGET_SETTER ("use_markup", bool, gui2::styled_widget)
 
 WIDGET_SETTER ("marked_up_text", t_string, gui2::styled_widget)
 
 WIDGET_SETTER ("enabled", bool, gui2::styled_widget)
 
 WIDGET_SETTER ("tooltip", t_string, gui2::styled_widget)
 
 WIDGET_SETTER ("callback", lua_index_raw, gui2::widget)
 
 WIDGET_SETTER ("visible", lua_index_raw, gui2::styled_widget)
 
 WIDGET_SETTER ("value_compat,label", t_string, gui2::styled_widget)
 
 WIDGET_GETTER ("type", std::string, gui2::widget)
 
int lua_widget::impl_widget_get (lua_State *L)
 
int lua_widget::impl_widget_set (lua_State *L)
 
int lua_widget::impl_widget_dir (lua_State *L)
 

Variables

static lg::log_domain log_scripting_lua ("scripting/lua")
 
static tgetters getters
 
static tsetters setters
 

Macro Definition Documentation

◆ ERR_LUA

#define ERR_LUA   LOG_STREAM(err, log_scripting_lua)

Definition at line 51 of file lua_widget_attributes.cpp.

◆ WIDGET_GETTER

#define WIDGET_GETTER (   name,
  value_type,
  widgt_type 
)    WIDGET_GETTER4(name, value_type, widgt_type, __LINE__)
Parameters
namestring comma seperated list
value_typethe type of the attribute, for example int or std::string
widgt_typethe type of the widget, for example gui2::listbox

Definition at line 186 of file lua_widget_attributes.cpp.

◆ WIDGET_GETTER4

#define WIDGET_GETTER4 (   name,
  value_type,
  widgt_type,
  id 
)
Value:
struct BOOST_PP_CAT(getter_, id) : public widget_getter<widgt_type, value_type> { \
value_type get(lua_State* L, widgt_type& w) const override; \
}; \
struct BOOST_PP_CAT(getter_adder_, id) { \
BOOST_PP_CAT(getter_adder_, id) () \
{ \
register_widget_attribute<widgt_type, value_type, BOOST_PP_CAT(getter_, id), false>(name); \
} \
}; \
static BOOST_PP_CAT(getter_adder_, id) BOOST_PP_CAT(getter_adder_instance_, id) ; \
value_type BOOST_PP_CAT(getter_, id)::get([[maybe_unused]] lua_State* L, widgt_type& w) const
int w
std::string id
Text to match against addon_info.tags()
Definition: manager.cpp:207
CURSOR_TYPE get()
Definition: cursor.cpp:216

Definition at line 153 of file lua_widget_attributes.cpp.

◆ WIDGET_SETTER

#define WIDGET_SETTER (   name,
  value_type,
  widgt_type 
)    WIDGET_SETTER4(name, value_type, widgt_type, __LINE__)

Definition at line 188 of file lua_widget_attributes.cpp.

◆ WIDGET_SETTER4

#define WIDGET_SETTER4 (   name,
  value_type,
  widgt_type,
  id 
)
Value:
struct BOOST_PP_CAT(setter_, id) : public widget_setter<widgt_type, value_type> { \
void set(lua_State* L, widgt_type& w, const value_type& value) const override; \
}; \
struct BOOST_PP_CAT(setter_adder_, id) { \
BOOST_PP_CAT(setter_adder_, id) ()\
{ \
register_widget_attribute<widgt_type, value_type, BOOST_PP_CAT(setter_, id), true>(name); \
} \
}; \
static BOOST_PP_CAT(setter_adder_, id) BOOST_PP_CAT(setter_adder_instance_, id); \
void BOOST_PP_CAT(setter_, id)::set([[maybe_unused]] lua_State* L, widgt_type& w, const value_type& value) const
void set(CURSOR_TYPE type)
Use the default parameter to reset cursors.
Definition: cursor.cpp:176

Definition at line 167 of file lua_widget_attributes.cpp.

Typedef Documentation

◆ tgetters

using tgetters = std::map<std::string, std::vector<std::function<bool(lua_State*, gui2::widget&, bool)> >>

Definition at line 100 of file lua_widget_attributes.cpp.

◆ tsetters

using tsetters = std::map<std::string, std::vector<std::function<bool(lua_State*, int, gui2::widget&, bool)> >>

Definition at line 103 of file lua_widget_attributes.cpp.

Function Documentation

◆ find_child_by_index()

static gui2::widget* find_child_by_index ( gui2::widget w,
int  i 
)
static

◆ find_child_by_name()

static gui2::widget* find_child_by_name ( gui2::widget w,
const std::string &  m 
)
static

Definition at line 95 of file lua_widget_attributes.cpp.

References w.

Referenced by lua_widget::impl_widget_get().

◆ register_widget_attribute()

template<typename widget_type , typename value_type , typename action_type , bool setter>
void register_widget_attribute ( const char *  name)

Definition at line 121 of file lua_widget_attributes.cpp.

References getters, lua_push(), setters, utils::split_foreach(), and w.

◆ WIDGET_GETTER() [1/15]

WIDGET_GETTER ( "item_count"  ,
int  ,
gui2::listbox   
)

Definition at line 338 of file lua_widget_attributes.cpp.

References w.

◆ WIDGET_GETTER() [2/15]

WIDGET_GETTER ( "item_count"  ,
int  ,
gui2::multi_page   
)

Definition at line 333 of file lua_widget_attributes.cpp.

References w.

◆ WIDGET_GETTER() [3/15]

WIDGET_GETTER ( "max_value"  ,
int  ,
gui2::slider   
)

Definition at line 269 of file lua_widget_attributes.cpp.

References w.

◆ WIDGET_GETTER() [4/15]

WIDGET_GETTER ( "min_value"  ,
int  ,
gui2::slider   
)

Definition at line 279 of file lua_widget_attributes.cpp.

References w.

◆ WIDGET_GETTER() [5/15]

WIDGET_GETTER ( "path"  ,
std::vector< int >  ,
gui2::tree_view_node   
)

Definition at line 306 of file lua_widget_attributes.cpp.

References a, and w.

◆ WIDGET_GETTER() [6/15]

WIDGET_GETTER ( "selected_index"  ,
int  ,
gui2::selectable_item   
)

Definition at line 223 of file lua_widget_attributes.cpp.

References w.

◆ WIDGET_GETTER() [7/15]

WIDGET_GETTER ( "type"  ,
std::string  ,
gui2::widget   
)

Definition at line 432 of file lua_widget_attributes.cpp.

References sw, and w.

◆ WIDGET_GETTER() [8/15]

WIDGET_GETTER ( value_compat,
percentage"  ,
int  ,
gui2::progress_bar   
)

Definition at line 289 of file lua_widget_attributes.cpp.

References w.

◆ WIDGET_GETTER() [9/15]

WIDGET_GETTER ( value_compat,
selected"  ,
bool  ,
gui2::selectable_item   
)

Definition at line 236 of file lua_widget_attributes.cpp.

References w.

◆ WIDGET_GETTER() [10/15]

WIDGET_GETTER ( value_compat,
selected_index"  ,
int  ,
gui2::listbox   
)

CLASSIC.

Definition at line 193 of file lua_widget_attributes.cpp.

References w.

◆ WIDGET_GETTER() [11/15]

WIDGET_GETTER ( value_compat,
selected_index"  ,
int  ,
gui2::multi_page   
)

Definition at line 203 of file lua_widget_attributes.cpp.

References w.

◆ WIDGET_GETTER() [12/15]

WIDGET_GETTER ( value_compat,
selected_index"  ,
int  ,
gui2::stacked_widget   
)

Definition at line 213 of file lua_widget_attributes.cpp.

References w.

◆ WIDGET_GETTER() [13/15]

WIDGET_GETTER ( value_compat,
selected_item_path"  ,
std::vector< int >  ,
gui2::tree_view   
)

Definition at line 299 of file lua_widget_attributes.cpp.

References a, and w.

◆ WIDGET_GETTER() [14/15]

WIDGET_GETTER ( value_compat,
text"  ,
std::string  ,
gui2::text_box   
)

Definition at line 249 of file lua_widget_attributes.cpp.

References w.

◆ WIDGET_GETTER() [15/15]

WIDGET_GETTER ( value_compat,
value"  ,
int  ,
gui2::slider   
)

Definition at line 259 of file lua_widget_attributes.cpp.

References w.

◆ WIDGET_SETTER() [1/19]

WIDGET_SETTER ( "callback"  ,
lua_index_raw  ,
gui2::widget   
)

Definition at line 369 of file lua_widget_attributes.cpp.

References ERR_LUA, luaW_getglobal(), luaW_pushwidget(), and w.

◆ WIDGET_SETTER() [2/19]

WIDGET_SETTER ( "enabled"  ,
bool  ,
gui2::styled_widget   
)

Definition at line 358 of file lua_widget_attributes.cpp.

References w.

◆ WIDGET_SETTER() [3/19]

WIDGET_SETTER ( "marked_up_text"  ,
t_string  ,
gui2::styled_widget   
)

Definition at line 352 of file lua_widget_attributes.cpp.

References w.

◆ WIDGET_SETTER() [4/19]

WIDGET_SETTER ( "max_value"  ,
int  ,
gui2::slider   
)

Definition at line 274 of file lua_widget_attributes.cpp.

References w.

◆ WIDGET_SETTER() [5/19]

WIDGET_SETTER ( "min_value"  ,
int  ,
gui2::slider   
)

Definition at line 284 of file lua_widget_attributes.cpp.

References w.

◆ WIDGET_SETTER() [6/19]

WIDGET_SETTER ( "selected_index"  ,
int  ,
gui2::selectable_item   
)

Definition at line 228 of file lua_widget_attributes.cpp.

References w.

◆ WIDGET_SETTER() [7/19]

WIDGET_SETTER ( "tooltip"  ,
t_string  ,
gui2::styled_widget   
)

Definition at line 363 of file lua_widget_attributes.cpp.

References w.

◆ WIDGET_SETTER() [8/19]

WIDGET_SETTER ( "use_markup"  ,
bool  ,
gui2::styled_widget   
)

Definition at line 343 of file lua_widget_attributes.cpp.

References w.

◆ WIDGET_SETTER() [9/19]

WIDGET_SETTER ( value_compat,
label ,
t_string  ,
gui2::styled_widget   
)

Definition at line 423 of file lua_widget_attributes.cpp.

References gui2::window::invalidate_layout(), and w.

◆ WIDGET_SETTER() [10/19]

WIDGET_SETTER ( value_compat,
percentage"  ,
int  ,
gui2::progress_bar   
)

Definition at line 294 of file lua_widget_attributes.cpp.

References w.

◆ WIDGET_SETTER() [11/19]

WIDGET_SETTER ( value_compat,
selected"  ,
bool  ,
gui2::selectable_item   
)

Definition at line 244 of file lua_widget_attributes.cpp.

References w.

◆ WIDGET_SETTER() [12/19]

WIDGET_SETTER ( value_compat,
selected_index"  ,
int  ,
gui2::listbox   
)

Definition at line 198 of file lua_widget_attributes.cpp.

References w.

◆ WIDGET_SETTER() [13/19]

WIDGET_SETTER ( value_compat,
selected_index"  ,
int  ,
gui2::multi_page   
)

Definition at line 208 of file lua_widget_attributes.cpp.

References w.

◆ WIDGET_SETTER() [14/19]

WIDGET_SETTER ( value_compat,
selected_index"  ,
int  ,
gui2::stacked_widget   
)

Definition at line 218 of file lua_widget_attributes.cpp.

References w.

◆ WIDGET_SETTER() [15/19]

WIDGET_SETTER ( value_compat,
text"  ,
std::string  ,
gui2::text_box   
)

Definition at line 254 of file lua_widget_attributes.cpp.

References w.

◆ WIDGET_SETTER() [16/19]

WIDGET_SETTER ( value_compat,
unfolded"  ,
bool  ,
gui2::tree_view_node   
)

Definition at line 313 of file lua_widget_attributes.cpp.

References w.

◆ WIDGET_SETTER() [17/19]

WIDGET_SETTER ( value_compat,
unit ,
lua_index_raw  ,
gui2::unit_preview_pane   
)

Definition at line 322 of file lua_widget_attributes.cpp.

References luaW_tounit(), luaW_tounittype(), luaW_type_error(), and w.

◆ WIDGET_SETTER() [18/19]

WIDGET_SETTER ( value_compat,
value"  ,
int  ,
gui2::slider   
)

Definition at line 264 of file lua_widget_attributes.cpp.

References w.

◆ WIDGET_SETTER() [19/19]

WIDGET_SETTER ( "visible"  ,
lua_index_raw  ,
gui2::styled_widget   
)

Variable Documentation

◆ getters

tgetters getters
static

◆ log_scripting_lua

lg::log_domain log_scripting_lua("scripting/lua") ( "scripting/lua"  )
static

◆ setters

tsetters setters
static