Choreonoid  1.5
PutPropertyFunction.h
Go to the documentation of this file.
1 
5 #ifndef CNOID_BASE_PUT_PROPERTY_FUNCTION_H
6 #define CNOID_BASE_PUT_PROPERTY_FUNCTION_H
7 
8 #include <cnoid/Selection>
9 #include <boost/function.hpp>
10 #include "exportdecl.h"
11 
12 namespace cnoid {
13 
14 typedef std::vector<std::string> FileDialogFilter;
15 struct FilePath {
16  std::string fileName;
17  FileDialogFilter filters;
18  std::string directory;
19  FilePath(const std::string& name) {
20  fileName = name;
21  }
22  FilePath(const std::string& name, const FileDialogFilter& filters_, const std::string& dir="") {
23  fileName = name;
24  filters = filters_;
25  directory = dir;
26  }
27  };
28 
29 #ifndef WIN32
30 #define DLLSFX string("(*.so)")
31 #else
32 #define DLLSFX string("(*.dll)")
33 #endif
34 
36 {
37 public:
38 
39  virtual ~PutPropertyFunction() { }
40 
41  virtual PutPropertyFunction& decimals(int d) = 0;
42  virtual PutPropertyFunction& min(double min) = 0;
43  virtual PutPropertyFunction& max(double max) = 0;
44  virtual PutPropertyFunction& min(int min) = 0;
45  virtual PutPropertyFunction& max(int max) = 0;
46  virtual PutPropertyFunction& reset() = 0;
47 
48  // bool
49  virtual void operator()(const std::string& name, bool value) = 0;
50  virtual void operator()(const std::string& name, bool value,
51  const boost::function<bool(bool)>& changeFunc) = 0;
52  virtual void operator()(const std::string& name, bool value,
53  const boost::function<void(bool)>& changeFunc, bool forceUpdate) = 0;
54 
55  // int
56  virtual void operator()(const std::string& name, int value) = 0;
57  virtual void operator()(const std::string& name, int value,
58  const boost::function<bool(int)>& changeFunc) = 0;
59  virtual void operator()(const std::string& name, int value,
60  const boost::function<void(int)>& changeFunc, bool forceUpdate) = 0;
61 
62  // double
63  virtual void operator()(const std::string& name, double value) = 0;
64  virtual void operator()(const std::string& name, double value,
65  const boost::function<bool(double)>& changeFunc) = 0;
66  virtual void operator()(const std::string& name, double value,
67  const boost::function<void(double)>& func, bool forceUpdate) = 0;
68 
69  // string
70  virtual void operator()(const std::string& name, const std::string& value) = 0;
71  virtual void operator()(const std::string& name, const std::string& value,
72  const boost::function<bool(const std::string&)>& changeFunc) = 0;
73  virtual void operator()(const std::string& name, const std::string& value,
74  const boost::function<void(const std::string&)>& changeFunc, bool forceUpdate) = 0;
75 
76  // selection
77  virtual void operator()(const std::string& name, const Selection& selection) = 0;
78  virtual void operator()(const std::string& name, const Selection& selection,
79  const boost::function<bool(int which)>& changeFunc) = 0;
80  virtual void operator()(const std::string& name, const Selection& selection,
81  const boost::function<void(int which)>& changeFunc, bool forceUpdate) = 0;
82 
83  // FilePath
84  virtual void operator()(const std::string& name, const FilePath& filePath) = 0;
85  virtual void operator()(const std::string& name, const FilePath& filePath,
86  const boost::function<bool(const std::string&)>& changeFunc) = 0;
87  virtual void operator()(const std::string& name, const FilePath& filePath,
88  const boost::function<void(const std::string&)>& changeFunc, bool forceUpdate) = 0;
89 };
90 
91 
92 template <class ValueType>
94 {
95  ValueType& variable;
96 public:
97  ChangeProperty(ValueType& variable) : variable(variable) { }
98  bool operator()(const ValueType& value){
99  variable = value;
100  return true;
101  }
102 };
103 
104 template <>
106 {
107  Selection& selection;
108 public:
109  ChangeProperty(Selection& variable) : selection(variable) { }
110  bool operator()(int value){
111  selection.select(value);
112  return true;
113  }
114 };
115 
116 template<class ValueType>
118  return ChangeProperty<ValueType>(variable);
119 }
120 
121 }
122 
123 #endif
bool operator()(int value)
Definition: PutPropertyFunction.h:110
virtual ~PutPropertyFunction()
Definition: PutPropertyFunction.h:39
FilePath(const std::string &name)
Definition: PutPropertyFunction.h:19
ChangeProperty(Selection &variable)
Definition: PutPropertyFunction.h:109
Definition: PutPropertyFunction.h:35
FilePath(const std::string &name, const FileDialogFilter &filters_, const std::string &dir="")
Definition: PutPropertyFunction.h:22
Definition: Selection.h:14
ChangeProperty< ValueType > changeProperty(ValueType &variable)
Definition: PutPropertyFunction.h:117
FileDialogFilter filters
Definition: PutPropertyFunction.h:17
bool operator()(const ValueType &value)
Definition: PutPropertyFunction.h:98
Defines the minimum processing for performing pasing file for STL.
Definition: AbstractSceneLoader.h:9
Definition: PutPropertyFunction.h:93
std::string directory
Definition: PutPropertyFunction.h:18
ChangeProperty(ValueType &variable)
Definition: PutPropertyFunction.h:97
Definition: PutPropertyFunction.h:15
std::vector< std::string > FileDialogFilter
Definition: PutPropertyFunction.h:14
std::string fileName
Definition: PutPropertyFunction.h:16