X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fardour_ui_dialogs.cc;h=202fa88b59f3011a825c4e9bd4c50e245c3e30a7;hb=f535b0f4913a9c0b31ca3b21bd717c367676ebfc;hp=9dc11eaa1475e964974aac2993f41d6d6c8e344d;hpb=abb086738cdd0f862b1600e0780bbbf0f0967713;p=ardour.git diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc index 9dc11eaa14..202fa88b59 100644 --- a/gtk2_ardour/ardour_ui_dialogs.cc +++ b/gtk2_ardour/ardour_ui_dialogs.cc @@ -25,19 +25,22 @@ #include +#include "actions.h" #include "ardour_ui.h" -#include "mixer_ui.h" -#include "meter_bridge.h" #include "connection_editor.h" -#include "public_editor.h" -#include "option_editor.h" #include "location_ui.h" +#include "mixer_ui.h" +#include "option_editor.h" +#include "public_editor.h" #include "route_params_ui.h" -#include "library_ui.h" +#include "sfdb_ui.h" +#include "color_manager.h" #include "i18n.h" using namespace ARDOUR; +using namespace PBD; +using namespace Glib; using namespace Gtk; using namespace Gtkmm2ext; @@ -50,41 +53,31 @@ ARDOUR_UI::connect_to_session (Session *s) /* sensitize menu bar options that are now valid */ -// save_as_item->set_sensitive (true); - save_template_item->set_sensitive (true); - snapshot_item->set_sensitive (true); - save_item->set_sensitive (true); - add_track_item->set_sensitive (true); - export_item->set_sensitive (true); - close_item->set_sensitive (true); - locations_dialog_check->set_sensitive (true); - route_params_check->set_sensitive (true); - connection_editor_check->set_sensitive (true); - - cleanup_item->set_sensitive (true); - - /* sensitize transport bar */ - - goto_start_button.set_sensitive (true); - goto_end_button.set_sensitive (true); - roll_button.set_sensitive (true); - stop_button.set_sensitive (true); - play_selection_button.set_sensitive (true); - rec_button.set_sensitive (true); - auto_loop_button.set_sensitive (true); - shuttle_box.set_sensitive (true); + ActionManager::set_sensitive (ActionManager::session_sensitive_actions, true); - /* */ - if (image_compositor_item) { - image_compositor_item->set_sensitive(true) ; + if (session->locations()->num_range_markers()) { + ActionManager::set_sensitive (ActionManager::range_sensitive_actions, true); + } else { + ActionManager::set_sensitive (ActionManager::range_sensitive_actions, false); } - /* */ - - if (session->n_diskstreams()) { - // meter_bridge_dialog_check->set_sensitive (true); - } else { - session->DiskStreamAdded.connect (mem_fun(*this, &ARDOUR_UI::diskstream_added)); + /* there are never any selections on startup */ + + ActionManager::set_sensitive (ActionManager::region_selection_sensitive_actions, false); + ActionManager::set_sensitive (ActionManager::time_selection_sensitive_actions, false); + ActionManager::set_sensitive (ActionManager::track_selection_sensitive_actions, false); + ActionManager::set_sensitive (ActionManager::line_selection_sensitive_actions, false); + ActionManager::set_sensitive (ActionManager::point_selection_sensitive_actions, false); + ActionManager::set_sensitive (ActionManager::playlist_selection_sensitive_actions, false); + + session->locations()->added.connect (mem_fun (*this, &ARDOUR_UI::handle_locations_change)); + session->locations()->removed.connect (mem_fun (*this, &ARDOUR_UI::handle_locations_change)); + + rec_button.set_sensitive (true); + shuttle_box.set_sensitive (true); + + if (session->n_audio_diskstreams() == 0) { + session->AudioDiskstreamAdded.connect (mem_fun(*this, &ARDOUR_UI::diskstream_added)); } if (connection_editor) { @@ -103,6 +96,11 @@ ARDOUR_UI::connect_to_session (Session *s) option_editor->set_session (s); } + if (sfdb) { + sfdb->set_session (s); + } + + setup_session_options (); Blink.connect (mem_fun(*this, &ARDOUR_UI::transport_rec_enable_blink)); Blink.connect (mem_fun(*this, &ARDOUR_UI::solo_blink)); @@ -113,7 +111,6 @@ ARDOUR_UI::connect_to_session (Session *s) */ session->TransportStateChange.connect (mem_fun(*this, &ARDOUR_UI::queue_transport_change)); - session->ControlChanged.connect (mem_fun(*this, &ARDOUR_UI::queue_map_control_change)); /* alert the user to these things happening */ @@ -133,15 +130,13 @@ ARDOUR_UI::connect_to_session (Session *s) /* Clocks are on by default after we are connected to a session, so show that here. */ - map_button_state (); - connect_dependents_to_session (s); - + start_clocking (); start_blinking (); if (editor) { - editor->window().present(); + editor->present(); } transport_stopped (); @@ -155,7 +150,7 @@ int ARDOUR_UI::unload_session () { if (session && session->dirty()) { - switch (ask_about_saving_session (_("close session"))) { + switch (ask_about_saving_session (_("close"))) { case -1: return 1; @@ -164,37 +159,14 @@ ARDOUR_UI::unload_session () break; } } - + editor->hide (); second_connection.disconnect (); point_one_second_connection.disconnect (); point_zero_one_second_connection.disconnect(); - /* desensitize menu bar options that are now invalid */ - -// save_as_item->set_sensitive (false); - save_template_item->set_sensitive (false); - snapshot_item->set_sensitive (false); - save_item->set_sensitive (false); - add_track_item->set_sensitive (false); - export_item->set_sensitive (false); - close_item->set_sensitive (false); - // meter_bridge_dialog_check->set_sensitive (false); - connection_editor_check->set_sensitive (false); - locations_dialog_check->set_sensitive (false); - // meter_bridge_dialog_check->set_active(false); - connection_editor_check->set_active(false); - locations_dialog_check->set_active(false); - route_params_check->set_sensitive (false); - - /* desensitize transport bar */ - - goto_start_button.set_sensitive (false); - goto_end_button.set_sensitive (false); - roll_button.set_sensitive (false); - stop_button.set_sensitive (false); - play_selection_button.set_sensitive (false); + ActionManager::set_sensitive (ActionManager::session_sensitive_actions, false); + rec_button.set_sensitive (false); - auto_loop_button.set_sensitive (false); shuttle_box.set_sensitive (false); stop_blinking (); @@ -222,38 +194,23 @@ ARDOUR_UI::unload_session () session = 0; update_buffer_load (); - // update_disk_rate (); return 0; } -int -ARDOUR_UI::create_meter_bridge () -{ - if (meter_bridge == 0) { - meter_bridge = new MeterBridge (); - meter_bridge->Hiding.connect (mem_fun(*this, &ARDOUR_UI::meter_bridge_hiding)); - } - return 0; -} - -void -ARDOUR_UI::meter_bridge_hiding() -{ - // meter_bridge_dialog_check->set_active(false); -} - int ARDOUR_UI::create_connection_editor () { +#if 0 if (connection_editor == 0) { connection_editor = new ConnectionEditor (); - connection_editor->Hiding.connect (mem_fun(*this, &ARDOUR_UI::connection_editor_hiding)); + connection_editor->signal_unmap().connect (sigc::bind (ptr_fun(&ActionManager::uncheck_toggleaction), X_("/Common/ToggleConnections"))); } if (session) { connection_editor->set_session (session); } +#endif return 0; } @@ -265,41 +222,34 @@ ARDOUR_UI::toggle_connection_editor () return; } - if (connection_editor->within_hiding()) { - return; - } - - - if (connection_editor_check->get_active()){ - connection_editor->show_all(); - } else { - connection_editor->hide_all(); +#if 0 + RefPtr act = ActionManager::get_action (X_("Common"), X_("ToggleConnections")); + if (act) { + RefPtr tact = RefPtr::cast_dynamic(act); + + if (tact->get_active()) { + connection_editor->show_all (); + connection_editor->present (); + } else { + connection_editor->hide (); + } } -} - -void -ARDOUR_UI::connection_editor_hiding() -{ - connection_editor_check->set_active(false); -} - -void -ARDOUR_UI::big_clock_hiding() -{ - big_clock_check->set_active(false); +#endif } void ARDOUR_UI::toggle_big_clock_window () { - if (big_clock_window->within_hiding()) { - return; - } - - if (big_clock_window->is_visible()) { - big_clock_window->hide_all (); - } else { - big_clock_window->show_all (); + RefPtr act = ActionManager::get_action (X_("Common"), X_("ToggleBigClock")); + if (act) { + RefPtr tact = RefPtr::cast_dynamic(act); + + if (tact->get_active()) { + big_clock_window->show_all (); + big_clock_window->present (); + } else { + big_clock_window->hide (); + } } } @@ -308,44 +258,21 @@ ARDOUR_UI::toggle_options_window () { if (option_editor == 0) { option_editor = new OptionEditor (*this, *editor, *mixer); - option_editor->Hiding.connect(mem_fun(*this, &ARDOUR_UI::option_hiding)); + option_editor->signal_unmap().connect(sigc::bind (sigc::ptr_fun(&ActionManager::uncheck_toggleaction), X_("/Common/ToggleOptionsEditor"))); option_editor->set_session (session); - } else if (option_editor->within_hiding()) { - return; - } - - if (option_editor->is_visible()) { - option_editor->hide_all (); - } else { - option_editor->show_all (); - } -} - -void -ARDOUR_UI::option_hiding () -{ - options_window_check->set_active(false); -} - -void -ARDOUR_UI::toggle_auto_input () + } -{ - toggle_some_session_state (auto_input_button, - &Session::get_auto_input, - &Session::set_auto_input); + RefPtr act = ActionManager::get_action (X_("Common"), X_("ToggleOptionsEditor")); + if (act) { + RefPtr tact = RefPtr::cast_dynamic(act); - meter_bridge->clear_all_meters (); -} - -void -ARDOUR_UI::toggle_metering () -{ -#if 0 - if (global_meter_button.get_active()) { - meter_bridge->toggle_metering (); + if (tact->get_active()) { + option_editor->show_all (); + option_editor->present (); + } else { + option_editor->hide (); + } } -#endif } int @@ -354,8 +281,8 @@ ARDOUR_UI::create_location_ui () if (location_ui == 0) { location_ui = new LocationUI (); location_ui->set_session (session); - location_ui->Hiding.connect (mem_fun(*this, &ARDOUR_UI::location_ui_hiding)); - } + location_ui->signal_unmap().connect (sigc::bind (sigc::ptr_fun(&ActionManager::uncheck_toggleaction), X_("/Common/ToggleLocations"))); + } return 0; } @@ -366,21 +293,33 @@ ARDOUR_UI::toggle_location_window () return; } - if (location_ui->within_hiding()) { - return; - } - - if (location_ui->is_visible()) { - location_ui->hide_all(); - } else { - location_ui->show_all(); + RefPtr act = ActionManager::get_action (X_("Common"), X_("ToggleLocations")); + if (act) { + RefPtr tact = RefPtr::cast_dynamic(act); + + if (tact->get_active()) { + location_ui->show_all (); + location_ui->present (); + } else { + location_ui->hide (); + } } } void -ARDOUR_UI::location_ui_hiding() +ARDOUR_UI::toggle_color_manager () { - locations_dialog_check->set_active(false); + RefPtr act = ActionManager::get_action (X_("Common"), X_("ToggleColorManager")); + if (act) { + RefPtr tact = RefPtr::cast_dynamic(act); + + if (tact->get_active()) { + color_manager->show_all (); + color_manager->present (); + } else { + color_manager->hide (); + } + } } int @@ -389,7 +328,7 @@ ARDOUR_UI::create_route_params () if (route_params == 0) { route_params = new RouteParams_UI (*engine); route_params->set_session (session); - route_params->Hiding.connect (mem_fun(*this, &ARDOUR_UI::route_params_hiding)); + route_params->signal_unmap().connect (sigc::bind(sigc::ptr_fun(&ActionManager::uncheck_toggleaction), X_("/Common/ToggleInspector"))); } return 0; } @@ -401,19 +340,57 @@ ARDOUR_UI::toggle_route_params_window () return; } - if (route_params->within_hiding()) { - return; + RefPtr act = ActionManager::get_action (X_("Common"), X_("ToggleInspector")); + if (act) { + RefPtr tact = RefPtr::cast_dynamic(act); + + if (tact->get_active()) { + route_params->show_all (); + route_params->present (); + } else { + route_params->hide (); + } } +} - if (route_params->is_visible ()) { - route_params->hide_all (); - } else { - route_params->show_all (); +int +ARDOUR_UI::create_sound_file_browser () +{ + if (sfdb == 0) { + sfdb = new SoundFileBrowser (_("Sound File Browser"), session); + sfdb->signal_unmap().connect (sigc::bind(sigc::ptr_fun(&ActionManager::uncheck_toggleaction), X_("/Common/ToggleSoundFileBrowser"))); } + return 0; } void -ARDOUR_UI::route_params_hiding () +ARDOUR_UI::toggle_sound_file_browser () { - route_params_check->set_active (false); + if (create_sound_file_browser()) { + return; + } + + RefPtr act = ActionManager::get_action (X_("Common"), X_("ToggleSoundFileBrowser")); + if (act) { + RefPtr tact = RefPtr::cast_dynamic(act); + + if (tact->get_active()) { + sfdb->show_all(); + sfdb->present(); + } else { + sfdb->hide (); + } + } +} + +void +ARDOUR_UI::handle_locations_change (Location* ignored) +{ + if (session) { + if (session->locations()->num_range_markers()) { + ActionManager::set_sensitive (ActionManager::range_sensitive_actions, true); + } else { + ActionManager::set_sensitive (ActionManager::range_sensitive_actions, false); + } + } }