diff options
author | David Robillard <d@drobilla.net> | 2020-11-29 00:35:02 +0100 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2020-11-29 00:35:02 +0100 |
commit | fb54982c5ade5bee05b8d4a817d258ba89df701b (patch) | |
tree | 287934e43f3e0dfab6bc6cf9295a0b080bd7f707 /src/Patchage.cpp | |
parent | 395362edbd8cd4ff08f3c29f3ae36d7d20229f21 (diff) | |
download | patchage-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.cpp | 79 |
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() |