21 #include <boost/bind.hpp>
22 #include <boost/unordered_map.hpp>
26 class DtBaseConnection;
28 class DtSceneObjectVisualizer;
29 class DtStateListener;
30 class DtStateVisualizerFactory;
32 class DtElementDefinitionNew;
33 class DtVisualizerDefinitionSet;
34 class DtVisualizerDefinition;
47 int modelSet,
bool distribute);
53 virtual void visualizeElementDefinition(
const DtUnicode& elementName,
58 virtual void visualizeElementDefinition(
const DtUnicode& elementName,
66 virtual void createVisualizersByType(
int visualType );
70 virtual void destroyVisualizersByType(
int visualType );
79 template <
typename VisualizerClass>
80 inline void findVisualizers(std::vector<VisualizerClass*>& visualizers);
85 template <
typename VisualizerClass>
86 inline void findVisualizersByDynamicCast(std::vector<VisualizerClass*>& visualizers);
99 virtual bool setVisible(
bool visible,
104 virtual bool isVisible()
const;
119 virtual void setPickable(
bool pickable );
122 bool pickable()
const;
125 virtual void setSelected(
bool);
128 bool selected()
const;
135 virtual void destroyAllModelVisualizers();
142 const std::string& windowName,
const std::string& channelName,
146 const std::string& windowName,
const std::string& channelName,
150 const std::string& windowName,
const std::string& channelName,
158 void destroyAllModelVisualizersInternal();
171 virtual void addVisualizer(
const std::string& schemaName,
184 virtual void setModelVisualizerVisible(
const std::string& schemaName,
185 bool onOff,
int context);
188 virtual void slot_mouseDown(
190 const std::string& windowName,
const std::string& channelName,
DtStateVisualizer* v);
191 virtual void slot_mouseUp(
193 const std::string& windowName,
const std::string& channelName,
DtStateVisualizer* v);
194 virtual void slot_mouseDblClick(
196 const std::string& windowName,
const std::string& channelName,
DtStateVisualizer* v);
200 template <
typename T,
typename C>
201 void connectAndUpdate(boost::signal<
void (T)>& sig,
void (C::*fp)(T), T val)
203 myConnections.manageConnection(sig.connect(
boost::bind(fp, static_cast<C*>(
this), _1)));
204 ((C&)(*this).*fp)(val);
211 const DtUnicode* chooseRandomString(
const std::vector<DtUnicode>& stringList);
236 template <
typename VisualizerClass>
238 std::vector<VisualizerClass*>& visualizers)
240 std::pair<StateVisualizerMap::iterator,
241 StateVisualizerMap::iterator> range =
myVisualizers.equal_range(
242 VisualizerClass::theTypeInfo().schema.name());
244 for(; range.first != range.second; ++range.first)
246 VisualizerClass* instance =
dynamic_cast<VisualizerClass*
>(
247 range.first->second);
250 visualizers.push_back(instance);
255 template <
typename VisualizerClass>
257 std::vector<VisualizerClass*>& visualizers)
259 StateVisualizerMap::const_iterator iter =
myVisualizers.begin();
263 VisualizerClass* instance =
dynamic_cast<VisualizerClass*
>(iter->second);
267 visualizers.push_back(instance);