PropertyConstraintList.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef APP_PropertyConstraintList_H
00025 #define APP_PropertyConstraintList_H
00026
00027
00028
00029
00030 #include <vector>
00031 #include <string>
00032 #include <App/Property.h>
00033 #include <Mod/Part/App/Geometry.h>
00034 #include "Constraint.h"
00035
00036 namespace Base {
00037 class Writer;
00038 }
00039
00040 namespace Sketcher
00041 {
00042 class Constraint;
00043
00044 class SketcherExport PropertyConstraintList: public App::PropertyLists
00045 {
00046 TYPESYSTEM_HEADER();
00047
00048 public:
00053 PropertyConstraintList();
00054
00059 virtual ~PropertyConstraintList();
00060
00061 virtual void setSize(int newSize);
00062 virtual int getSize(void) const;
00063
00066 void setValue(const Constraint*);
00067 void setValues(const std::vector<Constraint*>&);
00068
00070 const Constraint *operator[] (const int idx) const {
00071 return invalidGeometry ? 0 : _lValueList[idx];
00072 }
00073
00074 const std::vector<Constraint*> &getValues(void) const {
00075 return invalidGeometry ? _emptyValueList : _lValueList;
00076 }
00077
00078 virtual PyObject *getPyObject(void);
00079 virtual void setPyObject(PyObject *);
00080
00081 virtual void Save(Base::Writer &writer) const;
00082 virtual void Restore(Base::XMLReader &reader);
00083
00084 virtual Property *Copy(void) const;
00085 virtual void Paste(const App::Property &from);
00086
00087 virtual unsigned int getMemSize(void) const;
00088
00089 void acceptGeometry(const std::vector<Part::Geometry *> &GeoList);
00090 void checkGeometry(const std::vector<Part::Geometry *> &GeoList);
00091
00092 private:
00093 std::vector<Constraint *> _lValueList;
00094
00095 std::vector<unsigned int> validGeometryKeys;
00096 bool invalidGeometry;
00097
00098 void applyValues(const std::vector<Constraint*>&);
00099 void applyValidGeometryKeys(const std::vector<unsigned int> &keys);
00100
00101 static std::vector<Constraint *> _emptyValueList;
00102 };
00103
00104 }
00105
00106
00107 #endif // APP_PropertyConstraintList_H