From 88b95838210411669973d956a5e84ead2c680d35 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Mon, 31 Mar 2014 02:40:44 +0000 Subject: Save zoom and font size in configuration. git-svn-id: http://svn.drobilla.net/lad/trunk/patchage@5351 a436a847-0d15-0410-975c-d299462d15a1 --- src/Configuration.cpp | 4 ++++ src/Configuration.hpp | 7 +++++-- src/Patchage.cpp | 22 ++++++++++++++++++---- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/Configuration.cpp b/src/Configuration.cpp index 78a66d8..3c4b5f0 100644 --- a/src/Configuration.cpp +++ b/src/Configuration.cpp @@ -37,6 +37,7 @@ Configuration::Configuration() : _window_location(0, 0) , _window_size(640, 480) , _zoom(1.0) + , _font_size(12.0) { _port_colors[JACK_AUDIO] = _default_port_colors[JACK_AUDIO] = 0x244678FF; _port_colors[JACK_MIDI] = _default_port_colors[JACK_MIDI] = 0x960909FF; @@ -176,6 +177,8 @@ Configuration::load() file >> _window_size.x >> _window_size.y; } else if (key == "zoom_level") { file >> _zoom; + } else if (key == "font_size") { + file >> _font_size; } else if (key == "port_color") { std::string type_name; uint32_t rgba; @@ -271,6 +274,7 @@ Configuration::save() file << "window_location " << _window_location.x << " " << _window_location.y << std::endl; file << "window_size " << _window_size.x << " " << _window_size.y << std::endl; file << "zoom_level " << _zoom << std::endl; + file << "font_size " << _font_size << std::endl; file << std::hex << std::uppercase; for (int i = 0; i < N_PORT_TYPES; ++i) { diff --git a/src/Configuration.hpp b/src/Configuration.hpp index 34b1595..1fc786b 100644 --- a/src/Configuration.hpp +++ b/src/Configuration.hpp @@ -51,8 +51,10 @@ public: void set_module_split(const std::string& name, bool split); bool get_module_split(const std::string& name, bool default_val) const; - float get_zoom() { return _zoom; } - void set_zoom(float zoom) { _zoom = zoom; } + float get_zoom() const { return _zoom; } + void set_zoom(float zoom) { _zoom = zoom; } + float get_font_size() const { return _font_size; } + void set_font_size(float font_size) { _font_size = font_size; } uint32_t get_port_color(PortType type) const { return _port_colors[type]; } void set_port_color(PortType type, uint32_t rgba) { @@ -81,6 +83,7 @@ private: Coord _window_location; Coord _window_size; float _zoom; + float _font_size; }; #endif // PATCHAGE_CONFIGURATION_HPP diff --git a/src/Patchage.cpp b/src/Patchage.cpp index 10acaed..570e979 100644 --- a/src/Patchage.cpp +++ b/src/Patchage.cpp @@ -226,7 +226,10 @@ Patchage::Patchage(int argc, char** argv) _canvas->widget().show(); _main_win->present(); + _conf->set_font_size(_canvas->get_default_font_size()); _conf->load(); + _canvas->set_zoom(_conf->get_zoom()); + _canvas->set_font_size(_conf->get_font_size()); _main_win->resize( static_cast(_conf->get_window_size().x), @@ -283,6 +286,7 @@ Patchage::Patchage(int argc, char** argv) Patchage::~Patchage() { store_window_location(); + _conf->set_zoom(_canvas->get_zoom()); // Can be changed by ganv _conf->save(); #if defined(PATCHAGE_LIBJACK) || defined(HAVE_JACK_DBUS) @@ -626,37 +630,47 @@ Patchage::on_help_about() void Patchage::on_zoom_in() { - _canvas->set_zoom(_canvas->get_zoom() + 0.1); + const float zoom = _canvas->get_zoom() * 1.25; + _canvas->set_zoom(zoom); + _conf->set_zoom(zoom); } void Patchage::on_zoom_out() { - _canvas->set_zoom(_canvas->get_zoom() - 0.1); + const float zoom = _canvas->get_zoom() * 0.75; + _canvas->set_zoom(zoom); + _conf->set_zoom(zoom); } void Patchage::on_zoom_normal() { _canvas->set_zoom(1.0); + _conf->set_zoom(1.0); } void Patchage::on_increase_font_size() { - _canvas->set_font_size(_canvas->get_font_size() + 1.0); + const float points = _canvas->get_font_size() + 1.0; + _canvas->set_font_size(points); + _conf->set_font_size(points); } void Patchage::on_decrease_font_size() { - _canvas->set_font_size(_canvas->get_font_size() - 1.0); + const float points = _canvas->get_font_size() - 1.0; + _canvas->set_font_size(points); + _conf->set_font_size(points); } void Patchage::on_normal_font_size() { _canvas->set_font_size(_canvas->get_default_font_size()); + _conf->set_font_size(_canvas->get_default_font_size()); } static inline guint -- cgit v1.2.1