diff --git a/bin/app/data/ApplicationSettings_template.xml b/bin/app/data/ApplicationSettings_template.xml
index 240ede3b..7a86c6df 100644
--- a/bin/app/data/ApplicationSettings_template.xml
+++ b/bin/app/data/ApplicationSettings_template.xml
@@ -26,12 +26,14 @@
+
+
+
+
+
-
-
-
diff --git a/bin/app/data/gui/code_view/code_view.css b/bin/app/data/gui/code_view/code_view.css
index a1703c12..31ca6d17 100644
--- a/bin/app/data/gui/code_view/code_view.css
+++ b/bin/app/data/gui/code_view/code_view.css
@@ -13,7 +13,6 @@
border-top-left-radius: 10px;
border-top-right-radius: 10px;
margin-bottom: 5px;
- min-height: 28px;
padding-right: 5px;
}
@@ -21,9 +20,8 @@
background: none;
border: none;
border-radius: 3px;
- font-size: 14px;
padding: 2px 4px;
- margin: 2px 8px;
+ margin: 1px 8px 3px;
}
#code_file #title_label:hover {
@@ -48,8 +46,6 @@
background: none;
color: gray;
border: none;
- font-family: "Source Code Pro";
- font-size: 14px;
}
#code_file #code_snippet #dots {
@@ -63,13 +59,6 @@
#code_area {
background-color: transparent;
- font-family: "Source Code Pro";
- font-size: 14px;
-}
-
-#code_area #line_number_area {
- font-family: "Source Code Pro";
- font-size: 14px;
}
#code_file #maximize_button, #code_file #snippet_button, #code_file #minimize_button {
diff --git a/bin/app/data/gui/search_view/search_element.css b/bin/app/data/gui/search_view/search_element.css
deleted file mode 100644
index 08079121..00000000
--- a/bin/app/data/gui/search_view/search_element.css
+++ /dev/null
@@ -1,8 +0,0 @@
-QPushButton {
- border: none;
- font-family: "Source Code Pro";
- font-size: 16px;
- height: 20px;
- padding-left: 4px;
- padding-right: 4px;
-}
diff --git a/bin/app/data/gui/search_view/search_view.css b/bin/app/data/gui/search_view/search_view.css
index e0fa4f14..a864f6c3 100644
--- a/bin/app/data/gui/search_view/search_view.css
+++ b/bin/app/data/gui/search_view/search_view.css
@@ -13,23 +13,17 @@ QWidget#search_box_container {
QLineEdit#search_box {
background: #E0E0E0;
border: none;
- font-family: "Source Code Pro";
- font-size: 16px;
- height: 24px;
selection-background-color: #B2B2B2;
}
QWidget#search_box_highlight {
background: #B2B2B2;
border: none;
- height: 24px;
}
QAbstractItemView#search_box_popup {
background-color: white;
border: none;
- font-family: "Source Code Pro";
- font-size: 14pt;
margin: 8px 0 0;
min-height: 26px;
selection-background-color: #B2B2B2;
@@ -41,7 +35,6 @@ QPushButton#search_button {
border-bottom-right-radius: 12px;
border-top-right-radius: 12px;
background-position: 15px 5px;
- height: 30px;
width: 30px;
}
@@ -53,18 +46,6 @@ QPushButton#search_button {
background: #626262;
}
-/*QPushButton#case_sensitive_button {
- border: none;
- border-image: url(data/gui/search_view/images/button_case_sensitive_inactive.png);
- height: 26px;
- width: 26px;
- margin-left: 4px;
-}
-
-QPushButton#case_sensitive_button:checked {
- border-image: url(data/gui/search_view/images/button_case_sensitive_active.png);
-}*/
-
QToolTip {
background-color: rgb(204, 204, 204);
border: 1px solid rgb(0, 0, 0);
diff --git a/src/app/qt/element/QtAutocompletionList.cpp b/src/app/qt/element/QtAutocompletionList.cpp
index 45c1fa9d..6421c070 100644
--- a/src/app/qt/element/QtAutocompletionList.cpp
+++ b/src/app/qt/element/QtAutocompletionList.cpp
@@ -145,7 +145,7 @@ void QtAutocompletionDelegate::paint(QPainter* painter, const QStyleOptionViewIt
if (font.pointSize() > 0)
{
QFont typeFont = font;
- typeFont.setPointSize(10);
+ typeFont.setPointSize(ApplicationSettings::getInstance()->getFontSize() - 4);
painter->setFont(typeFont);
}
diff --git a/src/app/qt/element/QtCodeArea.cpp b/src/app/qt/element/QtCodeArea.cpp
index bdfb14e2..6c2cd658 100644
--- a/src/app/qt/element/QtCodeArea.cpp
+++ b/src/app/qt/element/QtCodeArea.cpp
@@ -57,9 +57,8 @@ QtCodeArea::QtCodeArea(
setObjectName("code_area");
setReadOnly(true);
setFrameStyle(QFrame::NoFrame);
- setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Fixed);
- setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setLineWrapMode(QPlainTextEdit::NoWrap);
+ setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Fixed);
m_lineNumberArea = new LineNumberArea(this);
m_highlighter = new QtHighlighter(document());
@@ -90,9 +89,16 @@ QtCodeArea::~QtCodeArea()
QSize QtCodeArea::sizeHint() const
{
- int width = 480;
- int height = (document()->size().height() + 0.7f) * fontMetrics().lineSpacing() - 3;
- return QSize(width, height);
+ QTextBlock block = firstVisibleBlock();
+ float height = blockBoundingGeometry(block).translated(contentOffset()).top();
+
+ while (block.isValid())
+ {
+ height += blockBoundingRect(block).height();
+ block = block.next();
+ }
+
+ return QSize(320, height + 1);
}
void QtCodeArea::lineNumberAreaPaintEvent(QPaintEvent *event)
@@ -170,7 +176,7 @@ void QtCodeArea::showEvent(QShowEvent* event)
int tabWidth = ApplicationSettings::getInstance()->getCodeTabWidth();
setTabStopWidth(tabWidth * fontMetrics().width('9'));
- setMaximumHeight(sizeHint().height());
+ setFixedHeight(sizeHint().height());
}
void QtCodeArea::paintEvent(QPaintEvent* event)
diff --git a/src/app/qt/element/QtCodeArea.h b/src/app/qt/element/QtCodeArea.h
index bd5c9354..91616b19 100644
--- a/src/app/qt/element/QtCodeArea.h
+++ b/src/app/qt/element/QtCodeArea.h
@@ -49,7 +49,7 @@ public:
);
virtual ~QtCodeArea();
- QSize sizeHint() const;
+ virtual QSize sizeHint() const;
void lineNumberAreaPaintEvent(QPaintEvent *event);
int lineNumberDigits() const;
diff --git a/src/app/qt/element/QtCodeFile.cpp b/src/app/qt/element/QtCodeFile.cpp
index d793e908..29300785 100644
--- a/src/app/qt/element/QtCodeFile.cpp
+++ b/src/app/qt/element/QtCodeFile.cpp
@@ -39,9 +39,12 @@ QtCodeFile::QtCodeFile(const FilePath& filePath, QtCodeFileList* parent)
m_title->setAttribute(Qt::WA_LayoutUsesWidgetRect); // fixes layouting on Mac
m_title->setToolTip(QString::fromStdString(filePath.str()));
m_title->setFixedWidth(m_title->fontMetrics().width(filePath.fileName().c_str()) + 32);
+ m_title->setFixedHeight(std::max(m_title->fontMetrics().height() * 1.2, 28.0));
m_title->setSizePolicy(sizePolicy().horizontalPolicy(), QSizePolicy::Fixed);
titleLayout->addWidget(m_title);
+ titleWidget->setMinimumHeight(m_title->height() + 4);
+
titleLayout->addStretch(3);
m_minimizeButton = new QPushButton(this);
diff --git a/src/app/qt/element/QtMainWindow.cpp b/src/app/qt/element/QtMainWindow.cpp
index ba43fca8..821a6712 100644
--- a/src/app/qt/element/QtMainWindow.cpp
+++ b/src/app/qt/element/QtMainWindow.cpp
@@ -21,6 +21,7 @@
#include "utility/messaging/type/MessageSaveProject.h"
#include "utility/messaging/type/MessageUndo.h"
#include "utility/messaging/type/MessageWindowFocus.h"
+#include "utility/messaging/type/MessageZoom.h"
QtMainWindow::QtMainWindow()
{
@@ -34,6 +35,7 @@ QtMainWindow::QtMainWindow()
setupProjectMenu();
setupEditMenu();
+ setupViewMenu();
setupHelpMenu();
setupShortcuts();
@@ -216,6 +218,16 @@ void QtMainWindow::redo()
MessageRedo().dispatch();
}
+void QtMainWindow::zoomIn()
+{
+ MessageZoom(true).dispatch();
+}
+
+void QtMainWindow::zoomOut()
+{
+ MessageZoom(false).dispatch();
+}
+
void QtMainWindow::handleEscapeShortcut()
{
m_startScreen->hide();
@@ -247,11 +259,20 @@ void QtMainWindow::setupEditMenu()
menuBar()->addMenu(menu);
menu->addAction(tr("&Refresh"), this, SLOT(refresh()), QKeySequence::Refresh);
- menu->addAction(tr("Undo"), this, SLOT(undo()), QKeySequence::Undo );
- menu->addAction(tr("Redo"), this, SLOT(redo()), QKeySequence::Redo );
+ menu->addAction(tr("Undo"), this, SLOT(undo()), QKeySequence::Undo);
+ menu->addAction(tr("Redo"), this, SLOT(redo()), QKeySequence::Redo);
menu->addAction(tr("&Find"), this, SLOT(find()), QKeySequence::Find);
}
+void QtMainWindow::setupViewMenu()
+{
+ QMenu *menu = new QMenu(tr("&View"), this);
+ menuBar()->addMenu(menu);
+
+ menu->addAction(tr("Larger font"), this, SLOT(zoomIn()), QKeySequence::ZoomIn);
+ menu->addAction(tr("Smaller font"), this, SLOT(zoomOut()), QKeySequence::ZoomOut);
+}
+
void QtMainWindow::setupHelpMenu()
{
QMenu *menu = new QMenu(tr("&Help"), this);
diff --git a/src/app/qt/element/QtMainWindow.h b/src/app/qt/element/QtMainWindow.h
index f0e87ce6..23d71d36 100644
--- a/src/app/qt/element/QtMainWindow.h
+++ b/src/app/qt/element/QtMainWindow.h
@@ -45,12 +45,15 @@ public slots:
void showLicences();
void undo();
void redo();
+ void zoomIn();
+ void zoomOut();
void handleEscapeShortcut();
private:
void setupEditMenu();
void setupProjectMenu();
+ void setupViewMenu();
void setupHelpMenu();
void setupShortcuts();
diff --git a/src/app/qt/element/QtRefreshBar.cpp b/src/app/qt/element/QtRefreshBar.cpp
index 229cca41..3520ba48 100644
--- a/src/app/qt/element/QtRefreshBar.cpp
+++ b/src/app/qt/element/QtRefreshBar.cpp
@@ -6,6 +6,8 @@
#include "utility/messaging/type/MessageAutoRefreshChanged.h"
#include "utility/messaging/type/MessageRefresh.h"
+#include "settings/ApplicationSettings.h"
+
QtRefreshBar::QtRefreshBar()
{
setObjectName("refresh_bar");
@@ -48,3 +50,11 @@ void QtRefreshBar::autoRefreshClicked()
{
MessageAutoRefreshChanged(m_autoRefreshButton->isChecked()).dispatch();
}
+
+void QtRefreshBar::refreshStyle()
+{
+ float height = std::max(ApplicationSettings::getInstance()->getFontSize() + 16, 30);
+
+ m_refreshButton->setFixedHeight(height);
+ m_autoRefreshButton->setFixedHeight(height);
+}
diff --git a/src/app/qt/element/QtRefreshBar.h b/src/app/qt/element/QtRefreshBar.h
index e0b2c17c..22723402 100644
--- a/src/app/qt/element/QtRefreshBar.h
+++ b/src/app/qt/element/QtRefreshBar.h
@@ -14,6 +14,8 @@ public:
QtRefreshBar();
virtual ~QtRefreshBar();
+ void refreshStyle();
+
private slots:
void refreshClicked();
void autoRefreshClicked();
diff --git a/src/app/qt/element/QtSearchBar.cpp b/src/app/qt/element/QtSearchBar.cpp
index a0770cc9..9a95f2fc 100644
--- a/src/app/qt/element/QtSearchBar.cpp
+++ b/src/app/qt/element/QtSearchBar.cpp
@@ -5,6 +5,7 @@
#include
#include "qt/element/QtSmartSearchBox.h"
+#include "settings/ApplicationSettings.h"
QtSearchBar::QtSearchBar()
{
@@ -23,7 +24,7 @@ QtSearchBar::QtSearchBar()
layout->addWidget(m_searchBoxContainer);
QBoxLayout* innerLayout = new QHBoxLayout();
- innerLayout->setContentsMargins(7, 3, 5, 3);
+ innerLayout->setContentsMargins(7, 3, 5, 2);
m_searchBoxContainer->setLayout(innerLayout);
m_searchBox = new QtSmartSearchBox(m_searchBoxContainer);
@@ -41,14 +42,9 @@ QtSearchBar::QtSearchBar()
m_searchButton->setIcon(QIcon("data/gui/search_view/images/search.png"));
layout->addWidget(m_searchButton);
- // m_caseSensitiveButton = new QPushButton(this);
- // m_caseSensitiveButton->setObjectName("case_sensitive_button");
- // m_caseSensitiveButton->setCheckable(true);
- // m_caseSensitiveButton->setToolTip("case sensitive");
- // m_caseSensitiveButton->setAttribute(Qt::WA_LayoutUsesWidgetRect); // fixes layouting on Mac
- // layout->addWidget(m_caseSensitiveButton);
-
connect(m_searchButton, SIGNAL(clicked()), m_searchBox, SLOT(search()));
+
+ refreshStyle();
}
QtSearchBar::~QtSearchBar()
@@ -83,3 +79,9 @@ QAbstractItemView* QtSearchBar::getCompleterPopup()
}
return nullptr;
}
+
+void QtSearchBar::refreshStyle()
+{
+ m_searchBox->setFixedHeight(std::max(ApplicationSettings::getInstance()->getFontSize() + 11, 25));
+ m_searchButton->setFixedHeight(m_searchBox->height() + 5);
+}
diff --git a/src/app/qt/element/QtSearchBar.h b/src/app/qt/element/QtSearchBar.h
index f2f71d62..9a9677ec 100644
--- a/src/app/qt/element/QtSearchBar.h
+++ b/src/app/qt/element/QtSearchBar.h
@@ -28,11 +28,12 @@ public:
QAbstractItemView* getCompleterPopup();
+ void refreshStyle();
+
private:
QWidget* m_searchBoxContainer; // used for correct clipping inside the search box
QtSmartSearchBox* m_searchBox;
QPushButton* m_searchButton;
- // QPushButton* m_caseSensitiveButton;
};
#endif // QT_SEARCH_BAR_H
diff --git a/src/app/qt/element/QtSmartSearchBox.cpp b/src/app/qt/element/QtSmartSearchBox.cpp
index 1b2de8eb..90122a51 100644
--- a/src/app/qt/element/QtSmartSearchBox.cpp
+++ b/src/app/qt/element/QtSmartSearchBox.cpp
@@ -581,10 +581,11 @@ void QtSmartSearchBox::updateElements()
std::shared_ptr element = std::make_shared(QString::fromStdString(name), this);
m_elements.push_back(element);
+
std::string color = "#000000";
std::string hoverColor = "#000000";
- if(token.queryNodeType == QueryNode::QUERYNODETYPE_TOKEN)
+ if (token.queryNodeType == QueryNode::QUERYNODETYPE_TOKEN)
{
element->setObjectName(QString::fromStdString("search_element_" + token.getNodeTypeAsString()));
color = ApplicationSettings::getInstance()->getNodeTypeColor(token.nodeType);
@@ -597,19 +598,18 @@ void QtSmartSearchBox::updateElements()
hoverColor = ApplicationSettings::getInstance()->getQueryNodeTypeColor(token.queryNodeType, "hover");
}
- std::string stylesheet = "QPushButton {background-color:";
- stylesheet += color;
- stylesheet += ";} QPushButton:hover{ background-color:";
- stylesheet += hoverColor;
- stylesheet += ";}";
+ std::stringstream css;
+ css << "QPushButton { border: none; padding: 0px 4px; background-color:";
+ css << color;
+ css << ";} QPushButton:hover { background-color:";
+ css << hoverColor;
+ css << ";}";
- element->setStyleSheet(stylesheet.c_str());
+ element->setStyleSheet(css.str().c_str());
connect(element.get(), SIGNAL(wasChecked(QtQueryElement*)), this, SLOT(onElementSelected(QtQueryElement*)));
}
- setStyleSheet(TextAccess::createFromFile("data/gui/search_view/search_element.css")->getText().c_str());
-
updatePlaceholder();
hideAutoCompletions();
diff --git a/src/app/qt/element/QtUndoRedo.cpp b/src/app/qt/element/QtUndoRedo.cpp
index ee1259f7..dfdc26c0 100644
--- a/src/app/qt/element/QtUndoRedo.cpp
+++ b/src/app/qt/element/QtUndoRedo.cpp
@@ -3,9 +3,10 @@
#include
#include
-#include
-#include
+#include "utility/messaging/type/MessageUndo.h"
+#include "utility/messaging/type/MessageRedo.h"
+#include "settings/ApplicationSettings.h"
QtUndoRedo::QtUndoRedo()
{
@@ -35,6 +36,8 @@ QtUndoRedo::QtUndoRedo()
connect(m_undoButton, SIGNAL(clicked()), this, SLOT(undo()));
connect(m_redoButton, SIGNAL(clicked()), this, SLOT(redo()));
+
+ refreshStyle();
}
QtUndoRedo::~QtUndoRedo()
@@ -60,3 +63,11 @@ void QtUndoRedo::setRedoButtonEnabled(bool enabled)
{
m_redoButton->setEnabled(enabled);
}
+
+void QtUndoRedo::refreshStyle()
+{
+ float height = std::max(ApplicationSettings::getInstance()->getFontSize() + 16, 30);
+
+ m_undoButton->setFixedHeight(height);
+ m_redoButton->setFixedHeight(height);
+}
diff --git a/src/app/qt/element/QtUndoRedo.h b/src/app/qt/element/QtUndoRedo.h
index c5732393..db23f9b5 100644
--- a/src/app/qt/element/QtUndoRedo.h
+++ b/src/app/qt/element/QtUndoRedo.h
@@ -15,9 +15,12 @@ class QtUndoRedo
public:
QtUndoRedo();
~QtUndoRedo();
+
void setRedoButtonEnabled(bool enabled);
void setUndoButtonEnabled(bool enabled);
+ void refreshStyle();
+
private slots:
void undo();
void redo();
diff --git a/src/app/qt/graphics/QtStraightLineItem.cpp b/src/app/qt/graphics/QtStraightLineItem.cpp
index 2a567a5d..09d33453 100644
--- a/src/app/qt/graphics/QtStraightLineItem.cpp
+++ b/src/app/qt/graphics/QtStraightLineItem.cpp
@@ -15,7 +15,7 @@ QtStraightLineItem::QtStraightLineItem(QGraphicsItem* parent)
this->setAcceptHoverEvents(true);
m_circle = new QtRoundedRectItem(this);
- m_circle->setRadius(10);
+ m_circle->setRadius(100);
m_circle->setBrush(QBrush(QColor("#FFF")));
m_circle->setAcceptHoverEvents(true);
@@ -87,13 +87,15 @@ void QtStraightLineItem::updateLine(
Vec2f mid = (op + tp) / 2;
+ size_t radius = GraphViewStyle::getFontSizeOfExpandToggleNode();
+
if (showArrow)
{
Vec2f unit = (tp - op).normalize();
Vec2f nUnit(-unit.y, unit.x);
- Vec2f arrow = mid + unit * 22;
+ Vec2f arrow = mid + unit * (radius + 13);
- Vec2f arrowSide = mid + unit * 15 + nUnit * 7;
+ Vec2f arrowSide = mid + unit * (radius + 6) + nUnit * 7;
m_arrowRight->setLine(arrow.x, arrow.y, arrowSide.x, arrowSide.y);
arrowSide -= nUnit * 14;
@@ -111,7 +113,7 @@ void QtStraightLineItem::updateLine(
m_arrowRight->hide();
}
- m_circle->setRect(mid.x - 10, mid.y - 10, 20, 20);
+ m_circle->setRect(mid.x - radius, mid.y - radius, 2 * radius, 2 * radius);
m_circle->setPen(QPen(QColor("#E0E0E0"), 2));
QString numberStr = QString::number(number);
diff --git a/src/app/qt/view/QtCodeView.cpp b/src/app/qt/view/QtCodeView.cpp
index 3e304993..75febb93 100644
--- a/src/app/qt/view/QtCodeView.cpp
+++ b/src/app/qt/view/QtCodeView.cpp
@@ -1,10 +1,13 @@
#include "qt/view/QtCodeView.h"
+#include
+
#include "utility/file/FileSystem.h"
#include "utility/text/TextAccess.h"
#include "qt/element/QtCodeFileList.h"
#include "qt/view/QtViewWidgetWrapper.h"
+#include "settings/ApplicationSettings.h"
QtCodeView::QtCodeView(ViewLayout* viewLayout)
: CodeView(viewLayout)
@@ -114,5 +117,10 @@ void QtCodeView::doDefocusToken()
void QtCodeView::setStyleSheet(QWidget* widget) const
{
- widget->setStyleSheet(TextAccess::createFromFile("data/gui/code_view/code_view.css")->getText().c_str());
+ std::stringstream css;
+ css << TextAccess::createFromFile("data/gui/code_view/code_view.css")->getText();
+ css << "* { font-size: " << ApplicationSettings::getInstance()->getFontSize() << "pt; }";
+ css << "#code_file #code_snippet * { font-family: " << ApplicationSettings::getInstance()->getFontName() << "; }";
+
+ widget->setStyleSheet(css.str().c_str());
}
diff --git a/src/app/qt/view/QtGraphViewStyleImpl.cpp b/src/app/qt/view/QtGraphViewStyleImpl.cpp
index 3bd032bf..22c65b0e 100644
--- a/src/app/qt/view/QtGraphViewStyleImpl.cpp
+++ b/src/app/qt/view/QtGraphViewStyleImpl.cpp
@@ -6,3 +6,8 @@ float QtGraphViewStyleImpl::getCharWidthForNodeType(Node::NodeType type)
{
return QFontMetrics(QtGraphNode::getFontForNodeType(type)).width("QtGraphNode::QtGraphNode::QtGraphNode") / 37.0f;
}
+
+float QtGraphViewStyleImpl::getCharHeightForNodeType(Node::NodeType type)
+{
+ return QFontMetrics(QtGraphNode::getFontForNodeType(type)).height();
+}
diff --git a/src/app/qt/view/QtGraphViewStyleImpl.h b/src/app/qt/view/QtGraphViewStyleImpl.h
index 9957a9da..67140985 100644
--- a/src/app/qt/view/QtGraphViewStyleImpl.h
+++ b/src/app/qt/view/QtGraphViewStyleImpl.h
@@ -9,6 +9,7 @@ class QtGraphViewStyleImpl
{
public:
virtual float getCharWidthForNodeType(Node::NodeType type);
+ virtual float getCharHeightForNodeType(Node::NodeType type);
};
#endif // QT_GRAPH_VIEW_STYLE_IMPL_H
diff --git a/src/app/qt/view/QtRefreshView.cpp b/src/app/qt/view/QtRefreshView.cpp
index abbd803b..b0bc960b 100644
--- a/src/app/qt/view/QtRefreshView.cpp
+++ b/src/app/qt/view/QtRefreshView.cpp
@@ -1,8 +1,12 @@
#include "qt/view/QtRefreshView.h"
+#include
+
+#include "utility/text/TextAccess.h"
+
#include "component/controller/RefreshController.h"
#include "qt/view/QtViewWidgetWrapper.h"
-#include "utility/text/TextAccess.h"
+#include "settings/ApplicationSettings.h"
QtRefreshView::QtRefreshView(ViewLayout* viewLayout)
: RefreshView(viewLayout)
@@ -33,11 +37,14 @@ void QtRefreshView::refreshView()
void QtRefreshView::doRefreshView()
{
setStyleSheet();
+ m_widget->refreshStyle();
}
void QtRefreshView::setStyleSheet()
{
- std::string css = TextAccess::createFromFile("data/gui/refresh_view/refresh_view.css")->getText();
+ std::stringstream css;
+ css << TextAccess::createFromFile("data/gui/refresh_view/refresh_view.css")->getText();
+ css << "* { font-size: " << ApplicationSettings::getInstance()->getFontSize() << "pt; }";
- m_widget->setStyleSheet(css.c_str());
+ m_widget->setStyleSheet(css.str().c_str());
}
diff --git a/src/app/qt/view/QtSearchView.cpp b/src/app/qt/view/QtSearchView.cpp
index c6c4975c..dae0b3ad 100644
--- a/src/app/qt/view/QtSearchView.cpp
+++ b/src/app/qt/view/QtSearchView.cpp
@@ -1,8 +1,12 @@
#include "qt/view/QtSearchView.h"
+#include
+
+#include "utility/text/TextAccess.h"
+
#include "component/controller/SearchController.h"
#include "qt/view/QtViewWidgetWrapper.h"
-#include "utility/text/TextAccess.h"
+#include "settings/ApplicationSettings.h"
QtSearchView::QtSearchView(ViewLayout* viewLayout)
: SearchView(viewLayout)
@@ -51,6 +55,7 @@ void QtSearchView::setAutocompletionList(const std::vector& autocom
void QtSearchView::doRefreshView()
{
setStyleSheet();
+ m_widget->refreshStyle();
m_widget->setMatches(std::deque());
}
@@ -73,12 +78,16 @@ void QtSearchView::doSetAutocompletionList(const std::vector& autoc
void QtSearchView::setStyleSheet()
{
- std::string css = TextAccess::createFromFile("data/gui/search_view/search_view.css")->getText();
+ std::stringstream css;
+ css << TextAccess::createFromFile("data/gui/search_view/search_view.css")->getText();
+ css << "* { font-size: " << ApplicationSettings::getInstance()->getFontSize() << "pt; }";
+ css << "#search_box, #search_box *, #search_box_popup { font-family: " << ApplicationSettings::getInstance()->getFontName() << "; }";
+ css << "#search_box, #search_box * { font-size: " << ApplicationSettings::getInstance()->getFontSize() + 2 << "pt; }";
- m_widget->setStyleSheet(css.c_str());
+ m_widget->setStyleSheet(css.str().c_str());
if (m_widget->getCompleterPopup())
{
- m_widget->getCompleterPopup()->setStyleSheet(css.c_str());
+ m_widget->getCompleterPopup()->setStyleSheet(css.str().c_str());
}
}
diff --git a/src/app/qt/view/QtUndoRedoView.cpp b/src/app/qt/view/QtUndoRedoView.cpp
index 14ce118c..ef70e869 100644
--- a/src/app/qt/view/QtUndoRedoView.cpp
+++ b/src/app/qt/view/QtUndoRedoView.cpp
@@ -1,8 +1,12 @@
#include "qt/view/QtUndoRedoView.h"
+#include
+
+#include "utility/text/TextAccess.h"
+
#include "qt/view/QtMainView.h"
#include "qt/view/QtViewWidgetWrapper.h"
-#include "utility/text/TextAccess.h"
+#include "settings/ApplicationSettings.h"
QtUndoRedoView::QtUndoRedoView(ViewLayout* viewLayout)
: UndoRedoView(viewLayout)
@@ -28,15 +32,17 @@ void QtUndoRedoView::initView()
void QtUndoRedoView::refreshView()
{
+ setStyleSheet();
+ m_widget->refreshStyle();
}
-
void QtUndoRedoView::setStyleSheet()
{
- std::string css = TextAccess::createFromFile("data/gui/undoredo_view/undoredo_view.css")->getText();
-
- m_widget->setStyleSheet(css.c_str());
+ std::stringstream css;
+ css << TextAccess::createFromFile("data/gui/undoredo_view/undoredo_view.css")->getText();
+ css << "* { font-size: " << ApplicationSettings::getInstance()->getFontSize() << "pt; }";
+ m_widget->setStyleSheet(css.str().c_str());
}
void QtUndoRedoView::doSetRedoButtonEnabled(bool enabled)
diff --git a/src/app/qt/view/graphElements/QtGraphNodeAccess.cpp b/src/app/qt/view/graphElements/QtGraphNodeAccess.cpp
index e68f42fb..559062a8 100644
--- a/src/app/qt/view/graphElements/QtGraphNodeAccess.cpp
+++ b/src/app/qt/view/graphElements/QtGraphNodeAccess.cpp
@@ -52,7 +52,7 @@ void QtGraphNodeAccess::updateStyle()
font.setCapitalization(QFont::AllUppercase);
m_text->setFont(font);
- m_text->setPos(style.textOffset.x + m_accessIconSize + 3, style.textOffset.y + m_accessIconSize / 2 - 1);
+ m_text->setPos(style.textOffset.x + m_accessIconSize + 3, style.textOffset.x + m_accessIconSize + 2 - style.fontSize);
m_accessIcon->setPos(style.textOffset.x, style.textOffset.y);
}
diff --git a/src/app/qt/view/graphElements/QtGraphNodeExpandToggle.cpp b/src/app/qt/view/graphElements/QtGraphNodeExpandToggle.cpp
index 8b14aeb8..c7888b42 100644
--- a/src/app/qt/view/graphElements/QtGraphNodeExpandToggle.cpp
+++ b/src/app/qt/view/graphElements/QtGraphNodeExpandToggle.cpp
@@ -64,11 +64,11 @@ void QtGraphNodeExpandToggle::updateStyle()
m_text->setPos(
(m_rect->rect().width() - QFontMetrics(m_text->font()).width(m_text->text())) / 2,
- 5
+ 6
);
m_icon->setPos(
(m_rect->rect().width() - m_icon->pixmap().width() / QtDeviceScaledPixmap::devicePixelRatio()) / 2,
- (m_invisibleSubNodeCount == 0 ? 9 : 14)
+ (m_invisibleSubNodeCount == 0 ? m_rect->rect().height() / 2 - 2 : m_rect->rect().height() - 8)
);
}
diff --git a/src/lib/Application.cpp b/src/lib/Application.cpp
index 8e62ae5b..c175ab5d 100644
--- a/src/lib/Application.cpp
+++ b/src/lib/Application.cpp
@@ -6,6 +6,7 @@
#include "utility/messaging/type/MessageStatus.h"
#include "utility/scheduling/TaskScheduler.h"
+#include "component/view/GraphViewStyle.h"
#include "component/view/MainView.h"
#include "component/view/ViewFactory.h"
#include "data/StorageCache.h"
@@ -31,9 +32,11 @@ std::shared_ptr Application::create(ViewFactory* viewFactory)
void Application::loadSettings()
{
ApplicationSettings::getInstance()->load("data/ApplicationSettings.xml");
+ GraphViewStyle::loadStyleSettings();
}
Application::Application()
+ : m_isInitialParse(true)
{
TaskScheduler::getInstance()->startSchedulerLoopThreaded();
MessageQueue::getInstance()->setSendMessagesAsTasks(true);
@@ -96,11 +99,13 @@ void Application::handleMessage(MessageFinishedParsing* message)
{
m_project->logStats();
- if (message->errorCount > 0)
+ if (!m_isInitialParse || message->errorCount > 0)
{
return;
}
+ m_isInitialParse = false;
+
Id mainId = m_storageCache->getIdForNodeWithName("main");
if (!mainId)
@@ -126,17 +131,26 @@ void Application::handleMessage(MessageFinishedParsing* message)
void Application::handleMessage(MessageLoadProject* message)
{
+ m_isInitialParse = true;
loadProject(message->projectSettingsFilePath);
}
void Application::handleMessage(MessageLoadSource* message)
{
+ m_isInitialParse = true;
loadSource(message->sourceDirectoryPath);
}
void Application::handleMessage(MessageRefresh* message)
{
loadSettings();
+
+ if (message->uiOnly)
+ {
+ m_componentManager->refreshViews();
+ return;
+ }
+
reloadProject();
}
diff --git a/src/lib/Application.h b/src/lib/Application.h
index f71276c4..b34823b3 100644
--- a/src/lib/Application.h
+++ b/src/lib/Application.h
@@ -48,6 +48,8 @@ private:
std::shared_ptr m_mainView;
std::shared_ptr m_componentManager;
+
+ bool m_isInitialParse;
};
#endif // APPLICATION_H
diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt
index d1abce5b..3813b9e1 100644
--- a/src/lib/CMakeLists.txt
+++ b/src/lib/CMakeLists.txt
@@ -267,15 +267,16 @@ add_files(
utility/messaging/type/MessageInterruptTasks.h
utility/messaging/type/MessageLoadProject.h
utility/messaging/type/MessageLoadSource.h
+ utility/messaging/type/MessageRedo.h
utility/messaging/type/MessageRefresh.h
utility/messaging/type/MessageSaveProject.h
utility/messaging/type/MessageSearch.h
utility/messaging/type/MessageSearchAutocomplete.h
utility/messaging/type/MessageShowFile.h
utility/messaging/type/MessageStatus.h
- utility/messaging/type/MessageRedo.h
utility/messaging/type/MessageUndo.h
utility/messaging/type/MessageWindowFocus.h
+ utility/messaging/type/MessageZoom.h
utility/messaging/Message.h
utility/messaging/MessageBase.h
diff --git a/src/lib/component/controller/CodeController.cpp b/src/lib/component/controller/CodeController.cpp
index 76771aa9..dcd3a4fa 100644
--- a/src/lib/component/controller/CodeController.cpp
+++ b/src/lib/component/controller/CodeController.cpp
@@ -25,7 +25,7 @@ const uint CodeController::s_lineRadius = 2;
void CodeController::handleMessage(MessageActivateTokens* message)
{
- if (message->isIgnorable())
+ if (message->isEdge && message->isIgnorable())
{
return;
}
diff --git a/src/lib/component/controller/FeatureController.cpp b/src/lib/component/controller/FeatureController.cpp
index 6b4c3a39..e137e25e 100644
--- a/src/lib/component/controller/FeatureController.cpp
+++ b/src/lib/component/controller/FeatureController.cpp
@@ -1,8 +1,10 @@
#include "component/controller/FeatureController.h"
#include "utility/messaging/type/MessageActivateTokens.h"
+#include "utility/messaging/type/MessageRefresh.h"
#include "data/access/StorageAccess.h"
+#include "settings/ApplicationSettings.h"
FeatureController::FeatureController(StorageAccess* storageAccess)
: m_storageAccess(storageAccess)
@@ -85,3 +87,12 @@ void FeatureController::handleMessage(MessageSearch* message)
m.undoRedoType = message->undoRedoType;
m.dispatchImmediately();
}
+
+void FeatureController::handleMessage(MessageZoom* message)
+{
+ ApplicationSettings* settings = ApplicationSettings::getInstance().get();
+ settings->setFontSize(std::max(settings->getFontSize() + (message->zoomIn ? 1 : -1), 5));
+ settings->save();
+
+ MessageRefresh(true).dispatch();
+}
diff --git a/src/lib/component/controller/FeatureController.h b/src/lib/component/controller/FeatureController.h
index cf1c7db4..2d6bc2b5 100644
--- a/src/lib/component/controller/FeatureController.h
+++ b/src/lib/component/controller/FeatureController.h
@@ -7,6 +7,7 @@
#include "utility/messaging/type/MessageActivateNode.h"
#include "utility/messaging/type/MessageActivateTokenLocation.h"
#include "utility/messaging/type/MessageSearch.h"
+#include "utility/messaging/type/MessageZoom.h"
#include "component/controller/Controller.h"
@@ -19,6 +20,7 @@ class FeatureController
, public MessageListener
, public MessageListener
, public MessageListener
+ , public MessageListener
{
public:
FeatureController(StorageAccess* storageAccess);
@@ -30,6 +32,7 @@ private:
virtual void handleMessage(MessageActivateNode* message);
virtual void handleMessage(MessageActivateTokenLocation* message);
virtual void handleMessage(MessageSearch* message);
+ virtual void handleMessage(MessageZoom* message);
StorageAccess* m_storageAccess;
};
diff --git a/src/lib/component/controller/GraphController.cpp b/src/lib/component/controller/GraphController.cpp
index 09416e20..0103048a 100644
--- a/src/lib/component/controller/GraphController.cpp
+++ b/src/lib/component/controller/GraphController.cpp
@@ -712,7 +712,7 @@ void GraphController::layoutNestingRecursive(DummyNode& node) const
}
subNode.position.x = margins.left + x;
- subNode.position.y = margins.top + y;
+ subNode.position.y = margins.top + margins.charHeight + y;
if (layoutHorizontal)
{
@@ -747,7 +747,7 @@ void GraphController::layoutNestingRecursive(DummyNode& node) const
}
node.size.x = margins.left + width + margins.right;
- node.size.y = margins.top + y + height + margins.bottom;
+ node.size.y = margins.top + margins.charHeight + y + height + margins.bottom;
for (DummyNode& subNode : node.subNodes)
{
diff --git a/src/lib/component/controller/RefreshController.cpp b/src/lib/component/controller/RefreshController.cpp
index 4112fa3b..8f880cc2 100644
--- a/src/lib/component/controller/RefreshController.cpp
+++ b/src/lib/component/controller/RefreshController.cpp
@@ -1,5 +1,7 @@
#include "component/controller/RefreshController.h"
+#include "utility/messaging/type/MessageRefresh.h"
+
#include "component/view/RefreshView.h"
RefreshController::RefreshController()
@@ -16,11 +18,6 @@ void RefreshController::handleMessage(MessageAutoRefreshChanged* message)
m_autoRefreshEnabled = message->enabled;
}
-void RefreshController::handleMessage(MessageRefresh* message)
-{
- getView()->refreshView();
-}
-
void RefreshController::handleMessage(MessageWindowFocus* message)
{
if (m_autoRefreshEnabled)
diff --git a/src/lib/component/controller/RefreshController.h b/src/lib/component/controller/RefreshController.h
index 54ae9d1c..ae19f909 100644
--- a/src/lib/component/controller/RefreshController.h
+++ b/src/lib/component/controller/RefreshController.h
@@ -4,7 +4,6 @@
#include "component/controller/Controller.h"
#include "utility/messaging/MessageListener.h"
#include "utility/messaging/type/MessageAutoRefreshChanged.h"
-#include "utility/messaging/type/MessageRefresh.h"
#include "utility/messaging/type/MessageWindowFocus.h"
class RefreshView;
@@ -12,7 +11,6 @@ class RefreshView;
class RefreshController
: public Controller
, public MessageListener
- , public MessageListener
, public MessageListener
{
public:
@@ -21,7 +19,6 @@ public:
private:
virtual void handleMessage(MessageAutoRefreshChanged* message);
- virtual void handleMessage(MessageRefresh* message);
virtual void handleMessage(MessageWindowFocus* message);
RefreshView* getView();
diff --git a/src/lib/component/controller/UndoRedoController.cpp b/src/lib/component/controller/UndoRedoController.cpp
index fd4a1215..bd7c5cf8 100644
--- a/src/lib/component/controller/UndoRedoController.cpp
+++ b/src/lib/component/controller/UndoRedoController.cpp
@@ -99,6 +99,34 @@ void UndoRedoController::handleMessage(MessageRedo* message)
}
}
+void UndoRedoController::handleMessage(MessageRefresh* message)
+{
+ if (!m_lastCommand.message)
+ {
+ return;
+ }
+
+ if (m_lastCommand.order > 0)
+ {
+ replayCommands(false);
+ }
+
+ std::shared_ptr msg = m_lastCommand.message;
+
+ if (m_undo.size())
+ {
+ m_lastCommand = m_undo.back();
+ m_undo.pop_back();
+ }
+ else
+ {
+ m_lastCommand.message.reset();
+ }
+
+ msg->undoRedoType = MessageBase::UNDOTYPE_REDO;
+ msg->dispatch();
+}
+
void UndoRedoController::handleMessage(MessageSearch* message)
{
if (m_lastCommand.message && m_lastCommand.message->getType() == message->getType() &&
@@ -112,6 +140,11 @@ void UndoRedoController::handleMessage(MessageSearch* message)
}
void UndoRedoController::handleMessage(MessageUndo* message)
+{
+ replayCommands(true);
+}
+
+void UndoRedoController::replayCommands(bool removeLast)
{
if (!m_undo.empty())
{
@@ -131,8 +164,17 @@ void UndoRedoController::handleMessage(MessageUndo* message)
}
m = m_undo.back().message;
- m_undo.pop_back();
- m->undoRedoType = MessageBase::UNDOTYPE_UNDO;
+
+ if (removeLast)
+ {
+ m_undo.pop_back();
+ m->undoRedoType = MessageBase::UNDOTYPE_UNDO;
+ }
+ else
+ {
+ m->undoRedoType = MessageBase::UNDOTYPE_IGNORE;
+ }
+
m->dispatch();
}
}
diff --git a/src/lib/component/controller/UndoRedoController.h b/src/lib/component/controller/UndoRedoController.h
index ad48847e..5f90b17d 100644
--- a/src/lib/component/controller/UndoRedoController.h
+++ b/src/lib/component/controller/UndoRedoController.h
@@ -14,6 +14,7 @@
#include "utility/messaging/type/MessageLoadProject.h"
#include "utility/messaging/type/MessageLoadSource.h"
#include "utility/messaging/type/MessageRedo.h"
+#include "utility/messaging/type/MessageRefresh.h"
#include "utility/messaging/type/MessageSearch.h"
#include "utility/messaging/type/MessageUndo.h"
@@ -32,6 +33,7 @@ class UndoRedoController
, public MessageListener
, public MessageListener
, public MessageListener
+ , public MessageListener
, public MessageListener
, public MessageListener
{
@@ -59,9 +61,12 @@ private:
virtual void handleMessage(MessageLoadProject* message);
virtual void handleMessage(MessageLoadSource* message);
virtual void handleMessage(MessageRedo* message);
+ virtual void handleMessage(MessageRefresh* message);
virtual void handleMessage(MessageSearch* message);
virtual void handleMessage(MessageUndo* message);
+ void replayCommands(bool removeLast);
+
void processCommand(const Command& command);
void processNormalCommand(const Command& command);
void processRedoCommand(const Command& command);
diff --git a/src/lib/component/view/GraphViewStyle.cpp b/src/lib/component/view/GraphViewStyle.cpp
index 1357f093..7e5c4218 100644
--- a/src/lib/component/view/GraphViewStyle.cpp
+++ b/src/lib/component/view/GraphViewStyle.cpp
@@ -14,6 +14,7 @@ GraphViewStyle::NodeMargins::NodeMargins()
, spacingY(0)
, minWidth(0)
, charWidth(0.0f)
+ , charHeight(0.0f)
{
}
@@ -56,6 +57,15 @@ void GraphViewStyle::setImpl(std::shared_ptr impl)
s_impl = impl;
}
+void GraphViewStyle::loadStyleSettings()
+{
+ s_fontSize = ApplicationSettings::getInstance()->getFontSize();
+ s_fontName = ApplicationSettings::getInstance()->getFontName();
+
+ s_charWidths.clear();
+ s_charHeights.clear();
+}
+
float GraphViewStyle::getCharWidthForNodeType(Node::NodeType type)
{
std::map::const_iterator it = s_charWidths.find(type);
@@ -70,13 +80,27 @@ float GraphViewStyle::getCharWidthForNodeType(Node::NodeType type)
return charWidth;
}
+float GraphViewStyle::getCharHeightForNodeType(Node::NodeType type)
+{
+ std::map::const_iterator it = s_charHeights.find(type);
+
+ if (it != s_charHeights.end())
+ {
+ return it->second;
+ }
+
+ float charHeight = getImpl()->getCharHeightForNodeType(type);
+ s_charHeights.emplace(type, charHeight);
+ return charHeight;
+}
+
size_t GraphViewStyle::getFontSizeForNodeType(Node::NodeType type)
{
switch (type)
{
case Node::NODE_UNDEFINED:
case Node::NODE_NAMESPACE:
- return 12;
+ return s_fontSize - 2;
case Node::NODE_UNDEFINED_TYPE:
case Node::NODE_STRUCT:
@@ -85,7 +109,7 @@ size_t GraphViewStyle::getFontSizeForNodeType(Node::NodeType type)
case Node::NODE_TYPEDEF:
case Node::NODE_TEMPLATE_PARAMETER_TYPE:
case Node::NODE_FILE:
- return 14;
+ return s_fontSize;
case Node::NODE_UNDEFINED_FUNCTION:
case Node::NODE_UNDEFINED_VARIABLE:
@@ -94,23 +118,23 @@ size_t GraphViewStyle::getFontSizeForNodeType(Node::NodeType type)
case Node::NODE_GLOBAL_VARIABLE:
case Node::NODE_FIELD:
case Node::NODE_ENUM_CONSTANT:
- return 11;
+ return s_fontSize - 3;
}
}
size_t GraphViewStyle::getFontSizeOfAccessNode()
{
- return 11;
+ return s_fontSize - 3;
}
size_t GraphViewStyle::getFontSizeOfExpandToggleNode()
{
- return 9;
+ return s_fontSize - 5;
}
std::string GraphViewStyle::getFontNameForNodeType(Node::NodeType type)
{
- return "Source Code Pro";
+ return s_fontName;
}
std::string GraphViewStyle::getFontNameOfAccessNode()
@@ -134,7 +158,7 @@ GraphViewStyle::NodeMargins GraphViewStyle::getMarginsForNodeType(Node::NodeType
case Node::NODE_UNDEFINED:
case Node::NODE_NAMESPACE:
margins.left = margins.right = 15;
- margins.top = 28;
+ margins.top = 10;
margins.bottom = 15;
break;
@@ -148,33 +172,30 @@ GraphViewStyle::NodeMargins GraphViewStyle::getMarginsForNodeType(Node::NodeType
if (hasChildren)
{
margins.left = margins.right = 10;
- margins.top = 33;
+ margins.top = 15;
margins.bottom = 10;
}
else
{
margins.left = margins.right = 8;
- margins.top = margins.bottom = 17;
+ margins.top = margins.bottom = 8;
}
break;
case Node::NODE_UNDEFINED_FUNCTION:
case Node::NODE_FUNCTION:
case Node::NODE_METHOD:
- margins.left = margins.right = 5;
- margins.top = margins.bottom = 10;
- break;
-
case Node::NODE_UNDEFINED_VARIABLE:
case Node::NODE_GLOBAL_VARIABLE:
case Node::NODE_FIELD:
case Node::NODE_ENUM_CONSTANT:
margins.left = margins.right = 5;
- margins.top = margins.bottom = 10;
+ margins.top = margins.bottom = 3;
break;
}
margins.charWidth = getCharWidthForNodeType(type);
+ margins.charHeight = getCharHeightForNodeType(type);
return margins;
}
@@ -211,8 +232,8 @@ GraphViewStyle::NodeMargins GraphViewStyle::getMarginsOfExpandToggleNode()
{
NodeMargins margins;
- margins.left = margins.right = margins.top = margins.bottom = 11;
- margins.minWidth = 0;
+ margins.left = margins.right = margins.top = margins.bottom = 7;
+ margins.minWidth = margins.charHeight = getFontSizeOfExpandToggleNode();
return margins;
}
@@ -364,7 +385,7 @@ GraphViewStyle::NodeStyle GraphViewStyle::getStyleOfExpandToggleNode()
style.color = "#FFFFFF";
style.borderColor = "#00000000";
- style.cornerRadius = 12;
+ style.cornerRadius = 100;
style.fontName = getFontNameOfExpandToggleNode();
style.fontSize = getFontSizeOfExpandToggleNode();
@@ -466,4 +487,9 @@ size_t GraphViewStyle::s_gridCellSize = 5;
size_t GraphViewStyle::s_gridCellPadding = 10;
std::map GraphViewStyle::s_charWidths;
+std::map GraphViewStyle::s_charHeights;
+
std::shared_ptr GraphViewStyle::s_impl;
+
+int GraphViewStyle::s_fontSize;
+std::string GraphViewStyle::s_fontName;
diff --git a/src/lib/component/view/GraphViewStyle.h b/src/lib/component/view/GraphViewStyle.h
index d661151e..63e80417 100644
--- a/src/lib/component/view/GraphViewStyle.h
+++ b/src/lib/component/view/GraphViewStyle.h
@@ -29,7 +29,9 @@ public:
int spacingY;
int minWidth;
+
float charWidth;
+ float charHeight;
};
struct NodeStyle
@@ -81,7 +83,10 @@ public:
static std::shared_ptr getImpl();
static void setImpl(std::shared_ptr impl);
+ static void loadStyleSettings();
+
static float getCharWidthForNodeType(Node::NodeType type);
+ static float getCharHeightForNodeType(Node::NodeType type);
static size_t getFontSizeForNodeType(Node::NodeType type);
static size_t getFontSizeOfAccessNode();
@@ -110,7 +115,12 @@ public:
private:
static std::map s_charWidths;
+ static std::map s_charHeights;
+
static std::shared_ptr s_impl;
+
+ static int s_fontSize;
+ static std::string s_fontName;
};
#endif // GRAPH_VIEW_STYLE_H
diff --git a/src/lib/component/view/GraphViewStyleImpl.h b/src/lib/component/view/GraphViewStyleImpl.h
index 818bdfd8..c343e30f 100644
--- a/src/lib/component/view/GraphViewStyleImpl.h
+++ b/src/lib/component/view/GraphViewStyleImpl.h
@@ -7,6 +7,7 @@ class GraphViewStyleImpl
{
public:
virtual float getCharWidthForNodeType(Node::NodeType type) = 0;
+ virtual float getCharHeightForNodeType(Node::NodeType type) = 0;
};
#endif // GRAPH_VIEW_STYLE_IMPL_H
diff --git a/src/lib/settings/ApplicationSettings.cpp b/src/lib/settings/ApplicationSettings.cpp
index f896ca7d..952a26a5 100644
--- a/src/lib/settings/ApplicationSettings.cpp
+++ b/src/lib/settings/ApplicationSettings.cpp
@@ -26,6 +26,26 @@ bool ApplicationSettings::filterUndefinedNodesFromGraph() const
return getValue("FilterUndefinedNodesFromGraph", false);
}
+std::string ApplicationSettings::getFontName() const
+{
+ return getValue("application/font_name", "Source Code Pro");
+}
+
+void ApplicationSettings::setFontName(const std::string& fontName)
+{
+ setValue("application/font_name", fontName);
+}
+
+int ApplicationSettings::getFontSize() const
+{
+ return getValue("application/font_size", 14);
+}
+
+void ApplicationSettings::setFontSize(int fontSize)
+{
+ setValue("application/font_size", fontSize);
+}
+
int ApplicationSettings::getCodeTabWidth() const
{
return getValue("code/TabWidth", 4);
@@ -36,26 +56,6 @@ void ApplicationSettings::setCodeTabWidth(int codeTabWidth)
setValue("code/TabWidth", codeTabWidth);
}
-std::string ApplicationSettings::getCodeFontName() const
-{
- return getValue("code/FontName", "Courier");
-}
-
-void ApplicationSettings::setCodeFontName(const std::string& codeFontName)
-{
- setValue("code/FontName", codeFontName);
-}
-
-int ApplicationSettings::getCodeFontSize() const
-{
- return getValue("code/FontSize", 12);
-}
-
-void ApplicationSettings::setCodeFontSize(int codeFontSize)
-{
- setValue("code/FontSize", codeFontSize);
-}
-
int ApplicationSettings::getCodeSnippetSnapRange() const
{
return getValue("code/snippet/snap_range", 4);
diff --git a/src/lib/settings/ApplicationSettings.h b/src/lib/settings/ApplicationSettings.h
index e37f8138..a3254e7f 100644
--- a/src/lib/settings/ApplicationSettings.h
+++ b/src/lib/settings/ApplicationSettings.h
@@ -19,16 +19,17 @@ public:
std::string getStartupProjectFilePath() const;
bool filterUndefinedNodesFromGraph() const;
+ // application
+ std::string getFontName() const;
+ void setFontName(const std::string& fontName);
+
+ int getFontSize() const;
+ void setFontSize(int fontSize);
+
// code
int getCodeTabWidth() const;
void setCodeTabWidth(int codeTabWidth);
- std::string getCodeFontName() const;
- void setCodeFontName(const std::string& codeFontName);
-
- int getCodeFontSize() const;
- void setCodeFontSize(int codeFontSize);
-
int getCodeSnippetSnapRange() const;
void setCodeSnippetSnapRange(int range);
diff --git a/src/lib/settings/Settings.cpp b/src/lib/settings/Settings.cpp
index 0ac1aa0d..a83406e6 100644
--- a/src/lib/settings/Settings.cpp
+++ b/src/lib/settings/Settings.cpp
@@ -14,16 +14,29 @@ bool Settings::load(const std::string& filePath)
if (FileSystem::exists(filePath))
{
m_config = ConfigManager::createAndLoad(TextAccess::createFromFile(filePath));
+ m_filePath = filePath;
return true;
}
else
{
- m_config = ConfigManager::createEmpty();
+ clear();
LOG_WARNING("File for Settings not found.");
return false;
}
}
+void Settings::save()
+{
+ if (m_config.get() && m_filePath.size())
+ {
+ m_config->save(m_filePath);
+ }
+ else
+ {
+ LOG_WARNING("Settings were not saved.");
+ }
+}
+
void Settings::save(const std::string& filePath)
{
if (m_config)
@@ -39,6 +52,7 @@ void Settings::save(const std::string& filePath)
void Settings::clear()
{
m_config = ConfigManager::createEmpty();
+ m_filePath.clear();
}
Settings::Settings()
diff --git a/src/lib/settings/Settings.h b/src/lib/settings/Settings.h
index 03e8f12e..25844ae7 100644
--- a/src/lib/settings/Settings.h
+++ b/src/lib/settings/Settings.h
@@ -13,6 +13,7 @@ public:
virtual ~Settings();
bool load(const std::string& filePath);
+ void save();
void save(const std::string& filePath);
void clear();
@@ -32,6 +33,7 @@ protected:
bool setValues(const std::string& key, std::vector values);
private:
+ std::string m_filePath;
std::shared_ptr m_config;
};
diff --git a/src/lib/utility/messaging/type/MessageRefresh.h b/src/lib/utility/messaging/type/MessageRefresh.h
index 4946d8d5..307e2442 100644
--- a/src/lib/utility/messaging/type/MessageRefresh.h
+++ b/src/lib/utility/messaging/type/MessageRefresh.h
@@ -6,7 +6,8 @@
class MessageRefresh: public Message
{
public:
- MessageRefresh()
+ MessageRefresh(bool uiOnly = false)
+ : uiOnly(uiOnly)
{
}
@@ -14,6 +15,8 @@ public:
{
return "MessageRefresh";
}
+
+ const bool uiOnly;
};
#endif // MESSAGE_REFRESH_H
diff --git a/src/lib/utility/messaging/type/MessageZoom.h b/src/lib/utility/messaging/type/MessageZoom.h
new file mode 100644
index 00000000..989733c5
--- /dev/null
+++ b/src/lib/utility/messaging/type/MessageZoom.h
@@ -0,0 +1,23 @@
+#ifndef MESSAGE_ZOOM_H
+#define MESSAGE_ZOOM_H
+
+#include "utility/messaging/Message.h"
+
+class MessageZoom
+ : public Message
+{
+public:
+ MessageZoom(bool zoomIn)
+ : zoomIn(zoomIn)
+ {
+ }
+
+ static const std::string getStaticType()
+ {
+ return "MessageZoom";
+ }
+
+ const bool zoomIn;
+};
+
+#endif // MESSAGE_ZOOM_H