summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2014-04-27 15:56:55 +0000
committerDavid Robillard <d@drobilla.net>2014-04-27 15:56:55 +0000
commit8b9a504615299660251de084d227b1ba183f75ce (patch)
tree2c93365e785ca04525a21dcab7121a73f4f4febd /src
parent5eef54150269f6e569c2cda107ee1ade5ee8b0cc (diff)
downloadpatchage-8b9a504615299660251de084d227b1ba183f75ce.tar.gz
patchage-8b9a504615299660251de084d227b1ba183f75ce.tar.bz2
patchage-8b9a504615299660251de084d227b1ba183f75ce.zip
Add support for sprung layout to Patchage.
git-svn-id: http://svn.drobilla.net/lad/trunk/patchage@5379 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src')
-rw-r--r--src/Configuration.cpp3
-rw-r--r--src/Configuration.hpp4
-rw-r--r--src/Patchage.cpp24
-rw-r--r--src/Patchage.hpp2
-rw-r--r--src/patchage.ui15
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<Gtk::MenuItem> _menu_save_session;
Widget<Gtk::MenuItem> _menu_save_close_session;
Widget<Gtk::MenuItem> _menu_view_arrange;
+ Widget<Gtk::CheckMenuItem> _menu_view_sprung_layout;
Widget<Gtk::CheckMenuItem> _menu_view_messages;
Widget<Gtk::CheckMenuItem> _menu_view_toolbar;
Widget<Gtk::MenuItem> _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 &lt;nedko@arnaudov.name&gt;</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="label" translatable="yes">_Toolbar</property>
+ <property name="label" translatable="yes">Tool_bar</property>
<property name="use_underline">True</property>
<property name="active">True</property>
- <accelerator key="t" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ <accelerator key="b" signal="activate" modifiers="GDK_CONTROL_MASK"/>
</object>
</child>
<child>
@@ -1028,6 +1028,17 @@ Nedko Arnaudov &lt;nedko@arnaudov.name&gt;</property>
<signal name="activate" handler="on_menu_view_arrange" swapped="no"/>
</object>
</child>
+ <child>
+ <object class="GtkCheckMenuItem" id="menu_view_sprung_layout">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Sprung Layou_t</property>
+ <property name="use_underline">True</property>
+ <property name="active">False</property>
+ <accelerator key="t" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ </object>
+ </child>
</object>
</child>
</object>