From e57923c7d767f5a532bc35571d74a5470eb76314 Mon Sep 17 00:00:00 2001 From: Aleks Kissinger Date: Thu, 5 Apr 2018 14:21:24 +0200 Subject: built-in style palette --- src/data/nodestyle.cpp | 32 ++++++++++-- src/gui/mainwindow.cpp | 13 ++++- src/gui/mainwindow.h | 7 ++- src/gui/tikzscene.cpp | 10 ++-- src/gui/tikzscene.h | 4 +- src/tikzit.cpp | 16 +++--- src/tikzit.h | 4 +- stylepalette.cpp | 35 +++++++++----- stylepalette.h | 3 +- stylepalette.ui | 129 +++++++++++++++---------------------------------- 10 files changed, 130 insertions(+), 123 deletions(-) diff --git a/src/data/nodestyle.cpp b/src/data/nodestyle.cpp index 302ab84..b3d72fb 100644 --- a/src/data/nodestyle.cpp +++ b/src/data/nodestyle.cpp @@ -26,6 +26,8 @@ QString NodeStyle::name() const NodeStyle::Shape NodeStyle::shape() const { + if (_data == 0) return NodeStyle::Circle; + QString sh = _data->property("shape"); if (sh.isNull()) return NodeStyle::Circle; else if (sh == "circle") return NodeStyle::Circle; @@ -35,6 +37,8 @@ NodeStyle::Shape NodeStyle::shape() const QColor NodeStyle::fillColor() const { + if (_data == 0) return Qt::white; + QString col = _data->property("fill"); if (col.isNull()) { @@ -52,6 +56,8 @@ QColor NodeStyle::fillColor() const QColor NodeStyle::strokeColor() const { + if (_data == 0) return Qt::black; + QString col = _data->property("draw"); if (col.isNull()) { @@ -103,11 +109,29 @@ QIcon NodeStyle::icon() const px.fill(Qt::transparent); QPainter painter(&px); QPainterPath pth = path(); - painter.setPen(pen()); - painter.setBrush(brush()); - pth.translate(50.0f, 50.0f); - painter.drawPath(pth); + + if (_data == 0) { + QColor c(180,180,200); + painter.setPen(QPen(c)); + painter.setBrush(QBrush(c)); + painter.drawEllipse(QPointF(50.0f,50.0f), 3,3); + + QPen pen(QColor(180,180,220)); + pen.setWidth(3); + QVector p; + p << 2.0 << 2.0; + pen.setDashPattern(p); + painter.setPen(pen); + painter.setBrush(Qt::NoBrush); + painter.drawPath(pth); + } else { + painter.setPen(pen()); + painter.setBrush(brush()); + painter.drawPath(pth); + } + + return QIcon(px); } diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index 26e19b6..9ce340a 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -28,7 +28,11 @@ MainWindow::MainWindow(QWidget *parent) : _toolPalette = new ToolPalette(this); addToolBar(_toolPalette); - _tikzScene = new TikzScene(_tikzDocument, _toolPalette, this); + _stylePalette = new StylePalette(this); + addDockWidget(Qt::RightDockWidgetArea, _stylePalette); + + + _tikzScene = new TikzScene(_tikzDocument, _toolPalette, _stylePalette, this); ui->tikzView->setScene(_tikzScene); _pristine = true; @@ -79,11 +83,16 @@ void MainWindow::changeEvent(QEvent *event) { if (event->type() == QEvent::ActivationChange && isActiveWindow()) { tikzit->setActiveWindow(this); - tikzit->stylePalette()->raise(); + //tikzit->stylePalette()->raise(); } QMainWindow::changeEvent(event); } +StylePalette *MainWindow::stylePalette() const +{ + return _stylePalette; +} + void MainWindow::updateFileName() { setWindowTitle("TiKZiT - " + _tikzDocument->shortName()); diff --git a/src/gui/mainwindow.h b/src/gui/mainwindow.h index 613bfcb..facce2b 100644 --- a/src/gui/mainwindow.h +++ b/src/gui/mainwindow.h @@ -11,6 +11,7 @@ #include "tikzdocument.h" #include "mainmenu.h" #include "toolpalette.h" +#include "stylepalette.h" #include #include @@ -33,9 +34,12 @@ public: TikzView *tikzView() const; TikzScene *tikzScene() const; TikzDocument *tikzDocument() const; - ToolPalette *toolPalette() const; + ToolPalette *toolPalette() const; + StylePalette *stylePalette() const; + void updateFileName(); void refreshTikz(); + protected: void closeEvent(QCloseEvent *event); void changeEvent(QEvent *event); @@ -45,6 +49,7 @@ private: TikzDocument *_tikzDocument; MainMenu *_menu; ToolPalette *_toolPalette; + StylePalette *_stylePalette; Ui::MainWindow *ui; bool _pristine; int _windowId; diff --git a/src/gui/tikzscene.cpp b/src/gui/tikzscene.cpp index 24f4ad1..8378f5e 100644 --- a/src/gui/tikzscene.cpp +++ b/src/gui/tikzscene.cpp @@ -11,8 +11,9 @@ #include -TikzScene::TikzScene(TikzDocument *tikzDocument, ToolPalette *tools, QObject *parent) : - QGraphicsScene(parent), _tikzDocument(tikzDocument), _tools(tools) +TikzScene::TikzScene(TikzDocument *tikzDocument, ToolPalette *tools, + StylePalette *styles, QObject *parent) : + QGraphicsScene(parent), _tikzDocument(tikzDocument), _tools(tools), _styles(styles) { _modifyEdgeItem = 0; _edgeStartNodeItem = 0; @@ -382,7 +383,7 @@ void TikzScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) Node *n = new Node(_tikzDocument); n->setName(graph()->freshNodeName()); n->setPoint(fromScreen(gridPos)); - n->setStyleName(tikzit->stylePalette()->activeNodeStyleName()); + n->setStyleName(_styles->activeNodeStyleName()); QRectF grow(gridPos.x() - GLOBAL_SCALEF, gridPos.y() - GLOBAL_SCALEF, 2 * GLOBAL_SCALEF, 2 * GLOBAL_SCALEF); QRectF newBounds = sceneRect().united(grow); @@ -447,7 +448,7 @@ void TikzScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) } void TikzScene::applyActiveStyleToNodes() { - ApplyStyleToNodesCommand *cmd = new ApplyStyleToNodesCommand(this, tikzit->stylePalette()->activeNodeStyleName()); + ApplyStyleToNodesCommand *cmd = new ApplyStyleToNodesCommand(this, _styles->activeNodeStyleName()); _tikzDocument->undoStack()->push(cmd); } @@ -562,6 +563,7 @@ void TikzScene::setTikzDocument(TikzDocument *tikzDocument) void TikzScene::reloadStyles() { + _styles->reloadStyles(); foreach (NodeItem *ni, _nodeItems) { ni->node()->attachStyle(); ni->readPos(); // trigger a repaint diff --git a/src/gui/tikzscene.h b/src/gui/tikzscene.h index f7735ee..7061143 100644 --- a/src/gui/tikzscene.h +++ b/src/gui/tikzscene.h @@ -11,6 +11,7 @@ #include "edgeitem.h" #include "tikzdocument.h" #include "toolpalette.h" +#include "stylepalette.h" #include #include @@ -24,7 +25,7 @@ class TikzScene : public QGraphicsScene { Q_OBJECT public: - TikzScene(TikzDocument *tikzDocument, ToolPalette *tools, QObject *parent); + TikzScene(TikzDocument *tikzDocument, ToolPalette *tools, StylePalette *styles, QObject *parent); ~TikzScene(); Graph *graph(); QMap &nodeItems(); @@ -55,6 +56,7 @@ protected: private: TikzDocument *_tikzDocument; ToolPalette *_tools; + StylePalette *_styles; QMap _nodeItems; QMap _edgeItems; QGraphicsLineItem *_drawEdgeItem; diff --git a/src/tikzit.cpp b/src/tikzit.cpp index 78cb7a1..e91976c 100644 --- a/src/tikzit.cpp +++ b/src/tikzit.cpp @@ -26,10 +26,10 @@ void Tikzit::init(QApplication *app) _toolPalette = new ToolPalette(dummy); _propertyPalette = new PropertyPalette(dummy); - _stylePalette = new StylePalette(dummy); + //_stylePalette = new StylePalette(dummy); _styles = new TikzStyles(this); - _stylePalette->show(); + //_stylePalette->show(); _windows << new MainWindow(); _windows[0]->show(); @@ -137,7 +137,7 @@ void Tikzit::loadStyles(QString fileName) } else { qDebug() << "parse failed"; } - _stylePalette->reloadStyles(); + //_stylePalette->reloadStyles(); foreach (MainWindow *w, _windows) { w->tikzScene()->reloadStyles(); @@ -164,10 +164,10 @@ void Tikzit::focusChanged(QWidget *old, QWidget *nw) // } } -StylePalette *Tikzit::stylePalette() const -{ - return _stylePalette; -} +//StylePalette *Tikzit::stylePalette() const +//{ +// return _stylePalette; +//} TikzStyles *Tikzit::styles() const @@ -177,7 +177,7 @@ TikzStyles *Tikzit::styles() const void Tikzit::quit() { - _stylePalette->close(); + //_stylePalette->close(); QApplication::quit(); } diff --git a/src/tikzit.h b/src/tikzit.h index 39aa9e4..6a191b5 100644 --- a/src/tikzit.h +++ b/src/tikzit.h @@ -98,7 +98,7 @@ public: void loadStyles(QString fileName); TikzStyles *styles() const; QString styleFile() const; - StylePalette *stylePalette() const; + //StylePalette *stylePalette() const; public slots: void focusChanged(QWidget *old, QWidget *nw); @@ -108,7 +108,7 @@ private: MainMenu *_mainMenu; ToolPalette *_toolPalette; PropertyPalette *_propertyPalette; - StylePalette *_stylePalette; + //StylePalette *_stylePalette; QVector _windows; MainWindow *_activeWindow; TikzStyles *_styles; diff --git a/stylepalette.cpp b/stylepalette.cpp index c2ddc21..bd82e30 100644 --- a/stylepalette.cpp +++ b/stylepalette.cpp @@ -16,17 +16,19 @@ StylePalette::StylePalette(QWidget *parent) : { ui->setupUi(this); - QSettings settings("tikzit", "tikzit"); - QVariant geom = settings.value("style-palette-geometry"); - if (geom != QVariant()) { - restoreGeometry(geom.toByteArray()); - } +// QSettings settings("tikzit", "tikzit"); +// QVariant geom = settings.value("style-palette-geometry"); +// if (geom != QVariant()) { +// restoreGeometry(geom.toByteArray()); +// } _model = new QStandardItemModel(this); ui->styleListView->setModel(_model); ui->styleListView->setViewMode(QListView::IconMode); ui->styleListView->setMovement(QListView::Static); - ui->styleListView->setGridSize(QSize(70,60)); + ui->styleListView->setGridSize(QSize(70,40)); + + connect(ui->styleListView, SIGNAL(doubleClicked(const QModelIndex &)), this, SLOT( itemDoubleClicked(const QModelIndex&)) ); } StylePalette::~StylePalette() @@ -42,10 +44,16 @@ void StylePalette::reloadStyles() ui->styleFile->setText(f); QStandardItem *it; - QSize sz(60,60); + //QSize sz(60,60); + + it = new QStandardItem(noneStyle->icon(), noneStyle->name()); + it->setEditable(false); + it->setData(noneStyle->name()); + _model->appendRow(it); foreach(NodeStyle *ns, tikzit->styles()->nodeStyles()) { it = new QStandardItem(ns->icon(), ns->name()); + it->setEditable(false); it->setData(ns->name()); _model->appendRow(it); } @@ -62,6 +70,11 @@ QString StylePalette::activeNodeStyleName() } } +void StylePalette::itemDoubleClicked(const QModelIndex &index) +{ + tikzit->activeWindow()->tikzScene()->applyActiveStyleToNodes(); +} + void StylePalette::on_buttonOpenTikzstyles_clicked() { tikzit->openTikzStyles(); @@ -74,10 +87,10 @@ void StylePalette::on_buttonRefreshTikzstyles_clicked() if (!path.isEmpty()) tikzit->loadStyles(path); } -void StylePalette::on_buttonApplyNodeStyle_clicked() -{ - if (tikzit->activeWindow() != 0) tikzit->activeWindow()->tikzScene()->applyActiveStyleToNodes(); -} +//void StylePalette::on_buttonApplyNodeStyle_clicked() +//{ +// if (tikzit->activeWindow() != 0) tikzit->activeWindow()->tikzScene()->applyActiveStyleToNodes(); +//} void StylePalette::closeEvent(QCloseEvent *event) { diff --git a/stylepalette.h b/stylepalette.h index 3861008..8d2187e 100644 --- a/stylepalette.h +++ b/stylepalette.h @@ -20,9 +20,10 @@ public: public slots: + void itemDoubleClicked(const QModelIndex &index); void on_buttonOpenTikzstyles_clicked(); void on_buttonRefreshTikzstyles_clicked(); - void on_buttonApplyNodeStyle_clicked(); + //void on_buttonApplyNodeStyle_clicked(); private: Ui::StylePalette *ui; diff --git a/stylepalette.ui b/stylepalette.ui index 5e370b6..3362ce2 100644 --- a/stylepalette.ui +++ b/stylepalette.ui @@ -6,21 +6,33 @@ 0 0 - 250 - 430 + 88 + 518 + + + 0 + 0 + + - 250 - 430 + 88 + 0 + + + + + 88 + 524287 - true + false - Styles + @@ -33,31 +45,17 @@ 0 - - - Styles: - - - - - - - - 0 - 0 - - - - - Courier - 75 - true - + + + Qt::Horizontal - - [default] + + + 40 + 20 + - + @@ -86,6 +84,19 @@ + + + + + 0 + 0 + + + + [default] + + + @@ -96,69 +107,9 @@ - - - - 2 - - - - - - 0 - 0 - - - - Apply - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - 2 - - - - - Apply - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - -- cgit v1.2.3