diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2017-02-02 13:03:32 +0100 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2017-02-02 13:05:05 +0100 |
commit | 35f35ad662933e30242c825fb5317f181e9a232c (patch) | |
tree | 3d9f5a94c6e5fee009239de3ce0f194cee7d0885 /gtk2_ardour/ardour_ui.cc | |
parent | 693baa8430d01d00d266923c9caf3a0427267b25 (diff) |
ARDOUR_UI transport buttons should use ArdourButton::set_related_action().
I have no idea what I or anyone was thinking with the silly
TransportControllable nonsense, but it's all gone now.
Diffstat (limited to 'gtk2_ardour/ardour_ui.cc')
-rw-r--r-- | gtk2_ardour/ardour_ui.cc | 181 |
1 files changed, 16 insertions, 165 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 3c7f1afde2..5f77c7c038 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -273,13 +273,6 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir) , _initial_verbose_plugin_scan (false) , first_time_engine_run (true) , secondary_clock_spacer (0) - , roll_controllable (new TransportControllable ("transport roll", *this, TransportControllable::Roll)) - , stop_controllable (new TransportControllable ("transport stop", *this, TransportControllable::Stop)) - , goto_start_controllable (new TransportControllable ("transport goto start", *this, TransportControllable::GotoStart)) - , goto_end_controllable (new TransportControllable ("transport goto end", *this, TransportControllable::GotoEnd)) - , auto_loop_controllable (new TransportControllable ("transport auto loop", *this, TransportControllable::AutoLoop)) - , play_selection_controllable (new TransportControllable ("transport play selection", *this, TransportControllable::PlaySelection)) - , rec_controllable (new TransportControllable ("transport rec-enable", *this, TransportControllable::RecordEnable)) , auto_input_button (ArdourButton::led_default_elements) , time_info_box (0) , auto_return_button (ArdourButton::led_default_elements) @@ -362,13 +355,22 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir) boost::function<void (string)> pc (boost::bind (&ARDOUR_UI::parameter_changed, this, _1)); UIConfiguration::instance().map_parameters (pc); - roll_button.set_controllable (roll_controllable); - stop_button.set_controllable (stop_controllable); - goto_start_button.set_controllable (goto_start_controllable); - goto_end_button.set_controllable (goto_end_controllable); - auto_loop_button.set_controllable (auto_loop_controllable); - play_selection_button.set_controllable (play_selection_controllable); - rec_button.set_controllable (rec_controllable); + Glib::RefPtr<Gtk::Action> act; + + act = ActionManager::get_action ("Transport/Roll"); + roll_button.set_related_action (act); + act = ActionManager::get_action ("Transport/Stop"); + stop_button.set_related_action (act); + act = ActionManager::get_action ("Transport/GotoStart"); + goto_start_button.set_related_action (act); + act = ActionManager::get_action ("Transport/GotoEnd"); + goto_end_button.set_related_action (act); + act = ActionManager::get_action ("Transport/Loop"); + auto_loop_button.set_related_action (act); + act = ActionManager::get_action ("Transport/PlaySelection"); + play_selection_button.set_related_action (act); + act = ActionManager::get_action ("Transport/Record"); + rec_button.set_related_action (act); roll_button.set_name ("transport button"); stop_button.set_name ("transport button"); @@ -806,63 +808,6 @@ ARDOUR_UI::configure_handler (GdkEventConfigure* /*conf*/) } void -ARDOUR_UI::set_transport_controllable_state (const XMLNode& node) -{ - XMLProperty const * prop; - - if ((prop = node.property ("roll")) != 0) { - roll_controllable->set_id (prop->value()); - } - if ((prop = node.property ("stop")) != 0) { - stop_controllable->set_id (prop->value()); - } - if ((prop = node.property ("goto-start")) != 0) { - goto_start_controllable->set_id (prop->value()); - } - if ((prop = node.property ("goto-end")) != 0) { - goto_end_controllable->set_id (prop->value()); - } - if ((prop = node.property ("auto-loop")) != 0) { - auto_loop_controllable->set_id (prop->value()); - } - if ((prop = node.property ("play-selection")) != 0) { - play_selection_controllable->set_id (prop->value()); - } - if ((prop = node.property ("rec")) != 0) { - rec_controllable->set_id (prop->value()); - } - if ((prop = node.property ("shuttle")) != 0) { - shuttle_box.controllable()->set_id (prop->value()); - } -} - -XMLNode& -ARDOUR_UI::get_transport_controllable_state () -{ - XMLNode* node = new XMLNode(X_("TransportControllables")); - char buf[64]; - - roll_controllable->id().print (buf, sizeof (buf)); - node->add_property (X_("roll"), buf); - stop_controllable->id().print (buf, sizeof (buf)); - node->add_property (X_("stop"), buf); - goto_start_controllable->id().print (buf, sizeof (buf)); - node->add_property (X_("goto_start"), buf); - goto_end_controllable->id().print (buf, sizeof (buf)); - node->add_property (X_("goto_end"), buf); - auto_loop_controllable->id().print (buf, sizeof (buf)); - node->add_property (X_("auto_loop"), buf); - play_selection_controllable->id().print (buf, sizeof (buf)); - node->add_property (X_("play_selection"), buf); - rec_controllable->id().print (buf, sizeof (buf)); - node->add_property (X_("rec"), buf); - shuttle_box.controllable()->id().print (buf, sizeof (buf)); - node->add_property (X_("shuttle"), buf); - - return *node; -} - -void ARDOUR_UI::save_session_at_its_request (std::string snapshot_name) { if (_session) { @@ -3604,16 +3549,6 @@ ARDOUR_UI::load_session (const std::string& path, const std::string& snap_name, msg.hide (); } - - /* Now the session been created, add the transport controls */ - new_session->add_controllable(roll_controllable); - new_session->add_controllable(stop_controllable); - new_session->add_controllable(goto_start_controllable); - new_session->add_controllable(goto_end_controllable); - new_session->add_controllable(auto_loop_controllable); - new_session->add_controllable(play_selection_controllable); - new_session->add_controllable(rec_controllable); - set_session (new_session); session_loaded = true; @@ -5072,10 +5007,6 @@ Menu > Window > Audio/Midi Setup"), void ARDOUR_UI::use_config () { - XMLNode* node = Config->extra_xml (X_("TransportControllables")); - if (node) { - set_transport_controllable_state (*node); - } } void @@ -5170,86 +5101,6 @@ ARDOUR_UI::store_clock_modes () _session->set_dirty (); } -ARDOUR_UI::TransportControllable::TransportControllable (std::string name, ARDOUR_UI& u, ToggleType tp) - : Controllable (name), ui (u), type(tp) -{ - -} - -void -ARDOUR_UI::TransportControllable::set_value (double val, PBD::Controllable::GroupControlDisposition /*group_override*/) -{ - if (val < 0.5) { - /* do nothing: these are radio-style actions */ - return; - } - - const char *action = 0; - - switch (type) { - case Roll: - action = X_("Roll"); - break; - case Stop: - action = X_("Stop"); - break; - case GotoStart: - action = X_("GotoStart"); - break; - case GotoEnd: - action = X_("GotoEnd"); - break; - case AutoLoop: - action = X_("Loop"); - break; - case PlaySelection: - action = X_("PlaySelection"); - break; - case RecordEnable: - action = X_("Record"); - break; - default: - break; - } - - if (action == 0) { - return; - } - - Glib::RefPtr<Action> act = ActionManager::get_action ("Transport", action); - - if (act) { - act->activate (); - } -} - -double -ARDOUR_UI::TransportControllable::get_value (void) const -{ - float val = 0.0; - - switch (type) { - case Roll: - break; - case Stop: - break; - case GotoStart: - break; - case GotoEnd: - break; - case AutoLoop: - break; - case PlaySelection: - break; - case RecordEnable: - break; - default: - break; - } - - return val; -} - void ARDOUR_UI::setup_profile () { |