X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fardour_ui_ed.cc;h=ee93919ece5531f6f79b3e9419a714a1772528fa;hb=67601c6c50ac6506c1c6f87be1c726bd1fa4241b;hp=61bb5d6ef7135ecd207c5b3be17bb2357e39c9cb;hpb=400d2a86aa728dffe92750fe39ae6cd214eeff35;p=ardour.git diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc index 61bb5d6ef7..ee93919ece 100644 --- a/gtk2_ardour/ardour_ui_ed.cc +++ b/gtk2_ardour/ardour_ui_ed.cc @@ -39,6 +39,7 @@ #include "editor.h" #include "actions.h" #include "mixer_ui.h" +#include "utils.h" #ifdef GTKOSX #include @@ -88,10 +89,9 @@ ARDOUR_UI::install_actions () /* menus + submenus that need action items */ ActionManager::register_action (main_actions, X_("Session"), _("Session")); - ActionManager::register_action (main_actions, X_("Files"), _("Import/Export")); - ActionManager::register_action (main_actions, X_("Cleanup"), _("Cleanup")); + act = ActionManager::register_action (main_actions, X_("Cleanup"), _("Cleanup")); + ActionManager::write_sensitive_actions.push_back (act); ActionManager::register_action (main_actions, X_("Sync"), _("Sync")); - ActionManager::register_action (main_actions, X_("Options"), _("Options")); ActionManager::register_action (main_actions, X_("TransportOptions"), _("Options")); ActionManager::register_action (main_actions, X_("Help"), _("Help")); ActionManager::register_action (main_actions, X_("KeyMouseActions"), _("Misc. Shortcuts")); @@ -107,7 +107,7 @@ ARDOUR_UI::install_actions () /* the real actions */ - act = ActionManager::register_action (main_actions, X_("New"), _("New..."), hide_return (bind (mem_fun(*this, &ARDOUR_UI::get_session_parameters), true))); + act = ActionManager::register_action (main_actions, X_("New"), _("New..."), hide_return (bind (mem_fun(*this, &ARDOUR_UI::get_session_parameters), false, true))); ActionManager::register_action (main_actions, X_("Open"), _("Open..."), mem_fun(*this, &ARDOUR_UI::open_session)); ActionManager::register_action (main_actions, X_("Recent"), _("Recent..."), mem_fun(*this, &ARDOUR_UI::open_recent_session)); @@ -117,7 +117,7 @@ ARDOUR_UI::install_actions () act = ActionManager::register_action (main_actions, X_("AddTrackBus"), _("Add Track/Bus..."), bind (mem_fun(*this, &ARDOUR_UI::add_route), (Gtk::Window*) 0)); ActionManager::session_sensitive_actions.push_back (act); - + ActionManager::write_sensitive_actions.push_back (act); #ifdef WITH_CMT @@ -132,6 +132,7 @@ ARDOUR_UI::install_actions () act = ActionManager::register_action (main_actions, X_("Snapshot"), _("Snapshot..."), mem_fun(*this, &ARDOUR_UI::snapshot_session)); ActionManager::session_sensitive_actions.push_back (act); + ActionManager::write_sensitive_actions.push_back (act); act = ActionManager::register_action (main_actions, X_("SaveTemplate"), _("Save Template..."), mem_fun(*this, &ARDOUR_UI::save_template)); ActionManager::session_sensitive_actions.push_back (act); @@ -139,10 +140,10 @@ ARDOUR_UI::install_actions () act = ActionManager::register_action (main_actions, X_("Metadata"), _("Metadata")); ActionManager::session_sensitive_actions.push_back (act); - act = ActionManager::register_action (main_actions, X_("EditMetadata"), _("Edit Metadata"), mem_fun(*this, &ARDOUR_UI::edit_metadata)); + act = ActionManager::register_action (main_actions, X_("EditMetadata"), _("Edit Metadata..."), mem_fun(*this, &ARDOUR_UI::edit_metadata)); ActionManager::session_sensitive_actions.push_back (act); - act = ActionManager::register_action (main_actions, X_("ImportMetadata"), _("Import Metadata"), mem_fun(*this, &ARDOUR_UI::import_metadata)); + act = ActionManager::register_action (main_actions, X_("ImportMetadata"), _("Import Metadata..."), mem_fun(*this, &ARDOUR_UI::import_metadata)); ActionManager::session_sensitive_actions.push_back (act); act = ActionManager::register_action (main_actions, X_("ExportAudio"), _("Export To Audio File(s)..."), mem_fun (*editor, &PublicEditor::export_audio)); @@ -151,9 +152,12 @@ ARDOUR_UI::install_actions () act = ActionManager::register_action (main_actions, X_("Export"), _("Export")); ActionManager::session_sensitive_actions.push_back (act); - act = ActionManager::register_action (main_actions, X_("CleanupUnused"), _("Cleanup Unused Sources"), mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::cleanup)); + act = ActionManager::register_action (main_actions, X_("CleanupUnused"), _("Cleanup Unused Sources..."), mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::cleanup)); ActionManager::session_sensitive_actions.push_back (act); + ActionManager::write_sensitive_actions.push_back (act); + act = ActionManager::register_action (main_actions, X_("FlushWastebasket"), _("Flush Wastebasket"), mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::flush_trash)); + ActionManager::write_sensitive_actions.push_back (act); ActionManager::session_sensitive_actions.push_back (act); /* JACK actions for controlling ... JACK */ @@ -213,19 +217,20 @@ ARDOUR_UI::install_actions () ActionManager::session_sensitive_actions.push_back (act); ActionManager::register_action (common_actions, X_("About"), _("About"), mem_fun(*this, &ARDOUR_UI::show_about)); ActionManager::register_toggle_action (common_actions, X_("ToggleThemeManager"), _("Theme Manager"), mem_fun(*this, &ARDOUR_UI::toggle_theme_manager)); - ActionManager::register_toggle_action (common_actions, X_("ToggleKeyEditor"), _("Keybindings"), mem_fun(*this, &ARDOUR_UI::toggle_key_editor)); + ActionManager::register_toggle_action (common_actions, X_("ToggleKeyEditor"), _("Key Bindings"), mem_fun(*this, &ARDOUR_UI::toggle_key_editor)); ActionManager::register_toggle_action (common_actions, X_("ToggleBundleManager"), _("Bundle Manager"), mem_fun(*this, &ARDOUR_UI::toggle_bundle_manager)); - act = ActionManager::register_action (common_actions, X_("AddAudioTrack"), _("Add Audio Track"), bind (mem_fun(*this, &ARDOUR_UI::session_add_audio_track), 1, 1, ARDOUR::Normal, 1)); + act = ActionManager::register_action (common_actions, X_("AddAudioTrack"), _("Add Audio Track"), bind (mem_fun(*this, &ARDOUR_UI::session_add_audio_track), 1, 1, ARDOUR::Normal, (ARDOUR::RouteGroup *) 0, 1)); ActionManager::session_sensitive_actions.push_back (act); - act = ActionManager::register_action (common_actions, X_("AddAudioBus"), _("Add Audio Bus"), bind (mem_fun(*this, &ARDOUR_UI::session_add_audio_bus), 1, 1, 1)); + act = ActionManager::register_action (common_actions, X_("AddAudioBus"), _("Add Audio Bus"), bind (mem_fun(*this, &ARDOUR_UI::session_add_audio_bus), 1, 1, (ARDOUR::RouteGroup *) 0, 1)); ActionManager::session_sensitive_actions.push_back (act); - act = ActionManager::register_action (common_actions, X_("AddMIDITrack"), _("Add MIDI Track"), bind (mem_fun(*this, &ARDOUR_UI::session_add_midi_track), 1)); + act = ActionManager::register_action (common_actions, X_("AddMIDITrack"), _("Add MIDI Track"), bind (mem_fun(*this, &ARDOUR_UI::session_add_midi_track), (ARDOUR::RouteGroup *) 0, 1)); ActionManager::session_sensitive_actions.push_back (act); //act = ActionManager::register_action (common_actions, X_("AddMidiBus"), _("Add Midi Bus"), mem_fun(*this, &ARDOUR_UI::session_add_midi_bus)); //ActionManager::session_sensitive_actions.push_back (act); act = ActionManager::register_action (common_actions, X_("Save"), _("Save"), bind (mem_fun(*this, &ARDOUR_UI::save_state), string(""))); ActionManager::session_sensitive_actions.push_back (act); + ActionManager::write_sensitive_actions.push_back (act); act = ActionManager::register_action (common_actions, X_("RemoveLastCapture"), _("Remove Last Capture"), mem_fun(*this, &ARDOUR_UI::remove_last_capture)); ActionManager::session_sensitive_actions.push_back (act); @@ -246,10 +251,13 @@ ARDOUR_UI::install_actions () ActionManager::session_sensitive_actions.push_back (act); ActionManager::transport_sensitive_actions.push_back (act); - ActionManager::register_action (transport_actions, X_("ToggleRoll"), _("Start/Stop"), bind (mem_fun (*editor, &PublicEditor::toggle_playback), false)); + act = ActionManager::register_action (transport_actions, X_("ToggleRoll"), _("Start/Stop"), bind (mem_fun (*this, &ARDOUR_UI::toggle_roll), false, false)); + ActionManager::session_sensitive_actions.push_back (act); + ActionManager::transport_sensitive_actions.push_back (act); + act = ActionManager::register_action (transport_actions, X_("ToggleRollMaybe"), _("Start/Continue/Stop"), bind (mem_fun (*this, &ARDOUR_UI::toggle_roll), false, true)); ActionManager::session_sensitive_actions.push_back (act); ActionManager::transport_sensitive_actions.push_back (act); - ActionManager::register_action (transport_actions, X_("ToggleRollForgetCapture"), _("Stop and Forget Capture"), bind (mem_fun(*editor, &PublicEditor::toggle_playback), true)); + act = ActionManager::register_action (transport_actions, X_("ToggleRollForgetCapture"), _("Stop + Forget Capture"), bind (mem_fun(*this, &ARDOUR_UI::toggle_roll), true, false)); ActionManager::session_sensitive_actions.push_back (act); ActionManager::transport_sensitive_actions.push_back (act); @@ -259,14 +267,13 @@ ARDOUR_UI::install_actions () - otherwise do nothing */ - ActionManager::register_action (transport_actions, X_("TransitionToRoll"), _("Transition To Roll"), bind (mem_fun (*editor, &PublicEditor::transition_to_rolling), true)); - ActionManager::session_sensitive_actions.push_back (act); + act = ActionManager::register_action (transport_actions, X_("TransitionToRoll"), _("Transition To Roll"), bind (mem_fun (*editor, &PublicEditor::transition_to_rolling), true)); ActionManager::session_sensitive_actions.push_back (act); + ActionManager::transport_sensitive_actions.push_back (act); - ActionManager::register_action (transport_actions, X_("TransitionToReverse"), _("Transition To Reverse"), bind (mem_fun (*editor, &PublicEditor::transition_to_rolling), false)); + act = ActionManager::register_action (transport_actions, X_("TransitionToReverse"), _("Transition To Reverse"), bind (mem_fun (*editor, &PublicEditor::transition_to_rolling), false)); ActionManager::session_sensitive_actions.push_back (act); - ActionManager::session_sensitive_actions.push_back (act); - + ActionManager::transport_sensitive_actions.push_back (act); act = ActionManager::register_action (transport_actions, X_("Loop"), _("Play Loop Range"), mem_fun(*this, &ARDOUR_UI::toggle_session_auto_loop)); ActionManager::session_sensitive_actions.push_back (act); @@ -277,8 +284,10 @@ ARDOUR_UI::install_actions () act = ActionManager::register_action (transport_actions, X_("Record"), _("Enable Record"), bind (mem_fun(*this, &ARDOUR_UI::transport_record), false)); ActionManager::session_sensitive_actions.push_back (act); + ActionManager::write_sensitive_actions.push_back (act); act = ActionManager::register_action (transport_actions, X_("record-roll"), _("Start Recording"), bind (mem_fun(*this, &ARDOUR_UI::transport_record), true)); ActionManager::session_sensitive_actions.push_back (act); + ActionManager::write_sensitive_actions.push_back (act); ActionManager::transport_sensitive_actions.push_back (act); act = ActionManager::register_action (transport_actions, X_("Rewind"), _("Rewind"), bind (mem_fun(*this, &ARDOUR_UI::transport_rewind), 0)); ActionManager::session_sensitive_actions.push_back (act); @@ -355,9 +364,12 @@ ARDOUR_UI::install_actions () ActionManager::session_sensitive_actions.push_back (act); ActionManager::transport_sensitive_actions.push_back (act); - ActionManager::register_toggle_action (transport_actions, X_("ToggleVideoSync"), _("Sync startup to video"), mem_fun(*this, &ARDOUR_UI::toggle_video_sync)); + act = ActionManager::register_toggle_action (transport_actions, X_("ToggleVideoSync"), _("Sync startup to video"), mem_fun(*this, &ARDOUR_UI::toggle_video_sync)); + ActionManager::session_sensitive_actions.push_back (act); act = ActionManager::register_toggle_action (transport_actions, X_("ToggleTimeMaster"), _("Time Master"), mem_fun(*this, &ARDOUR_UI::toggle_time_master)); ActionManager::session_sensitive_actions.push_back (act); + act = ActionManager::register_toggle_action (transport_actions, X_("ToggleExternalSync"), _(""), mem_fun(*this, &ARDOUR_UI::toggle_external_sync)); + ActionManager::session_sensitive_actions.push_back (act); act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack1"), _("Toggle Record Enable Track1"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 0U)); ActionManager::session_sensitive_actions.push_back (act); @@ -450,52 +462,6 @@ ARDOUR_UI::install_actions () ActionManager::add_action_group (common_actions); } -void -ARDOUR_UI::toggle_control_protocol (ControlProtocolInfo* cpi) -{ - if (!session) { - /* this happens when we build the menu bar when control protocol support - has been used in the past for some given protocol - the item needs - to be made active, but there is no session yet. - */ - return; - } - - if (cpi->protocol == 0) { - ControlProtocolManager::instance().instantiate (*cpi); - } else { - ControlProtocolManager::instance().teardown (*cpi); - } -} - -void -ARDOUR_UI::toggle_control_protocol_feedback (ControlProtocolInfo* cpi, const char* group, string action) -{ - if (!session) { - /* this happens when we build the menu bar when control protocol support - has been used in the past for some given protocol - the item needs - to be made active, but there is no session yet. - */ - return; - } - - if (cpi->protocol) { - Glib::RefPtr act = ActionManager::get_action (group, action.c_str()); - - if (act) { - Glib::RefPtr tact = Glib::RefPtr::cast_dynamic (act); - - if (tact) { - bool x = tact->get_active(); - - if (x != cpi->protocol->get_feedback()) { - cpi->protocol->set_feedback (x); - } - } - } - } -} - void ARDOUR_UI::set_jack_buffer_size (nframes_t nframes) { @@ -547,84 +513,9 @@ ARDOUR_UI::set_jack_buffer_size (nframes_t nframes) } } -void -ARDOUR_UI::build_control_surface_menu () -{ - list::iterator i; - bool with_feedback; - - /* !!! this has to match the top level entry from ardour.menus */ - - string ui = "\n" - "\n" - "\n"; - - for (i = ControlProtocolManager::instance().control_protocol_info.begin(); - i != ControlProtocolManager::instance().control_protocol_info.end(); ++i) { - - if (!(*i)->mandatory) { - - // Enable surface - - string action_name = "Toggle"; - action_name += legalize_for_path ((*i)->name); - action_name += "Surface"; - - string action_label = (*i)->name; - - Glib::RefPtr act = ActionManager::register_toggle_action ( - editor->editor_actions, action_name.c_str(), action_label.c_str(), (bind ( - mem_fun (*this, &ARDOUR_UI::toggle_control_protocol), - *i))); - - Glib::RefPtr tact = Glib::RefPtr::cast_dynamic (act); - - with_feedback = false; - - if ((*i)->protocol || (*i)->requested) { - tact->set_active (); - } - - ui += "\n"; - - // Enable feedback - - if ((*i)->supports_feedback) { - - action_name += "Feedback"; - string feedback_label = action_label + " " + _("Feedback"); - - Glib::RefPtr act = ActionManager::register_toggle_action ( - editor->editor_actions, action_name.c_str(), feedback_label.c_str(), (bind ( - mem_fun (*this, &ARDOUR_UI::toggle_control_protocol_feedback), - *i, "Editor", action_name))); - - ui += "\n"; - - if ((*i)->protocol) { - Glib::RefPtr tact = Glib::RefPtr::cast_dynamic (act); - tact->set_active ((*i)->protocol->get_feedback ()); - } - } - } - } - - ui += "\n\n\n"; - - ActionManager::ui_manager->add_ui_from_string (ui); -} - void ARDOUR_UI::build_menu_bar () { - if (!Profile->get_sae()) { - build_control_surface_menu (); - } - menu_bar = dynamic_cast (ActionManager::get_widget (X_("/Main"))); menu_bar->set_name ("MainMenuBar"); @@ -689,7 +580,6 @@ ARDOUR_UI::use_menubar_as_top_menubar () #endif } - void ARDOUR_UI::setup_clock () { @@ -701,12 +591,11 @@ ARDOUR_UI::setup_clock () big_clock_window->set_border_width (0); big_clock_window->add (big_clock); - WindowTitle title(Glib::get_application_name()); - title += _("Clock"); - big_clock_window->set_title (title.get_string()); - big_clock_window->set_type_hint (Gdk::WINDOW_TYPE_HINT_MENU); + big_clock_window->set_title (_("Big Clock")); + big_clock_window->set_type_hint (Gdk::WINDOW_TYPE_HINT_UTILITY); big_clock_window->signal_realize().connect (bind (sigc::ptr_fun (set_decoration), big_clock_window, (Gdk::DECOR_BORDER|Gdk::DECOR_RESIZEH))); big_clock_window->signal_unmap().connect (bind (sigc::ptr_fun(&ActionManager::uncheck_toggleaction), X_("/Common/ToggleBigClock"))); + big_clock_window->signal_key_press_event().connect (bind (sigc::ptr_fun (relay_key_press), big_clock_window), false); manage_window (*big_clock_window); }