X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fardour_ui_dialogs.cc;h=6cbaeb58f0a1f0487291596787cc586e98c7d383;hb=73a6b8ef25bb90ad6c66b25b17da5962a38291d2;hp=8a50697e85b9b76efad70c2a9b365a23e89cebc4;hpb=87726495c30f90554b5204b5385d17274a8fe93e;p=ardour.git diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc index 8a50697e85..6cbaeb58f0 100644 --- a/gtk2_ardour/ardour_ui_dialogs.cc +++ b/gtk2_ardour/ardour_ui_dialogs.cc @@ -23,18 +23,20 @@ This is to cut down on the compile times. It also helps with my sanity. */ -#include +#include "ardour/session.h" #include "actions.h" #include "ardour_ui.h" -#include "connection_editor.h" #include "location_ui.h" #include "mixer_ui.h" -#include "option_editor.h" +#include "rc_option_editor.h" +#include "session_option_editor.h" #include "public_editor.h" #include "route_params_ui.h" #include "sfdb_ui.h" -#include "color_manager.h" +#include "theme_manager.h" +#include "bundle_manager.h" +#include "keyeditor.h" #include "i18n.h" @@ -49,7 +51,7 @@ ARDOUR_UI::connect_to_session (Session *s) { session = s; - session->HaltOnXrun.connect (mem_fun(*this, &ARDOUR_UI::halt_on_xrun_message)); + session->Xrun.connect (mem_fun(*this, &ARDOUR_UI::xrun_handler)); session->RecordStateChanged.connect (mem_fun (*this, &ARDOUR_UI::record_state_changed)); /* sensitize menu bar options that are now valid */ @@ -78,7 +80,6 @@ ARDOUR_UI::connect_to_session (Session *s) /* 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); @@ -91,10 +92,6 @@ ARDOUR_UI::connect_to_session (Session *s) rec_button.set_sensitive (true); shuttle_box.set_sensitive (true); - if (connection_editor) { - connection_editor->set_session (s); - } - if (location_ui) { location_ui->set_session(s); } @@ -103,10 +100,6 @@ ARDOUR_UI::connect_to_session (Session *s) route_params->set_session (s); } - if (option_editor) { - option_editor->set_session (s); - } - setup_session_options (); Blink.connect (mem_fun(*this, &ARDOUR_UI::transport_rec_enable_blink)); @@ -145,7 +138,7 @@ ARDOUR_UI::connect_to_session (Session *s) /* listen to clock mode changes. don't do this earlier because otherwise as the clocks restore their modes or are explicitly set, we will cause the "new" mode to be saved - back to the session XML ("extra") state. + back to the session XML ("Extra") state. */ AudioClock::ModeChanged.connect (mem_fun (*this, &ARDOUR_UI::store_clock_modes)); @@ -163,11 +156,12 @@ ARDOUR_UI::connect_to_session (Session *s) } int -ARDOUR_UI::unload_session () +ARDOUR_UI::unload_session (bool hide_stuff) { if (session && session->dirty()) { switch (ask_about_saving_session (_("close"))) { case -1: + // cancel return 1; case 1: @@ -175,7 +169,13 @@ ARDOUR_UI::unload_session () break; } } - editor->hide (); + + if (hide_stuff) { + editor->hide (); + mixer->hide (); + theme_manager->hide (); + } + second_connection.disconnect (); point_one_second_connection.disconnect (); point_oh_five_second_connection.disconnect (); @@ -199,14 +199,6 @@ ARDOUR_UI::unload_session () preroll_clock.set_session (0); postroll_clock.set_session (0); - if (option_editor) { - option_editor->set_session (0); - } - - if (mixer) { - mixer->hide_all (); - } - delete session; session = 0; @@ -215,79 +207,61 @@ ARDOUR_UI::unload_session () return 0; } -int -ARDOUR_UI::create_connection_editor () -{ -#if 0 - if (connection_editor == 0) { - connection_editor = new ConnectionEditor (); - 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; -} - void -ARDOUR_UI::toggle_connection_editor () +ARDOUR_UI::toggle_big_clock_window () { - if (create_connection_editor()) { - return; - } - -#if 0 - RefPtr act = ActionManager::get_action (X_("Common"), X_("ToggleConnections")); + RefPtr act = ActionManager::get_action (X_("Common"), X_("ToggleBigClock")); if (act) { RefPtr tact = RefPtr::cast_dynamic(act); if (tact->get_active()) { - connection_editor->show_all (); - connection_editor->present (); + big_clock_window->show_all (); + big_clock_window->present (); } else { - connection_editor->hide (); + big_clock_window->hide (); } } -#endif } void -ARDOUR_UI::toggle_big_clock_window () +ARDOUR_UI::toggle_rc_options_window () { - RefPtr act = ActionManager::get_action (X_("Common"), X_("ToggleBigClock")); + if (rc_option_editor == 0) { + rc_option_editor = new RCOptionEditor; + rc_option_editor->signal_unmap().connect(sigc::bind (sigc::ptr_fun(&ActionManager::uncheck_toggleaction), X_("/Common/ToggleRCOptionsEditor"))); + rc_option_editor->set_session (session); + } + + RefPtr act = ActionManager::get_action (X_("Common"), X_("ToggleRCOptionsEditor")); if (act) { RefPtr tact = RefPtr::cast_dynamic(act); if (tact->get_active()) { - big_clock_window->show_all (); - big_clock_window->present (); + rc_option_editor->show_all (); + rc_option_editor->present (); } else { - big_clock_window->hide (); + rc_option_editor->hide (); } } } void -ARDOUR_UI::toggle_options_window () +ARDOUR_UI::toggle_session_options_window () { - if (option_editor == 0) { - option_editor = new OptionEditor (*this, *editor, *mixer); - option_editor->signal_unmap().connect(sigc::bind (sigc::ptr_fun(&ActionManager::uncheck_toggleaction), X_("/Common/ToggleOptionsEditor"))); - option_editor->set_session (session); + if (session_option_editor == 0) { + session_option_editor = new SessionOptionEditor (session); + session_option_editor->signal_unmap().connect(sigc::bind (sigc::ptr_fun(&ActionManager::uncheck_toggleaction), X_("/Common/ToggleSessionOptionsEditor"))); } - RefPtr act = ActionManager::get_action (X_("Common"), X_("ToggleOptionsEditor")); + RefPtr act = ActionManager::get_action (X_("Common"), X_("ToggleSessionOptionsEditor")); if (act) { - RefPtr tact = RefPtr::cast_dynamic(act); + RefPtr tact = RefPtr::cast_dynamic (act); if (tact->get_active()) { - option_editor->show_all (); - option_editor->present (); + session_option_editor->show_all (); + session_option_editor->present (); } else { - option_editor->hide (); + session_option_editor->hide (); } } } @@ -324,17 +298,65 @@ ARDOUR_UI::toggle_location_window () } void -ARDOUR_UI::toggle_color_manager () +ARDOUR_UI::toggle_key_editor () { - RefPtr act = ActionManager::get_action (X_("Common"), X_("ToggleColorManager")); + if (key_editor == 0) { + key_editor = new KeyEditor; + key_editor->signal_unmap().connect (sigc::bind (sigc::ptr_fun(&ActionManager::uncheck_toggleaction), X_("/Common/ToggleKeyEditor"))); + } + + RefPtr act = ActionManager::get_action (X_("Common"), X_("ToggleKeyEditor")); if (act) { RefPtr tact = RefPtr::cast_dynamic(act); if (tact->get_active()) { - color_manager->show_all (); - color_manager->present (); + key_editor->show_all (); + key_editor->present (); } else { - color_manager->hide (); + key_editor->hide (); + } + } +} + +void +ARDOUR_UI::toggle_theme_manager () +{ + RefPtr act = ActionManager::get_action (X_("Common"), X_("ToggleThemeManager")); + if (act) { + RefPtr tact = RefPtr::cast_dynamic(act); + + if (tact->get_active()) { + theme_manager->show_all (); + theme_manager->present (); + } else { + theme_manager->hide (); + } + } +} + +void +ARDOUR_UI::create_bundle_manager () +{ + if (bundle_manager == 0) { + bundle_manager = new BundleManager (*session); + bundle_manager->signal_unmap().connect (sigc::bind (sigc::ptr_fun (&ActionManager::uncheck_toggleaction), X_("/Common/ToggleBundleManager"))); + } +} + +void +ARDOUR_UI::toggle_bundle_manager () +{ + create_bundle_manager (); + + RefPtr act = ActionManager::get_action (X_("Common"), X_("ToggleBundleManager")); + if (act) { + RefPtr tact = RefPtr::cast_dynamic (act); + + if (tact->get_active()) { + bundle_manager->show_all (); + bundle_manager->present (); + } else { + bundle_manager->hide (); } } } @@ -381,3 +403,24 @@ ARDOUR_UI::handle_locations_change (Location* ignored) } } } + +bool +ARDOUR_UI::main_window_state_event_handler (GdkEventWindowState* ev, bool window_was_editor) +{ + if (window_was_editor) { + + if ((ev->changed_mask & GDK_WINDOW_STATE_FULLSCREEN) && + (ev->new_window_state & GDK_WINDOW_STATE_FULLSCREEN)) { + float_big_clock (editor); + } + + } else { + + if ((ev->changed_mask & GDK_WINDOW_STATE_FULLSCREEN) && + (ev->new_window_state & GDK_WINDOW_STATE_FULLSCREEN)) { + float_big_clock (mixer); + } + } + + return false; +}