summaryrefslogtreecommitdiff
path: root/src/data
diff options
context:
space:
mode:
authorAleks Kissinger <aleks0@gmail.com>2018-08-02 17:44:37 +0200
committerAleks Kissinger <aleks0@gmail.com>2018-08-02 17:44:37 +0200
commit31a78ae551b781eccc47546a2f6d4bf121af24cf (patch)
treeb997a471d484f9b096878919fcd38b074dc7a59a /src/data
parentf978634e8607f568b83952db9255e08f3f7cbe92 (diff)
started style editor
Diffstat (limited to 'src/data')
-rw-r--r--src/data/nodestyle.cpp8
-rw-r--r--src/data/nodestyle.h4
-rw-r--r--src/data/style.cpp15
-rw-r--r--src/data/style.h4
-rw-r--r--src/data/tikzstyles.cpp83
-rw-r--r--src/data/tikzstyles.h10
6 files changed, 111 insertions, 13 deletions
diff --git a/src/data/nodestyle.cpp b/src/data/nodestyle.cpp
index ae9f0f7..928712d 100644
--- a/src/data/nodestyle.cpp
+++ b/src/data/nodestyle.cpp
@@ -30,11 +30,11 @@ NodeStyle::NodeStyle(QString name, GraphElementData *data): Style(name, data)
{
}
-QColor NodeStyle::fillColor() const
+QColor NodeStyle::fillColor(bool tikzitOverride) const
{
if (_data == 0) return Qt::white;
- QString col = propertyWithDefault("fill", "white");
+ QString col = propertyWithDefault("fill", "white", tikzitOverride);
QColor namedColor(col);
if (namedColor.isValid()) {
@@ -50,11 +50,11 @@ QBrush NodeStyle::brush() const
return QBrush(fillColor());
}
-NodeStyle::Shape NodeStyle::shape() const
+NodeStyle::Shape NodeStyle::shape(bool tikzitOverride) const
{
if (_data == 0) return NodeStyle::Circle;
- QString sh = propertyWithDefault("shape", "circle");
+ QString sh = propertyWithDefault("shape", "circle", tikzitOverride);
if (sh == "circle") return NodeStyle::Circle;
else if (sh == "rectangle") return NodeStyle::Rectangle;
else return NodeStyle::Circle;
diff --git a/src/data/nodestyle.h b/src/data/nodestyle.h
index c6fc0f6..ce36006 100644
--- a/src/data/nodestyle.h
+++ b/src/data/nodestyle.h
@@ -37,10 +37,10 @@ public:
NodeStyle();
NodeStyle(QString name, GraphElementData *data);
- QColor fillColor() const;
+ QColor fillColor(bool tikzitOverride=true) const;
QBrush brush() const;
QPainterPath path() const override;
- Shape shape() const;
+ Shape shape(bool tikzitOverride=true) const;
QPainterPath palettePath() const override;
QIcon icon() const override;
diff --git a/src/data/style.cpp b/src/data/style.cpp
index 41013c0..61c86d6 100644
--- a/src/data/style.cpp
+++ b/src/data/style.cpp
@@ -41,11 +41,11 @@ QString Style::name() const
return _name;
}
-QColor Style::strokeColor() const
+QColor Style::strokeColor(bool tikzitOverride) const
{
if (_data == 0) return Qt::black;
- QString col = propertyWithDefault("draw", "black");
+ QString col = propertyWithDefault("draw", "black", tikzitOverride);
QColor namedColor(col);
if (namedColor.isValid()) {
@@ -69,10 +69,15 @@ QPen Style::pen() const
return p;
}
-QString Style::propertyWithDefault(QString prop, QString def) const
+QString Style::propertyWithDefault(QString prop, QString def, bool tikzitOverride) const
{
- QString val = _data->property("tikzit " + prop);
- if (val.isNull()) val = _data->property(prop);
+ QString val;
+ if (tikzitOverride) {
+ val = _data->property("tikzit " + prop);
+ if (val.isNull()) val = _data->property(prop);
+ } else {
+ val = _data->property(prop);
+ }
if (val.isNull()) val = def;
return val;
}
diff --git a/src/data/style.h b/src/data/style.h
index 8315e5a..0be8b87 100644
--- a/src/data/style.h
+++ b/src/data/style.h
@@ -38,7 +38,7 @@ public:
// properties that both edges and nodes have
GraphElementData *data() const;
QString name() const;
- QColor strokeColor() const;
+ QColor strokeColor(bool tikzitOverride=true) const;
int strokeThickness() const;
// methods that are implemented differently for edges and nodes
@@ -47,7 +47,7 @@ public:
virtual QPainterPath palettePath() const = 0;
virtual QIcon icon() const = 0;
protected:
- QString propertyWithDefault(QString prop, QString def) const;
+ QString propertyWithDefault(QString prop, QString def, bool tikzitOverride=true) const;
QString _name;
GraphElementData *_data;
};
diff --git a/src/data/tikzstyles.cpp b/src/data/tikzstyles.cpp
index addd464..c96c55b 100644
--- a/src/data/tikzstyles.cpp
+++ b/src/data/tikzstyles.cpp
@@ -20,10 +20,38 @@
#include "nodestyle.h"
#include <QDebug>
+#include <QColorDialog>
TikzStyles::TikzStyles(QObject *parent) : QObject(parent)
{
+ // 19 standard xcolor colours
+ _colNames <<
+ "black" <<
+ "gray" <<
+ "darkgray" <<
+ "lightgray" <<
+ "white" <<
+ "red" <<
+ "orange" <<
+ "yellow" <<
+ "lime" <<
+ "blue" <<
+ "purple" <<
+
+ "brown" <<
+ "olive" <<
+ "green" <<
+ "teal" <<
+ "cyan" <<
+
+ "magenta" <<
+ "violet" <<
+ "pink";
+
+ for (int i = 0; i < _colNames.length(); ++i) {
+ _cols << QColor(_colNames[i]);
+ }
}
NodeStyle *TikzStyles::nodeStyle(QString name) const
@@ -51,6 +79,61 @@ void TikzStyles::clear()
_edgeStyles.clear();
}
+QColor TikzStyles::colorByIndex(int i)
+{
+ return _cols[i];
+}
+
+QColor TikzStyles::colorByName(QString name)
+{
+ for (int i = 0; i < _colNames.length(); ++i) {
+ if (_colNames[i] == name) return _cols[i];
+ }
+ return QColor();
+}
+
+QString TikzStyles::nameForColor(QColor col)
+{
+ for (int i = 0; i < _colNames.length(); ++i) {
+ if (_cols[i] == col) return _colNames[i];
+ }
+ return QString();
+}
+
+void TikzStyles::refreshModels(QStandardItemModel *nodeModel, QStandardItemModel *edgeModel)
+{
+ nodeModel->clear();
+ edgeModel->clear();
+ //QString f = tikzit->styleFile();
+ //ui->styleFile->setText(f);
+
+ QStandardItem *it;
+
+ it = new QStandardItem(noneStyle->icon(), noneStyle->name());
+ it->setEditable(false);
+ it->setData(noneStyle->name());
+ nodeModel->appendRow(it);
+
+ foreach(NodeStyle *ns, _nodeStyles) {
+ it = new QStandardItem(ns->icon(), ns->name());
+ it->setEditable(false);
+ it->setData(ns->name());
+ nodeModel->appendRow(it);
+ }
+
+ it = new QStandardItem(noneEdgeStyle->icon(), noneEdgeStyle->name());
+ it->setEditable(false);
+ it->setData(noneEdgeStyle->name());
+ edgeModel->appendRow(it);
+
+ foreach(EdgeStyle *es, _edgeStyles) {
+ it = new QStandardItem(es->icon(), es->name());
+ it->setEditable(false);
+ it->setData(es->name());
+ edgeModel->appendRow(it);
+ }
+}
+
QVector<EdgeStyle *> TikzStyles::edgeStyles() const
{
return _edgeStyles;
diff --git a/src/data/tikzstyles.h b/src/data/tikzstyles.h
index da9a05f..51392b2 100644
--- a/src/data/tikzstyles.h
+++ b/src/data/tikzstyles.h
@@ -25,6 +25,8 @@
#include <QObject>
#include <QString>
+#include <QColor>
+#include <QStandardItemModel>
class TikzStyles : public QObject
{
@@ -39,6 +41,12 @@ public:
QVector<EdgeStyle *> edgeStyles() const;
void clear();
+ // convenience functions for named colors
+ QColor colorByIndex(int i);
+ QColor colorByName(QString name);
+ QString nameForColor(QColor col);
+ void refreshModels(QStandardItemModel *nodeModel, QStandardItemModel *edgeModel);
+
signals:
public slots:
@@ -46,6 +54,8 @@ public slots:
private:
QVector<NodeStyle*> _nodeStyles;
QVector<EdgeStyle*> _edgeStyles;
+ QStringList _colNames;
+ QVector<QColor> _cols;
};
#endif // PROJECT_H