1 /* 2 Actiona 3 Copyright (C) 2005 Jonathan Mercier-Ganady 4 5 Actiona is free software: you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation, either version 3 of the License, or 8 (at your option) any later version. 9 10 Actiona is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with this program. If not, see <http://www.gnu.org/licenses/>. 17 18 Contact : jmgr@jmgr.info 19 */ 20 21 #include "pointlistparameterdefinition.h" 22 #include "subparameter.h" 23 #include "pointlistwidget.h" 24 #include "actioninstance.h" 25 26 namespace ActionTools 27 { PointListParameterDefinition(const Name & name,QObject * parent)28 PointListParameterDefinition::PointListParameterDefinition(const Name &name, QObject *parent) 29 : ParameterDefinition(name, parent), 30 mPointListWidget(nullptr) 31 { 32 } 33 buildEditors(Script * script,QWidget * parent)34 void PointListParameterDefinition::buildEditors(Script *script, QWidget *parent) 35 { 36 ParameterDefinition::buildEditors(script, parent); 37 38 mPointListWidget = new PointListWidget(parent); 39 40 addEditor(mPointListWidget); 41 } 42 load(const ActionInstance * actionInstance)43 void PointListParameterDefinition::load(const ActionInstance *actionInstance) 44 { 45 QString pointBuffer = actionInstance->subParameter(name().original(), QStringLiteral("value")).value(); 46 QPolygon polygon; 47 QStringList pointStrings = pointBuffer.split(QLatin1Char(';'), QString::SkipEmptyParts); 48 49 for(const QString &pointString: pointStrings) 50 { 51 QStringList pointComponents = pointString.split(QLatin1Char(':'), QString::SkipEmptyParts); 52 if(pointComponents.size() != 2) 53 continue; 54 55 polygon << QPoint(pointComponents.at(0).toInt(), pointComponents.at(1).toInt()); 56 } 57 58 mPointListWidget->setPoints(polygon); 59 } 60 save(ActionInstance * actionInstance)61 void PointListParameterDefinition::save(ActionInstance *actionInstance) 62 { 63 QString pointBuffer; 64 for(const QPoint &point: mPointListWidget->points()) 65 pointBuffer += QStringLiteral("%1:%2;").arg(point.x()).arg(point.y()); 66 67 actionInstance->setSubParameter(name().original(), QStringLiteral("value"), pointBuffer); 68 } 69 } 70