Choreonoid  1.5
ViewManager.h
Go to the documentation of this file.
1 
5 #ifndef CNOID_BASE_VIEW_MANAGER_H
6 #define CNOID_BASE_VIEW_MANAGER_H
7 
8 #include "View.h"
9 #include "ExtensionManager.h"
10 #include "Archive.h"
11 #include <cnoid/Signal>
12 #include "exportdecl.h"
13 
14 namespace cnoid {
15 
16 class ExtensionManager;
17 class ViewManagerImpl;
18 
19 
21 {
22 public:
23  static void initializeClass(ExtensionManager* ext);
24 
26  ~ViewManager();
27 
28  class FactoryBase {
29  public:
30  virtual View* create() = 0;
31  virtual ~FactoryBase() { }
32  };
33 
34  template <class ViewType> class Factory : public FactoryBase {
35  public:
36  virtual View* create() { return new ViewType(); }
37  };
38 
43  MULTI_OPTIONAL
44  };
45 
50  template <class ViewType> ViewType* registerClass(
51  const std::string& className, const std::string& defaultInstanceName,
53  return static_cast<ViewType*>(
54  registerClassSub(typeid(ViewType), className, defaultInstanceName, itype, new Factory<ViewType>()));
55  }
56 
57  static ViewClass* viewClass(const std::type_info& view_type_info);
58 
59  // get or create the primal instance of the specified view type
60  static View* getOrCreateView(const std::string& moduleName, const std::string& className);
61 
62  // get or create the instance of the specified view type and instance name
63  static View* getOrCreateView(
64  const std::string& moduleName, const std::string& className, const std::string& instanceName);
65 
66  // for loading the view layout format of the version 1.4 or earlier
67  static View* getOrCreateViewOfDefaultName(const std::string& defaultName);
68 
69  static std::vector<View*> allViews();
70  static std::vector<View*> activeViews();
71 
72  template <class ViewType> static ViewType* getOrCreateView(bool doMountCreatedView = false) {
73  return static_cast<ViewType*>(getOrCreateSpecificTypeView(typeid(ViewType), std::string(), doMountCreatedView));
74  }
75 
76  template <class ViewType> static ViewType* getOrCreateView(const std::string& instanceName, bool doMountCreatedView = false) {
77  return static_cast<ViewType*>(getOrCreateSpecificTypeView(typeid(ViewType), instanceName, doMountCreatedView));
78  }
79 
80  template <class ViewType> static ViewType* findView() {
81  return static_cast<ViewType*>(findSpecificTypeView(typeid(ViewType), std::string()));
82  }
83 
84  template <class ViewType> static ViewType* findView(const std::string& instanceName) {
85  return static_cast<ViewType*>(findSpecificTypeView(typeid(ViewType), instanceName));
86  }
87 
88  static bool isPrimalInstance(View* view);
89 
90  static bool storeViewStates(ArchivePtr archive, const std::string& key);
91 
92  class ViewStateInfo {
93  public:
94  ViewStateInfo();
95  ~ViewStateInfo();
96  operator bool() const { return (data != 0); }
97  private:
98  void* data;
99  friend class ViewManager;
100  };
101 
102  static void restoreViews(ArchivePtr archive, const std::string& key, ViewStateInfo& out_viewStateInfo);
103  static bool restoreViewStates(ViewStateInfo& info);
104 
105  static SignalProxy<void(View* view)> sigViewCreated();
106  static SignalProxy<void(View* view)> sigViewActivated();
107  static SignalProxy<void(View* view)> sigViewDeactivated();
108  static SignalProxy<void(View* view)> sigViewRemoved();
109 
110 private:
111  ViewManager(const ViewManager& org) { }
112 
113  View* registerClassSub(
114  const std::type_info& view_type_info, const std::string& className, const std::string& defaultInstanceName,
115  InstantiationType itype, FactoryBase* factory);
116  static View* getOrCreateSpecificTypeView(
117  const std::type_info& view_type_info, const std::string& instanceName, bool doMountCreatedView);
118  static View* findSpecificTypeView(const std::type_info& view_type_info, const std::string& instanceName);
119 
120  ViewManagerImpl* impl;
121 };
122 
123 }
124 
125 #endif
Definition: View.h:22
Definition: ViewManager.h:42
ViewType * registerClass(const std::string &className, const std::string &defaultInstanceName, ViewManager::InstantiationType itype=ViewManager::SINGLE_OPTIONAL)
Definition: ViewManager.h:50
Definition: ExtensionManager.h:26
virtual ~FactoryBase()
Definition: ViewManager.h:31
Definition: ViewManager.h:28
Definition: ViewManager.h:40
InstantiationType
Definition: ViewManager.h:39
static ViewType * findView()
Definition: ViewManager.h:80
Definition: ViewManager.h:34
Defines the minimum processing for performing pasing file for STL.
Definition: AbstractSceneLoader.h:9
Definition: ViewManager.h:20
Definition: ViewManager.h:92
static ViewType * findView(const std::string &instanceName)
Definition: ViewManager.h:84
Definition: View.h:28
#define CNOID_EXPORT
Definition: Util/exportdecl.h:37
static ViewType * getOrCreateView(bool doMountCreatedView=false)
Definition: ViewManager.h:72
Definition: Signal.h:380
Definition: ViewManager.h:41
virtual View * create()
Definition: ViewManager.h:36
static ViewType * getOrCreateView(const std::string &instanceName, bool doMountCreatedView=false)
Definition: ViewManager.h:76