The Battle for Wesnoth  1.13.4+dev
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Public Types | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
gui2::ttree_view Class Reference

#include <tree_view.hpp>

Inheritance diagram for gui2::ttree_view:
Inheritance graph

Public Types

typedef implementation::ttree_node tnode_definition
 
- Public Types inherited from gui2::tscrollbar_container
enum  tscrollbar_mode { always_visible, always_invisible, auto_visible, auto_visible_first_run }
 The way to handle the showing or hiding of the scrollbar. More...
 
- Public Types inherited from gui2::event::tdispatcher
enum  tevent_type { pre = 1, child = 2, post = 4 }
 
enum  tposition {
  front_pre_child, back_pre_child, front_child, back_child,
  front_post_child, back_post_child
}
 The position where to add a new callback in the signal handler. More...
 
enum  tmouse_behavior { all, hit, none }
 The behavior of the mouse events. More...
 

Public Member Functions

 ttree_view (const std::vector< tnode_definition > &node_definitions)
 
ttree_view_nodeget_root_node ()
 
ttree_view_nodeadd_node (const std::string &id, const std::map< std::string, string_map > &data)
 
void remove_node (ttree_view_node *tree_view_node)
 
virtual void child_populate_dirty_list (twindow &caller, const std::vector< twidget * > &call_stack) override
 See twidget::child_populate_dirty_list. More...
 
virtual void set_self_active (const bool active) override
 See tcontainer_::set_self_active. More...
 
bool empty () const
 
virtual void layout_children () override
 See twidget::layout_children. More...
 
void set_indention_step_size (const unsigned indention_step_size)
 
ttree_view_nodeselected_item ()
 
const ttree_view_nodeselected_item () const
 
void set_selection_change_callback (std::function< void(twidget &)> callback)
 
- Public Member Functions inherited from gui2::tscrollbar_container
 tscrollbar_container (const unsigned canvas_count)
 
 ~tscrollbar_container ()
 
virtual void layout_initialise (const bool full_initialisation) override
 See twidget::layout_initialise. More...
 
virtual void request_reduce_height (const unsigned maximum_height) override
 See twidget::request_reduce_height. More...
 
virtual void request_reduce_width (const unsigned maximum_width) override
 See twidget::request_reduce_width. More...
 
virtual bool can_wrap () const override
 See twidget::can_wrap. More...
 
virtual void place (const tpoint &origin, const tpoint &size) override
 See twidget::place. More...
 
virtual void set_origin (const tpoint &origin) override
 See twidget::set_origin. More...
 
virtual void set_visible_rectangle (const SDL_Rect &rectangle) override
 See twidget::set_visible_rectangle. More...
 
virtual bool get_active () const override
 See tcontrol::get_active. More...
 
virtual unsigned get_state () const override
 See tcontrol::get_state. More...
 
virtual twidgetfind_at (const tpoint &coordinate, const bool must_be_active) override
 See twidget::find_at. More...
 
virtual const twidgetfind_at (const tpoint &coordinate, const bool must_be_active) const override
 See twidget::find_at. More...
 
twidgetfind (const std::string &id, const bool must_be_active) override
 See twidget::find. More...
 
const twidgetfind (const std::string &id, const bool must_be_active) const override
 See twidget::find. More...
 
bool disable_click_dismiss () const override
 See twidget::disable_click_dismiss. More...
 
void set_vertical_scrollbar_mode (const tscrollbar_mode scrollbar_mode)
 
tscrollbar_mode get_vertical_scrollbar_mode () const
 
void set_horizontal_scrollbar_mode (const tscrollbar_mode scrollbar_mode)
 
tscrollbar_mode get_horizontal_scrollbar_mode () const
 
tgridcontent_grid ()
 
const tgridcontent_grid () const
 
const SDL_Rect & content_visible_area () const
 
bool vertical_scrollbar_at_end ()
 
unsigned get_vertical_scrollbar_item_position () const
 Returns current position of the vertical scrollbar. More...
 
void set_vertical_scrollbar_item_position (const unsigned position)
 Move the vertical scrollbar to a position. More...
 
void scroll_vertical_scrollbar (const tscrollbar_::tscroll scroll)
 Scrolls the vertical scrollbar. More...
 
void scroll_horizontal_scrollbar (const tscrollbar_::tscroll scroll)
 Scrolls the horizontal scrollbar. More...
 
void vertical_scrollbar_moved ()
 Callback when the scrollbar moves (NOTE maybe only one callback needed). More...
 
void horizontal_scrollbar_moved ()
 
- Public Member Functions inherited from gui2::tcontainer_
 tcontainer_ (const unsigned canvas_count)
 
virtual SDL_Rect get_client_rect () const
 Returns the client rect. More...
 
void reduce_width (const unsigned maximum_width)
 Tries to reduce the width of a container. More...
 
virtual void demand_reduce_width (const unsigned maximum_width) override
 See twidget::demand_reduce_width. More...
 
void reduce_height (const unsigned maximum_height)
 Tries to reduce the height of a container. More...
 
virtual void demand_reduce_height (const unsigned maximum_height) override
 See twidget::demand_reduce_height. More...
 
virtual bool has_widget (const twidget &widget) const override
 See twidget::has_widget. More...
 
virtual void set_active (const bool active) override
 See tcontrol::set_active. More...
 
virtual iterator::twalker_create_walker () override
 See twidget::create_walker. More...
 
void init_grid (const boost::intrusive_ptr< tbuilder_grid > &grid_builder)
 Initializes and builds the grid. More...
 
tgrid::iterator begin ()
 
tgrid::iterator end ()
 
unsigned add_row (const unsigned count=1)
 
void set_rows (const unsigned rows)
 
unsigned int get_rows () const
 
void set_cols (const unsigned cols)
 
unsigned int get_cols () const
 
void set_rows_cols (const unsigned rows, const unsigned cols)
 
void set_child (twidget *widget, const unsigned row, const unsigned col, const unsigned flags, const unsigned border_size)
 
void set_row_grow_factor (const unsigned row, const unsigned factor)
 
void set_column_grow_factor (const unsigned column, const unsigned factor)
 
const tgridgrid () const
 
tgridgrid ()
 
- Public Member Functions inherited from gui2::tcontrol
 tcontrol (const unsigned canvas_count)
 
 tcontrol (const implementation::tbuilder_control &builder, const unsigned canvas_count, const std::string &control_type)
 Constructor. More...
 
virtual void set_members (const string_map &data)
 Sets the members of the control. More...
 
tpoint get_config_minimum_size () const
 Gets the minimum size as defined in the config. More...
 
tpoint get_config_default_size () const
 Gets the default size as defined in the config. More...
 
tpoint get_config_maximum_size () const
 Gets the best size as defined in the config. More...
 
virtual unsigned get_characters_per_line () const
 Returns the number of characters per line. More...
 
virtual bool get_link_aware () const
 Returns whether the label should be link_aware, in in rendering and in searching for links with get_link. More...
 
virtual std::string get_link_color () const
 Returns the color string to be used with links. More...
 
void set_definition (const std::string &definition)
 Sets the definition. More...
 
bool get_use_tooltip_on_label_overflow () const
 
void set_use_tooltip_on_label_overflow (const bool use_tooltip=true)
 
const t_stringlabel () const
 
virtual void set_label (const t_string &label)
 
virtual void set_use_markup (bool use_markup)
 
bool get_use_markup () const
 
const t_stringtooltip () const
 
void set_tooltip (const t_string &tooltip)
 
const t_stringhelp_message () const
 
void set_help_message (const t_string &help_message)
 
std::vector< tcanvas > & canvas ()
 
tcanvascanvas (const unsigned index)
 
void set_text_alignment (const PangoAlignment text_alignment)
 
PangoAlignment get_text_alignment () const
 
- Public Member Functions inherited from gui2::twidget
 twidget ()
 
 twidget (const tbuilder_widget &builder)
 Constructor. More...
 
virtual ~twidget () override
 
void set_id (const std::string &id)
 
const std::stringid () const
 
twindowget_window ()
 Get the parent window. More...
 
const twindowget_window () const
 The constant version of get_window. More...
 
tdialogdialog ()
 Returns the top-level dialogue. More...
 
void set_parent (twidget *parent)
 
twidgetparent ()
 
tpoint get_best_size () const
 Gets the best size for the widget. More...
 
virtual bool can_mouse_focus () const
 Whether the mouse move/click event go 'through' this widget. More...
 
virtual void set_size (const tpoint &size)
 Sets the size of the widget. More...
 
virtual void move (const int x_offset, const int y_offset)
 Moves a widget. More...
 
tpoint get_origin () const
 Returns the screen origin of the widget. More...
 
tpoint get_size () const
 Returns the size of the widget. More...
 
SDL_Rect get_rectangle () const
 Gets the bounding rectangle of the widget on the screen. More...
 
int get_x () const
 
int get_y () const
 
unsigned get_width () const
 
unsigned get_height () const
 
void set_linked_group (const std::string &linked_group)
 
SDL_Rect calculate_blitting_rectangle (const int x_offset, const int y_offset)
 Calculates the blitting rectangle of the widget. More...
 
SDL_Rect calculate_clipping_rectangle (const int x_offset, const int y_offset)
 Calculates the clipping rectangle of the widget. More...
 
void draw_background (surface &frame_buffer, int x_offset, int y_offset)
 Draws the background of a widget. More...
 
void draw_children (surface &frame_buffer, int x_offset, int y_offset)
 Draws the children of a widget. More...
 
void draw_foreground (surface &frame_buffer, int x_offset, int y_offset)
 Draws the foreground of the widget. More...
 
void populate_dirty_list (twindow &caller, std::vector< twidget * > &call_stack)
 Adds a widget to the dirty list if it is dirty. More...
 
SDL_Rect get_dirty_rectangle () const
 Gets the dirty rectangle of the widget. More...
 
void set_is_dirty (const bool is_dirty)
 
bool get_is_dirty () const
 
void set_visible (const tvisible::scoped_enum visible)
 
tvisible::scoped_enum get_visible () const
 
tredraw_action::scoped_enum get_drawing_action () const
 
void set_debug_border_mode (const unsigned debug_border_mode)
 
void set_debug_border_colour (const unsigned debug_border_colour)
 
- Public Member Functions inherited from gui2::tevent_executor
 tevent_executor ()
 
virtual ~tevent_executor ()
 
void set_wants_mouse_hover (const bool hover=true)
 
bool wants_mouse_hover () const
 
void set_wants_mouse_left_double_click (const bool click=true)
 
bool wants_mouse_left_double_click () const
 
void set_wants_mouse_middle_double_click (const bool click=true)
 
bool wants_mouse_middle_double_click () const
 
tevent_executorset_wants_mouse_right_double_click (const bool click=true)
 
bool wants_mouse_right_double_click () const
 
- Public Member Functions inherited from gui2::event::tdispatcher
 tdispatcher ()
 
virtual ~tdispatcher ()
 
void connect ()
 Connects the dispatcher to the event handler. More...
 
bool has_event (const tevent event, const tevent_type event_type)
 
bool fire (const tevent event, twidget &target)
 Fires an event which has no extra parameters. More...
 
bool fire (const tevent event, twidget &target, const tpoint &coordinate)
 Fires an event which takes a coordinate parameter. More...
 
bool fire (const tevent event, twidget &target, const SDLKey key, const SDLMod modifier, const utf8::string &unicode)
 Fires an event which takes keyboard parameters. More...
 
bool fire (const tevent event, twidget &target, void *)
 Fires an event which takes notification parameters. More...
 
bool fire (const tevent event, twidget &target, tmessage &message)
 Fires an event which takes message parameters. More...
 
template<tevent E>
boost::enable_if
< boost::mpl::has_key
< tset_event, boost::mpl::int_
< E > > >::type 
connect_signal (const tsignal_function &signal, const tposition position=back_child)
 Connect a signal for callback in tset_event. More...
 
template<tevent E>
boost::enable_if
< boost::mpl::has_key
< tset_event, boost::mpl::int_
< E > > >::type 
disconnect_signal (const tsignal_function &signal, const tposition position=back_child)
 Disconnect a signal for callback in tset_event. More...
 
template<tevent E>
boost::enable_if
< boost::mpl::has_key
< tset_event_mouse,
boost::mpl::int_< E >
> >::type 
connect_signal (const tsignal_mouse_function &signal, const tposition position=back_child)
 Connect a signal for callback in tset_event_mouse. More...
 
template<tevent E>
boost::enable_if
< boost::mpl::has_key
< tset_event_mouse,
boost::mpl::int_< E >
> >::type 
disconnect_signal (const tsignal_mouse_function &signal, const tposition position=back_child)
 Disconnect a signal for callback in tset_event_mouse. More...
 
template<tevent E>
boost::enable_if
< boost::mpl::has_key
< tset_event_keyboard,
boost::mpl::int_< E >
> >::type 
connect_signal (const tsignal_keyboard_function &signal, const tposition position=back_child)
 Connect a signal for callback in tset_event_keyboard. More...
 
template<tevent E>
boost::enable_if
< boost::mpl::has_key
< tset_event_keyboard,
boost::mpl::int_< E >
> >::type 
disconnect_signal (const tsignal_keyboard_function &signal, const tposition position=back_child)
 Disconnect a signal for callback in tset_event_keyboard. More...
 
template<tevent E>
boost::enable_if
< boost::mpl::has_key
< tset_event_notification,
boost::mpl::int_< E >
> >::type 
connect_signal (const tsignal_notification_function &signal, const tposition position=back_child)
 Connect a signal for callback in tset_event_notification. More...
 
template<tevent E>
boost::enable_if
< boost::mpl::has_key
< tset_event_notification,
boost::mpl::int_< E >
> >::type 
disconnect_signal (const tsignal_notification_function &signal, const tposition position=back_child)
 Disconnect a signal for callback in tset_event_notification. More...
 
template<tevent E>
boost::enable_if
< boost::mpl::has_key
< tset_event_message,
boost::mpl::int_< E >
> >::type 
connect_signal (const tsignal_message_function &signal, const tposition position=back_child)
 Connect a signal for callback in tset_event_message. More...
 
template<tevent E>
boost::enable_if
< boost::mpl::has_key
< tset_event_message,
boost::mpl::int_< E >
> >::type 
disconnect_signal (const tsignal_message_function &signal, const tposition position=back_child)
 Disconnect a signal for callback in tset_event_message. More...
 
void capture_mouse ()
 Captures the mouse. More...
 
void release_mouse ()
 Releases the mouse capture. More...
 
void set_mouse_behavior (const tmouse_behavior mouse_behavior)
 
tmouse_behavior get_mouse_behavior () const
 
void set_want_keyboard_input (const bool want_keyboard_input)
 
bool get_want_keyboard_input () const
 
void register_hotkey (const hotkey::HOTKEY_COMMAND id, const thotkey_function &function)
 Registers a hotkey. More...
 
bool execute_hotkey (const hotkey::HOTKEY_COMMAND id)
 Executes a hotkey. More...
 

Protected Member Functions

void handle_key_up_arrow (SDLMod modifier, bool &handled)
 Inherited from tscrollbar_container. More...
 
void handle_key_down_arrow (SDLMod modifier, bool &handled)
 Inherited from tscrollbar_container. More...
 
void handle_key_left_arrow (SDLMod modifier, bool &handled)
 Inherited from tscrollbar_container. More...
 
void handle_key_right_arrow (SDLMod modifier, bool &handled)
 Inherited from tscrollbar_container. More...
 
- Protected Member Functions inherited from gui2::tscrollbar_container
void show_content_rect (const SDL_Rect &rect)
 Shows a certain part of the content. More...
 
void set_scrollbar_button_status ()
 Sets the status of the scrollbar buttons. More...
 
bool content_resize_request (const bool force_sizing=false)
 Notification if the content of a child needs a resize. More...
 
bool content_resize_request (const int width_modification, const int height_modification, const int width_modification_pos=-1, const int height_modification_pos=-1)
 Request from the content to modify the size of the container. More...
 
virtual void handle_key_home (SDLMod modifier, bool &handled)
 Home key pressed. More...
 
virtual void handle_key_end (SDLMod modifier, bool &handled)
 End key pressed. More...
 
virtual void handle_key_page_up (SDLMod modifier, bool &handled)
 Page up key pressed. More...
 
virtual void handle_key_page_down (SDLMod modifier, bool &handled)
 Page down key pressed. More...
 
- Protected Member Functions inherited from gui2::tcontrol
tresolution_definition_ptr config ()
 
tresolution_definition_const_ptr config () const
 
void set_config (tresolution_definition_ptr config)
 
virtual void update_canvas ()
 Updates the canvas(ses). More...
 
int get_text_maximum_width () const
 Returns the maximum width available for the text. More...
 
int get_text_maximum_height () const
 Returns the maximum height available for the text. More...
 
virtual void impl_draw_background (surface &frame_buffer, int x_offset, int y_offset) override
 See twidget::impl_draw_background. More...
 
virtual void impl_draw_foreground (surface &frame_buffer, int x_offset, int y_offset) override
 See twidget::impl_draw_foreground. More...
 
std::string get_label_token (const gui2::tpoint &position, const char *delimiters=" \n\r\t") const
 Exposes font::ttext::get_token, for the text label of this control. More...
 
std::string get_label_link (const gui2::tpoint &position) const
 
- Protected Member Functions inherited from gui2::twidget
void set_layout_size (const tpoint &size)
 
const tpointlayout_size () const
 

Private Member Functions

void resize_content (const int width_modification, const int height_modification, const int width__modification_pos=-1, const int height_modification_pos=-1)
 Resizes the content. More...
 
void layout_children (const bool force)
 Layouts the children if needed. More...
 
virtual void finalize_setup ()
 Inherited from tcontainer_. More...
 
virtual const std::stringget_control_type () const override
 See tcontrol::get_control_type. More...
 
void signal_handler_left_button_down (const event::tevent event)
 
template<ttree_view_node *(ttree_view_node::*)() func>
ttree_view_nodeget_next_node ()
 
template<ttree_view_node *(ttree_view_node::*)() func>
bool handle_up_down_arrow ()
 

Private Attributes

const std::vector
< tnode_definition
node_definitions_
 
unsigned indention_step_size_
 
bool need_layout_
 
ttree_view_noderoot_node_
 
ttree_view_nodeselected_item_
 
std::function< void(twidget &)> selection_change_callback_
 

Friends

struct implementation::tbuilder_tree_view
 
class ttree_view_node
 

Detailed Description

Definition at line 39 of file tree_view.hpp.

Member Typedef Documentation

Definition at line 45 of file tree_view.hpp.

Constructor & Destructor Documentation

gui2::ttree_view::ttree_view ( const std::vector< tnode_definition > &  node_definitions)
explicit

Member Function Documentation

ttree_view_node & gui2::ttree_view::add_node ( const std::string id,
const std::map< std::string, string_map > &  data 
)
void gui2::ttree_view::child_populate_dirty_list ( twindow caller,
const std::vector< twidget * > &  call_stack 
)
overridevirtual
bool gui2::ttree_view::empty ( ) const
void gui2::ttree_view::finalize_setup ( )
privatevirtual
const std::string & gui2::ttree_view::get_control_type ( ) const
overrideprivatevirtual

See tcontrol::get_control_type.

Reimplemented from gui2::tscrollbar_container.

Definition at line 179 of file tree_view.cpp.

template<ttree_view_node *(ttree_view_node::*)() func>
ttree_view_node * gui2::ttree_view::get_next_node ( )
private
ttree_view_node& gui2::ttree_view::get_root_node ( )
inline

Definition at line 51 of file tree_view.hpp.

References root_node_.

Referenced by add_node(), and lua_gui2::intf_remove_dialog_item().

void gui2::ttree_view::handle_key_down_arrow ( SDLMod  modifier,
bool &  handled 
)
protectedvirtual

Inherited from tscrollbar_container.

Reimplemented from gui2::tscrollbar_container.

Definition at line 231 of file tree_view.cpp.

References gui2::tscrollbar_container::handle_key_down_arrow().

void gui2::ttree_view::handle_key_left_arrow ( SDLMod  modifier,
bool &  handled 
)
protectedvirtual
void gui2::ttree_view::handle_key_right_arrow ( SDLMod  modifier,
bool &  handled 
)
protectedvirtual
void gui2::ttree_view::handle_key_up_arrow ( SDLMod  modifier,
bool &  handled 
)
protectedvirtual

Inherited from tscrollbar_container.

Reimplemented from gui2::tscrollbar_container.

Definition at line 221 of file tree_view.cpp.

References gui2::tscrollbar_container::handle_key_up_arrow().

template<ttree_view_node *(ttree_view_node::*)() func>
bool gui2::ttree_view::handle_up_down_arrow ( )
private
void gui2::ttree_view::layout_children ( )
overridevirtual

See twidget::layout_children.

Reimplemented from gui2::tscrollbar_container.

Definition at line 112 of file tree_view.cpp.

Referenced by gui2::ttree_view_node::place().

void gui2::ttree_view::layout_children ( const bool  force)
private
void gui2::ttree_view::remove_node ( ttree_view_node tree_view_node)
void gui2::ttree_view::resize_content ( const int  width_modification,
const int  height_modification,
const int  width__modification_pos = -1,
const int  height_modification_pos = -1 
)
private

Resizes the content.

The resize either happens due to resizing the content or invalidate the layout of the window.

Parameters
width_modificationThe wanted modification to the width:
  • negative values reduce width.
  • zero leave width as is.
  • positive values increase width.
height_modificationThe wanted modification to the height:
  • negative values reduce height.
  • zero leave height as is.
  • positive values increase height.

Definition at line 117 of file tree_view.cpp.

References gui2::tscrollbar_container::content_grid(), gui2::tscrollbar_container::content_resize_request(), DBG_GUI_L, gui2::twidget::get_size(), gui2::tscrollbar_container::horizontal_scrollbar_moved(), LOG_HEADER, need_layout_, gui2::twidget::set_is_dirty(), gui2::twidget::set_size(), gui2::tpoint::x, and gui2::tpoint::y.

Referenced by gui2::ttree_view_node::add_child(), gui2::ttree_view_node::clear(), gui2::ttree_view_node::fold_internal(), remove_node(), and gui2::ttree_view_node::unfold_internal().

ttree_view_node* gui2::ttree_view::selected_item ( )
inline
const ttree_view_node* gui2::ttree_view::selected_item ( ) const
inline

Definition at line 87 of file tree_view.hpp.

References selected_item_.

void gui2::ttree_view::set_indention_step_size ( const unsigned  indention_step_size)
inline

Definition at line 77 of file tree_view.hpp.

References indention_step_size_.

Referenced by gui2::implementation::tbuilder_tree_view::build().

void gui2::ttree_view::set_selection_change_callback ( std::function< void(twidget &)>  callback)
inline
void gui2::ttree_view::set_self_active ( const bool  active)
overridevirtual

See tcontainer_::set_self_active.

Implements gui2::tcontainer_.

Definition at line 102 of file tree_view.cpp.

void gui2::ttree_view::signal_handler_left_button_down ( const event::tevent  event)
private

Friends And Related Function Documentation

friend struct implementation::tbuilder_tree_view
friend

Definition at line 41 of file tree_view.hpp.

friend class ttree_view_node
friend

Definition at line 42 of file tree_view.hpp.

Member Data Documentation

unsigned gui2::ttree_view::indention_step_size_
private
bool gui2::ttree_view::need_layout_
private

Definition at line 121 of file tree_view.hpp.

Referenced by layout_children(), and resize_content().

const std::vector<tnode_definition> gui2::ttree_view::node_definitions_
private
Todo:
evaluate which way the dependancy should go.

We no depend on the implementation, maybe the implementation should depend on us instead.

Definition at line 117 of file tree_view.hpp.

ttree_view_node* gui2::ttree_view::root_node_
private
ttree_view_node* gui2::ttree_view::selected_item_
private
std::function<void(twidget&)> gui2::ttree_view::selection_change_callback_
private

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