summaryrefslogtreecommitdiffstats
path: root/src/Patchage.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2020-11-29 00:35:02 +0100
committerDavid Robillard <d@drobilla.net>2020-11-29 00:35:02 +0100
commitfb54982c5ade5bee05b8d4a817d258ba89df701b (patch)
tree287934e43f3e0dfab6bc6cf9295a0b080bd7f707 /src/Patchage.cpp
parent395362edbd8cd4ff08f3c29f3ae36d7d20229f21 (diff)
downloadpatchage-fb54982c5ade5bee05b8d4a817d258ba89df701b.tar.gz
patchage-fb54982c5ade5bee05b8d4a817d258ba89df701b.tar.bz2
patchage-fb54982c5ade5bee05b8d4a817d258ba89df701b.zip
Replace attached and detached signals with events
Diffstat (limited to 'src/Patchage.cpp')
-rw-r--r--src/Patchage.cpp79
1 files changed, 33 insertions, 46 deletions
diff --git a/src/Patchage.cpp b/src/Patchage.cpp
index 2307045..3d2853c 100644
--- a/src/Patchage.cpp
+++ b/src/Patchage.cpp
@@ -324,9 +324,6 @@ Patchage::Patchage(int argc, char** argv)
_connector.add_driver(PortID::Type::jack, _jack_driver.get());
- _jack_driver->signal_detached.connect(
- sigc::mem_fun(this, &Patchage::driver_detached));
-
_menu_jack_connect->signal_activate().connect(sigc::bind(
sigc::mem_fun(_jack_driver.get(), &JackDriver::attach), true));
_menu_jack_disconnect->signal_activate().connect(
@@ -340,7 +337,6 @@ Patchage::Patchage(int argc, char** argv)
_connector.add_driver(PortID::Type::alsa, _alsa_driver.get());
#endif
- connect_widgets();
update_state();
_menu_view_toolbar->set_active(_conf.get_show_toolbar());
_menu_view_sprung_layout->set_active(_conf.get_sprung_layout());
@@ -406,6 +402,7 @@ Patchage::attach()
_enable_refresh = true;
+ process_events();
refresh();
update_toolbar();
}
@@ -540,6 +537,38 @@ Patchage::refresh()
}
void
+Patchage::driver_attached(const ClientType type)
+{
+ switch (type) {
+ case ClientType::jack:
+ _menu_jack_connect->set_sensitive(false);
+ _menu_jack_disconnect->set_sensitive(true);
+ refresh();
+ break;
+ case ClientType::alsa:
+ _menu_alsa_connect->set_sensitive(false);
+ _menu_alsa_disconnect->set_sensitive(true);
+ refresh();
+ break;
+ }
+}
+
+void
+Patchage::driver_detached(const ClientType type)
+{
+ switch (type) {
+ case ClientType::jack:
+ _menu_jack_connect->set_sensitive(true);
+ _menu_jack_disconnect->set_sensitive(false);
+ break;
+ case ClientType::alsa:
+ _menu_alsa_connect->set_sensitive(true);
+ _menu_alsa_disconnect->set_sensitive(false);
+ break;
+ }
+}
+
+void
Patchage::store_window_location()
{
int loc_x = 0;
@@ -602,48 +631,6 @@ Patchage::process_events()
}
}
-/** Update the sensitivity status of menus to reflect the present.
- *
- * (eg. disable "Connect to Jack" when Patchage is already connected to Jack)
- */
-void
-Patchage::connect_widgets()
-{
-#if defined(PATCHAGE_LIBJACK) || defined(HAVE_JACK_DBUS)
- _jack_driver->signal_attached.connect(sigc::bind(
- sigc::mem_fun(*_menu_jack_connect, &Gtk::MenuItem::set_sensitive),
- false));
- _jack_driver->signal_attached.connect(
- sigc::mem_fun(this, &Patchage::refresh));
- _jack_driver->signal_attached.connect(sigc::bind(
- sigc::mem_fun(*_menu_jack_disconnect, &Gtk::MenuItem::set_sensitive),
- true));
-
- _jack_driver->signal_detached.connect(sigc::bind(
- sigc::mem_fun(*_menu_jack_connect, &Gtk::MenuItem::set_sensitive),
- true));
- _jack_driver->signal_detached.connect(sigc::bind(
- sigc::mem_fun(*_menu_jack_disconnect, &Gtk::MenuItem::set_sensitive),
- false));
-#endif
-
-#ifdef HAVE_ALSA
- _alsa_driver->signal_attached.connect(sigc::bind(
- sigc::mem_fun(*_menu_alsa_connect, &Gtk::MenuItem::set_sensitive),
- false));
- _alsa_driver->signal_attached.connect(sigc::bind(
- sigc::mem_fun(*_menu_alsa_disconnect, &Gtk::MenuItem::set_sensitive),
- true));
-
- _alsa_driver->signal_detached.connect(sigc::bind(
- sigc::mem_fun(*_menu_alsa_connect, &Gtk::MenuItem::set_sensitive),
- true));
- _alsa_driver->signal_detached.connect(sigc::bind(
- sigc::mem_fun(*_menu_alsa_disconnect, &Gtk::MenuItem::set_sensitive),
- false));
-#endif
-}
-
#ifdef HAVE_ALSA
void
Patchage::menu_alsa_connect()