The Battle for Wesnoth  1.13.4+dev
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Public Member Functions | Private Member Functions | Private Attributes | List of all members
gui2::tfield< T, W, CT > Class Template Reference

Template class to implement the generic field implementation. More...

#include <field-fwd.hpp>

Inheritance diagram for gui2::tfield< T, W, CT >:
Inheritance graph

Public Member Functions

 tfield (const std::string &id, const bool mandatory, const std::function< T()> &callback_load_value, const std::function< void(CT)> &callback_save_value)
 Constructor. More...
 
 tfield (const std::string &id, const bool mandatory, T &linked_variable)
 Constructor. More...
 
 tfield (const std::string &id, const bool mandatory, const T &value)
 Constructor. More...
 
void widget_restore (twindow &window)
 Inherited from tfield_. More...
 
void set_widget_value (twindow &window, CT value)
 Sets the value of the field. More...
 
void set_cache_value (CT value)
 Sets the value of the field. More...
 
void widget_save (twindow &window)
 Inherited from tfield_. More...
 
get_widget_value (twindow &window)
 Gets the value of the field. More...
 
- Public Member Functions inherited from gui2::tfield_
 tfield_ (const std::string &id, const bool mandatory)
 Constructor. More...
 
virtual ~tfield_ ()
 
void attach_to_window (twindow &window)
 Attaches the field to a window. More...
 
void widget_init (twindow &window)
 Initializes the widget. More...
 
void widget_finalize (twindow &window)
 Finalizes the widget. More...
 
void detach_from_window ()
 Detaches the field from a window. More...
 
void widget_set_enabled (twindow &window, const bool enable, const bool sync)
 Enables a widget. More...
 
const std::stringid () const
 
bool is_mandatory () const
 
tcontrolwidget ()
 
const tcontrolwidget () const
 

Private Member Functions

void init_generic (twindow &window)
 Inherited from tfield_. More...
 
void finalize_generic (twindow &window)
 Inherited from tfield_. More...
 
void validate_widget (twindow &window)
 Test whether the widget exists if the widget is mandatory. More...
 
void save (twindow &window, const bool must_be_active)
 Stores the value in the widget in the interval value_. More...
 
void restore (twindow &window)
 Stores the internal value_ in the widget. More...
 
template<>
void save (twindow &window, const bool must_be_active)
 
template<>
void save (twindow &window, const bool must_be_active)
 
template<>
void restore (twindow &window)
 

Private Attributes

value_
 The value_ of the widget, this value is also available once the widget is destroyed. More...
 
T & link_
 The variable linked to the field. More...
 
std::function< T()> callback_load_value_
 The callback function to load the value. More...
 
std::function< void(CT)> callback_save_value_
 The callback function to save the value. More...
 

Detailed Description

template<class T, class W, class CT>
class gui2::tfield< T, W, CT >

Template class to implement the generic field implementation.

Template Parameters
TThe type of the item to show in the widget.
WThe type of widget to show, this is not a widget class but a behavior class.
CTThe type tp be used in the callback_save_value callback. Normally this is const T but for example with strings it can be const T&. Note the const needs to be in the template otherwise compilation on GCC-4.3 fails (not sure whether compiler bug or not).

Definition at line 36 of file field-fwd.hpp.

Constructor & Destructor Documentation

template<class T, class W, class CT>
gui2::tfield< T, W, CT >::tfield ( const std::string id,
const bool  mandatory,
const std::function< T()> &  callback_load_value,
const std::function< void(CT)> &  callback_save_value 
)
inline

Constructor.

Parameters
idThe id of the widget to connect to the window. A widget can only be connected once.
mandatoryIs the widget mandatory?
callback_load_valueA callback function which is called when the window is shown. This callback returns the initial value of the field.
callback_save_valueA callback function which is called when the window closed with the OK button. The callback is executed with the new value of the field. It's meant to set the value of some variable in the engine after the window is closed with OK.

Definition at line 280 of file field.hpp.

template<class T, class W, class CT>
gui2::tfield< T, W, CT >::tfield ( const std::string id,
const bool  mandatory,
T &  linked_variable 
)
inline

Constructor.

Parameters
idThe id of the widget to connect to the window. A widget can only be connected once.
mandatoryIs the widget mandatory?
linked_variableThe variable which is linked to the field.
  • Upon loading its value is used as initial value of the widget.
  • Upon closing:
    • with OK its value is set to the value of the widget.
    • else, its value is undefined.

Definition at line 307 of file field.hpp.

template<class T, class W, class CT>
gui2::tfield< T, W, CT >::tfield ( const std::string id,
const bool  mandatory,
const T &  value 
)
inline

Constructor.

This version is used for read only variables.

Note
The difference between this constructor and the one above is the sending of the third parameter as const ref instead of a non-const ref. So it feels a bit tricky. Since this constructor is only used for a the tcontrol class and the other constructors not the issue is solved by using static asserts to test whether the proper constructor is used.
Parameters
mandatoryIs the widget mandatory?
idThe id of the widget to connect to the window. A widget can only be connected once.
valueThe value of the widget.

Definition at line 334 of file field.hpp.

Member Function Documentation

template<class T, class W, class CT>
void gui2::tfield< T, W, CT >::finalize_generic ( twindow window)
inlineprivatevirtual

Inherited from tfield_.

Implements gui2::tfield_.

Definition at line 441 of file field.hpp.

template<class T, class W, class CT>
T gui2::tfield< T, W, CT >::get_widget_value ( twindow window)
inline

Gets the value of the field.

This function gets the value of the widget and stores that in the internal cache, then that value is returned.

Deprecated:
Use references to a variable instead.
Parameters
windowThe window containing the widget.
Returns
The current value of the widget.

Definition at line 398 of file field.hpp.

Referenced by gui2::tgame_load::post_show(), gui2::teditor_resize_map::update_expand_direction(), gui2::tcustom_tod::update_lawful_bonus(), and gui2::tmp_create_game::update_map_settings().

template<class T, class W, class CT>
void gui2::tfield< T, W, CT >::init_generic ( twindow window)
inlineprivatevirtual

Inherited from tfield_.

Implements gui2::tfield_.

Definition at line 427 of file field.hpp.

template<class T , class W , class CT >
void gui2::tfield< T, W, CT >::restore ( twindow window)
private
template<>
void gui2::tfield< std::string, tcontrol, const std::string & >::restore ( twindow window)
inlineprivate

Definition at line 537 of file field.hpp.

References gui2::tcontrol::set_label().

template<class T , class W , class CT >
void gui2::tfield< T, W, CT >::save ( twindow window,
const bool  must_be_active 
)
private

Stores the value in the widget in the interval value_.

Parameters
windowThe window containing the widget.
must_be_activeIf true only active widgets will store their value.

Definition at line 491 of file field.hpp.

References gui2::id.

Referenced by gui2::tfield< std::string, ttext_, const std::string & >::finalize_generic(), gui2::tfield< std::string, ttext_, const std::string & >::get_widget_value(), and gui2::tfield< std::string, ttext_, const std::string & >::widget_save().

template<>
void gui2::tfield< bool, tselectable_ >::save ( twindow window,
const bool  must_be_active 
)
inlineprivate

Definition at line 502 of file field.hpp.

References gui2::tselectable_::get_value_bool().

template<>
void gui2::tfield< std::string, tcontrol, const std::string & >::save ( twindow window,
const bool  must_be_active 
)
inlineprivate

Definition at line 514 of file field.hpp.

References gui2::tcontrol::label().

template<class T, class W, class CT>
void gui2::tfield< T, W, CT >::set_cache_value ( CT  value)
inline

Sets the value of the field.

This sets the internal cache value but not the widget value, this can be used to initialize the field.

Parameters
valueThe new value.

Definition at line 375 of file field.hpp.

template<class T, class W, class CT>
void gui2::tfield< T, W, CT >::set_widget_value ( twindow window,
CT  value 
)
inline

Sets the value of the field.

This sets the value in both the internal cache value and in the widget itself.

Parameters
windowThe window containing the widget.
valueThe new value.

Definition at line 361 of file field.hpp.

Referenced by gui2::tmp_create_game::update_map_settings(), and gui2::tcustom_tod::update_selected_tod_info().

template<class T, class W, class CT>
void gui2::tfield< T, W, CT >::validate_widget ( twindow window)
inlineprivate

Test whether the widget exists if the widget is mandatory.

Parameters
windowThe window containing the widget.

Definition at line 465 of file field.hpp.

Referenced by gui2::tfield< std::string, ttext_, const std::string & >::init_generic(), and gui2::tfield< std::string, ttext_, const std::string & >::widget_restore().

template<class T, class W, class CT>
void gui2::tfield< T, W, CT >::widget_restore ( twindow window)
inlinevirtual

Inherited from tfield_.

Implements gui2::tfield_.

Definition at line 345 of file field.hpp.

template<class T, class W, class CT>
void gui2::tfield< T, W, CT >::widget_save ( twindow window)
inlinevirtual

Inherited from tfield_.

Implements gui2::tfield_.

Definition at line 381 of file field.hpp.

Member Data Documentation

template<class T, class W, class CT>
std::function<T()> gui2::tfield< T, W, CT >::callback_load_value_
private

The callback function to load the value.

This is used to load the initial value of the widget, if defined.

Definition at line 424 of file field.hpp.

Referenced by gui2::tfield< std::string, ttext_, const std::string & >::init_generic().

template<class T, class W, class CT>
std::function<void(CT)> gui2::tfield< T, W, CT >::callback_save_value_
private

The callback function to save the value.

Once the dialog has been successful this function is used to store the result of this widget.

Definition at line 458 of file field.hpp.

Referenced by gui2::tfield< std::string, ttext_, const std::string & >::finalize_generic().

template<class T, class W, class CT>
T& gui2::tfield< T, W, CT >::link_
private

The variable linked to the field.

When set determines the initial value and the final value is stored here in the finallizer.

Definition at line 417 of file field.hpp.

Referenced by gui2::tfield< std::string, ttext_, const std::string & >::init_generic().

template<class T, class W, class CT>
T gui2::tfield< T, W, CT >::value_
private

The documentation for this class was generated from the following files: