From cbe3074cedac1cc509282a1a0df80cac998355a6 Mon Sep 17 00:00:00 2001 From: Aleks Kissinger Date: Thu, 3 Jan 2019 12:31:18 +0100 Subject: string validation for the styleeditor (closes #44) --- src/data/delimitedstringvalidator.h | 1 + src/gui/delimitedstringitemdelegate.cpp | 44 +++++++++++++++++++++++++++++++++ src/gui/delimitedstringitemdelegate.h | 42 +++++++++++++++++++++++++++++++ src/gui/styleeditor.cpp | 6 +++++ tex/sample/sample.tikzstyles | 4 +-- tikzit.pro | 6 +++-- 6 files changed, 99 insertions(+), 4 deletions(-) create mode 100644 src/gui/delimitedstringitemdelegate.cpp create mode 100644 src/gui/delimitedstringitemdelegate.h 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 . +*/ + +#include "delimitedstringitemdelegate.h" + +#include + +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(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 . +*/ + +/*! + * A QItemDelete that attaches a DelimitedStringValidator to any QLineEdit + */ + +#ifndef DELIMITEDSTRINGITEMDELEGATE_H +#define DELIMITEDSTRINGITEMDELEGATE_H + +#include "delimitedstringvalidator.h" + +#include +#include + +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 diff --git a/tikzit.pro b/tikzit.pro index 4f7585c..ed1fca6 100644 --- a/tikzit.pro +++ b/tikzit.pro @@ -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 \ -- cgit v1.2.3