cgv
cgv::gui::window Class Referenceabstract

gui independent window class More...

#include <window.h>

Inheritance diagram for cgv::gui::window:
cgv::gui::gui_group cgv::base::group cgv::base::registration_listener cgv::base::node cgv::base::named cgv::base::base cgv::data::ref_counted cgv::reflect::self_reflection_tag

Public Member Functions

 window (const std::string &name)
 construct from name
 
std::string get_type_name () const
 overload to return the type name of this object
 
virtual gui_group_ptr get_inner_group ()
 return the group that is managing the content of the window
 
virtual void show (bool modal=false)=0
 show the window. This needs to be called after creation to make the window visible
 
virtual void hide ()=0
 hide the window
 
virtual bool dispatch_event (event &e)
 dispatch a cgv event
 
void register_object (cgv::base::base_ptr object, const std::string &options)
 interface of adding an object
 
void unregister_object (cgv::base::base_ptr object, const std::string &options)
 overload to handle unregistration events
 
unsigned int get_nr_children () const
 return the number of children
 
base_ptr get_child (unsigned int i) const
 return the i-th child
 
virtual unsigned int append_child (base_ptr child)
 append child and return index of appended child
 
virtual unsigned int remove_child (base_ptr child)
 remove all elements of the vector that point to child, return the number of removed children
 
virtual void remove_all_children ()
 remove all children
 
virtual void insert_child (unsigned int i, base_ptr child)
 insert a child at the given position
 
data::ref_ptr< group, true > get_group ()
 cast upward to group
 
node_ptr get_parent () const
 return the parent node
 
base_ptr get_root () const
 return the root node by traversing parents until no more parent is available
 
void set_parent (node_ptr _parent)
 set a new parent node
 
data::ref_ptr< node, true > get_node ()
 cast upward to node
 
const std::string & get_name () const
 return the parent node
 
void set_name (const std::string &_name)
 set a new parent node
 
data::ref_ptr< named, true > get_named ()
 cast upward to named
 
virtual std::string get_default_options () const
 overload to provide default options for registration
 
virtual void on_register ()
 overload to handle register events that is sent after the instance has been registered More...
 
virtual void unregister ()
 overload to handle unregistration of instances
 
virtual void stream_stats (std::ostream &)
 overload to show the content of this object
 
template<class T >
data::ref_ptr< T, true > cast ()
 cast to arbitrary class, but use the casts to named, node and group from the interface
 
template<class T >
T * get_interface ()
 use dynamic type cast to check for the given interface
 
template<class T >
const T * get_const_interface () const
 use dynamic type cast to check for the given interface
 
virtual void update ()
 this virtual update allows for example to ask a view to update the viewed value. The default implementation is empty.
 
virtual void * get_user_data () const
 this virtual method allows to pass application specific data for internal purposes More...
 
int get_ref_count () const
 read access to current count
 
managed objects
void add_managed_objects (cgv::base::base_ptr object)
 add the passed object as an managed object. More...
 
void release_all_managed_objects ()
 release all managed objects
 
void release_managed_objects (cgv::base::base_ptr object)
 release a specific managed object
 
bool is_managed_object (cgv::base::base_ptr object)
 check whether an object is managed by this gui group
 
adding new elements to the group
virtual void align (const std::string &_align)
 send pure alignment information
 
virtual gui_group_ptr add_group (const std::string &label, const std::string &group_type, const std::string &options, const std::string &align)
 add a new group to the given parent group
 
virtual base_ptr add_decorator (const std::string &label, const std::string &decorator_type, const std::string &options, const std::string &align)
 add a newly created decorator to the group
 
virtual button_ptr add_button (const std::string &label, const std::string &options, const std::string &align)
 add a newly created button to the group
 
virtual view_ptr add_view_void (const std::string &label, const void *value_ptr, const std::string &value_type, const std::string &gui_type, const std::string &options, const std::string &align)
 add a newly created view to the group
 
virtual control_ptr add_control_void (const std::string &label, void *value_ptr, abst_control_provider *acp, const std::string &value_type, const std::string &gui_type, const std::string &options, const std::string &align, void *user_data)
 add a newly created control to the group
 
template<typename T >
data::ref_ptr< view< T > > add_view (const std::string &label, const T &value, const std::string &gui_type="", const std::string &options="", const std::string &align="\n")
 add a newly created view to the group for the given value with the given gui type, init and align options
 
template<typename T >
data::ref_ptr< control< T > > add_control (const std::string &label, T &value, const std::string &gui_type="", const std::string &options="", const std::string &align="\n")
 add a newly created control to the group for the given value with the given gui type, init and align options
 
template<typename T >
data::ref_ptr< control< T > > add_control (const std::string &label, control_provider< T > *provider, const std::string &gui_type="", const std::string &options="", const std::string &align="\n", void *user_data=0)
 add a newly created control to the group which is controlled by a control_provider
 
finding elements in the group
base_ptr find_element (const std::string &name)
 find a gui element by name, return empty pointer if not found
 
view_ptr find_view_void (const void *value_ptr, int *idx_ptr)
 find a view in the group based on a const void pointer
 
control_ptr find_control_void (void *value_ptr, int *idx_ptr)
 find a control in the group based on a const void pointer
 
template<typename T >
data::ref_ptr< view< T > > find_view (const T &value, int *idx_ptr=0)
 find the next view of the given value in the current group. More...
 
template<typename T >
data::ref_ptr< control< T > > find_control (T &value, int *idx_ptr=0)
 find the next control of the given value in the current group. More...
 
managed objects
void add_managed_objects (cgv::base::base_ptr object)
 add the passed object as an managed object. More...
 
void release_all_managed_objects ()
 release all managed objects
 
void release_managed_objects (cgv::base::base_ptr object)
 release a specific managed object
 
bool is_managed_object (cgv::base::base_ptr object)
 check whether an object is managed by this gui group
 
adding new elements to the group
virtual void align (const std::string &_align)
 send pure alignment information
 
virtual gui_group_ptr add_group (const std::string &label, const std::string &group_type, const std::string &options, const std::string &align)
 add a new group to the given parent group
 
virtual base_ptr add_decorator (const std::string &label, const std::string &decorator_type, const std::string &options, const std::string &align)
 add a newly created decorator to the group
 
virtual button_ptr add_button (const std::string &label, const std::string &options, const std::string &align)
 add a newly created button to the group
 
virtual view_ptr add_view_void (const std::string &label, const void *value_ptr, const std::string &value_type, const std::string &gui_type, const std::string &options, const std::string &align)
 add a newly created view to the group
 
virtual control_ptr add_control_void (const std::string &label, void *value_ptr, abst_control_provider *acp, const std::string &value_type, const std::string &gui_type, const std::string &options, const std::string &align, void *user_data)
 add a newly created control to the group
 
template<typename T >
data::ref_ptr< view< T > > add_view (const std::string &label, const T &value, const std::string &gui_type="", const std::string &options="", const std::string &align="\n")
 add a newly created view to the group for the given value with the given gui type, init and align options
 
template<typename T >
data::ref_ptr< control< T > > add_control (const std::string &label, T &value, const std::string &gui_type="", const std::string &options="", const std::string &align="\n")
 add a newly created control to the group for the given value with the given gui type, init and align options
 
template<typename T >
data::ref_ptr< control< T > > add_control (const std::string &label, control_provider< T > *provider, const std::string &gui_type="", const std::string &options="", const std::string &align="\n", void *user_data=0)
 add a newly created control to the group which is controlled by a control_provider
 
finding elements in the group
base_ptr find_element (const std::string &name)
 find a gui element by name, return empty pointer if not found
 
view_ptr find_view_void (const void *value_ptr, int *idx_ptr)
 find a view in the group based on a const void pointer
 
control_ptr find_control_void (void *value_ptr, int *idx_ptr)
 find a control in the group based on a const void pointer
 
template<typename T >
data::ref_ptr< view< T > > find_view (const T &value, int *idx_ptr=0)
 find the next view of the given value in the current group. More...
 
template<typename T >
data::ref_ptr< control< T > > find_control (T &value, int *idx_ptr=0)
 find the next control of the given value in the current group. More...
 

Protected Member Functions

void link (base_ptr b)
 check if the base class is a node and set the parent of the node
 
void unlink (base_ptr b)
 check if the base class is a node and clear the parent of the node
 
void set_ref_count (int c) const
 write access is also const to allow ref counted pointers to const instances
 

Static Protected Member Functions

static void set_provider_parent (provider *p, gui_group_ptr g)
 access to protected provider method
 
static gui_group_ptr get_provider_parent (const provider *p)
 driver specific handle for the group gui element managing the gui built in the provider
 
template<class T >
static data::ref_ptr< T, true > cast_dynamic (base *b)
 use dynamic cast for upcast to given class
 

Protected Attributes

std::vector< cgv::base::base_ptrmanaged_objects
 managed objects can be add to the group such that
 
std::vector< base_ptr > children
 store a list of children
 
node_ptr parent
 store a pointer to the parent node
 
std::string name
 store the name as a string
 

property interface

virtual bool self_reflect (cgv::reflect::reflection_handler &)
 used for simple self reflection More...
 
virtual std::string get_property_declarations ()
 return a semicolon separated list of property declarations More...
 
virtual bool set_void (const std::string &property, const std::string &value_type, const void *value_ptr)
 abstract interface for the setter of a dynamic property. More...
 
virtual void on_set (void *member_ptr)
 this callback is called when the set_void method has changed a member and can be overloaded in derived class
 
virtual bool get_void (const std::string &property, const std::string &value_type, void *value_ptr)
 abstract interface for the getter of a dynamic property. More...
 
virtual bool call_void (const std::string &method, const std::vector< std::string > &param_value_types, const std::vector< const void * > &param_value_ptrs, const std::string &result_type="", void *result_value_ptr=0)
 abstract interface to call an action More...
 
void set (const std::string &property, const char *value)
 specialization of set method to support const char* as strings
 
template<typename T >
void set (const std::string &property, const T &value)
 set a property of the element to the given value and perform standard conversions if necessary. More...
 
template<typename T >
get (const std::string &property)
 query a property of the element and perform standard conversions if necessary. More...
 
void multi_set (const std::string &property_assignments, bool report_error=true)
 set several properties More...
 
bool is_property (const std::string &property_name, std::string *type_name=0)
 check if the given name specifies a property. More...
 
void * find_member_ptr (const std::string &property_name, std::string *type_name=0)
 find a member pointer by name. More...
 

selection of children

virtual bool multiple_selection () const
 return whether several children of the group can be selected at the same time
 
virtual void select_child (unsigned ci, bool exclusive=false)
 select the ci-th child of the group. More...
 
virtual void select_child (base_ptr ci, bool exclusive=false)
 same as version with child index
 
virtual bool unselect_child (unsigned ci)
 unselect the ci-th child. More...
 
virtual bool unselect_child (base_ptr ci)
 same as version with child index
 
virtual int get_selected_child_index () const
 return the index of the currently selected child. More...
 
virtual base_ptr get_selected_child () const
 return the currently selected child. More...
 
virtual bool is_selected (base_ptr c) const
 return whether the given child is selected
 
bool is_selected (unsigned ci) const
 return whether the given child is selected. More...
 
cgv::signal::signal< base_ptr, bool > on_selection_change
 This signal is emitted for every change of the selection of a child. More...
 

opening and closing of child groups

virtual bool can_open_and_close () const
 returns whether open and close of sub groups is allowed
 
virtual bool is_open_child_group (gui_group_ptr g) const
 return whether the given child is open
 
bool is_open_child_group (unsigned ci) const
 return whether the ci-th child is an open gui group
 
virtual bool open_child_group (gui_group_ptr g)
 try to open given child group and return whether this was successful More...
 
virtual bool close_child_group (gui_group_ptr g)
 try to close given child group and return whether this was successful More...
 
cgv::signal::signal< gui_group_ptr, bool > on_open_state_change
 this signal is emitted, when a child group is opened or closed More...
 

Detailed Description

gui independent window class

Member Function Documentation

◆ add_managed_objects()

void cgv::gui::gui_group::add_managed_objects ( cgv::base::base_ptr  object)
inherited

add the passed object as an managed object.

This will simply add a reference counted pointer to the object into a list of managed elements. This pointer is released whenever the gui group is destroyed or when the gui is recreated. This functionality can be used by gui_creators to manage objects that are not managed by the user of the gui library. An example usage can be found in the bit_field_controler found in the plugin plugins/cg_ext.

◆ call_void()

bool cgv::base::base::call_void ( const std::string &  method,
const std::vector< std::string > &  param_value_types,
const std::vector< const void * > &  param_value_ptrs,
const std::string &  result_type = "",
void *  result_value_ptr = 0 
)
virtualinherited

abstract interface to call an action

overload to implement the execution of a method based on the method name and the given parameters

, i.e. a class method based on the action name and the given parameters. The default implementation uses the self_reflect() method to dispatch this call. If not found, the get_void method returns false.

◆ close_child_group()

bool cgv::gui::gui_group::close_child_group ( gui_group_ptr  g)
virtualinherited

try to close given child group and return whether this was successful

close the given child group

◆ find_control()

template<typename T >
data::ref_ptr<control<T> > cgv::gui::gui_group::find_control ( T &  value,
int *  idx_ptr = 0 
)
inlineinherited

find the next control of the given value in the current group.

If the index pointer is given, start at the index to which the pointer points and set this index to the index of the child index of the found control

◆ find_member_ptr()

void * cgv::base::base::find_member_ptr ( const std::string &  property_name,
std::string *  type_name = 0 
)
inherited

find a member pointer by name.

If not found the null pointer is returned. If the type name string pointer is provided, the type of the property is copied to the referenced string.

◆ find_view()

template<typename T >
data::ref_ptr<view<T> > cgv::gui::gui_group::find_view ( const T &  value,
int *  idx_ptr = 0 
)
inlineinherited

find the next view of the given value in the current group.

If the index pointer is given, start at the index to which the pointer points and set this index to the index of the child index of the found view

◆ get()

template<typename T >
T cgv::base::base::get ( const std::string &  property)
inlineinherited

query a property of the element and perform standard conversions if necessary.

This templated version simply extracts the type of the value from the reference and calls the set_void() method. Note that this only works if the template cgv::type::info::type_name<T> is overloaded for the value type.

◆ get_property_declarations()

std::string cgv::base::base::get_property_declarations ( )
virtualinherited

return a semicolon separated list of property declarations

return a semicolon separated list of property declarations of the form "name:type", by default an empty list is returned

of the form "name1:type1;name2:type2;...", by default an empty list is returned. The types should by consistent with the names returned by cgv::type::info::type_name::get_name. The default implementation extracts names and types from the self_reflect() method and the meta type information provided by the get_type() method.

Reimplemented in cgv::base::factory, cgv::base::base_generator, cgv::media::image::image_reader, cgv::media::video::video_writer, cgv::media::image::image_writer, cgv::media::video::video_reader, and cgv::base::console.

◆ get_selected_child()

base_ptr cgv::gui::gui_group::get_selected_child ( ) const
virtualinherited

return the currently selected child.

In case of multiple_selection, this function returns the first selected child. In this case it can also happen that the returned base_ptr is empty if no child is selected.

◆ get_selected_child_index()

int cgv::gui::gui_group::get_selected_child_index ( ) const
virtualinherited

return the index of the currently selected child.

In case of multiple_selection, this function returns the index of the first selected child. In this case it can also happen that the returned index is -1 if no child is selected.

◆ get_user_data()

void * cgv::base::base::get_user_data ( ) const
virtualinherited

this virtual method allows to pass application specific data for internal purposes

this virtual method allows derived classes to pass application specific data

◆ get_void()

bool cgv::base::base::get_void ( const std::string &  property,
const std::string &  value_type,
void *  value_ptr 
)
virtualinherited

abstract interface for the getter of a dynamic property.

abstract interface for the getter, by default it simply returns false

The default implementation uses the self_reflect() method to find a member with the given property as name. If not found, the get_void method returns false.

Reimplemented in cgv::base::factory, cgv::base::base_generator, cgv::base::console, cgv::media::image::image_reader, cgv::media::image::image_writer, cgv::media::video::video_reader, and cgv::media::video::video_writer.

◆ is_property()

bool cgv::base::base::is_property ( const std::string &  property_name,
std::string *  type_name = 0 
)
inherited

check if the given name specifies a property.

If the type name string pointer is provided, the type of the property is copied to the referenced string.

◆ is_selected()

bool cgv::gui::gui_group::is_selected ( unsigned  ci) const
inherited

return whether the given child is selected.

the implementation simply calls the virtual variant with get_child(ci).

◆ multi_set()

void cgv::base::base::multi_set ( const std::string &  property_assignments,
bool  report_error = true 
)
inherited

set several properties

set several properties, which are defined as colon separated assignments, where the types are derived automatically

, which are defined as colon separated assignments, where the types are derived automatically to bool, int, double or std::string.

◆ on_register()

void cgv::base::base::on_register ( )
virtualinherited

overload to handle register events that is sent after the instance has been registered

overload to return a type info structure. By default an empty pointer is returned.

◆ open_child_group()

bool cgv::gui::gui_group::open_child_group ( gui_group_ptr  g)
virtualinherited

try to open given child group and return whether this was successful

open the given child group

◆ select_child()

void cgv::gui::gui_group::select_child ( unsigned  ci,
bool  exclusive = false 
)
virtualinherited

select the ci-th child of the group.

If multiple_selection() returns true, the exclusive flag can be used to unselect all other previously selected children except the newly selected one. Typically, an exclusively selected child will gain input focus.

◆ self_reflect()

bool cgv::base::base::self_reflect ( cgv::reflect::reflection_handler )
virtualinherited

used for simple self reflection

is used by default implementation of set_void, get_void and get_property_declarations

The overloaded implementation is used by the default implementations of set_void, get_void and get_property_declarations with corresponding reflection handlers. The default implementation of self_reflect is empty.

Reimplemented in cgv::render::render_config, and cgv::render::shader_config.

◆ set()

template<typename T >
void cgv::base::base::set ( const std::string &  property,
const T &  value 
)
inlineinherited

set a property of the element to the given value and perform standard conversions if necessary.

This templated version simply extracts the type of the value from the reference and calls the set_void() method. Note that this only works if the template cgv::type::info::type_name<T> is overloaded for the value type.

◆ set_void()

bool cgv::base::base::set_void ( const std::string &  property,
const std::string &  value_type,
const void *  value_ptr 
)
virtualinherited

abstract interface for the setter of a dynamic property.

abstract interface for the setter, by default it simply returns false

The default implementation uses the self_reflect() method to find a member with the given property as name. If not found, the set_void method returns false.

Reimplemented in cgv::base::factory, cgv::base::base_generator, cgv::base::console, cgv::media::image::image_reader, cgv::media::image::image_writer, cgv::media::video::video_reader, and cgv::media::video::video_writer.

◆ unselect_child()

bool cgv::gui::gui_group::unselect_child ( unsigned  ci)
virtualinherited

unselect the ci-th child.

If no multiple_selection is allowed, unselection can fail if the group does not support an empty selection.

Member Data Documentation

◆ on_open_state_change

cgv::signal::signal<gui_group_ptr,bool> cgv::gui::gui_group::on_open_state_change
inherited

this signal is emitted, when a child group is opened or closed

The first argument specifies the group and the second whether it has been opened.

◆ on_selection_change

cgv::signal::signal<base_ptr, bool> cgv::gui::gui_group::on_selection_change
inherited

This signal is emitted for every change of the selection of a child.

The first argument is simply the pointer to the child whose selection state has been changed. The second argument is the new selection state.


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