BuGUI
BUtton Grid User Interface
Loading...
Searching...
No Matches
bugui::base_container_widget Struct Referenceabstract

Provides functionalities for 2D widget that can hold other widgets as children. More...

#include <base_container_widget.hpp>

Inheritance diagram for bugui::base_container_widget:
bugui::base_widget bugui::rectangle bugui::base_controller bugui::ctrlr_deleter< T > bugui::ctrlr_deleter< T > bugui::ctrlr_deleter< T > bugui::ctrlr_shifter< T > bugui::ctrlr_shifter< T > bugui::ctrlr_shifter< T > bugui::ctrlr_shifter< T > bugui::ctrlr_shifter< T > bugui::ctrlr_shifter< T > bugui::controller< T > bugui::controller< T > bugui::controller< T > bugui::controller< T >

Public Member Functions

 base_container_widget (base_container_widget *parent)
virtual void add_held (base_widget *widget)=0
virtual void remove_held (base_widget *widget)=0
virtual bool handle_child_Delete ()=0
const std::vector< base_widget * > & get_held () const
 Retrieves all held widgets, including duplicates.
std::vector< base_widget * > get_unique_held () const
 Retrieves held widgets, filtering out duplicates.
std::vector< base_widget * > get_deepest_held ()
 Retrieves all held items that do not have child held widgets i.e. the deepest held widget in the hierarchy.
void remove_widget (base_widget *widget)
 Removes a child widget.
Public Member Functions inherited from bugui::base_widget
virtual void repaint ()
 Calls for this widget to be repainted.
virtual void update ()=0
virtual void handle_painter (painter &painter) const =0
virtual bool handle_presser (presser &presser)=0
virtual bool handle_Delete ()=0
base_container_widgetget_parent () const
 Retrieves the parent widget.
base_controllerget_root () const
 Retrieves the root widget.
Public Member Functions inherited from bugui::rectangle
int get_x () const
int get_y () const
void set_x (int new_x)
void set_y (int new_y)
int get_width () const
int get_height () const
void set_width (int new_width)
void set_height (int new_height)
void set_size (int new_size)
void set (int new_x, int new_y)
void set (int new_x, int new_y, int new_width, int new_height)
const pointget_top_left () const
const pointget_bottom_right () const
void set_top_left (point &&new_top_left)
void set_bottom_right (point &&new_bottom_right)

Protected Member Functions

template<typename T, typename ... Args>
requires std::derived_from<T, base_widget>
base_widget * add_widget (Args &...args)
 Create and add a child widget.
template<typename T, typename ... Args>
requires std::derived_from<T, base_widget>
base_widget * add_widget (Args &&...args)
 Create and add a child widget.
template<class Pred>
requires (!std::derived_from<std::remove_pointer_t<Pred> , base_widget>)
base_widget * remove_widget (Pred pred)
 Removes a child widget.
Protected Member Functions inherited from bugui::base_widget
 base_widget (base_container_widget *parent)
Protected Member Functions inherited from bugui::rectangle
virtual bool overlap (rectangle &other) const
 Checks whether this rectangle overlaps with another. This funciton is the bassis for handling inputs on the grid. The presser object also inherits from rectangle, and this function is called to check if a press event overlaps with a widget. If so, we can determine that this particular widget is pressed. Custom widgets can override this funciton for a more fine grained handling of presses.

Protected Attributes

std::vector< base_widget * > held
std::vector< std::unique_ptr< base_widget > > children
Protected Attributes inherited from bugui::base_widget
base_container_widgetparent {nullptr}
base_controllerroot {nullptr}

Detailed Description

Provides functionalities for 2D widget that can hold other widgets as children.

Member Function Documentation

◆ add_widget() [1/2]

template<typename T, typename ... Args>
requires std::derived_from<T, base_widget>
base_widget * bugui::base_container_widget::add_widget ( Args &&... args)
inlineprotected

Create and add a child widget.

Parameters
args...the constructor parameters of the widget to create (passed by r-value reference).
Returns
A pointer to the created widget (see base_widget).

◆ add_widget() [2/2]

template<typename T, typename ... Args>
requires std::derived_from<T, base_widget>
base_widget * bugui::base_container_widget::add_widget ( Args &... args)
inlineprotected

Create and add a child widget.

Parameters
args...the constructor parameters of the widget to create (passed by reference).
Returns
A pointer to the created widget (see base_widget).

◆ get_deepest_held()

std::vector< base_widget * > bugui::base_container_widget::get_deepest_held ( )

Retrieves all held items that do not have child held widgets i.e. the deepest held widget in the hierarchy.

Returns
A vector of widget pointers (see base_widgets).

◆ get_held()

const std::vector< base_widget * > & bugui::base_container_widget::get_held ( ) const
inline

Retrieves all held widgets, including duplicates.

Returns
A vector of widget pointers (see base_widgets).

◆ get_unique_held()

std::vector< base_widget * > bugui::base_container_widget::get_unique_held ( ) const

Retrieves held widgets, filtering out duplicates.

Returns
A vector of unique widget pointers. (see base_widgets).

◆ handle_child_Delete()

virtual bool bugui::base_container_widget::handle_child_Delete ( )
pure virtual

Implemented in bugui::controller< T >.

◆ remove_widget() [1/2]

void bugui::base_container_widget::remove_widget ( base_widget * widget)

Removes a child widget.

Parameters
widgetto be deleted widget to remove.

◆ remove_widget() [2/2]

template<class Pred>
requires (!std::derived_from<std::remove_pointer_t<Pred> , base_widget>)
base_widget * bugui::base_container_widget::remove_widget ( Pred pred)
inlineprotected

Removes a child widget.

Parameters
predicatethat evaluates true for the desired widget to remove.
Returns
A pointer to the removed widget (see base_widget).

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