summaryrefslogtreecommitdiff
path: root/src/data/tikzstyles.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/data/tikzstyles.cpp')
-rw-r--r--src/data/tikzstyles.cpp89
1 files changed, 70 insertions, 19 deletions
diff --git a/src/data/tikzstyles.cpp b/src/data/tikzstyles.cpp
index a743d0c..68b3dcd 100644
--- a/src/data/tikzstyles.cpp
+++ b/src/data/tikzstyles.cpp
@@ -70,7 +70,19 @@ bool TikzStyles::loadStyles(QString fileName)
}
}
-void TikzStyles::refreshModels(QStandardItemModel *nodeModel, QStandardItemModel *edgeModel)
+bool TikzStyles::saveStyles(QString fileName)
+{
+ QFile file(fileName);
+ if (file.open(QIODevice::WriteOnly)) {
+ QTextStream stream(&file);
+ stream << tikz();
+ file.close();
+ return true;
+ }
+ return false;
+}
+
+void TikzStyles::refreshModels(QStandardItemModel *nodeModel, QStandardItemModel *edgeModel, QString category, bool includeNone)
{
nodeModel->clear();
edgeModel->clear();
@@ -81,32 +93,42 @@ void TikzStyles::refreshModels(QStandardItemModel *nodeModel, QStandardItemModel
QStandardItem *it;
- it = new QStandardItem(noneStyle->icon(), noneStyle->name());
- it->setEditable(false);
- it->setData(noneStyle->name());
- nodeModel->appendRow(it);
- it->setTextAlignment(Qt::AlignCenter);
- it->setSizeHint(QSize(48,48));
-
- foreach(NodeStyle *ns, _nodeStyles) {
- it = new QStandardItem(ns->icon(), ns->name());
+ if (includeNone) {
+ it = new QStandardItem(noneStyle->icon(), noneStyle->name());
it->setEditable(false);
- it->setData(ns->name());
- it->setSizeHint(QSize(48,48));
+ it->setData(noneStyle->name());
nodeModel->appendRow(it);
+ it->setTextAlignment(Qt::AlignCenter);
+ it->setSizeHint(QSize(48,48));
}
- it = new QStandardItem(noneEdgeStyle->icon(), noneEdgeStyle->name());
- it->setEditable(false);
- it->setData(noneEdgeStyle->name());
- edgeModel->appendRow(it);
+ foreach(NodeStyle *ns, _nodeStyles) {
+ if (category == "" || category == ns->propertyWithDefault("tikzit category", "", false))
+ {
+ it = new QStandardItem(ns->icon(), ns->name());
+ it->setEditable(false);
+ it->setData(ns->name());
+ it->setSizeHint(QSize(48,48));
+ nodeModel->appendRow(it);
+ }
+ }
- foreach(EdgeStyle *es, _edgeStyles) {
- it = new QStandardItem(es->icon(), es->name());
+ if (includeNone) {
+ it = new QStandardItem(noneEdgeStyle->icon(), noneEdgeStyle->name());
it->setEditable(false);
- it->setData(es->name());
+ it->setData(noneEdgeStyle->name());
edgeModel->appendRow(it);
}
+
+ foreach(EdgeStyle *es, _edgeStyles) {
+ //if (category == "" || category == es->propertyWithDefault("tikzit category", "", false))
+ //{
+ it = new QStandardItem(es->icon(), es->name());
+ it->setEditable(false);
+ it->setData(es->name());
+ edgeModel->appendRow(it);
+ //}
+ }
}
QVector<EdgeStyle *> TikzStyles::edgeStyles() const
@@ -114,6 +136,35 @@ QVector<EdgeStyle *> TikzStyles::edgeStyles() const
return _edgeStyles;
}
+QStringList TikzStyles::categories() const
+{
+ QMap<QString,bool> cats; // use a QMap to keep keys sorted
+ cats.insert("", true);
+ foreach (NodeStyle *s, _nodeStyles) cats.insert(s->propertyWithDefault("tikzit category", "", false), true);
+ //foreach (EdgeStyle *s, _edgeStyles) cats << s->propertyWithDefault("tikzit category", "", false);
+ return QStringList(cats.keys());
+}
+
+QString TikzStyles::tikz() const
+{
+ QString str;
+ QTextStream code(&str);
+
+ code << "% TiKZ style file generated by TikZiT. You may edit this file manually,\n";
+ code << "% but some things (e.g. comments) may be overwritten. To be readable in\n";
+ code << "% TikZiT, the only non-comment lines must be of the form:\n";
+ code << "% \\tikzstyle{NAME}=[PROPERTY LIST]\n\n";
+
+ code << "% Node styles\n";
+ foreach (NodeStyle *s, nodeStyles()) code << s->tikz() << "\n";
+
+ code << "\n% Edge styles\n";
+ foreach (EdgeStyle *s, edgeStyles()) code << s->tikz() << "\n";
+
+ code.flush();
+ return str;
+}
+
void TikzStyles::addStyle(QString name, GraphElementData *data)
{
if (data->atom("-") || data->atom("->") || data->atom("-|") ||