diff options
author | Aleks Kissinger <aleks0@gmail.com> | 2019-01-03 12:31:18 +0100 |
---|---|---|
committer | Aleks Kissinger <aleks0@gmail.com> | 2019-01-03 12:31:25 +0100 |
commit | cbe3074cedac1cc509282a1a0df80cac998355a6 (patch) | |
tree | 5826e558f3e884d45d9ebdf5e62f7d87e771314e | |
parent | 5bcacbe0d3f9f943de0bae7c1b3906dbaa1f0ba1 (diff) |
string validation for the styleeditor (closes #44)
-rw-r--r-- | src/data/delimitedstringvalidator.h | 1 | ||||
-rw-r--r-- | src/gui/delimitedstringitemdelegate.cpp | 44 | ||||
-rw-r--r-- | src/gui/delimitedstringitemdelegate.h | 42 | ||||
-rw-r--r-- | src/gui/styleeditor.cpp | 6 | ||||
-rw-r--r-- | tex/sample/sample.tikzstyles | 4 | ||||
-rw-r--r-- | tikzit.pro | 6 |
6 files changed, 99 insertions, 4 deletions
diff --git a/src/data/delimitedstringvalidator.h b/src/data/delimitedstringvalidator.h index b4ed3bd..60c2513 100644 --- a/src/data/delimitedstringvalidator.h +++ b/src/data/delimitedstringvalidator.h @@ -35,6 +35,7 @@ class DelimitedStringValidator : public QValidator { + Q_OBJECT public: DelimitedStringValidator(QObject *parent); QValidator::State validate(QString &input, int &/*pos*/) const override; diff --git a/src/gui/delimitedstringitemdelegate.cpp b/src/gui/delimitedstringitemdelegate.cpp new file mode 100644 index 0000000..7b6c58e --- /dev/null +++ b/src/gui/delimitedstringitemdelegate.cpp @@ -0,0 +1,44 @@ +/* + TikZiT - a GUI diagram editor for TikZ + Copyright (C) 2018 Aleks Kissinger + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. +*/ + +#include "delimitedstringitemdelegate.h" + +#include <QLineEdit> + +DelimitedStringItemDelegate::DelimitedStringItemDelegate(QObject *parent) : QItemDelegate (parent) +{ + _validator = new DelimitedStringValidator(this); +} + +DelimitedStringItemDelegate::~DelimitedStringItemDelegate() +{ +} + +QWidget *DelimitedStringItemDelegate::createEditor( + QWidget *parent, + const QStyleOptionViewItem &option, + const QModelIndex &index) const +{ + QWidget *editor = QItemDelegate::createEditor(parent, option, index); + + if (QLineEdit *lineEdit = dynamic_cast<QLineEdit*>(editor)) { + lineEdit->setValidator(_validator); + } + + return editor; +} diff --git a/src/gui/delimitedstringitemdelegate.h b/src/gui/delimitedstringitemdelegate.h new file mode 100644 index 0000000..bd1a856 --- /dev/null +++ b/src/gui/delimitedstringitemdelegate.h @@ -0,0 +1,42 @@ +/* + TikZiT - a GUI diagram editor for TikZ + Copyright (C) 2018 Aleks Kissinger + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. +*/ + +/*! + * A QItemDelete that attaches a DelimitedStringValidator to any QLineEdit + */ + +#ifndef DELIMITEDSTRINGITEMDELEGATE_H +#define DELIMITEDSTRINGITEMDELEGATE_H + +#include "delimitedstringvalidator.h" + +#include <QWidget> +#include <QItemDelegate> + +class DelimitedStringItemDelegate : public QItemDelegate +{ + Q_OBJECT +public: + DelimitedStringItemDelegate(QObject *parent=nullptr); + virtual ~DelimitedStringItemDelegate() override; + QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override; +private: + DelimitedStringValidator *_validator; +}; + +#endif // DELIMITEDSTRINGITEMDELEGATE_H diff --git a/src/gui/styleeditor.cpp b/src/gui/styleeditor.cpp index 17929da..7817731 100644 --- a/src/gui/styleeditor.cpp +++ b/src/gui/styleeditor.cpp @@ -24,6 +24,7 @@ #include "styleeditor.h" #include "delimitedstringvalidator.h" #include "ui_styleeditor.h" +#include "delimitedstringitemdelegate.h" StyleEditor::StyleEditor(QWidget *parent) : QMainWindow(parent), @@ -39,6 +40,11 @@ StyleEditor::StyleEditor(QWidget *parent) : DelimitedStringValidator *v = new DelimitedStringValidator(this); ui->name->setValidator(v); + ui->category->lineEdit()->setValidator(v); + ui->shape->lineEdit()->setValidator(v); + + DelimitedStringItemDelegate *delegate = new DelimitedStringItemDelegate(ui->properties); + ui->properties->setItemDelegate(delegate); setWindowIcon(QIcon(":/images/tikzit.png")); _styles = nullptr; diff --git a/tex/sample/sample.tikzstyles b/tex/sample/sample.tikzstyles index 5790de1..20a2bbc 100644 --- a/tex/sample/sample.tikzstyles +++ b/tex/sample/sample.tikzstyles @@ -5,8 +5,8 @@ % Node styles \tikzstyle{red node}=[fill=red, tikzit category=nodes, shape=circle, draw=black] -\tikzstyle{blue node}=[fill=blue, shape=circle, draw=black] -\tikzstyle{blue node 2}=[tikzit fill=green, fill=blue, shape=circle, draw=black] +\tikzstyle{blue node}=[fill=blue, shape=circle, draw=black, tikzit category=nodes] +\tikzstyle{blue node 2}=[tikzit fill=green, fill=blue, shape=circle, draw=black, tikzit category=nodes] \tikzstyle{yellow square}=[draw=black, fill=yellow, shape=rectangle] % Edge styles @@ -80,7 +80,8 @@ SOURCES += src/gui/mainwindow.cpp \ src/gui/latexprocess.cpp \ src/data/pdfdocument.cpp \ src/gui/exportdialog.cpp \ - src/data/delimitedstringvalidator.cpp + src/data/delimitedstringvalidator.cpp \ + src/gui/delimitedstringitemdelegate.cpp HEADERS += src/gui/mainwindow.h \ src/gui/toolpalette.h \ @@ -111,7 +112,8 @@ HEADERS += src/gui/mainwindow.h \ src/gui/latexprocess.h \ src/data/pdfdocument.h \ src/gui/exportdialog.h \ - src/data/delimitedstringvalidator.h + src/data/delimitedstringvalidator.h \ + src/gui/delimitedstringitemdelegate.h FORMS += src/gui/mainwindow.ui \ src/gui/propertypalette.ui \ |