diff options
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/mainmenu.cpp | 36 | ||||
-rw-r--r-- | src/gui/mainmenu.h | 7 | ||||
-rw-r--r-- | src/gui/mainmenu.ui | 77 | ||||
-rw-r--r-- | src/gui/nodeitem.cpp | 8 | ||||
-rw-r--r-- | src/gui/stylepalette.cpp | 85 | ||||
-rw-r--r-- | src/gui/stylepalette.h | 15 | ||||
-rw-r--r-- | src/gui/tikzscene.cpp | 55 | ||||
-rw-r--r-- | src/gui/tikzscene.h | 6 |
8 files changed, 252 insertions, 37 deletions
diff --git a/src/gui/mainmenu.cpp b/src/gui/mainmenu.cpp index 35ab736..7b7623b 100644 --- a/src/gui/mainmenu.cpp +++ b/src/gui/mainmenu.cpp @@ -282,6 +282,36 @@ void MainMenu::on_actionRun_LaTeX_triggered() tikzit->makePreview(); } +void MainMenu::on_actionPrevious_Node_Style_triggered() +{ + tikzit->activeWindow()->stylePalette()->previousNodeStyle(); +} + +void MainMenu::on_actionNext_Node_Style_triggered() +{ + tikzit->activeWindow()->stylePalette()->nextNodeStyle(); +} + +void MainMenu::on_actionClear_Node_Style_triggered() +{ + tikzit->activeWindow()->stylePalette()->toggleClearNodeStyle(); +} + +void MainMenu::on_actionPrevious_Edge_Style_triggered() +{ + tikzit->activeWindow()->stylePalette()->previousEdgeStyle(); +} + +void MainMenu::on_actionNext_Edge_Style_triggered() +{ + tikzit->activeWindow()->stylePalette()->nextEdgeStyle(); +} + +void MainMenu::on_actionClear_Edge_Style_triggered() +{ + tikzit->activeWindow()->stylePalette()->toggleClearEdgeStyle(); +} + void MainMenu::on_actionPreferences_triggered() { PreferenceDialog *d = new PreferenceDialog(this); @@ -301,6 +331,12 @@ void MainMenu::on_actionZoom_Out_triggered() if (tikzit->activeWindow() != 0) tikzit->activeWindow()->tikzView()->zoomOut(); } +void MainMenu::on_actionShow_Node_Labels_triggered() +{ + tikzit->activeWindow()->tikzScene()->setDrawNodeLabels(ui.actionShow_Node_Labels->isChecked()); + tikzit->activeWindow()->tikzScene()->invalidate(); +} + void MainMenu::on_actionAbout_triggered() { QMessageBox::about(this, diff --git a/src/gui/mainmenu.h b/src/gui/mainmenu.h index 51d7d3c..8268802 100644 --- a/src/gui/mainmenu.h +++ b/src/gui/mainmenu.h @@ -73,11 +73,18 @@ public slots: void on_actionRevert_triggered(); void on_actionJump_to_Selection_triggered(); void on_actionRun_LaTeX_triggered(); + void on_actionPrevious_Node_Style_triggered(); + void on_actionNext_Node_Style_triggered(); + void on_actionClear_Node_Style_triggered(); + void on_actionPrevious_Edge_Style_triggered(); + void on_actionNext_Edge_Style_triggered(); + void on_actionClear_Edge_Style_triggered(); void on_actionPreferences_triggered(); // View void on_actionZoom_In_triggered(); void on_actionZoom_Out_triggered(); + void on_actionShow_Node_Labels_triggered(); // Help void on_actionAbout_triggered(); diff --git a/src/gui/mainmenu.ui b/src/gui/mainmenu.ui index 692f82e..46f4881 100644 --- a/src/gui/mainmenu.ui +++ b/src/gui/mainmenu.ui @@ -79,11 +79,25 @@ <property name="title"> <string>Tools</string> </property> + <widget class="QMenu" name="menuNode_Style"> + <property name="title"> + <string>Set Style</string> + </property> + <addaction name="actionPrevious_Node_Style"/> + <addaction name="actionNext_Node_Style"/> + <addaction name="actionClear_Node_Style"/> + <addaction name="separator"/> + <addaction name="actionPrevious_Edge_Style"/> + <addaction name="actionNext_Edge_Style"/> + <addaction name="actionClear_Edge_Style"/> + </widget> <addaction name="actionParse"/> <addaction name="actionRevert"/> <addaction name="actionJump_to_Selection"/> <addaction name="actionRun_LaTeX"/> <addaction name="separator"/> + <addaction name="menuNode_Style"/> + <addaction name="separator"/> <addaction name="actionPreferences"/> </widget> <widget class="QMenu" name="menuView"> @@ -92,6 +106,7 @@ </property> <addaction name="actionZoom_In"/> <addaction name="actionZoom_Out"/> + <addaction name="actionShow_Node_Labels"/> </widget> <widget class="QMenu" name="menuHelp"> <property name="title"> @@ -383,6 +398,68 @@ <string>Ctrl+M</string> </property> </action> + <action name="actionShow_Node_Labels"> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="checked"> + <bool>true</bool> + </property> + <property name="text"> + <string>Show Node Labels</string> + </property> + <property name="shortcut"> + <string>Ctrl+Shift+L</string> + </property> + </action> + <action name="actionPrevious_Node_Style"> + <property name="text"> + <string>Previous Node Style</string> + </property> + <property name="shortcut"> + <string>Ctrl+,</string> + </property> + </action> + <action name="actionNext_Node_Style"> + <property name="text"> + <string>Next Node Style</string> + </property> + <property name="shortcut"> + <string>Ctrl+.</string> + </property> + </action> + <action name="actionClear_Node_Style"> + <property name="text"> + <string>Clear Node Style</string> + </property> + <property name="shortcut"> + <string>Ctrl+Space</string> + </property> + </action> + <action name="actionPrevious_Edge_Style"> + <property name="text"> + <string>Previous Edge Style</string> + </property> + <property name="shortcut"> + <string>Ctrl+Shift+,</string> + </property> + </action> + <action name="actionNext_Edge_Style"> + <property name="text"> + <string>Next Edge Style</string> + </property> + <property name="shortcut"> + <string>Ctrl+Shift+.</string> + </property> + </action> + <action name="actionClear_Edge_Style"> + <property name="text"> + <string>Clear Edge Style</string> + </property> + <property name="shortcut"> + <string>Ctrl+Shift+Space</string> + </property> + </action> <addaction name="menuFile"/> <addaction name="menuEdit"/> <addaction name="menuView"/> diff --git a/src/gui/nodeitem.cpp b/src/gui/nodeitem.cpp index 82692f2..7ae4c4a 100644 --- a/src/gui/nodeitem.cpp +++ b/src/gui/nodeitem.cpp @@ -91,7 +91,13 @@ void NodeItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidge painter->drawPath(shape()); } - if (_node->label() != "") { + bool drawLabel = _node->label() != ""; + if (scene()) { + TikzScene *sc = static_cast<TikzScene*>(scene()); + drawLabel= drawLabel && sc->drawNodeLabels(); + } + + if (drawLabel) { QRectF rect = labelRect(); QPen pen(QColor(200,0,0,120)); QVector<qreal> d; diff --git a/src/gui/stylepalette.cpp b/src/gui/stylepalette.cpp index 15ed4c2..b862902 100644 --- a/src/gui/stylepalette.cpp +++ b/src/gui/stylepalette.cpp @@ -34,6 +34,8 @@ StylePalette::StylePalette(QWidget *parent) : ui(new Ui::StylePalette) { ui->setupUi(this); + _lastStyleIndex = 0; + _lastEdgeStyleIndex = 0; ui->styleListView->setModel(tikzit->styles()->nodeStyles()); ui->styleListView->setViewMode(QListView::IconMode); @@ -73,31 +75,95 @@ void StylePalette::reloadStyles() ui->currentCategory->addItems(tikzit->styles()->categories()); ui->currentCategory->setCurrentText(cat); } + + clearNodeStyle(); + clearEdgeStyle(); } -void StylePalette::changeNodeStyle(int increment) +int StylePalette::styleIndex() { QModelIndexList i = ui->styleListView->selectionModel()->selectedIndexes(); - int row = 0; - if (!i.isEmpty()) { - int row = (i[0].row()+increment)% tikzit->styles()->nodeStyles()->numInCategory(); - if (row < 0) row += tikzit->styles()->nodeStyles()->numInCategory(); + if (!i.isEmpty()) return i[0].row(); + else return 0; +} + +void StylePalette::setStyleIndex(int i) +{ + _lastStyleIndex = styleIndex(); + if (i < 0) { + i = 0; + } else { + int max = tikzit->styles()->nodeStyles()->numInCategory(); + if (i >= max) i = max - 1; } - //QModelIndex i1 = ui->styleListView->rootIndex().child(row, 0); - QModelIndex i1 =tikzit->styles()->nodeStyles()->index(row,0); + QModelIndex i1 =tikzit->styles()->nodeStyles()->index(i,0); ui->styleListView->selectionModel()->select(i1, QItemSelectionModel::ClearAndSelect); ui->styleListView->scrollTo(i1); } +int StylePalette::edgeStyleIndex() +{ + QModelIndexList i = ui->edgeStyleListView->selectionModel()->selectedIndexes(); + if (!i.isEmpty()) return i[0].row(); + else return 0; +} + +void StylePalette::setEdgeStyleIndex(int i) +{ + _lastEdgeStyleIndex = edgeStyleIndex(); + if (i < 0) { + i = 0; + } else { + int max = tikzit->styles()->edgeStyles()->numInCategory(); + if (i >= max) i = max - 1; + } + + QModelIndex i1 =tikzit->styles()->edgeStyles()->index(i,0); + ui->edgeStyleListView->selectionModel()->select(i1, QItemSelectionModel::ClearAndSelect); + ui->edgeStyleListView->scrollTo(i1); +} + void StylePalette::nextNodeStyle() { - changeNodeStyle(1); + setStyleIndex(styleIndex()+1); } void StylePalette::previousNodeStyle() { - changeNodeStyle(-1); + setStyleIndex(styleIndex()-1); +} + +void StylePalette::clearNodeStyle() +{ + setStyleIndex(0); +} + +void StylePalette::toggleClearNodeStyle() +{ + if (styleIndex() == 0) setStyleIndex(_lastStyleIndex); + else setStyleIndex(0); +} + +void StylePalette::nextEdgeStyle() +{ + setEdgeStyleIndex(edgeStyleIndex()+1); +} + +void StylePalette::previousEdgeStyle() +{ + setEdgeStyleIndex(edgeStyleIndex()-1); +} + +void StylePalette::clearEdgeStyle() +{ + setEdgeStyleIndex(0); +} + +void StylePalette::toggleClearEdgeStyle() +{ + if (edgeStyleIndex() == 0) setEdgeStyleIndex(_lastEdgeStyleIndex); + else setEdgeStyleIndex(0); } QString StylePalette::activeNodeStyleName() @@ -164,6 +230,7 @@ void StylePalette::on_currentCategory_currentTextChanged(const QString &cat) { //tikzit->styles()->refreshModels(_nodeModel, _edgeModel, cat); tikzit->styles()->nodeStyles()->setCategory(cat); + clearNodeStyle(); } //void StylePalette::on_buttonApplyNodeStyle_clicked() diff --git a/src/gui/stylepalette.h b/src/gui/stylepalette.h index f27cd4b..6e16812 100644 --- a/src/gui/stylepalette.h +++ b/src/gui/stylepalette.h @@ -36,10 +36,14 @@ public: void reloadStyles(); void nextNodeStyle(); void previousNodeStyle(); + void clearNodeStyle(); + void toggleClearNodeStyle(); + void nextEdgeStyle(); + void previousEdgeStyle(); + void clearEdgeStyle(); + void toggleClearEdgeStyle(); QString activeNodeStyleName(); QString activeEdgeStyleName(); - - public slots: void nodeStyleDoubleClicked(const QModelIndex &); void edgeStyleDoubleClicked(const QModelIndex &); @@ -51,7 +55,12 @@ public slots: //void on_buttonApplyNodeStyle_clicked(); private: - void changeNodeStyle(int increment); + int _lastStyleIndex; + int _lastEdgeStyleIndex; + int styleIndex(); + void setStyleIndex(int i); + int edgeStyleIndex(); + void setEdgeStyleIndex(int i); Ui::StylePalette *ui; diff --git a/src/gui/tikzscene.cpp b/src/gui/tikzscene.cpp index 4577981..087f621 100644 --- a/src/gui/tikzscene.cpp +++ b/src/gui/tikzscene.cpp @@ -38,6 +38,7 @@ TikzScene::TikzScene(TikzDocument *tikzDocument, ToolPalette *tools, { _modifyEdgeItem = nullptr; _edgeStartNodeItem = nullptr; + _drawNodeLabels = true; _drawEdgeItem = new QGraphicsLineItem(); _rubberBandItem = new QGraphicsRectItem(); _enabled = true; @@ -707,25 +708,6 @@ void TikzScene::keyReleaseEvent(QKeyEvent *event) } - if (event->key() == Qt::Key_Backspace || event->key() == Qt::Key_Delete) { - deleteSelectedItems(); - } else if (mod == Qt::NoModifier) { - switch(event->key()) { - case Qt::Key_S: - tikzit->activeWindow()->toolPalette()->setCurrentTool(ToolPalette::SELECT); - break; - case Qt::Key_V: - case Qt::Key_N: - tikzit->activeWindow()->toolPalette()->setCurrentTool(ToolPalette::VERTEX); - break; - case Qt::Key_E: - tikzit->activeWindow()->toolPalette()->setCurrentTool(ToolPalette::EDGE); - break; - case Qt::Key_B: - tikzit->activeWindow()->toolPalette()->setCurrentTool(ToolPalette::CROP); - break; - } - } foreach (QGraphicsItem *it, selectedItems()) it->update(); } @@ -739,11 +721,6 @@ void TikzScene::keyPressEvent(QKeyEvent *event) // 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 (mod & Qt::ControlModifier) { QSet<Node*> selNodes; QSet<Edge*> selEdges; @@ -865,6 +842,26 @@ void TikzScene::keyPressEvent(QKeyEvent *event) _tikzDocument->undoStack()->endMacro(); } } + } else { // no CTRL key + if (event->key() == Qt::Key_Backspace || event->key() == Qt::Key_Delete) { + deleteSelectedItems(); + } else if (!event->isAutoRepeat()) { + switch(event->key()) { + case Qt::Key_S: + tikzit->activeWindow()->toolPalette()->setCurrentTool(ToolPalette::SELECT); + break; + case Qt::Key_V: + case Qt::Key_N: + tikzit->activeWindow()->toolPalette()->setCurrentTool(ToolPalette::VERTEX); + break; + case Qt::Key_E: + tikzit->activeWindow()->toolPalette()->setCurrentTool(ToolPalette::EDGE); + break; + case Qt::Key_B: + tikzit->activeWindow()->toolPalette()->setCurrentTool(ToolPalette::CROP); + break; + } + } } foreach (QGraphicsItem *it, selectedItems()) it->update(); @@ -907,6 +904,16 @@ void TikzScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) } } +bool TikzScene::drawNodeLabels() const +{ + return _drawNodeLabels; +} + +void TikzScene::setDrawNodeLabels(bool drawNodeLabels) +{ + _drawNodeLabels = drawNodeLabels; +} + bool TikzScene::highlightTails() const { return _highlightTails && getSelectedNodes().isEmpty(); diff --git a/src/gui/tikzscene.h b/src/gui/tikzscene.h index f8dc7ec..2e7baa5 100644 --- a/src/gui/tikzscene.h +++ b/src/gui/tikzscene.h @@ -90,6 +90,9 @@ public: bool highlightHeads() const; bool highlightTails() const; + bool drawNodeLabels() const; + void setDrawNodeLabels(bool drawNodeLabels); + public slots: void graphReplaced(); void refreshZIndices(); @@ -115,6 +118,7 @@ private: bool _firstControlPoint; QPointF _mouseDownPos; bool _draggingNodes; + bool _drawNodeLabels; QMap<Node*,QPointF> _oldNodePositions; qreal _oldWeight; @@ -126,6 +130,8 @@ private: bool _highlightHeads; bool _highlightTails; bool _smartTool; + + bool _ctrlWasPressed; }; #endif // TIKZSCENE_H |