From f2e0ddabf60f6594f8e3849491f3e7b590fe7c83 Mon Sep 17 00:00:00 2001 From: Aleks Kissinger Date: Mon, 14 Jan 2019 17:50:31 +0100 Subject: version increment --- src/tikzit.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/tikzit.h b/src/tikzit.h index 855efeb..4b99062 100644 --- a/src/tikzit.h +++ b/src/tikzit.h @@ -49,7 +49,7 @@ #ifndef TIKZIT_H #define TIKZIT_H -#define TIKZIT_VERSION "2.1.2" +#define TIKZIT_VERSION "2.1.3" #include "mainwindow.h" #include "mainmenu.h" -- cgit v1.2.3 From ef529cb0d7e47fa96f03e7ca63106c7f9f5a9761 Mon Sep 17 00:00:00 2001 From: Aleks Kissinger Date: Mon, 14 Jan 2019 22:19:28 +0100 Subject: show outer labels --- src/gui/nodeitem.cpp | 43 ++++++++++++++++++++++++++++++++----------- src/gui/nodeitem.h | 1 + 2 files changed, 33 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/gui/nodeitem.cpp b/src/gui/nodeitem.cpp index 8907573..78fe66e 100644 --- a/src/gui/nodeitem.cpp +++ b/src/gui/nodeitem.cpp @@ -51,15 +51,21 @@ void NodeItem::writePos() QRectF NodeItem::labelRect() const { QString label = _node->label(); - //QFont f("Courier", 9); QFontMetrics fm(Tikzit::LABEL_FONT); - QRectF rect = fm.boundingRect(label); - //rect.adjust(-2,-2,2,2); rect.moveCenter(QPointF(0,0)); return rect; } +QRectF NodeItem::outerLabelRect() const { + QString label = _node->data()->property("label"); + label.replace(QRegularExpression("^[^:]*:"), ""); + QFontMetrics fm(Tikzit::LABEL_FONT); + QRectF rect = fm.boundingRect(label); + rect.moveCenter(QPointF(0, -0.5 * GLOBAL_SCALEF)); + return rect; +} + void NodeItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) { if (_node->style()->isNone()) { @@ -99,6 +105,24 @@ void NodeItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidge painter->drawText(rect, Qt::AlignCenter, _node->label()); } + if (_node->data()->hasProperty("label")) { + QString label = _node->data()->property("label"); + label.replace(QRegularExpression("^[^:]*:"), ""); + + QRectF rect = outerLabelRect(); + QPen pen(QColor(0,0,200,120)); + QVector d; + d << 2.0 << 2.0; + pen.setDashPattern(d); + painter->setPen(pen); + painter->setBrush(QBrush(QColor(100,255,255,120))); + painter->drawRect(rect); + + painter->setPen(QPen(Qt::black)); + painter->setFont(Tikzit::LABEL_FONT); + painter->drawText(rect, Qt::AlignCenter, label); + } + if (isSelected()) { QPainterPath sh = shape(); QPainterPathStroker stroker; @@ -134,14 +158,11 @@ void NodeItem::updateBounds() { prepareGeometryChange(); QString label = _node->label(); - if (label != "") { - //QFontMetrics fm(Tikzit::LABEL_FONT); - //QRectF labelRect = fm.boundingRect(label); - //labelRect.moveCenter(QPointF(0, 0)); - _boundingRect = labelRect().united(shape().boundingRect()).adjusted(-4, -4, 4, 4); - } else { - _boundingRect = shape().boundingRect().adjusted(-4, -4, 4, 4); - } + QString outerLabel = _node->data()->property("label"); + QRectF rect = shape().boundingRect(); + if (label != "") rect = rect.united(labelRect()); + if (outerLabel != "") rect = rect.united(outerLabelRect()); + _boundingRect = rect.adjusted(-4, -4, 4, 4); } Node *NodeItem::node() const diff --git a/src/gui/nodeitem.h b/src/gui/nodeitem.h index 5be4f3e..df996f8 100644 --- a/src/gui/nodeitem.h +++ b/src/gui/nodeitem.h @@ -45,6 +45,7 @@ public: private: Node *_node; QRectF labelRect() const; + QRectF outerLabelRect() const; QRectF _boundingRect; }; -- cgit v1.2.3 From 15d97051f0b5105a2765fc068ae980e36195434c Mon Sep 17 00:00:00 2001 From: Aleks Kissinger Date: Fri, 18 Jan 2019 15:30:10 +0100 Subject: fixed CTRL key bug and added option to auto-select new edges --- src/gui/preferencedialog.cpp | 4 +++- src/gui/preferencedialog.ui | 16 +++++++++++++++- src/gui/tikzscene.cpp | 42 +++++++++++++++++++++++++++++++----------- src/gui/tikzscene.h | 5 +++-- src/gui/undocommands.cpp | 31 ++++++++++++++++++++++++++----- src/gui/undocommands.h | 5 ++++- 6 files changed, 82 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/src/gui/preferencedialog.cpp b/src/gui/preferencedialog.cpp index 06159af..14cacf0 100644 --- a/src/gui/preferencedialog.cpp +++ b/src/gui/preferencedialog.cpp @@ -26,10 +26,11 @@ PreferenceDialog::PreferenceDialog(QWidget *parent) : setColor(ui->minorColor, settings.value("grid-color-minor", QColor(250,250,255)).value()); - connect(ui->axesColor, SIGNAL(clicked()), this, SLOT(colorClick())); connect(ui->majorColor, SIGNAL(clicked()), this, SLOT(colorClick())); connect(ui->minorColor, SIGNAL(clicked()), this, SLOT(colorClick())); + + ui->selectNewEdges->setChecked(settings.value("select-new-edges", false).toBool()); } PreferenceDialog::~PreferenceDialog() @@ -45,6 +46,7 @@ void PreferenceDialog::accept() settings.setValue("grid-color-axes", color(ui->axesColor)); settings.setValue("grid-color-major", color(ui->majorColor)); settings.setValue("grid-color-minor", color(ui->minorColor)); + settings.setValue("select-new-edges", ui->selectNewEdges->isChecked()); QDialog::accept(); } diff --git a/src/gui/preferencedialog.ui b/src/gui/preferencedialog.ui index 9a32e7d..80bdc57 100644 --- a/src/gui/preferencedialog.ui +++ b/src/gui/preferencedialog.ui @@ -6,7 +6,7 @@ 0 0 - 345 + 400 176 @@ -220,6 +220,20 @@ + + + + Auto-select new edges + + + + + + + + + + diff --git a/src/gui/tikzscene.cpp b/src/gui/tikzscene.cpp index 9ef4c20..983cf18 100644 --- a/src/gui/tikzscene.cpp +++ b/src/gui/tikzscene.cpp @@ -67,6 +67,9 @@ TikzScene::TikzScene(TikzDocument *tikzDocument, ToolPalette *tools, _rubberBandItem->setVisible(false); addItem(_rubberBandItem); + + _highlightHeads = false; + _highlightTails = false; } TikzScene::~TikzScene() { @@ -509,6 +512,7 @@ void TikzScene::mouseMoveEvent(QGraphicsSceneMouseEvent *event) void TikzScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { if (!_enabled) return; + QSettings settings("tikzit", "tikzit"); // current mouse position, in scene coordinates QPointF mousePos = event->scenePos(); @@ -593,7 +597,13 @@ void TikzScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) if (_edgeStartNodeItem != nullptr && _edgeEndNodeItem != nullptr) { Edge *e = new Edge(_edgeStartNodeItem->node(), _edgeEndNodeItem->node(), _tikzDocument); e->setStyleName(_styles->activeEdgeStyleName()); - AddEdgeCommand *cmd = new AddEdgeCommand(this, e); + + bool selectEdge = settings.value("select-new-edges", false).toBool(); + QSet selNodes; + QSet selEdges; + if (selectEdge) getSelection(selNodes, selEdges); + AddEdgeCommand *cmd = new AddEdgeCommand(this, e, selectEdge, + selNodes, selEdges); _tikzDocument->undoStack()->push(cmd); } _edgeStartNodeItem = nullptr; @@ -618,12 +628,17 @@ void TikzScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) void TikzScene::keyReleaseEvent(QKeyEvent *event) { + //qDebug() << "keyrelease:" << QString::number(event->key(), 16); + //qDebug() << "modifiers:" << QString::number(QApplication::queryKeyboardModifiers(), 16); if (!_enabled) return; + // slower, but seems to be more reliable than event->modifiers() + Qt::KeyboardModifiers mod = QApplication::queryKeyboardModifiers(); + // clear highlighting for edge bends (if there was any) - if (event->modifiers() & Qt::ControlModifier) { + if (mod & Qt::ControlModifier) { // it could be the case the user has released shift and is still holding control - bool head = !(event->modifiers() & Qt::ShiftModifier); + bool head = !(mod & Qt::ShiftModifier); _highlightHeads = head; _highlightTails = !head; } else { @@ -634,7 +649,7 @@ void TikzScene::keyReleaseEvent(QKeyEvent *event) if (event->key() == Qt::Key_Backspace || event->key() == Qt::Key_Delete) { deleteSelectedItems(); - } else if (event->modifiers() == Qt::NoModifier) { + } else if (mod == Qt::NoModifier) { switch(event->key()) { case Qt::Key_S: tikzit->activeWindow()->toolPalette()->setCurrentTool(ToolPalette::SELECT); @@ -657,21 +672,26 @@ void TikzScene::keyReleaseEvent(QKeyEvent *event) void TikzScene::keyPressEvent(QKeyEvent *event) { + //qDebug() << "keypress:" << QString::number(event->key(), 16); + //qDebug() << "modifiers:" << QString::number(QApplication::queryKeyboardModifiers(), 16); bool capture = false; + // slower, but seems to be more reliable than event->modifiers() + Qt::KeyboardModifiers mod = QApplication::queryKeyboardModifiers(); + if (event->key() == Qt::Key_QuoteLeft) { capture = true; _styles->nextNodeStyle(); } - if (event->modifiers() & Qt::ControlModifier) { + if (mod & Qt::ControlModifier) { QSet selNodes; QSet selEdges; getSelection(selNodes, selEdges); if (!selNodes.isEmpty()) { QPointF delta(0,0); - qreal shift = (event->modifiers() & Qt::ShiftModifier) ? 1.0 : 10.0; + qreal shift = (mod & Qt::ShiftModifier) ? 1.0 : 10.0; switch(event->key()) { case Qt::Key_Left: delta.setX(-0.025 * shift); @@ -708,7 +728,7 @@ void TikzScene::keyPressEvent(QKeyEvent *event) int deltaAngle = 0; qreal deltaWeight = 0.0; - bool head = !(event->modifiers() & Qt::ShiftModifier); + bool head = !(mod & Qt::ShiftModifier); _highlightHeads = head; _highlightTails = !head; @@ -829,12 +849,12 @@ void TikzScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) bool TikzScene::highlightTails() const { - return _highlightTails; + return _highlightTails && getSelectedNodes().isEmpty(); } bool TikzScene::highlightHeads() const { - return _highlightHeads; + return _highlightHeads && getSelectedNodes().isEmpty(); } bool TikzScene::enabled() const @@ -983,7 +1003,7 @@ void TikzScene::rotateNodes(bool clockwise) } -void TikzScene::getSelection(QSet &selNodes, QSet &selEdges) +void TikzScene::getSelection(QSet &selNodes, QSet &selEdges) const { foreach (QGraphicsItem *gi, selectedItems()) { if (NodeItem *ni = dynamic_cast(gi)) selNodes << ni->node(); @@ -991,7 +1011,7 @@ void TikzScene::getSelection(QSet &selNodes, QSet &selEdges) } } -QSet TikzScene::getSelectedNodes() +QSet TikzScene::getSelectedNodes() const { QSet selNodes; foreach (QGraphicsItem *gi, selectedItems()) { diff --git a/src/gui/tikzscene.h b/src/gui/tikzscene.h index e2068eb..0d3aadf 100644 --- a/src/gui/tikzscene.h +++ b/src/gui/tikzscene.h @@ -80,8 +80,9 @@ public: void reverseSelectedEdges(); - void getSelection(QSet &selNodes, QSet &selEdges); - QSet getSelectedNodes(); + void getSelection(QSet &selNodes, QSet &selEdges) const; + QSet getSelectedNodes() const; + void refreshSceneBounds(); bool highlightHeads() const; diff --git a/src/gui/undocommands.cpp b/src/gui/undocommands.cpp index 91509ed..8ad15d0 100644 --- a/src/gui/undocommands.cpp +++ b/src/gui/undocommands.cpp @@ -20,6 +20,7 @@ #include "nodeitem.h" #include "edgeitem.h" +#include #include GraphUpdateCommand::GraphUpdateCommand(TikzScene *scene, QUndoCommand *parent) : QUndoCommand(parent), _scene(scene) @@ -217,8 +218,14 @@ void AddNodeCommand::redo() GraphUpdateCommand::redo(); } -AddEdgeCommand::AddEdgeCommand(TikzScene *scene, Edge *edge, QUndoCommand *parent) : - GraphUpdateCommand(scene, parent), _edge(edge) +AddEdgeCommand::AddEdgeCommand(TikzScene *scene, + Edge *edge, + bool selectEdge, + QSet selNodes, + QSet selEdges, + QUndoCommand *parent) : + GraphUpdateCommand(scene, parent), _edge(edge), + _selectEdge(selectEdge), _selNodes(selNodes), _selEdges(selEdges) { } @@ -231,24 +238,38 @@ void AddEdgeCommand::undo() _scene->graph()->removeEdge(_edge); _scene->refreshZIndices(); + + if (_selectEdge) { + foreach (NodeItem *ni, _scene->nodeItems()) { + ni->setSelected(_selNodes.contains(ni->node())); + } + + foreach (EdgeItem *ei, _scene->edgeItems()) { + ei->setSelected(_selEdges.contains(ei->edge())); + } + } + GraphUpdateCommand::undo(); } void AddEdgeCommand::redo() { - _edge->attachStyle(); // do for every redo, in case styles have changed + _edge->attachStyle(); // do for every redo, in case styles have changed _scene->graph()->addEdge(_edge); EdgeItem *ei = new EdgeItem(_edge); _scene->edgeItems().insert(_edge, ei); _scene->addItem(ei); - // TODO: deal consistently with stacking order - // edges should always be stacked below nodes if (!_scene->graph()->nodes().isEmpty()) { ei->stackBefore(_scene->nodeItems()[_scene->graph()->nodes().first()]); } _scene->refreshZIndices(); + + if (_selectEdge) { + _scene->clearSelection(); + ei->setSelected(true); + } GraphUpdateCommand::redo(); } diff --git a/src/gui/undocommands.h b/src/gui/undocommands.h index 42fed30..94b98be 100644 --- a/src/gui/undocommands.h +++ b/src/gui/undocommands.h @@ -121,11 +121,14 @@ private: class AddEdgeCommand : public GraphUpdateCommand { public: - explicit AddEdgeCommand(TikzScene *scene, Edge *edge, QUndoCommand *parent = nullptr); + explicit AddEdgeCommand(TikzScene *scene, Edge *edge, bool selectEdge, QSet selNodes, QSet selEdges, QUndoCommand *parent = nullptr); void undo() override; void redo() override; private: + bool _selectEdge; Edge *_edge; + QSet _selNodes; + QSet _selEdges; }; class ChangeEdgeModeCommand : public GraphUpdateCommand -- cgit v1.2.3 From bd208d8b604dd7958152fdf4db188a0bd64146f5 Mon Sep 17 00:00:00 2001 From: Aleks Kissinger Date: Sat, 19 Jan 2019 18:13:51 +0100 Subject: merge nodes --- src/data/edge.cpp | 10 ++++++-- src/gui/mainmenu.cpp | 6 +++++ src/gui/mainmenu.h | 1 + src/gui/mainmenu.ui | 9 +++++++ src/gui/tikzscene.cpp | 63 +++++++++++++++++++++++++++++++++++++++++++++++- src/gui/tikzscene.h | 3 ++- src/gui/undocommands.cpp | 10 +++++--- src/gui/undocommands.h | 10 ++++++-- 8 files changed, 103 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/data/edge.cpp b/src/data/edge.cpp index 4803547..0bd49e8 100644 --- a/src/data/edge.cpp +++ b/src/data/edge.cpp @@ -57,8 +57,14 @@ Edge::Edge(Node *s, Node *t, QObject *parent) : Edge *Edge::copy(QMap *nodeTable) { Edge *e; - if (nodeTable == nullptr) e = new Edge(_source, _target); - else e = new Edge(nodeTable->value(_source), nodeTable->value(_target)); + if (nodeTable == nullptr) { + e = new Edge(_source, _target); + } else { + Node *s = nodeTable->value(_source); + Node *t = nodeTable->value(_target); + e = new Edge((s != nullptr) ? s : _source, + (t != nullptr) ? t : _target); + } e->setData(_data->copy()); e->setBasicBendMode(_basicBendMode); e->setBend(_bend); diff --git a/src/gui/mainmenu.cpp b/src/gui/mainmenu.cpp index d291390..35ab736 100644 --- a/src/gui/mainmenu.cpp +++ b/src/gui/mainmenu.cpp @@ -233,6 +233,12 @@ void MainMenu::on_actionReverse_Edge_Direction_triggered() tikzit->activeWindow()->tikzScene()->reverseSelectedEdges(); } +void MainMenu::on_actionMerge_Nodes_triggered() +{ + if (tikzit->activeWindow() != 0) + tikzit->activeWindow()->tikzScene()->mergeNodes(); +} + // Tikz void MainMenu::on_actionParse_triggered() diff --git a/src/gui/mainmenu.h b/src/gui/mainmenu.h index 287019c..51d7d3c 100644 --- a/src/gui/mainmenu.h +++ b/src/gui/mainmenu.h @@ -66,6 +66,7 @@ public slots: void on_actionExtendLeft_triggered(); void on_actionExtendRight_triggered(); void on_actionReverse_Edge_Direction_triggered(); + void on_actionMerge_Nodes_triggered(); // Tools void on_actionParse_triggered(); diff --git a/src/gui/mainmenu.ui b/src/gui/mainmenu.ui index ddba6f0..692f82e 100644 --- a/src/gui/mainmenu.ui +++ b/src/gui/mainmenu.ui @@ -73,6 +73,7 @@ + @@ -374,6 +375,14 @@ Ctrl+/ + + + Merge Nodes + + + Ctrl+M + + diff --git a/src/gui/tikzscene.cpp b/src/gui/tikzscene.cpp index 983cf18..4577981 100644 --- a/src/gui/tikzscene.cpp +++ b/src/gui/tikzscene.cpp @@ -186,6 +186,66 @@ void TikzScene::extendSelectionRight() } } +void TikzScene::mergeNodes() +{ + refreshZIndices(); + QSet selNodes; + QSet selEdges; + getSelection(selNodes, selEdges); + + // build a map from locations to a chosen node at that location + QMap,Node*> m; + foreach (Node *n, selNodes) { + // used fixed precision for hashing/comparing locations + QPair fpPoint( + static_cast(n->point().x() * 1000.0), + static_cast(n->point().y() * 1000.0)); + if (!m.contains(fpPoint) || + _nodeItems[m[fpPoint]]->zValue() < _nodeItems[n]->zValue()) + { + m.insert(fpPoint, n); + } + } + + // build a second map from nodes to the node they will be merged with + QMap m1; + foreach (Node *n, graph()->nodes()) { + QPair fpPoint( + static_cast(n->point().x() * 1000.0), + static_cast(n->point().y() * 1000.0)); + Node *n1 = m[fpPoint]; + if (n1 != nullptr && n1 != n) m1.insert(n, n1); + } + + _tikzDocument->undoStack()->beginMacro("Merge nodes"); + + // copy adjacent edges from nodes that will be deleted + foreach (Edge *e, graph()->edges()) { + if (m1.contains(e->source()) || m1.contains(e->target())) { + Edge *e1 = e->copy(&m1); + AddEdgeCommand *cmd = new AddEdgeCommand(this, e1); + _tikzDocument->undoStack()->push(cmd); + } + } + + // delete nodes + QMap delNodes; + QMap delEdges; + for (int i = 0; i < _tikzDocument->graph()->nodes().length(); ++i) { + Node *n = _tikzDocument->graph()->nodes()[i]; + if (m1.contains(n)) delNodes.insert(i, n); + } + for (int i = 0; i < _tikzDocument->graph()->edges().length(); ++i) { + Edge *e = _tikzDocument->graph()->edges()[i]; + if (m1.contains(e->source()) || m1.contains(e->target())) delEdges.insert(i, e); + } + DeleteCommand *cmd = new DeleteCommand(this, delNodes, delEdges, + selNodes, selEdges); + _tikzDocument->undoStack()->push(cmd); + + _tikzDocument->undoStack()->endMacro(); +} + void TikzScene::reorderSelection(bool toFront) { QVector nodeOrd, nodeOrd1; @@ -911,7 +971,8 @@ void TikzScene::deleteSelectedItems() //qDebug() << "nodes:" << deleteNodes; //qDebug() << "edges:" << deleteEdges; - DeleteCommand *cmd = new DeleteCommand(this, deleteNodes, deleteEdges, selEdges); + DeleteCommand *cmd = new DeleteCommand(this, deleteNodes, deleteEdges, + selNodes, selEdges); _tikzDocument->undoStack()->push(cmd); } diff --git a/src/gui/tikzscene.h b/src/gui/tikzscene.h index 0d3aadf..f8dc7ec 100644 --- a/src/gui/tikzscene.h +++ b/src/gui/tikzscene.h @@ -75,6 +75,8 @@ public: void extendSelectionLeft(); void extendSelectionRight(); + void mergeNodes(); + void reorderSelection(bool toFront); void reverseSelectedEdges(); @@ -86,7 +88,6 @@ public: void refreshSceneBounds(); bool highlightHeads() const; - bool highlightTails() const; public slots: diff --git a/src/gui/undocommands.cpp b/src/gui/undocommands.cpp index 8ad15d0..c5c26af 100644 --- a/src/gui/undocommands.cpp +++ b/src/gui/undocommands.cpp @@ -128,9 +128,12 @@ void EdgeBendCommand::redo() DeleteCommand::DeleteCommand(TikzScene *scene, QMap deleteNodes, QMap deleteEdges, - QSet selEdges, QUndoCommand *parent) : + QSet selNodes, + QSet selEdges, + QUndoCommand *parent) : GraphUpdateCommand(scene, parent), - _deleteNodes(deleteNodes), _deleteEdges(deleteEdges), _selEdges(selEdges) + _deleteNodes(deleteNodes), _deleteEdges(deleteEdges), + _selNodes(selNodes), _selEdges(selEdges) {} void DeleteCommand::undo() @@ -142,7 +145,7 @@ void DeleteCommand::undo() NodeItem *ni = new NodeItem(n); _scene->nodeItems().insert(n, ni); _scene->addItem(ni); - ni->setSelected(true); + if (_selNodes.contains(n)) ni->setSelected(true); } for (auto it = _deleteEdges.begin(); it != _deleteEdges.end(); ++it) { @@ -229,6 +232,7 @@ AddEdgeCommand::AddEdgeCommand(TikzScene *scene, { } + void AddEdgeCommand::undo() { EdgeItem *ei = _scene->edgeItems()[_edge]; diff --git a/src/gui/undocommands.h b/src/gui/undocommands.h index 94b98be..40f0a3b 100644 --- a/src/gui/undocommands.h +++ b/src/gui/undocommands.h @@ -95,6 +95,7 @@ public: explicit DeleteCommand(TikzScene *scene, QMap deleteNodes, QMap deleteEdges, + QSet selNodes, QSet selEdges, QUndoCommand *parent = nullptr); void undo() override; @@ -102,6 +103,7 @@ public: private: QMap _deleteNodes; QMap _deleteEdges; + QSet _selNodes; QSet _selEdges; }; @@ -121,12 +123,16 @@ private: class AddEdgeCommand : public GraphUpdateCommand { public: - explicit AddEdgeCommand(TikzScene *scene, Edge *edge, bool selectEdge, QSet selNodes, QSet selEdges, QUndoCommand *parent = nullptr); + explicit AddEdgeCommand(TikzScene *scene, Edge *edge, + bool selectEdge=false, + QSet selNodes=QSet(), + QSet selEdges=QSet(), + QUndoCommand *parent = nullptr); void undo() override; void redo() override; private: - bool _selectEdge; Edge *_edge; + bool _selectEdge; QSet _selNodes; QSet _selEdges; }; -- cgit v1.2.3 From 539bc84f39ffaff04c99b7d10aac60275588dc79 Mon Sep 17 00:00:00 2001 From: Aleks Kissinger Date: Thu, 24 Jan 2019 12:17:34 +0100 Subject: store qt version in geometry keys to avoid strange behaviours w multiple Qts on one system --- src/gui/mainwindow.cpp | 11 +++++------ src/gui/previewwindow.cpp | 4 ++-- src/gui/stylepalette.cpp | 15 --------------- src/gui/stylepalette.h | 1 - 4 files changed, 7 insertions(+), 24 deletions(-) (limited to 'src') diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index c450b5b..71fea63 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -46,8 +46,8 @@ MainWindow::MainWindow(QWidget *parent) : _menu->setParent(this); setMenuBar(_menu); - QVariant geom = settings.value("geometry-main"); - QVariant state = settings.value("windowState-main"); + QVariant geom = settings.value(QString("geometry-main-qt") + qVersion()); + QVariant state = settings.value(QString("windowState-main-qt") + qVersion()); if (geom.isValid()) { restoreGeometry(geom.toByteArray()); @@ -108,11 +108,10 @@ QSplitter *MainWindow::splitter() const { void MainWindow::closeEvent(QCloseEvent *event) { - //qDebug() << "got close event"; - + // store qt version in window geometry keys to avoid strange behaviour w/ multiple Qt's on one system QSettings settings("tikzit", "tikzit"); - settings.setValue("geometry-main", saveGeometry()); - settings.setValue("windowState-main", saveState(2)); + settings.setValue(QString("geometry-main-qt") + qVersion(), saveGeometry()); + settings.setValue(QString("windowState-main-qt") + qVersion(), saveState(2)); if (!_tikzDocument->isClean()) { QString nm = _tikzDocument->shortName(); diff --git a/src/gui/previewwindow.cpp b/src/gui/previewwindow.cpp index 2f47efd..acce1a1 100644 --- a/src/gui/previewwindow.cpp +++ b/src/gui/previewwindow.cpp @@ -44,7 +44,7 @@ PreviewWindow::PreviewWindow(QWidget *parent) : QSettings settings("tikzit", "tikzit"); ui->setupUi(this); - QVariant geom = settings.value("geometry-preview"); + QVariant geom = settings.value(QString("geometry-preview-qt") + qVersion()); if (geom.isValid()) { restoreGeometry(geom.toByteArray()); @@ -150,7 +150,7 @@ void PreviewWindow::setStatus(PreviewWindow::Status status) void PreviewWindow::closeEvent(QCloseEvent *e) { QSettings settings("tikzit", "tikzit"); - settings.setValue("geometry-preview", saveGeometry()); + settings.setValue(QString("geometry-preview-qt") + qVersion(), saveGeometry()); QDialog::closeEvent(e); } diff --git a/src/gui/stylepalette.cpp b/src/gui/stylepalette.cpp index af096c7..15ed4c2 100644 --- a/src/gui/stylepalette.cpp +++ b/src/gui/stylepalette.cpp @@ -35,15 +35,6 @@ StylePalette::StylePalette(QWidget *parent) : { 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(tikzit->styles()->nodeStyles()); ui->styleListView->setViewMode(QListView::IconMode); ui->styleListView->setMovement(QListView::Static); @@ -180,12 +171,6 @@ void StylePalette::on_currentCategory_currentTextChanged(const QString &cat) // 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); -} void StylePalette::resizeEvent(QResizeEvent *event) { diff --git a/src/gui/stylepalette.h b/src/gui/stylepalette.h index e83f961..f27cd4b 100644 --- a/src/gui/stylepalette.h +++ b/src/gui/stylepalette.h @@ -56,7 +56,6 @@ private: Ui::StylePalette *ui; protected: - void closeEvent(QCloseEvent *event) override; void resizeEvent(QResizeEvent *event) override; }; -- cgit v1.2.3