X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fardour_ui_dependents.cc;h=ac7c8cfdde5006a8d33f224e889d9c45d7ef66a4;hb=9d9905f443f797efaabb7b8b36217b71e57c6c06;hp=6472bc5ef45f7f5340506ca037e088f5d1976007;hpb=4ca1fe7993adf63ea3f35958f63dd20ee546e7ae;p=ardour.git diff --git a/gtk2_ardour/ardour_ui_dependents.cc b/gtk2_ardour/ardour_ui_dependents.cc index 6472bc5ef4..ac7c8cfdde 100644 --- a/gtk2_ardour/ardour_ui_dependents.cc +++ b/gtk2_ardour/ardour_ui_dependents.cc @@ -23,15 +23,15 @@ #include -#include - -#include +#include "pbd/error.h" #include "ardour_ui.h" #include "public_editor.h" #include "mixer_ui.h" #include "keyboard.h" +#include "splash.h" #include "route_params_ui.h" +#include "opts.h" #include "i18n.h" using namespace sigc; @@ -43,6 +43,8 @@ namespace ARDOUR { class Route; } +using namespace ARDOUR; + void ARDOUR_UI::shutdown () { @@ -51,66 +53,53 @@ ARDOUR_UI::shutdown () session->remove_pending_capture_state (); session = 0; } + ui_config->save_state(); } void ARDOUR_UI::we_have_dependents () -{ - setup_keybindings (); - editor->UpdateAllTransportClocks.connect (mem_fun (*this, &ARDOUR_UI::update_transport_clocks)); -} - -static void -accel_map_changed (GtkAccelMap* map, - gchar* path, - guint key, - GdkModifierType mod, - gpointer arg) -{ - static_cast(arg)->save_keybindings (); -} - -void -ARDOUR_UI::setup_keybindings () { install_actions (); ProcessorBox::register_actions (); - - cerr << "loading bindings from " << keybindings_path << endl; - - try { - AccelMap::load (keybindings_path); - } catch (...) { - error << string_compose (_("Ardour key bindings file not found at \"%1\" or contains errors."), keybindings_path) - << endmsg; - } - - /* catch changes */ - GtkAccelMap* accelmap = gtk_accel_map_get(); - g_signal_connect (accelmap, "changed", (GCallback) accel_map_changed, this); - - + Keyboard::setup_keybindings (); + editor->UpdateAllTransportClocks.connect (mem_fun (*this, &ARDOUR_UI::update_transport_clocks)); } void ARDOUR_UI::connect_dependents_to_session (ARDOUR::Session *s) { + BootMessage (_("Setup Editor")); editor->connect_to_session (s); + BootMessage (_("Setup Mixer")); mixer->connect_to_session (s); /* its safe to do this now */ + BootMessage (_("Reload Session History")); s->restore_history (""); } +static bool +_hide_splash (gpointer arg) +{ + ((ARDOUR_UI*)arg)->hide_splash(); + return false; +} + 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); + } + editor->show_window (); editor->present (); + _mixer_on_top = false; flush_pending (); } @@ -119,12 +108,30 @@ ARDOUR_UI::goto_mixer_window () { mixer->show_window (); mixer->present (); + _mixer_on_top = true; flush_pending (); } +void +ARDOUR_UI::toggle_editor_mixer_on_top () +{ + if (_mixer_on_top) { + goto_editor_window (); + } else { + goto_mixer_window (); + } +} + 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 */ + editor->hide (); + return TRUE; +#else + /* time to get out of here */ finish(); return TRUE; +#endif }