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