X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fardour_ui_dependents.cc;h=c55942b4bda74ec78c39f4dfaca75425f6948b45;hb=6ee23029a338951705c589be6c61ab52099758b6;hp=2d4f390272db1249408386e1bc6739bdbdb1eaae;hpb=e0aaed6d65f160c328cb8b56d7c6552ee15d65e2;p=ardour.git diff --git a/gtk2_ardour/ardour_ui_dependents.cc b/gtk2_ardour/ardour_ui_dependents.cc index 2d4f390272..c55942b4bd 100644 --- a/gtk2_ardour/ardour_ui_dependents.cc +++ b/gtk2_ardour/ardour_ui_dependents.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2000 Paul Davis + Copyright (C) 2000 Paul Davis This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,6 +17,10 @@ */ +#ifdef WAF_BUILD +#include "gtk2ardour-config.h" +#endif + /* this file exists solely to break compilation dependencies that would connect changes to the mixer or editor objects. */ @@ -25,6 +29,8 @@ #include "pbd/error.h" +#include "ardour/session.h" + #include "ardour_ui.h" #include "public_editor.h" #include "mixer_ui.h" @@ -34,7 +40,6 @@ #include "opts.h" #include "i18n.h" -using namespace sigc; using namespace Gtk; using namespace PBD; @@ -48,13 +53,9 @@ using namespace ARDOUR; void ARDOUR_UI::shutdown () { - if (session) { - /* we're exiting cleanly, so remove any auto-save data */ - session->remove_pending_capture_state (); - session = 0; + if (ui_config->dirty()) { + ui_config->save_state(); } - - ui_config->save_state(); } void @@ -62,22 +63,24 @@ ARDOUR_UI::we_have_dependents () { install_actions (); ProcessorBox::register_actions (); + keyboard->setup_keybindings (); + editor->setup_tooltips (); + editor->UpdateAllTransportClocks.connect (sigc::mem_fun (*this, &ARDOUR_UI::update_transport_clocks)); - Keyboard::setup_keybindings (); - - editor->UpdateAllTransportClocks.connect (mem_fun (*this, &ARDOUR_UI::update_transport_clocks)); + editor->track_mixer_selection (); + mixer->track_editor_selection (); } void ARDOUR_UI::connect_dependents_to_session (ARDOUR::Session *s) { BootMessage (_("Setup Editor")); - editor->connect_to_session (s); + editor->set_session (s); BootMessage (_("Setup Mixer")); - mixer->connect_to_session (s); + mixer->set_session (s); /* its safe to do this now */ - + BootMessage (_("Reload Session History")); s->restore_history (""); } @@ -93,13 +96,12 @@ void ARDOUR_UI::goto_editor_window () { if (splash && splash->is_visible()) { - // in 2 seconds, hide the splash screen - Glib::signal_timeout().connect (bind (sigc::ptr_fun (_hide_splash), this), 2000); + // in 2 seconds, hide the splash screen + Glib::signal_timeout().connect (sigc::bind (sigc::ptr_fun (_hide_splash), this), 2000); } editor->show_window (); editor->present (); - _mixer_on_top = false; flush_pending (); } @@ -108,22 +110,57 @@ ARDOUR_UI::goto_mixer_window () { mixer->show_window (); mixer->present (); - _mixer_on_top = true; flush_pending (); } void -ARDOUR_UI::toggle_editor_mixer_on_top () +ARDOUR_UI::toggle_mixer_window () { - if (_mixer_on_top) { - goto_editor_window (); + Glib::RefPtr act = ActionManager::get_action (X_("Common"), X_("toggle-mixer")); + if (!act) { + return; + } + + Glib::RefPtr tact = Glib::RefPtr::cast_dynamic (act); + + if (tact->get_active()) { + goto_mixer_window (); } else { + mixer->hide (); + } +} + +void +ARDOUR_UI::toggle_mixer_on_top () +{ + Glib::RefPtr act = ActionManager::get_action (X_("Common"), X_("toggle-mixer-on-top")); + if (!act) { + return; + } + + Glib::RefPtr tact = Glib::RefPtr::cast_dynamic (act); + + if (tact->get_active()) { + + /* Toggle the mixer to `visible' if required */ + act = ActionManager::get_action (X_("Common"), X_("toggle-mixer")); + if (act) { + tact = Glib::RefPtr::cast_dynamic (act); + + if (!tact->get_active()) { + tact->set_active (); + } + } + goto_mixer_window (); + } else { + goto_editor_window (); } } +/** The main editor window has been closed */ gint -ARDOUR_UI::exit_on_main_window_close (GdkEventAny *ev) +ARDOUR_UI::exit_on_main_window_close (GdkEventAny * /*ev*/) { #ifdef TOP_MENUBAR /* just hide the window, and return - the top menu stays up */ @@ -135,3 +172,4 @@ ARDOUR_UI::exit_on_main_window_close (GdkEventAny *ev) return TRUE; #endif } +