X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fardour_ui_dialogs.cc;h=f87ce85476438c0612de095b21e066c372ffa87c;hb=bed58e9f372a6c2671e9f072c19a4c77d06c4292;hp=532b7ce76b3d6cb7db0d621f3c26f9d3a6a6bb01;hpb=e1f57ba8f086aa3629f09ca9363a9e44b01796f4;p=ardour.git diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc index 532b7ce76b..f87ce85476 100644 --- a/gtk2_ardour/ardour_ui_dialogs.cc +++ b/gtk2_ardour/ardour_ui_dialogs.cc @@ -35,6 +35,8 @@ #include "route_params_ui.h" #include "sfdb_ui.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); @@ -162,21 +163,27 @@ ARDOUR_UI::connect_to_session (Session *s) point_zero_one_second_connection = Glib::signal_timeout().connect (mem_fun(*this, &ARDOUR_UI::every_point_zero_one_seconds), 40); } -bool -ARDOUR_UI::unload_session () +int +ARDOUR_UI::unload_session (bool hide_stuff) { if (session && session->dirty()) { switch (ask_about_saving_session (_("close"))) { case -1: // cancel - return false; + return 1; case 1: session->save_state (""); 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 (); @@ -204,16 +211,12 @@ ARDOUR_UI::unload_session () option_editor->set_session (0); } - if (mixer) { - mixer->hide_all (); - } - delete session; session = 0; update_buffer_load (); - return true; + return 0; } int @@ -324,6 +327,27 @@ ARDOUR_UI::toggle_location_window () } } +void +ARDOUR_UI::toggle_key_editor () +{ + 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()) { + key_editor->show_all (); + key_editor->present (); + } else { + key_editor->hide (); + } + } +} + void ARDOUR_UI::toggle_theme_manager () { @@ -340,6 +364,33 @@ ARDOUR_UI::toggle_theme_manager () } } +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 (); + } + } +} + int ARDOUR_UI::create_route_params () { @@ -382,3 +433,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; +}