diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/data/stylelist.cpp (renamed from src/data/nodestylelist.cpp) | 51 | ||||
-rw-r--r-- | src/data/stylelist.h (renamed from src/data/nodestylelist.h) | 5 | ||||
-rw-r--r-- | src/data/tikzstyles.cpp | 55 | ||||
-rw-r--r-- | src/data/tikzstyles.h | 9 | ||||
-rw-r--r-- | src/gui/stylepalette.cpp | 21 | ||||
-rw-r--r-- | src/gui/stylepalette.h | 2 |
6 files changed, 83 insertions, 60 deletions
diff --git a/src/data/nodestylelist.cpp b/src/data/stylelist.cpp index 7f17ff0..2c79d10 100644 --- a/src/data/nodestylelist.cpp +++ b/src/data/stylelist.cpp @@ -1,29 +1,34 @@ -#include "nodestylelist.h" +#include "stylelist.h" #include <QTextStream> -NodeStyleList::NodeStyleList(QObject *parent) : QAbstractListModel(parent) +StyleList::StyleList(bool edgeStyles, QObject *parent) : QAbstractListModel(parent), _edgeStyles(edgeStyles) { + if (edgeStyles) { + _styles << noneEdgeStyle; + } else { + _styles << noneStyle; + } } -Style *NodeStyleList::style(QString name) +Style *StyleList::style(QString name) { foreach (Style *s, _styles) if (s->name() == name) return s; return nullptr; } -Style *NodeStyleList::style(int i) +Style *StyleList::style(int i) { return _styles[i]; } -int NodeStyleList::length() const +int StyleList::length() const { return _styles.length(); } -void NodeStyleList::addStyle(Style *s) +void StyleList::addStyle(Style *s) { s->setParent(this); if (s->category() == _category) { @@ -36,21 +41,25 @@ void NodeStyleList::addStyle(Style *s) } } -void NodeStyleList::clear() +void StyleList::clear() { int n = numInCategory(); if (n > 0) { - beginRemoveRows(QModelIndex(), 0, n - 1); + beginRemoveRows(QModelIndex(), 1, n - 1); _styles.clear(); + if (_edgeStyles) _styles << noneEdgeStyle; + else _styles << noneStyle; endRemoveRows(); } else { _styles.clear(); + if (_edgeStyles) _styles << noneEdgeStyle; + else _styles << noneStyle; } _category = ""; } -QString NodeStyleList::tikz() +QString StyleList::tikz() { QString str; QTextStream code(&str); @@ -59,22 +68,22 @@ QString NodeStyleList::tikz() return str; } -int NodeStyleList::numInCategory() const +int StyleList::numInCategory() const { int c = 0; foreach (Style *s, _styles) { - if (_category == "" || s->category() == _category) { + if (_category == "" || s->isNone() || s->category() == _category) { ++c; } } return c; } -int NodeStyleList::nthInCategory(int n) const +int StyleList::nthInCategory(int n) const { int c = 0; for (int j = 0; j < _styles.length(); ++j) { - if (_category == "" || _styles[j]->category() == _category) { + if (_category == "" || _styles[j]->isNone() || _styles[j]->category() == _category) { if (c == n) return j; else ++c; } @@ -82,12 +91,12 @@ int NodeStyleList::nthInCategory(int n) const return -1; } -Style *NodeStyleList::styleInCategory(int n) const +Style *StyleList::styleInCategory(int n) const { return _styles[nthInCategory(n)]; } -QVariant NodeStyleList::data(const QModelIndex &index, int role) const +QVariant StyleList::data(const QModelIndex &index, int role) const { if (role == Qt::DisplayRole) { return QVariant(styleInCategory(index.row())->name()); @@ -98,17 +107,21 @@ QVariant NodeStyleList::data(const QModelIndex &index, int role) const } } -int NodeStyleList::rowCount(const QModelIndex &/*parent*/) const +int StyleList::rowCount(const QModelIndex &/*parent*/) const { return numInCategory(); } -QString NodeStyleList::category() const +QString StyleList::category() const { return _category; } -void NodeStyleList::setCategory(const QString &category) +void StyleList::setCategory(const QString &category) { - _category = category; + if (category != _category) { + beginResetModel(); + _category = category; + endResetModel(); + } } diff --git a/src/data/nodestylelist.h b/src/data/stylelist.h index 5a53721..f698761 100644 --- a/src/data/nodestylelist.h +++ b/src/data/stylelist.h @@ -5,11 +5,11 @@ #include <QAbstractListModel> -class NodeStyleList : public QAbstractListModel +class StyleList : public QAbstractListModel { Q_OBJECT public: - explicit NodeStyleList(QObject *parent = nullptr); + explicit StyleList(bool edgeStyles = false, QObject *parent = nullptr); Style *style(QString name); Style *style(int i); int length() const; @@ -35,6 +35,7 @@ public slots: private: QVector<Style*> _styles; QString _category; + bool _edgeStyles; }; #endif // NODESTYLELIST_H diff --git a/src/data/tikzstyles.cpp b/src/data/tikzstyles.cpp index 0645a72..522b3f5 100644 --- a/src/data/tikzstyles.cpp +++ b/src/data/tikzstyles.cpp @@ -26,7 +26,8 @@ TikzStyles::TikzStyles(QObject *parent) : QObject(parent)
{
- _nodeStyles = new NodeStyleList(this);
+ _nodeStyles = new StyleList(false, this);
+ _edgeStyles = new StyleList(true, this);
}
Style *TikzStyles::nodeStyle(QString name) const
@@ -38,16 +39,15 @@ Style *TikzStyles::nodeStyle(QString name) const Style *TikzStyles::edgeStyle(QString name) const
{
- foreach (Style *s , _edgeStyles)
- if (s->name() == name) return s;
- return noneEdgeStyle;
+ Style *s = _edgeStyles->style(name);
+ return (s == nullptr) ? noneEdgeStyle : s;
}
void TikzStyles::clear()
{
_nodeStyles->clear();
- _edgeStyles.clear();
+ _edgeStyles->clear();
}
bool TikzStyles::loadStyles(QString fileName)
@@ -98,14 +98,14 @@ void TikzStyles::refreshModels(QStandardItemModel *nodeModel, QStandardItemModel it->setSizeHint(QSize(48,48));
}
- Style *ns;
+ Style *s;
for (int i = 0; i < _nodeStyles->length(); ++i) {
- ns = _nodeStyles->style(i);
- if (category == "" || category == ns->propertyWithDefault("tikzit category", "", false))
+ s = _nodeStyles->style(i);
+ if (category == "" || category == s->propertyWithDefault("tikzit category", "", false))
{
- it = new QStandardItem(ns->icon(), ns->name());
+ it = new QStandardItem(s->icon(), s->name());
it->setEditable(false);
- it->setData(ns->name());
+ it->setData(s->name());
it->setSizeHint(QSize(48,48));
nodeModel->appendRow(it);
}
@@ -118,17 +118,26 @@ void TikzStyles::refreshModels(QStandardItemModel *nodeModel, QStandardItemModel edgeModel->appendRow(it);
}
- foreach(Style *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);
- //}
+ for (int i = 0; i < _edgeStyles->length(); ++i) {
+ s = _edgeStyles->style(i);
+ it = new QStandardItem(s->icon(), s->name());
+ it->setEditable(false);
+ it->setData(s->name());
+ it->setSizeHint(QSize(48,48));
+ edgeModel->appendRow(it);
}
}
+StyleList *TikzStyles::nodeStyles() const
+{
+ return _nodeStyles;
+}
+
+StyleList *TikzStyles::edgeStyles() const
+{
+ return _edgeStyles;
+}
+
QStringList TikzStyles::categories() const
{
QMap<QString,bool> cats; // use a QMap to keep keys sorted
@@ -156,7 +165,7 @@ QString TikzStyles::tikz() const code << _nodeStyles->tikz();
code << "\n% Edge styles\n";
- foreach (Style *s, _edgeStyles) code << s->tikz() << "\n";
+ code << _edgeStyles->tikz();
code.flush();
return str;
@@ -165,12 +174,8 @@ QString TikzStyles::tikz() const void TikzStyles::addStyle(QString name, GraphElementData *data)
{
Style *s = new Style(name, data);
- if (s->isEdgeStyle())
- { // edge style
- _edgeStyles << s;
- } else { // node style
- _nodeStyles->addStyle(new Style(name, data));
- }
+ if (s->isEdgeStyle()) _edgeStyles->addStyle(s);
+ else _nodeStyles->addStyle(s);
}
diff --git a/src/data/tikzstyles.h b/src/data/tikzstyles.h index fbb12ff..5f372ab 100644 --- a/src/data/tikzstyles.h +++ b/src/data/tikzstyles.h @@ -20,7 +20,7 @@ #define PROJECT_H
#include "graphelementdata.h"
-#include "nodestylelist.h"
+#include "stylelist.h"
#include "style.h"
#include <QObject>
@@ -48,13 +48,16 @@ public: QString category="",
bool includeNone=true);
+ StyleList *nodeStyles() const;
+ StyleList *edgeStyles() const;
+
signals:
public slots:
private:
- NodeStyleList *_nodeStyles;
- QVector<Style*> _edgeStyles;
+ StyleList *_nodeStyles;
+ StyleList* _edgeStyles;
QStringList _colNames;
QVector<QColor> _cols;
};
diff --git a/src/gui/stylepalette.cpp b/src/gui/stylepalette.cpp index 7423f29..953d9d5 100644 --- a/src/gui/stylepalette.cpp +++ b/src/gui/stylepalette.cpp @@ -40,16 +40,16 @@ StylePalette::StylePalette(QWidget *parent) : // restoreGeometry(geom.toByteArray()); // } - _nodeModel = new QStandardItemModel(this); - _edgeModel = new QStandardItemModel(this); +// _nodeModel = new QStandardItemModel(this); +// _edgeModel = new QStandardItemModel(this); - ui->styleListView->setModel(_nodeModel); + ui->styleListView->setModel(tikzit->styles()->nodeStyles()); ui->styleListView->setViewMode(QListView::IconMode); ui->styleListView->setMovement(QListView::Static); ui->styleListView->setGridSize(QSize(48,48)); - ui->edgeStyleListView->setModel(_edgeModel); + ui->edgeStyleListView->setModel(tikzit->styles()->edgeStyles()); ui->edgeStyleListView->setViewMode(QListView::IconMode); ui->edgeStyleListView->setMovement(QListView::Static); ui->edgeStyleListView->setGridSize(QSize(48,48)); @@ -70,6 +70,9 @@ void StylePalette::reloadStyles() QString f = tikzit->styleFile(); ui->styleFile->setText(f); + ui->styleListView->setModel(tikzit->styles()->nodeStyles()); + ui->edgeStyleListView->setModel(tikzit->styles()->edgeStyles()); + QString cat = ui->currentCategory->currentText(); ui->currentCategory->clear(); @@ -85,12 +88,12 @@ void StylePalette::changeNodeStyle(int increment) QModelIndexList i = ui->styleListView->selectionModel()->selectedIndexes(); int row = 0; if (!i.isEmpty()) { - int row = (i[0].row()+increment)%_nodeModel->rowCount(); - if (row < 0) row += _nodeModel->rowCount(); + int row = (i[0].row()+increment)% tikzit->styles()->nodeStyles()->numInCategory(); + if (row < 0) row += tikzit->styles()->nodeStyles()->numInCategory(); } //QModelIndex i1 = ui->styleListView->rootIndex().child(row, 0); - QModelIndex i1 = _nodeModel->index(row,0); + QModelIndex i1 =tikzit->styles()->nodeStyles()->index(row,0); ui->styleListView->selectionModel()->select(i1, QItemSelectionModel::ClearAndSelect); ui->styleListView->scrollTo(i1); } @@ -134,7 +137,6 @@ void StylePalette::nodeStyleDoubleClicked(const QModelIndex &) void StylePalette::edgeStyleDoubleClicked(const QModelIndex &) { - qDebug() << "got double click"; tikzit->activeWindow()->tikzScene()->applyActiveStyleToEdges(); } @@ -157,7 +159,8 @@ void StylePalette::on_buttonRefreshTikzstyles_clicked() void StylePalette::on_currentCategory_currentTextChanged(const QString &cat) { - tikzit->styles()->refreshModels(_nodeModel, _edgeModel, cat); + //tikzit->styles()->refreshModels(_nodeModel, _edgeModel, cat); + tikzit->styles()->nodeStyles()->setCategory(cat); } //void StylePalette::on_buttonApplyNodeStyle_clicked() diff --git a/src/gui/stylepalette.h b/src/gui/stylepalette.h index fc4e253..7cdef0c 100644 --- a/src/gui/stylepalette.h +++ b/src/gui/stylepalette.h @@ -53,8 +53,6 @@ private: void changeNodeStyle(int increment); Ui::StylePalette *ui; - QStandardItemModel *_nodeModel; - QStandardItemModel *_edgeModel; protected: void closeEvent(QCloseEvent *event) override; |