From 8b9a504615299660251de084d227b1ba183f75ce Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sun, 27 Apr 2014 15:56:55 +0000 Subject: Add support for sprung layout to Patchage. git-svn-id: http://svn.drobilla.net/lad/trunk/patchage@5379 a436a847-0d15-0410-975c-d299462d15a1 --- src/Configuration.cpp | 3 +++ src/Configuration.hpp | 4 ++++ src/Patchage.cpp | 24 ++++++++++++++++++++++-- src/Patchage.hpp | 2 ++ src/patchage.ui | 15 +++++++++++++-- 5 files changed, 44 insertions(+), 4 deletions(-) diff --git a/src/Configuration.cpp b/src/Configuration.cpp index 2ed00f7..74bcb25 100644 --- a/src/Configuration.cpp +++ b/src/Configuration.cpp @@ -182,6 +182,8 @@ Configuration::load() file >> _font_size; } else if (key == "show_toolbar") { file >> _show_toolbar; + } else if (key == "sprung_layout") { + file >> _sprung_layout; } else if (key == "port_color") { std::string type_name; uint32_t rgba; @@ -279,6 +281,7 @@ Configuration::save() file << "zoom_level " << _zoom << std::endl; file << "font_size " << _font_size << std::endl; file << "show_toolbar " << _show_toolbar << std::endl; + file << "sprung_layout " << _sprung_layout << 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 6e7ff4b..2f502be 100644 --- a/src/Configuration.hpp +++ b/src/Configuration.hpp @@ -59,6 +59,9 @@ public: float get_show_toolbar() const { return _show_toolbar; } void set_show_toolbar(float show_toolbar) { _show_toolbar = show_toolbar; } + float get_sprung_layout() const { return _sprung_layout; } + void set_sprung_layout(float sprung_layout) { _sprung_layout = sprung_layout; } + uint32_t get_port_color(PortType type) const { return _port_colors[type]; } void set_port_color(PortType type, uint32_t rgba) { _port_colors[type] = rgba; @@ -88,6 +91,7 @@ private: float _zoom; float _font_size; bool _show_toolbar; + bool _sprung_layout; }; #endif // PATCHAGE_CONFIGURATION_HPP diff --git a/src/Patchage.cpp b/src/Patchage.cpp index 0ce0d78..85a3bdf 100644 --- a/src/Patchage.cpp +++ b/src/Patchage.cpp @@ -100,6 +100,7 @@ Patchage::Patchage(int argc, char** argv) , INIT_WIDGET(_menu_save_session) , INIT_WIDGET(_menu_save_close_session) , INIT_WIDGET(_menu_view_arrange) + , INIT_WIDGET(_menu_view_sprung_layout) , INIT_WIDGET(_menu_view_messages) , INIT_WIDGET(_menu_view_toolbar) , INIT_WIDGET(_menu_view_refresh) @@ -204,6 +205,8 @@ Patchage::Patchage(int argc, char** argv) sigc::mem_fun(this, &Patchage::on_view_human_names)); _menu_view_arrange->signal_activate().connect( sigc::mem_fun(this, &Patchage::on_arrange)); + _menu_view_sprung_layout->signal_activate().connect( + sigc::mem_fun(this, &Patchage::on_sprung_layout_toggled)); _menu_view_messages->signal_activate().connect( sigc::mem_fun(this, &Patchage::on_view_messages)); _menu_view_toolbar->signal_activate().connect( @@ -225,6 +228,13 @@ Patchage::Patchage(int argc, char** argv) _menu_normal_font_size->signal_activate().connect( sigc::mem_fun(this, &Patchage::on_normal_font_size)); + if (_canvas->supports_sprung_layout()) { + _menu_view_sprung_layout->set_active(true); + } else { + _menu_view_sprung_layout->set_active(false); + _menu_view_sprung_layout->set_sensitive(false); + } + _error_tag = Gtk::TextTag::create(); _error_tag->property_foreground() = "#CC0000"; _status_text->get_buffer()->get_tag_table()->add(_error_tag); @@ -274,6 +284,7 @@ Patchage::Patchage(int argc, char** argv) connect_widgets(); update_state(); _menu_view_toolbar->set_active(_conf->get_show_toolbar()); + _menu_view_sprung_layout->set_active(_conf->get_sprung_layout()); _main_paned->set_position(42); _canvas->widget().grab_focus(); @@ -680,9 +691,18 @@ Patchage::menu_alsa_disconnect() void Patchage::on_arrange() { - assert(_canvas); + if (_canvas) { + _canvas->arrange(); + } +} + +void +Patchage::on_sprung_layout_toggled() +{ + const bool sprung = _menu_view_sprung_layout->get_active(); - _canvas->arrange(); + _canvas->set_sprung_layout(sprung); + _conf->set_sprung_layout(sprung); } void diff --git a/src/Patchage.hpp b/src/Patchage.hpp index acc7bdb..7531fcb 100644 --- a/src/Patchage.hpp +++ b/src/Patchage.hpp @@ -95,6 +95,7 @@ protected: void connect_widgets(); void on_arrange(); + void on_sprung_layout_toggled(); void on_help_about(); void on_quit(); void on_export_dot(); @@ -156,6 +157,7 @@ protected: Widget _menu_save_session; Widget _menu_save_close_session; Widget _menu_view_arrange; + Widget _menu_view_sprung_layout; Widget _menu_view_messages; Widget _menu_view_toolbar; Widget _menu_view_refresh; diff --git a/src/patchage.ui b/src/patchage.ui index 10494cd..bd828b2 100644 --- a/src/patchage.ui +++ b/src/patchage.ui @@ -888,10 +888,10 @@ Nedko Arnaudov <nedko@arnaudov.name> False True False - _Toolbar + Tool_bar True True - + @@ -1028,6 +1028,17 @@ Nedko Arnaudov <nedko@arnaudov.name> + + + False + True + False + Sprung Layou_t + True + False + + + -- cgit v1.2.1