diff --git a/src/control/settings/Settings.cpp b/src/control/settings/Settings.cpp index 0dd599d2..cc7969a4 100644 --- a/src/control/settings/Settings.cpp +++ b/src/control/settings/Settings.cpp @@ -62,6 +62,8 @@ void Settings::loadDefault() { this->showSidebar = true; this->sidebarWidth = 150; + this->showToolbar = true; + this->sidebarOnRight = false; this->scrollbarOnLeft = false; @@ -311,6 +313,8 @@ void Settings::parseItem(xmlDocPtr doc, xmlNodePtr cur) { this->mainWndHeight = g_ascii_strtoll(reinterpret_cast(value), nullptr, 10); } else if (xmlStrcmp(name, reinterpret_cast("maximized")) == 0) { this->maximized = xmlStrcmp(value, reinterpret_cast("true")) == 0; + } else if (xmlStrcmp(name, reinterpret_cast("showToolbar")) == 0) { + this->showToolbar = xmlStrcmp(value, reinterpret_cast("true")) == 0; } else if (xmlStrcmp(name, reinterpret_cast("showSidebar")) == 0) { this->showSidebar = xmlStrcmp(value, reinterpret_cast("true")) == 0; } else if (xmlStrcmp(name, reinterpret_cast("sidebarWidth")) == 0) { @@ -717,6 +721,8 @@ void Settings::save() { WRITE_INT_PROP(mainWndHeight); WRITE_BOOL_PROP(maximized); + WRITE_BOOL_PROP(showToolbar); + WRITE_BOOL_PROP(showSidebar); WRITE_INT_PROP(sidebarWidth); @@ -1413,6 +1419,16 @@ void Settings::setSidebarVisible(bool visible) { save(); } +auto Settings::isToolbarVisible() const -> bool { return this->showToolbar; } + +void Settings::setToolbarVisible(bool visible) { + if (this->showToolbar == visible) { + return; + } + this->showToolbar = visible; + save(); +} + auto Settings::getSidebarWidth() const -> int { return this->sidebarWidth; } void Settings::setSidebarWidth(int width) { diff --git a/src/control/settings/Settings.h b/src/control/settings/Settings.h index ce70c06a..4fa4c252 100644 --- a/src/control/settings/Settings.h +++ b/src/control/settings/Settings.h @@ -179,6 +179,9 @@ public: bool isSidebarVisible() const; void setSidebarVisible(bool visible); + bool isToolbarVisible() const; + void setToolbarVisible(bool visible); + int getSidebarWidth() const; void setSidebarWidth(int width); @@ -474,6 +477,11 @@ private: */ bool showSidebar{}; + /** + * If the sidebar is visible + */ + bool showToolbar{}; + /** * The Width of the Sidebar */ diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index 0fbbad6c..e45ed28d 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -92,9 +92,14 @@ MainWindow::MainWindow(GladeSearchpath* gladeSearchPath, Control* control): createToolbarAndMenu(); + setToolbarVisible(control->getSettings()->isToolbarVisible()); + GtkWidget* menuViewSidebarVisible = get("menuViewSidebarVisible"); g_signal_connect(menuViewSidebarVisible, "toggled", G_CALLBACK(viewShowSidebar), this); + GtkWidget* menuViewToolbarsVisible = get("menuViewToolbarsVisible"); + g_signal_connect(menuViewToolbarsVisible, "toggled", G_CALLBACK(viewShowToolbar), this); + updateScrollbarSidebarPosition(); gtk_window_set_default_size(GTK_WINDOW(this->window), control->getSettings()->getMainWndWidth(), @@ -376,6 +381,14 @@ void MainWindow::viewShowSidebar(GtkCheckMenuItem* checkmenuitem, MainWindow* wi win->setSidebarVisible(a); } +void MainWindow::viewShowToolbar(GtkCheckMenuItem* checkmenuitem, MainWindow* win) { + bool showToolbar = gtk_check_menu_item_get_active(checkmenuitem); + if (win->control->getSettings()->isToolbarVisible() == showToolbar) { + return; + } + win->setToolbarVisible(showToolbar); +} + auto MainWindow::getControl() -> Control* { return control; } void MainWindow::updateScrollbarSidebarPosition() { @@ -482,6 +495,18 @@ void MainWindow::setSidebarVisible(bool visible) { gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(w), visible); } +void MainWindow::setToolbarVisible(bool visible) { + Settings* settings = control->getSettings(); + + settings->setToolbarVisible(visible); + for (int i = 0; i < TOOLBAR_DEFINITIONS_LEN; i++) { + gtk_widget_set_visible(this->toolbarWidgets[i], visible); + } + + GtkWidget* w = get("menuViewToolbarsVisible"); + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(w), visible); +} + void MainWindow::saveSidebarSize() { GtkWidget* panel = get("panelMainContents"); diff --git a/src/gui/MainWindow.h b/src/gui/MainWindow.h index 3f0e78d4..258f74ee 100644 --- a/src/gui/MainWindow.h +++ b/src/gui/MainWindow.h @@ -69,6 +69,7 @@ public: XournalView* getXournal(); void setSidebarVisible(bool visible); + void setToolbarVisible(bool visible); Control* getControl(); @@ -122,6 +123,11 @@ private: */ static void viewShowSidebar(GtkCheckMenuItem* checkmenuitem, MainWindow* win); + /** + * Toolbar show / hidden + */ + static void viewShowToolbar(GtkCheckMenuItem* checkmenuitem, MainWindow* win); + /** * Window close Button is pressed */ diff --git a/ui/main.glade b/ui/main.glade index 8b1fcd34..9e3a3d82 100644 --- a/ui/main.glade +++ b/ui/main.glade @@ -504,6 +504,22 @@ False + + + menuViewToolbarsVisible + True + False + Show toolbars + True + + + + + + True + False + + menuitemLayout