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>
11 #include "lib_begin.h"
15 template <typename T, bool is_enum = cgv::type::cond::is_enum<T>::value>
21 struct enum_aware_type_name<T,true>
23 static const char*
get_name() {
return "enum"; }
29 class CGV_API gui_group;
30 class CGV_API provider;
57 std::string get_type_name()
const;
70 void release_all_managed_objects();
78 virtual bool multiple_selection()
const;
84 virtual void select_child(
unsigned ci,
bool exclusive =
false);
86 virtual void select_child(base_ptr ci,
bool exclusive =
false);
90 virtual bool unselect_child(
unsigned ci);
92 virtual bool unselect_child(base_ptr ci);
96 virtual int get_selected_child_index()
const;
101 virtual base_ptr get_selected_child()
const;
103 virtual bool is_selected(base_ptr c)
const;
106 bool is_selected(
unsigned ci)
const;
115 virtual bool can_open_and_close()
const;
120 bool is_open_child_group(
unsigned ci)
const;
133 virtual void align(
const std::string& _align);
136 virtual gui_group_ptr add_group(
const std::string& label,
const std::string& group_type,
const std::string& options,
const std::string& align);
138 virtual base_ptr add_decorator(
const std::string& label,
const std::string& decorator_type,
const std::string& options,
const std::string& align);
140 virtual button_ptr add_button(
const std::string& label,
const std::string& options,
const std::string& align);
142 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 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);
146 template <
typename T>
147 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 view_ptr vp = add_view_void(label, &value,
149 enum_aware_type_name<T>::get_name(),
150 gui_type, options, align);
154 template <
typename T>
156 control_ptr cp = add_control_void(label, &value, 0,
157 enum_aware_type_name<T>::get_name(),
158 gui_type, options, align, 0);
162 template <
typename T>
165 const std::string& options =
"",
const std::string& align =
"\n",
void* user_data = 0) {
167 enum_aware_type_name<T>::get_name(),
168 gui_type, options, align, user_data);
175 base_ptr find_element(
const std::string& name);
178 view_ptr find_view_void(
const void* value_ptr,
int* idx_ptr);
180 control_ptr find_control_void(
void* value_ptr,
int* idx_ptr);
185 template <
typename T>
187 view_ptr vp = find_view_void(&value,idx_ptr);
194 template <
typename T>
196 control_ptr cp = find_control_void(&value,idx_ptr);
212 #include <cgv/config/lib_end.h>
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
Definition: gui_group.h:163
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.
Definition: gui_group.h:186
cgv::signal::signal< gui_group_ptr, bool > on_open_state_change
this signal is emitted, when a child group is opened or closed
Definition: gui_group.h:128
type independent base class of control provider interface
Definition: control.h:37
ref_ptr< S, is_ref_counted > up_cast() const
use static cast to convert from T to S if T is a base class of S and has a virtual destructor
Definition: ref_ptr.h:180
cgv::signal::signal< base_ptr, bool > on_selection_change
This signal is emitted for every change of the selection of a child.
Definition: gui_group.h:110
data::ref_ptr< base, true > base_ptr
ref counted pointer to base
Definition: base.h:37
static const char * get_name()
return special name for standard types or type name from RTTI cleaned from keywords for all other typ...
Definition: type_name.h:56
derive from this class to provide a gui to the current viewer
Definition: provider.h:64
class for gui elements that view values of the type specified in the template argument
Definition: view.h:45
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,...
Definition: gui_group.h:147
std::vector< cgv::base::base_ptr > managed_objects
managed objects can be add to the group such that
Definition: gui_group.h:44
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,...
Definition: gui_group.h:155
data::ref_ptr< gui_group, true > gui_group_ptr
ref counted pointer to a gui group
Definition: gui_group.h:33
the cgv namespace
Definition: vr_calib.cxx:9
gui independent group class which is a container for gui elements
Definition: gui_group.h:40
interfaces that allows to listen to registration events.
Definition: register.h:216
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.
Definition: gui_group.h:195
data::ref_ptr< const gui_group, true > const_gui_group_ptr
ref counted pointer to const gui group
Definition: gui_group.h:36
Definition: type_name.h:54