00001 /* 00002 visualsc - Visual State Chart Editing for SCXML State Engines 00003 Copyright (C) 2011 David W. Drell (david@davidwdrell.net) and 00004 Contributing Authors: 00005 00006 00007 This program is free software: you can redistribute it and/or modify 00008 it under the terms of the GNU General Public License as published by 00009 the Free Software Foundation, either version 3 of the License, or 00010 (at your option) any later version. 00011 00012 This program is distributed in the hope that it will be useful, 00013 but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 GNU General Public License for more details. 00016 00017 You should have received a copy of the GNU General Public License 00018 along with this program. If not, see <http://www.gnu.org/licenses/>. 00019 */ 00020 00021 #ifndef TRANSISTIONATTRIBUTES_H 00022 #define TRANSISTIONATTRIBUTES_H 00023 00024 #include <QList> 00025 #include <QPointF> 00026 #include <QString> 00027 #include "iattribute.h" 00028 00029 #include "scdatamodel_global.h" 00030 #include <QMetaType> 00031 00032 00042 class SCDATAMODELSHARED_EXPORT TransitionAttributes: public IAttributeContainer 00043 { 00044 public: 00045 00046 TransitionAttributes(QObject * parent, QString key); 00047 TransitionAttributes( const TransitionAttributes& ta); 00048 TransitionAttributes(); 00049 ~TransitionAttributes(); 00050 00051 virtual void setAttributes(const IAttributeContainer& sourceAttrList); 00052 00053 00054 class SCDATAMODELSHARED_EXPORT TransitionPathAttribute : public IAttribute 00055 { 00056 //<path d="M 100 100 L 300 100 L 200 300 z" /> 00057 00058 public: 00059 TransitionPathAttribute(QObject * parent, QString key, QList<QPointF>& initPath); 00060 TransitionPathAttribute(const TransitionPathAttribute & pathAttributes ); 00061 TransitionPathAttribute(); 00062 ~TransitionPathAttribute(); 00063 00064 TransitionPathAttribute& operator=( QList<QPointF>& path ); 00065 00066 virtual QString asString(); 00067 virtual QList<QPointF> asQPointFList(); 00068 00069 virtual void setValue(const QString value) ; 00070 00071 virtual void setValue(QList<QPointF>& path ) ; 00072 00073 private: 00074 00075 QList<QPointF> _pathPoints; 00076 }; 00077 00078 00079 00080 class SCDATAMODELSHARED_EXPORT TransitionStringAttribute : public IAttribute 00081 { 00082 public: 00083 TransitionStringAttribute(QObject * parent, QString key, QString initValue); 00084 TransitionStringAttribute(const TransitionStringAttribute & stringAttribute ); 00085 TransitionStringAttribute(); 00086 ~TransitionStringAttribute(); 00087 00088 TransitionStringAttribute& operator=( QString& str); 00089 00090 virtual QString asString(); 00091 00092 virtual void setValue(const QString value) ; 00093 00094 00095 private: 00096 00097 QString _string; 00098 }; 00099 00100 00101 class SCDATAMODELSHARED_EXPORT TransitionPositionAttribute : public IAttribute 00102 { 00103 public: 00104 TransitionPositionAttribute(QObject * parent, QString key, QPointF initValue); 00105 TransitionPositionAttribute(const TransitionStringAttribute & stringAttribute ); 00106 TransitionPositionAttribute(); 00107 ~TransitionPositionAttribute(); 00108 TransitionPositionAttribute& operator=( QString& str); 00109 00110 virtual QString asString(); 00111 virtual QPointF asQPointF(); 00112 virtual void setValue(const QString position) ; 00113 void setValue(const int w,const int h); 00114 void setValue(const QPointF s); 00115 00116 private: 00117 00118 QPointF _position; 00119 }; 00120 00121 00122 private: // methods 00123 00124 void initCommon(); 00125 }; 00126 Q_DECLARE_METATYPE(TransitionAttributes); 00127 Q_DECLARE_METATYPE( TransitionAttributes::TransitionPathAttribute); 00128 Q_DECLARE_METATYPE(TransitionAttributes::TransitionStringAttribute); 00129 Q_DECLARE_METATYPE(TransitionAttributes::TransitionPositionAttribute); 00130 00131 #endif // TRANSISTIONATTRIBUTES_H