NOCL  v0.1.0-2524
Modern C++ Class Library for GUI Projects
nocl::Grid Class Reference

Container which arranges children using a grid of columns and rows. More...

#include <Grid.hpp>

Inheritance diagram for nocl::Grid:
Collaboration diagram for nocl::Grid:

Public Member Functions

virtual ~Grid (void)
 Destructor. More...
 
 Grid (void)
 Constructor. More...
 
virtual operator GtkGrid * (void) const
 Convert an instance of nocl::Grid to GtkGrid*. More...
 
virtual Gridadd_child (GUIComponent &child) override
 Inherited from nocl::Container. More...
 
virtual Gridadd_child (GUIComponent &child, const int top, const int left, const int width=1, const int height=1)
 
virtual bool homogeneous_row (void) const
 Determine whether or not all rows will be the same size. More...
 
virtual bool homogeneous_column (void) const
 Determine whether or not all columns will be the same size. More...
 
virtual Gridhomogeneous_row (const bool toggle)
 Set whether or not all rows will be the same size. More...
 
virtual Gridhomogeneous_column (const bool toggle)
 Set whether or not all columns will be the same size. More...
 
virtual Gridhomogeneous (const bool column, const bool row)
 Set whether or not all rows and columns will be the same size. More...
 
virtual int spacing_row (void) const
 Get the spacing between each row. More...
 
virtual int spacing_column (void) const
 Get the spacing between each column. More...
 
virtual Gridspacing_row (const int spacing)
 Set the spacing between each row. More...
 
virtual Gridspacing_column (const int spacing)
 Set the spacing between each column. More...
 
virtual Gridspacing (const int column, const int row)
 Set the spacing between each row and column. More...
 
virtual operator GtkContainer * (void) const
 Convert an instance of Container to GtkContainer*. More...
 
virtual Containerremove_child (GUIComponent &child)
 Remove a child component from this container. More...
 
virtual operator GtkWidget * (void) const
 Convert an instance of GUIComponent to GtkWidget*. More...
 
virtual GUIComponentmove_to (const Point &p)
 Move to the specified coordinates. More...
 
virtual Size natural_size (void)
 Get the natural size of a widget. More...
 
virtual Size minimum_size (void)
 Get the minimum size of a widget. More...
 
virtual GUIComponentminimum_size (const Size &s)
 Set the minimum size of a widget. More...
 
virtual GUIComponentminimum_size (const int width, const int height)
 Set the minimum size of a widget. More...
 
virtual GUIComponentshow (const bool toggle=true)
 Make the immediate component visible. More...
 
virtual GUIComponentshow_all (const bool toggle=true)
 Make the component and all child components visible. More...
 
virtual GUIComponenthide (void)
 Hide a single component. More...
 
virtual bool is_visible (void) const
 Determine if the widget is shown. More...
 

Static Public Member Functions

static WidgetToGUIComponentMapwidget_to_gui_component_map (void)
 There are times when we have a pointer to a Gtk+ widget, and we need to map it back to the corresponding NOCL GUI component. More...
 

Public Attributes

std::set< GUIComponent * > children
 Keep track of all children that have been added to this container. More...
 
Containerparent
 Pointer to the parent to which we've been added. Will be nullptr if this object hasn't been added to a parent container. More...
 
GtkWidget * gtk_widget
 Pointer to the underlying GTK framework. More...
 

Detailed Description

Container which arranges children using a grid of columns and rows.

This corresponds to GtkGrid. The grid layout is simplistic. An example of where it works well would be to place similarly-sized controls in a way that would resemble a calendar.

See also
nocl::...? Boxes, ListBox, Stack+StackSwitcher, HeaderBar, FlowBox, Notebook
https://developer.gnome.org/gtk3/stable/GtkGrid.html

Constructor & Destructor Documentation

◆ ~Grid()

nocl::Grid::~Grid ( void  )
virtual

Destructor.

◆ Grid()

nocl::Grid::Grid ( void  )

Constructor.

Exceptions
nocl::ExceptionThrows if GTK+ fails to create a new window.

References nocl::GUIComponent::gtk_widget, homogeneous(), NOCL_WHERE, and spacing().

Here is the call graph for this function:

Member Function Documentation

◆ operator GtkGrid *()

nocl::Grid::operator GtkGrid * ( void  ) const
virtual

Convert an instance of nocl::Grid to GtkGrid*.

Exceptions
nocl::ExceptionObject was not created correctly and cannot be converted to GtkGrid*.

References nocl::GUIComponent::gtk_widget, and NOCL_WHERE.

◆ add_child() [1/2]

nocl::Grid & nocl::Grid::add_child ( GUIComponent child)
overridevirtual

Inherited from nocl::Container.

Adds a child to location [2, 2] on the grid. This way if a grid has a single child, then on a 3x3 grid the child will have been added in the middle of the grid.

Reimplemented from nocl::Container.

◆ add_child() [2/2]

nocl::Grid & nocl::Grid::add_child ( GUIComponent child,
const int  top,
const int  left,
const int  width = 1,
const int  height = 1 
)
virtual
Exceptions
nocl::ExceptionGrid location, width, or height is invalid.
nocl::ExceptionChild-parent hierarchy doesn't make sense.

References nocl::Container::children, NOCL_WHERE, nocl::GUIComponent::parent, and nocl::Container::remove_child().

Here is the call graph for this function:

◆ homogeneous_row() [1/2]

bool nocl::Grid::homogeneous_row ( void  ) const
virtual

Determine whether or not all rows will be the same size.

Referenced by homogeneous().

Here is the caller graph for this function:

◆ homogeneous_column() [1/2]

bool nocl::Grid::homogeneous_column ( void  ) const
virtual

Determine whether or not all columns will be the same size.

Referenced by homogeneous().

Here is the caller graph for this function:

◆ homogeneous_row() [2/2]

nocl::Grid & nocl::Grid::homogeneous_row ( const bool  toggle)
virtual

Set whether or not all rows will be the same size.

◆ homogeneous_column() [2/2]

nocl::Grid & nocl::Grid::homogeneous_column ( const bool  toggle)
virtual

Set whether or not all columns will be the same size.

◆ homogeneous()

nocl::Grid & nocl::Grid::homogeneous ( const bool  column,
const bool  row 
)
virtual

Set whether or not all rows and columns will be the same size.

References homogeneous_column(), and homogeneous_row().

Referenced by Grid().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ spacing_row() [1/2]

int nocl::Grid::spacing_row ( void  ) const
virtual

Get the spacing between each row.

Referenced by spacing().

Here is the caller graph for this function:

◆ spacing_column() [1/2]

int nocl::Grid::spacing_column ( void  ) const
virtual

Get the spacing between each column.

Referenced by spacing().

Here is the caller graph for this function:

◆ spacing_row() [2/2]

nocl::Grid & nocl::Grid::spacing_row ( const int  spacing)
virtual

Set the spacing between each row.

Exceptions
nocl::ExceptionInvalid spacing.

References NOCL_WHERE.

◆ spacing_column() [2/2]

nocl::Grid & nocl::Grid::spacing_column ( const int  spacing)
virtual

Set the spacing between each column.

Exceptions
nocl::ExceptionInvalid spacing.

References NOCL_WHERE.

◆ spacing()

nocl::Grid & nocl::Grid::spacing ( const int  column,
const int  row 
)
virtual

Set the spacing between each row and column.

References spacing_column(), and spacing_row().

Referenced by Grid().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator GtkContainer *()

nocl::Container::operator GtkContainer * ( void  ) const
virtualinherited

Convert an instance of Container to GtkContainer*.

Exceptions
nocl::ExceptionObject was not created correctly and cannot be converted to GtkContainer*.

References nocl::GUIComponent::gtk_widget, and NOCL_WHERE.

◆ remove_child()

nocl::Container & nocl::Container::remove_child ( GUIComponent child)
virtualinherited

Remove a child component from this container.

References nocl::Container::children, and nocl::GUIComponent::parent.

Referenced by nocl::Container::add_child(), add_child(), nocl::Container::~Container(), and nocl::GUIComponent::~GUIComponent().

Here is the caller graph for this function:

◆ operator GtkWidget *()

nocl::GUIComponent::operator GtkWidget * ( void  ) const
virtualinherited

Convert an instance of GUIComponent to GtkWidget*.

References nocl::GUIComponent::gtk_widget.

◆ move_to()

nocl::GUIComponent & nocl::GUIComponent::move_to ( const Point p)
virtualinherited

Move to the specified coordinates.

Todo:

◆ natural_size()

nocl::Size nocl::GUIComponent::natural_size ( void  )
virtualinherited

Get the natural size of a widget.

References nocl::GUIComponent::minimum_size().

Referenced by nocl::GUIComponent::minimum_size().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ minimum_size() [1/3]

nocl::Size nocl::GUIComponent::minimum_size ( void  )
virtualinherited

Get the minimum size of a widget.

References nocl::GUIComponent::natural_size().

Referenced by nocl::GUIComponent::minimum_size(), and nocl::GUIComponent::natural_size().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ minimum_size() [2/3]

nocl::GUIComponent & nocl::GUIComponent::minimum_size ( const Size s)
virtualinherited

Set the minimum size of a widget.

References nocl::Size::height, nocl::GUIComponent::minimum_size(), and nocl::Size::width.

Here is the call graph for this function:

◆ minimum_size() [3/3]

nocl::GUIComponent & nocl::GUIComponent::minimum_size ( const int  width,
const int  height 
)
virtualinherited

Set the minimum size of a widget.

◆ show()

nocl::GUIComponent & nocl::GUIComponent::show ( const bool  toggle = true)
virtualinherited

Make the immediate component visible.

Parameters
[in]toggleSet to true to show the widget, or to false to hide the widget.
See also
hide()
show_all()
is_visible()

References nocl::GUIComponent::gtk_widget, and nocl::GUIComponent::hide().

Here is the call graph for this function:

◆ show_all()

nocl::GUIComponent & nocl::GUIComponent::show_all ( const bool  toggle = true)
virtualinherited

Make the component and all child components visible.

Parameters
[in]toggleSet to true to show the widget and all children, or to false to hide the widget.
See also
show()
hide()
is_visible()

References nocl::GUIComponent::gtk_widget, and nocl::GUIComponent::hide().

Here is the call graph for this function:

◆ hide()

nocl::GUIComponent & nocl::GUIComponent::hide ( void  )
virtualinherited

Hide a single component.

See also
show()
show_all()
is_visible()

References nocl::GUIComponent::gtk_widget.

Referenced by nocl::GUIComponent::show(), and nocl::GUIComponent::show_all().

Here is the caller graph for this function:

◆ is_visible()

bool nocl::GUIComponent::is_visible ( void  ) const
virtualinherited

Determine if the widget is shown.

See also
show()
show_all()
hide()

References nocl::GUIComponent::gtk_widget.

◆ widget_to_gui_component_map()

nocl::WidgetToGUIComponentMap & nocl::GUIComponent::widget_to_gui_component_map ( void  )
staticinherited

There are times when we have a pointer to a Gtk+ widget, and we need to map it back to the corresponding NOCL GUI component.

For example, during event handling, Gtk+ tells us which Gtk+ widget generated the event, but we need the corresponding NOCL object so we can call the event handler with a reference to the correct object.

Note
This is not intended for end-users to access directly!

Referenced by nocl::ButtonHandler::handle_button_events_for(), and nocl::GUIComponent::~GUIComponent().

Here is the caller graph for this function:

Member Data Documentation

◆ children

std::set<GUIComponent*> nocl::Container::children
inherited

Keep track of all children that have been added to this container.

Referenced by nocl::Container::add_child(), add_child(), nocl::Container::remove_child(), and nocl::Container::~Container().

◆ parent

Container* nocl::GUIComponent::parent
inherited

Pointer to the parent to which we've been added. Will be nullptr if this object hasn't been added to a parent container.

Referenced by nocl::Container::add_child(), add_child(), nocl::Container::remove_child(), and nocl::GUIComponent::~GUIComponent().

◆ gtk_widget


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