00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef ARIDE_PARAMETER_ARDEV_H
00021 #define ARIDE_PARAMETER_ARDEV_H
00022
00023 #include <qobject.h>
00024 #include <qlineedit.h>
00025 #include <qcheckbox.h>
00026
00027 #include "aride_parameter.h"
00028 #include "mainwindow.h"
00029 #include "aride_exception.h"
00030
00031 class aride_object;
00032
00033
00034
00035 template<class T, ArideSection Section>
00036 class ARObjectParameter : public StringParameter
00037 {
00038 public:
00039 ARObjectParameter(QString _Name, QString _Description, QString _DefaultValue="") : StringParameter(_Name,_Description,_DefaultValue) {Type=GetArideSectionTypeName(Section);};
00040 ~ARObjectParameter() {};
00041
00042 T GetClass()
00043 {
00044 if (Value == "")
00045 throw aride_exception(ARIDE_CLASS_NOT_FOUND, __FILE__, __LINE__);
00046 aride_object * temp = theMainWindow->GetObjectByName(Value);
00047 if (temp == NULL)
00048 throw aride_exception(ARIDE_CLASS_NOT_FOUND, __FILE__, __LINE__);
00049 if (temp->Section == Section)
00050 return reinterpret_cast<T> (temp->Handler);
00051 throw aride_exception(ARIDE_CLASS_NOT_FOUND, __FILE__, __LINE__);
00052 };
00053
00054 virtual void ExternalNameChange(const QString & OldName, const QString & NewName)
00055 {
00056 if (Value == OldName)
00057 fromString(NewName);
00058 }
00059 };
00060
00061 template <class T>
00062 class ArideObjectHandler;
00063
00064 typedef ArideObjectHandler<CameraObject> CameraObjectHandler;
00065 typedef ArideObjectHandler<CaptureObject> CaptureObjectHandler;
00066 typedef ArideObjectHandler<OutputObject> OutputObjectHandler;
00067 typedef ArideObjectHandler<PositionObject> PositionObjectHandler;
00068
00069
00070 class RenderObjectHandler;
00071
00072
00073
00074
00075
00076 typedef ARObjectParameter<CameraObjectHandler*,ARIDE_CAMERA> CameraObjectParameter;
00077 typedef ARObjectParameter<CaptureObjectHandler*,ARIDE_CAPTURE> CaptureObjectParameter;
00078 typedef ARObjectParameter<OutputObjectHandler*,ARIDE_OUTPUT> OutputObjectParameter;
00079 typedef ARObjectParameter<PositionObjectHandler*,ARIDE_POSITION> PositionObjectParameter;
00080 typedef ARObjectParameter<RenderObjectHandler*,ARIDE_RENDER> RenderObjectParameter;
00081
00082
00083 #endif