summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gui/mainmenu.cpp36
-rw-r--r--src/gui/mainmenu.h7
-rw-r--r--src/gui/mainmenu.ui77
-rw-r--r--src/gui/nodeitem.cpp8
-rw-r--r--src/gui/stylepalette.cpp85
-rw-r--r--src/gui/stylepalette.h15
-rw-r--r--src/gui/tikzscene.cpp55
-rw-r--r--src/gui/tikzscene.h6
-rw-r--r--src/tikzit.h2
9 files changed, 253 insertions, 38 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
diff --git a/src/tikzit.h b/src/tikzit.h
index 94aba9d..d27d416 100644
--- a/src/tikzit.h
+++ b/src/tikzit.h
@@ -49,7 +49,7 @@
#ifndef TIKZIT_H
#define TIKZIT_H
-#define TIKZIT_VERSION "2.1.4"
+#define TIKZIT_VERSION "2.1.5"
#include "mainwindow.h"
#include "mainmenu.h"