summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
authorAleks Kissinger <aleks0@gmail.com>2018-04-10 16:07:44 +0200
committerAleks Kissinger <aleks0@gmail.com>2018-04-10 16:07:44 +0200
commiteac7dee2d8ba86001afbc61c4e9d7baae7341cb8 (patch)
tree4214eb557fbeee94144c298bd2ec5e5a0e2df27f /src/gui
parentfacfa3e8aa7e3c278b0016c02c6a9f1f019903e2 (diff)
added edgestyles, but cant apply to nodes yet
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/stylepalette.cpp149
-rw-r--r--src/gui/stylepalette.h42
-rw-r--r--src/gui/stylepalette.ui120
-rw-r--r--src/gui/tikzscene.cpp2
-rw-r--r--src/gui/tikzview.cpp2
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;