The Battle for Wesnoth  1.13.10+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::field_base Class Referenceabstract

Abstract base class for the fields. More...

#include <field.hpp>

Inheritance diagram for gui2::field_base:
Inheritance graph

Public Member Functions

 field_base (const std::string &id, const bool mandatory)
 Constructor. More...
 
virtual ~field_base ()
 
void attach_to_window (window &window)
 Attaches the field to a window. More...
 
void widget_init (window &window)
 Initializes the widget. More...
 
void widget_finalize (window &window)
 Finalizes the widget. More...
 
void detach_from_window ()
 Detaches the field from a window. More...
 
virtual void widget_save (window &window)=0
 Saves a widget. More...
 
virtual void widget_restore (window &window)=0
 Restores a widget. More...
 
void widget_set_enabled (window &window, const bool enable, const bool sync)
 Enables a widget. More...
 
const std::string & id () const
 
bool is_mandatory () const
 
styled_widgetget_widget ()
 
const styled_widgetget_widget () const
 

Private Member Functions

virtual void init_generic (window &window)=0
 See widget_init. More...
 
virtual void init_specialized (window &)
 See widget_init. More...
 
virtual void finalize_generic (window &window)=0
 See widget_finalize. More...
 
virtual void finalize_specialized (window &)
 See widget_finalize. More...
 

Private Attributes

const std::string id_
 The id field of the widget, should be unique in a window. More...
 
const bool mandatory_
 Is the widget optional or mandatory in this window. More...
 
styled_widgetwidget_
 The widget attached to the field. More...
 

Detailed Description

Abstract base class for the fields.

Note
In this context a widget is a gui2::styled_widget and not a gui2::widget. This name widget is a generic name and fits, however some functions used are first declared in a styled_widget.

Definition at line 43 of file field.hpp.

Constructor & Destructor Documentation

gui2::field_base::field_base ( const std::string &  id,
const bool  mandatory 
)
inline

Constructor.

Parameters
idThe id of the widget to connect to the window. A widget can only be connected once.
mandatoryIs the widget mandatory

Definition at line 53 of file field.hpp.

virtual gui2::field_base::~field_base ( )
inlinevirtual

Definition at line 58 of file field.hpp.

Member Function Documentation

void gui2::field_base::attach_to_window ( window window)
inline

Attaches the field to a window.

When attached the widget which we're a wrapper around is stored linked in here.

Warning
After attaching the window must remain a valid. Before the window is destroyed the detach_from_window function must be called.
Todo:
Most functions that have a window parameter only use it to get the widget. Evaluate and remove the window parameter where applicable.
Precondition
widget_ == nullptr
Parameters
windowThe window to be attached to.

Definition at line 78 of file field.hpp.

References id(), mandatory_, and widget_.

Referenced by gui2::dialogs::modal_dialog::init_fields().

void gui2::field_base::detach_from_window ( )
inline

Detaches the field from a window.

Precondition
widget_ != nullptr || !mandatory_

Definition at line 132 of file field.hpp.

References mandatory_, and widget_.

Referenced by gui2::dialogs::modal_dialog::finalize_fields().

virtual void gui2::field_base::finalize_generic ( window window)
privatepure virtual
virtual void gui2::field_base::finalize_specialized ( window )
inlineprivatevirtual

See widget_finalize.

Reimplemented in gui2::field_text.

Definition at line 239 of file field.hpp.

Referenced by widget_finalize().

styled_widget* gui2::field_base::get_widget ( )
inline
const styled_widget* gui2::field_base::get_widget ( ) const
inline

Definition at line 212 of file field.hpp.

References widget_.

const std::string& gui2::field_base::id ( ) const
inline
virtual void gui2::field_base::init_generic ( window window)
privatepure virtual
virtual void gui2::field_base::init_specialized ( window )
inlineprivatevirtual

See widget_init.

Reimplemented in gui2::field_label, and gui2::field_bool.

Definition at line 231 of file field.hpp.

Referenced by widget_init().

bool gui2::field_base::is_mandatory ( ) const
inline
void gui2::field_base::widget_finalize ( window window)
inline

Finalizes the widget.

This routine is called after the dialog is closed with OK. It's called before post_show(). This routine does the following:

  • if no active widget available exit.
  • if a setter is defined the widget value is saved in the setter.
  • The widget value is saved in value_.

Like widget_init it calls two functions with the same purpose.

Parameters
windowThe window containing the widget.

Definition at line 121 of file field.hpp.

References finalize_generic(), and finalize_specialized().

Referenced by gui2::dialogs::modal_dialog::finalize_fields().

void gui2::field_base::widget_init ( window window)
inline

Initializes the widget.

This routine is called before the dialog is shown and the pre_show() is called. So the user can override the values set. This routine does the following:

  • If no widget available exit gives feedback it the widget must exist.
  • If a getter is defined we use to set value_ and the widget.
  • If no setter is defined we use the widget value to set value_.

The function calls two functions

  • init_generic which is to be used in the template subclass.
  • init_specialized which is to be used in subclasses of the template class. This way they can override this function without to use their signature to inherit.
Parameters
windowThe window containing the widget.

Definition at line 102 of file field.hpp.

References init_generic(), and init_specialized().

Referenced by gui2::dialogs::modal_dialog::init_fields().

virtual void gui2::field_base::widget_restore ( window window)
pure virtual

Restores a widget.

See widget_save for more info.

Parameters
windowThe window containing the widget.

Implemented in gui2::field< T, W, CT >, gui2::field< bool, selectable_item >, gui2::field< std::string, styled_widget, const std::string & >, and gui2::field< std::string, text_box_base, const std::string & >.

Referenced by widget_set_enabled().

virtual void gui2::field_base::widget_save ( window window)
pure virtual

Saves a widget.

It can be a window must be recreated, in that case the state needs to be saved and restored. This routine does the following:

  • if no widget available exit (doesn't look at the active state).
  • The widget value is saved in value_.
Parameters
windowThe window containing the widget.

Implemented in gui2::field< T, W, CT >, gui2::field< bool, selectable_item >, gui2::field< std::string, styled_widget, const std::string & >, and gui2::field< std::string, text_box_base, const std::string & >.

Referenced by widget_set_enabled().

void gui2::field_base::widget_set_enabled ( window window,
const bool  enable,
const bool  sync 
)
inline

Enables a widget.

Parameters
windowThe window containing the widget.
enableIf true enables the widget, disables otherwise.
syncIf the state is changed do we need to synchronize. Upon disabling, write the value of the widget in the variable value_. Upon enabling write the value of value_ in the widget.

Definition at line 171 of file field.hpp.

References gui2::window::find(), gui2::styled_widget::get_active(), gui2::styled_widget::set_active(), widget_restore(), and widget_save().

Referenced by gui2::dialogs::mp_create_game::update_map_settings().

Member Data Documentation

const std::string gui2::field_base::id_
private

The id field of the widget, should be unique in a window.

Definition at line 219 of file field.hpp.

Referenced by id().

const bool gui2::field_base::mandatory_
private

Is the widget optional or mandatory in this window.

Definition at line 222 of file field.hpp.

Referenced by attach_to_window(), detach_from_window(), and is_mandatory().

styled_widget* gui2::field_base::widget_
private

The widget attached to the field.

Definition at line 225 of file field.hpp.

Referenced by attach_to_window(), detach_from_window(), and get_widget().


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