diff options
author | Aleks Kissinger <aleks0@gmail.com> | 2018-04-10 16:07:44 +0200 |
---|---|---|
committer | Aleks Kissinger <aleks0@gmail.com> | 2018-04-10 16:07:44 +0200 |
commit | eac7dee2d8ba86001afbc61c4e9d7baae7341cb8 (patch) | |
tree | 4214eb557fbeee94144c298bd2ec5e5a0e2df27f /src/gui | |
parent | facfa3e8aa7e3c278b0016c02c6a9f1f019903e2 (diff) |
added edgestyles, but cant apply to nodes yet
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/stylepalette.cpp | 149 | ||||
-rw-r--r-- | src/gui/stylepalette.h | 42 | ||||
-rw-r--r-- | src/gui/stylepalette.ui | 120 | ||||
-rw-r--r-- | src/gui/tikzscene.cpp | 2 | ||||
-rw-r--r-- | src/gui/tikzview.cpp | 2 |
5 files changed, 313 insertions, 2 deletions
diff --git a/src/gui/stylepalette.cpp b/src/gui/stylepalette.cpp new file mode 100644 index 0000000..f7c17c0 --- /dev/null +++ b/src/gui/stylepalette.cpp @@ -0,0 +1,149 @@ +#include "stylepalette.h" +#include "ui_stylepalette.h" +#include "tikzit.h" + +#include <QDebug> +#include <QIcon> +#include <QSize> +#include <QSettings> +#include <QPainter> +#include <QPixmap> +#include <QPainterPath> + +StylePalette::StylePalette(QWidget *parent) : + QDockWidget(parent), + ui(new Ui::StylePalette) +{ + ui->setupUi(this); + +// QSettings settings("tikzit", "tikzit"); +// QVariant geom = settings.value("style-palette-geometry"); +// if (geom != QVariant()) { +// restoreGeometry(geom.toByteArray()); +// } + + _nodeModel = new QStandardItemModel(this); + _edgeModel = new QStandardItemModel(this); + + ui->styleListView->setModel(_nodeModel); + ui->styleListView->setViewMode(QListView::IconMode); + ui->styleListView->setMovement(QListView::Static); + ui->styleListView->setGridSize(QSize(70,40)); + + ui->edgeStyleListView->setModel(_edgeModel); + ui->edgeStyleListView->setViewMode(QListView::IconMode); + ui->edgeStyleListView->setMovement(QListView::Static); + ui->edgeStyleListView->setGridSize(QSize(70,40)); + + reloadStyles(); + + connect(ui->styleListView, SIGNAL(doubleClicked(const QModelIndex &)), this, SLOT( nodeStyleDoubleClicked(const QModelIndex&)) ); +} + +StylePalette::~StylePalette() +{ + delete ui; +} + +void StylePalette::reloadStyles() +{ + _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, tikzit->styles()->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, tikzit->styles()->edgeStyles()) { + it = new QStandardItem(es->icon(), es->name()); + it->setEditable(false); + it->setData(es->name()); + _edgeModel->appendRow(it); + } +} + +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(); + } + + QModelIndex i1 = ui->styleListView->rootIndex().child(row, 0); + ui->styleListView->selectionModel()->select(i1, QItemSelectionModel::ClearAndSelect); + ui->styleListView->scrollTo(i1); +} + +void StylePalette::nextNodeStyle() +{ + changeNodeStyle(1); +} + +void StylePalette::previousNodeStyle() +{ + changeNodeStyle(-1); +} + +QString StylePalette::activeNodeStyleName() +{ + const QModelIndexList i = ui->styleListView->selectionModel()->selectedIndexes(); + + if (i.isEmpty()) { + return "none"; + } else { + return i[0].data().toString(); + } +} + +void StylePalette::nodeStyleDoubleClicked(const QModelIndex &index) +{ + tikzit->activeWindow()->tikzScene()->applyActiveStyleToNodes(); +} + +void StylePalette::edgeStyleDoubleClicked(const QModelIndex &index) +{ + // TODO +} + +void StylePalette::on_buttonOpenTikzstyles_clicked() +{ + tikzit->openTikzStyles(); +} + +void StylePalette::on_buttonRefreshTikzstyles_clicked() +{ + QSettings settings("tikzit", "tikzit"); + QString path = settings.value("previous-tikzstyles-file").toString(); + if (!path.isEmpty()) tikzit->loadStyles(path); +} + +//void StylePalette::on_buttonApplyNodeStyle_clicked() +//{ +// if (tikzit->activeWindow() != 0) tikzit->activeWindow()->tikzScene()->applyActiveStyleToNodes(); +//} + +void StylePalette::closeEvent(QCloseEvent *event) +{ + QSettings settings("tikzit", "tikzit"); + settings.setValue("style-palette-geometry", saveGeometry()); + QDockWidget::closeEvent(event); +} diff --git a/src/gui/stylepalette.h b/src/gui/stylepalette.h new file mode 100644 index 0000000..8663cc4 --- /dev/null +++ b/src/gui/stylepalette.h @@ -0,0 +1,42 @@ +#ifndef STYLEPALETTE_H +#define STYLEPALETTE_H + +#include <QDockWidget> +#include <QStandardItemModel> + +namespace Ui { +class StylePalette; +} + +class StylePalette : public QDockWidget +{ + Q_OBJECT + +public: + explicit StylePalette(QWidget *parent = 0); + ~StylePalette(); + void reloadStyles(); + void nextNodeStyle(); + void previousNodeStyle(); + QString activeNodeStyleName(); + + +public slots: + void nodeStyleDoubleClicked(const QModelIndex &index); + void edgeStyleDoubleClicked(const QModelIndex &index); + void on_buttonOpenTikzstyles_clicked(); + void on_buttonRefreshTikzstyles_clicked(); + //void on_buttonApplyNodeStyle_clicked(); + +private: + void changeNodeStyle(int increment); + + Ui::StylePalette *ui; + QStandardItemModel *_nodeModel; + QStandardItemModel *_edgeModel; + +protected: + void closeEvent(QCloseEvent *event) override; +}; + +#endif // STYLEPALETTE_H diff --git a/src/gui/stylepalette.ui b/src/gui/stylepalette.ui new file mode 100644 index 0000000..4f5b58d --- /dev/null +++ b/src/gui/stylepalette.ui @@ -0,0 +1,120 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>StylePalette</class> + <widget class="QDockWidget" name="StylePalette"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>88</width> + <height>518</height> + </rect> + </property> + <property name="sizePolicy"> + <sizepolicy hsizetype="Minimum" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>88</width> + <height>191</height> + </size> + </property> + <property name="maximumSize"> + <size> + <width>88</width> + <height>524287</height> + </size> + </property> + <property name="floating"> + <bool>false</bool> + </property> + <property name="windowTitle"> + <string/> + </property> + <widget class="QWidget" name="dockWidgetContents"> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <property name="spacing"> + <number>2</number> + </property> + <property name="topMargin"> + <number>0</number> + </property> + <item> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QToolButton" name="buttonOpenTikzstyles"> + <property name="toolTip"> + <string>New Project</string> + </property> + <property name="text"> + <string/> + </property> + <property name="icon"> + <iconset resource="../../tikzit.qrc"> + <normaloff>:/images/document-open.svg</normaloff>:/images/document-open.svg</iconset> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="buttonRefreshTikzstyles"> + <property name="text"> + <string/> + </property> + <property name="icon"> + <iconset resource="../../tikzit.qrc"> + <normaloff>:/images/refresh.svg</normaloff>:/images/refresh.svg</iconset> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QLabel" name="styleFile"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>[default]</string> + </property> + </widget> + </item> + <item> + <widget class="QListView" name="styleListView"> + <property name="font"> + <font> + <pointsize>8</pointsize> + <italic>true</italic> + </font> + </property> + </widget> + </item> + <item> + <widget class="QListView" name="edgeStyleListView"/> + </item> + </layout> + </widget> + </widget> + <resources> + <include location="../../tikzit.qrc"/> + </resources> + <connections/> +</ui> diff --git a/src/gui/tikzscene.cpp b/src/gui/tikzscene.cpp index 2a9b2fb..9b6c2d6 100644 --- a/src/gui/tikzscene.cpp +++ b/src/gui/tikzscene.cpp @@ -463,7 +463,7 @@ void TikzScene::keyPressEvent(QKeyEvent *event) if (event->key() == Qt::Key_QuoteLeft) { capture = true; - _styles->nextStyle(); + _styles->nextNodeStyle(); } if (event->modifiers() & Qt::ControlModifier) { diff --git a/src/gui/tikzview.cpp b/src/gui/tikzview.cpp index 047ef50..9997106 100644 --- a/src/gui/tikzview.cpp +++ b/src/gui/tikzview.cpp @@ -6,7 +6,7 @@ TikzView::TikzView(QWidget *parent) : QGraphicsView(parent) { - //setRenderHint(QPainter::Antialiasing); + setRenderHint(QPainter::Antialiasing); //setDragMode(QGraphicsView::RubberBandDrag); _scale = 1.0f; |