3#include <cgv/base/group.h>
4#include <cgv/type/cond/is_enum.h>
5#include <cgv/type/info/type_name.h>
6#include <cgv/base/register.h>
13template <typename T, bool is_enum = cgv::type::cond::is_enum<T>::value>
21 static const char*
get_name() {
return "enum"; }
27class CGV_API gui_group;
28class CGV_API provider;
40 friend class provider;
82 virtual void select_child(
unsigned ci,
bool exclusive =
false);
132 virtual void align(
const std::string& _align);
134 virtual gui_group_ptr add_group(
const std::string& label,
const std::string& group_type,
const std::string& options,
const std::string&
align);
140 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);
144 template <
typename T>
145 inline 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") {
148 gui_type, options,
align);
152 template <
typename T>
156 gui_type, options,
align, 0);
160 template <
typename T>
163 const std::string& options =
"",
const std::string&
align =
"\n",
void* user_data = 0) {
166 gui_type, options,
align, user_data);
176 view_ptr find_view_void(
const void* value_ptr,
int* idx_ptr);
178 control_ptr find_control_void(
void* value_ptr,
int* idx_ptr);
183 template <
typename T>
192 template <
typename T>
210#include <cgv/config/lib_end.h>
The group class is a node with children.
std::string name
store the name as a string
reference counted pointer, which can work together with types that are derived from ref_counted,...
ref_ptr< S, is_ref_counted > down_cast() const
use static cast to convert from T to S if T is a base class of S and has a virtual destructor
void add_managed_objects(cgv::base::base_ptr object)
add the passed object as an managed object.
virtual bool can_open_and_close() const
returns whether open and close of sub groups is allowed
virtual cgv::base::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
std::string get_type_name() const
overload to return the type name of this object
cgv::signal::signal< cgv::base::base_ptr, bool > on_selection_change
This signal is emitted for every change of the selection of a child.
virtual bool unselect_child(unsigned ci)
unselect the ci-th child.
void release_managed_objects(cgv::base::base_ptr object)
release a specific managed object
control_ptr find_control_void(void *value_ptr, int *idx_ptr)
find a control in the group based on a const void pointer
virtual bool is_open_child_group(gui_group_ptr g) const
return whether the given child is open
static void set_provider_parent(provider *p, gui_group_ptr g)
access to protected provider method
void unregister_object(cgv::base::base_ptr object, const std::string &options)
overload to handle unregistration events
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.
virtual bool multiple_selection() const
return whether several children of the group can be selected at the same time
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 bool close_child_group(gui_group_ptr g)
try to close given child group and return whether this was successful
void release_all_managed_objects()
release all managed objects
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
std::vector< cgv::base::base_ptr > managed_objects
managed objects can be add to the group such that
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,...
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
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
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,...
bool is_managed_object(cgv::base::base_ptr object)
check whether an object is managed by this gui group
virtual void select_child(unsigned ci, bool exclusive=false)
select the ci-th child of the group.
gui_group(const std::string &name="")
construct from name
void register_object(cgv::base::base_ptr object, const std::string &options)
interface of adding an object
virtual int get_selected_child_index() const
return the index of the currently selected child.
view_ptr find_view_void(const void *value_ptr, int *idx_ptr)
find a view in the group based on a const void pointer
virtual cgv::base::base_ptr get_selected_child() const
return the currently selected child.
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
cgv::signal::signal< gui_group_ptr, bool > on_open_state_change
this signal is emitted, when a child group is opened or closed
virtual bool open_child_group(gui_group_ptr g)
try to open given child group and return whether this was successful
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.
virtual bool is_selected(cgv::base::base_ptr c) const
return whether the given child is selected
virtual void align(const std::string &_align)
send pure alignment information
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
class for gui elements that view values of the type specified in the template argument
data::ref_ptr< base, true > base_ptr
ref counted pointer to base
data::ref_ptr< gui_group, true > gui_group_ptr
ref counted pointer to a gui group
data::ref_ptr< button > button_ptr
ref counted pointer to button
data::ref_ptr< abst_view > view_ptr
ref counted pointer to abst view
data::ref_ptr< abst_control > control_ptr
ref counted pointer to abst control
data::ref_ptr< const gui_group, true > const_gui_group_ptr
ref counted pointer to const gui group
this header is dependency free
interfaces that allows to listen to registration events.
type independent base class of control provider interface
traits class with a static function get_name() of type const char* that returns the type name of the ...
static const char * get_name()
return special name for standard types or type name from RTTI cleaned from keywords for all other typ...