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