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 "positionedit.h"
22 #include "ui_positionedit.h"
23 
24 #include <QRegExpValidator>
25 
26 namespace ActionTools
27 {
PositionEdit(QWidget * parent)28 	PositionEdit::PositionEdit(QWidget *parent)
29 		: QWidget(parent),
30         ui(new Ui::PositionEdit),
31 		mValidator(new QRegExpValidator(QRegExp(QStringLiteral("^\\d+(\\.\\d{1,2})?:\\d+(\\.\\d{1,2})?$"), Qt::CaseSensitive, QRegExp::RegExp2), this))
32 	{
33 		ui->setupUi(this);
34 
35         ui->position->setValidator(mValidator);
36 	}
37 
~PositionEdit()38 	PositionEdit::~PositionEdit()
39 	{
40 		delete ui;
41 	}
42 
setText(const QString & text)43 	void PositionEdit::setText(const QString &text)
44 	{
45 		ui->position->setText(text);
46 	}
47 
text() const48 	QString PositionEdit::text() const
49 	{
50 		return ui->position->text();
51 	}
52 
codeLineEdit() const53 	CodeLineEdit *PositionEdit::codeLineEdit() const
54 	{
55 		return ui->position;
56 	}
57 
isCode() const58 	bool PositionEdit::isCode() const
59 	{
60 		return ui->position->isCode();
61 	}
62 
setCode(bool code)63 	void PositionEdit::setCode(bool code)
64 	{
65 		ui->position->setCode(code);
66 	}
67 
setFromSubParameter(const SubParameter & subParameter)68 	void PositionEdit::setFromSubParameter(const SubParameter &subParameter)
69 	{
70 		ui->position->setFromSubParameter(subParameter);
71 	}
72 
openEditor(int line,int column)73 	void PositionEdit::openEditor(int line, int column)
74 	{
75 		ui->position->openEditor(line, column);
76 	}
77 
setCompletionModel(QAbstractItemModel * completionModel)78 	void PositionEdit::setCompletionModel(QAbstractItemModel *completionModel)
79 	{
80         codeLineEdit()->setCompletionModel(completionModel);
81     }
82 
setParameterContainer(const ParameterContainer * parameterContainer)83     void PositionEdit::setParameterContainer(const ParameterContainer *parameterContainer)
84     {
85         codeLineEdit()->setParameterContainer(parameterContainer);
86     }
87 
findVariables() const88     QSet<QString> PositionEdit::findVariables() const
89     {
90         return codeLineEdit()->findVariables();
91     }
92 
setPosition(QPointF position)93     void PositionEdit::setPosition(QPointF position)
94 	{
95 		ui->position->setText(QStringLiteral("%1:%2").arg(position.x()).arg(position.y()));
96 	}
97 
on_choose_positionChosen(QPointF position)98     void PositionEdit::on_choose_positionChosen(QPointF position)
99 	{
100 		setPosition(position);
101 
102         emit positionChosen(position);
103 	}
104 
on_position_codeChanged(bool code)105 	void PositionEdit::on_position_codeChanged(bool code)
106 	{
107 		if(code)
108 		{
109 			QString oldText = ui->position->text();
110             ui->position->setValidator(nullptr);
111 			ui->position->setText(oldText);
112 		}
113         else
114             ui->position->setValidator(mValidator);
115 	}
116 }
117