X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fardour_ui_ed.cc;h=6e9227dd6b9d97f751ba0881d077e67d640e0785;hb=65bda27d4;hp=737400c7afb93b9a5f269095e7e09e6e0b18c4ce;hpb=47d186d1a301c8cbc8ed8c3b6cbe0c84bb6b681f;p=ardour.git diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc index 737400c7af..6e9227dd6b 100644 --- a/gtk2_ardour/ardour_ui_ed.cc +++ b/gtk2_ardour/ardour_ui_ed.cc @@ -33,14 +33,15 @@ #include #include +#include "pbd/file_utils.h" +#include "pbd/fpu.h" +#include "pbd/convert.h" + #include "gtkmm2ext/cairo_packer.h" -#include "gtkmm2ext/tearoff.h" #include "gtkmm2ext/utils.h" #include "gtkmm2ext/window_title.h" -#include "pbd/file_utils.h" -#include "pbd/fpu.h" -#include "pbd/convert.h" +#include "widgets/tearoff.h" #include "ardour_ui.h" #include "public_editor.h" @@ -49,6 +50,7 @@ #include "monitor_section.h" #include "engine_dialog.h" #include "editor.h" +#include "editing.h" #include "actions.h" #include "meterbridge.h" #include "luawindow.h" @@ -127,7 +129,7 @@ ARDOUR_UI::install_actions () Glib::RefPtr main_menu_actions = global_actions.create_action_group (X_("Main_menu")); Glib::RefPtr act; - global_actions.register_action (main_actions, X_("Escape"), _("Escape"), sigc::mem_fun (*this, &ARDOUR_UI::escape)); + global_actions.register_action (main_actions, X_("Escape"), _("Escape (deselect all)"), sigc::mem_fun (*this, &ARDOUR_UI::escape)); /* This is hard-wired into the Keyboard code as "Primary-w". Maybe it doesn't need to be. This action makes it possible to do this from a control surface. @@ -176,7 +178,7 @@ ARDOUR_UI::install_actions () sigc::mem_fun(*this, &ARDOUR_UI::start_duplicate_routes)); ActionManager::session_sensitive_actions.push_back (act); ActionManager::write_sensitive_actions.push_back (act); - ActionManager::track_selection_sensitive_actions.push_back (act); + ActionManager::route_selection_sensitive_actions.push_back (act); act = global_actions.register_action (main_actions, X_("cancel-solo"), _("Cancel Solo"), sigc::mem_fun(*this, &ARDOUR_UI::cancel_solo)); ActionManager::session_sensitive_actions.push_back (act); @@ -185,19 +187,11 @@ ARDOUR_UI::install_actions () act = global_actions.register_action (main_actions, X_("Scripting"), S_("Session|Scripting")); ActionManager::session_sensitive_actions.push_back (act); - act = global_actions.register_action (main_actions, X_("AddLuaScript"), _("Add Lua Script..."), - sigc::mem_fun (*this, &ARDOUR_UI::add_lua_script)); - ActionManager::session_sensitive_actions.push_back (act); - - act = global_actions.register_action (main_actions, X_("RemoveLuaScript"), _("Remove Lua Script"), - sigc::mem_fun (*this, &ARDOUR_UI::remove_lua_script)); - ActionManager::session_sensitive_actions.push_back (act); - act = global_actions.register_action (main_actions, X_("OpenVideo"), _("Open Video..."), - sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::add_video), (Gtk::Window*) 0)); + sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::add_video), (Gtk::Window*) 0)); ActionManager::session_sensitive_actions.push_back (act); act = global_actions.register_action (main_actions, X_("CloseVideo"), _("Remove Video"), - sigc::mem_fun (*this, &ARDOUR_UI::remove_video)); + sigc::mem_fun (*this, &ARDOUR_UI::remove_video)); act->set_sensitive (false); act = global_actions.register_action (main_actions, X_("ExportVideo"), _("Export to Video File..."), hide_return (sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::export_video), false))); @@ -229,6 +223,9 @@ ARDOUR_UI::install_actions () act = global_actions.register_action (main_actions, X_("SaveTemplate"), _("Save Template..."), sigc::mem_fun(*this, &ARDOUR_UI::save_template)); ActionManager::session_sensitive_actions.push_back (act); + act = global_actions.register_action (main_actions, X_("ManageTemplates"), _("Templates"), sigc::mem_fun(*this, &ARDOUR_UI::manage_templates)); + ActionManager::session_sensitive_actions.push_back (act); + act = global_actions.register_action (main_actions, X_("Metadata"), _("Metadata")); ActionManager::session_sensitive_actions.push_back (act); @@ -266,8 +263,6 @@ ARDOUR_UI::install_actions () global_actions.register_action (common_actions, X_("Quit"), _("Quit"), (hide_return (sigc::mem_fun(*this, &ARDOUR_UI::finish)))); global_actions.register_action (common_actions, X_("Hide"), _("Hide"), sigc::mem_fun (*this, &ARDOUR_UI::hide_application)); - global_actions.register_action (common_actions, X_("show-editor"), _("Show"), sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::show_tabbable), editor)); - global_actions.register_action (common_actions, X_("show-mixer"), _("Show"), sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::show_tabbable), mixer)); global_actions.register_action (common_actions, X_("show-preferences"), _("Show"), sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::show_tabbable), rc_option_editor)); global_actions.register_action (common_actions, X_("menu-show-preferences"), _("Preferences"), sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::show_tabbable), rc_option_editor)); @@ -283,6 +278,77 @@ ARDOUR_UI::install_actions () global_actions.register_action (common_actions, X_("detach-mixer"), _("Detach"), sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::detach_tabbable), mixer)); global_actions.register_action (common_actions, X_("detach-preferences"), _("Detach"), sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::detach_tabbable), rc_option_editor)); + Glib::RefPtr window_actions = ARDOUR_UI::instance()->global_actions.create_action_group (X_("Window")); + global_actions.register_action (window_actions, X_("show-mixer"), _("Show Mixer"), sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::show_tabbable), mixer)); + + /* these actions are all currently implemented by the Editor, but need + * to be accessible from anywhere as actions. + */ + + act = global_actions.register_action (common_actions, "alternate-jump-forward-to-mark", _("Jump to Next Mark"), sigc::mem_fun(editor, &PublicEditor::jump_forward_to_mark)); + ActionManager::session_sensitive_actions.push_back (act); + act = global_actions.register_action (common_actions, "alternate-jump-backward-to-mark", _("Jump to Previous Mark"), sigc::mem_fun(editor, &PublicEditor::jump_backward_to_mark)); + ActionManager::session_sensitive_actions.push_back (act); + + act = global_actions.register_action (common_actions, "set-session-start-from-playhead", _("Set Session Start from Playhead"), sigc::mem_fun(editor, &PublicEditor::set_session_start_from_playhead)); + ActionManager::session_sensitive_actions.push_back (act); + act = global_actions.register_action (common_actions, "set-session-end-from-playhead", _("Set Session End from Playhead"), sigc::mem_fun(editor, &PublicEditor::set_session_end_from_playhead)); + ActionManager::session_sensitive_actions.push_back (act); + + act = global_actions.register_action (common_actions, "toggle-location-at-playhead", _("Toggle Mark at Playhead"), sigc::mem_fun(editor, &PublicEditor::toggle_location_at_playhead_cursor)); + ActionManager::session_sensitive_actions.push_back (act); + act = global_actions.register_action (common_actions, "add-location-from-playhead", _("Add Mark from Playhead"), sigc::mem_fun(editor, &PublicEditor::add_location_from_playhead_cursor)); + ActionManager::session_sensitive_actions.push_back (act); + act = global_actions.register_action (common_actions, "alternate-add-location-from-playhead", _("Add Mark from Playhead"), sigc::mem_fun(editor, &PublicEditor::add_location_from_playhead_cursor)); + ActionManager::session_sensitive_actions.push_back (act); + + act = global_actions.register_action (common_actions, "remove-location-from-playhead", _("Remove Mark at Playhead"), sigc::mem_fun(editor, &PublicEditor::remove_location_at_playhead_cursor)); + ActionManager::session_sensitive_actions.push_back (act); + act = global_actions.register_action (common_actions, "alternate-remove-location-from-playhead", _("Remove Mark at Playhead"), sigc::mem_fun(editor, &PublicEditor::remove_location_at_playhead_cursor)); + ActionManager::session_sensitive_actions.push_back (act); + + act = global_actions.register_action (common_actions, "nudge-next-forward", _("Nudge Next Later"), sigc::bind (sigc::mem_fun(editor, &PublicEditor::nudge_forward), true, false)); + ActionManager::session_sensitive_actions.push_back (act); + act = global_actions.register_action (common_actions, "nudge-next-backward", _("Nudge Next Earlier"), sigc::bind (sigc::mem_fun(editor, &PublicEditor::nudge_backward), true, false)); + ActionManager::session_sensitive_actions.push_back (act); + + act = global_actions.register_action (common_actions, "nudge-playhead-forward", _("Nudge Playhead Forward"), sigc::bind (sigc::mem_fun(editor, &PublicEditor::nudge_forward), false, true)); + ActionManager::session_sensitive_actions.push_back (act); + act = global_actions.register_action (common_actions, "nudge-playhead-backward", _("Nudge Playhead Backward"), sigc::bind (sigc::mem_fun(editor, &PublicEditor::nudge_backward), false, true)); + ActionManager::session_sensitive_actions.push_back (act); + act = global_actions.register_action (common_actions, "playhead-forward-to-grid", _("Playhead to Next Grid"), sigc::mem_fun(editor, &PublicEditor::playhead_forward_to_grid)); + ActionManager::session_sensitive_actions.push_back (act); + act = global_actions.register_action (common_actions, "playhead-backward-to-grid", _("Playhead to Previous Grid"), sigc::mem_fun(editor, &PublicEditor::playhead_backward_to_grid)); + ActionManager::session_sensitive_actions.push_back (act); + + act = global_actions.register_action (common_actions, "start-range-from-playhead", _("Start Range from Playhead"), sigc::bind (sigc::mem_fun(editor, &PublicEditor::keyboard_selection_begin), Editing::EDIT_IGNORE_MOUSE )); + ActionManager::session_sensitive_actions.push_back (act); + act = global_actions.register_action (common_actions, "finish-range-from-playhead", _("Finish Range from Playhead"), sigc::bind (sigc::mem_fun(editor, &PublicEditor::keyboard_selection_finish), false, Editing::EDIT_IGNORE_MOUSE )); + ActionManager::session_sensitive_actions.push_back (act); + act = global_actions.register_action (common_actions, "start-range", _("Start Range"), sigc::bind (sigc::mem_fun(editor, &PublicEditor::keyboard_selection_begin), Editing::EDIT_IGNORE_NONE)); + ActionManager::session_sensitive_actions.push_back (act); + act = global_actions.register_action (common_actions, "finish-range", _("Finish Range"), sigc::bind (sigc::mem_fun(editor, &PublicEditor::keyboard_selection_finish), false, Editing::EDIT_IGNORE_NONE)); + ActionManager::session_sensitive_actions.push_back (act); + act = global_actions.register_action (common_actions, "start-punch-range", _("Start Punch Range"), sigc::mem_fun(editor, &PublicEditor::set_punch_start_from_edit_point)); + ActionManager::session_sensitive_actions.push_back (act); + act = global_actions.register_action (common_actions, "finish-punch-range", _("Finish Punch Range"), sigc::mem_fun(editor, &PublicEditor::set_punch_end_from_edit_point)); + ActionManager::session_sensitive_actions.push_back (act); + act = global_actions.register_action (common_actions, "start-loop-range", _("Start Loop Range"), sigc::mem_fun(editor, &PublicEditor::set_loop_start_from_edit_point)); + ActionManager::session_sensitive_actions.push_back (act); + act = global_actions.register_action (common_actions, "finish-loop-range", _("Finish Loop Range"), sigc::mem_fun(editor, &PublicEditor::set_loop_end_from_edit_point)); + ActionManager::session_sensitive_actions.push_back (act); + act = global_actions.register_action (common_actions, "alt-start-range", _("Start Range"), sigc::bind (sigc::mem_fun(editor, &PublicEditor::keyboard_selection_begin), Editing::EDIT_IGNORE_NONE)); + ActionManager::session_sensitive_actions.push_back (act); + act = global_actions.register_action (common_actions, "alt-finish-range", _("Finish Range"), sigc::bind (sigc::mem_fun(editor, &PublicEditor::keyboard_selection_finish), false, Editing::EDIT_IGNORE_NONE)); + ActionManager::session_sensitive_actions.push_back (act); + + act = global_actions.register_action (common_actions, "select-all-tracks", _("Select All Tracks"), sigc::mem_fun(editor, &PublicEditor::select_all_tracks)); + ActionManager::session_sensitive_actions.push_back (act); + act = global_actions.register_action (common_actions, "deselect-all", _("Deselect All"), sigc::mem_fun(editor, &PublicEditor::deselect_all)); + ActionManager::session_sensitive_actions.push_back (act); + act = global_actions.register_action (common_actions, "invert-selection", _("Invert Selection"), sigc::mem_fun(editor, &PublicEditor::invert_selection)); + ActionManager::session_sensitive_actions.push_back (act); + /* These "change" actions are not intended to be used inside menus, but are for the tab/window control buttons, which have somewhat odd semantics. @@ -310,12 +376,6 @@ ARDOUR_UI::install_actions () global_actions.register_toggle_action (common_actions, X_("ToggleMaximalMixer"), _("Maximise Mixer Space"), sigc::mem_fun (*this, &ARDOUR_UI::toggle_mixer_space)); ActionManager::session_sensitive_actions.push_back (act); - act = global_actions.register_toggle_action (common_actions, X_("ToggleMixerList"), _("Toggle Mixer List"), sigc::mem_fun (*this, &ARDOUR_UI::toggle_mixer_list)); - ActionManager::session_sensitive_actions.push_back (act); - - act = global_actions.register_toggle_action (common_actions, X_("ToggleMonitorSection"), _("Toggle Monitor Section Visibility"), sigc::mem_fun (*this, &ARDOUR_UI::toggle_monitor_section_visibility)); - act->set_sensitive (false); - if (Profile->get_mixbus()) { global_actions.register_action (common_actions, X_("show-ui-prefs"), _("Show more UI preferences"), sigc::mem_fun (*this, &ARDOUR_UI::show_ui_prefs)); } @@ -341,6 +401,19 @@ ARDOUR_UI::install_actions () ActionManager::session_sensitive_actions.push_back (act); ActionManager::write_sensitive_actions.push_back (act); + act = global_actions.register_action (common_actions, + "jump-backward-to-mark", _("Jump to Previous Mark"), sigc::mem_fun(*editor, &PublicEditor::jump_backward_to_mark)); + ActionManager::session_sensitive_actions.push_back (act); + + act = global_actions.register_action (common_actions, + "jump-forward-to-mark", _("Jump to Next Mark"), sigc::mem_fun(*editor, &PublicEditor::jump_forward_to_mark)); + ActionManager::session_sensitive_actions.push_back (act); + + act = global_actions.register_action (common_actions, + X_("addExistingAudioFiles"), _("Import"), sigc::mem_fun (*editor, &PublicEditor::external_audio_dialog)); + ActionManager::session_sensitive_actions.push_back (act); + ActionManager::write_sensitive_actions.push_back (act); + Glib::RefPtr transport_actions = global_actions.create_action_group (X_("Transport")); /* do-nothing action for the "transport" menu bar item */ @@ -391,10 +464,22 @@ ARDOUR_UI::install_actions () act = global_actions.register_action (transport_actions, X_("PlaySelection"), _("Play Selection"), sigc::mem_fun(*this, &ARDOUR_UI::transport_play_selection)); ActionManager::session_sensitive_actions.push_back (act); ActionManager::transport_sensitive_actions.push_back (act); - act = global_actions.register_action (transport_actions, X_("PlayPreroll"), _("Play Selection w/Preroll"), sigc::mem_fun(*this, &ARDOUR_UI::transport_play_preroll)); + act = global_actions.register_action (transport_actions, X_("PlayPreroll"), _("Play w/Preroll"), sigc::mem_fun(*this, &ARDOUR_UI::transport_play_preroll)); + ActionManager::session_sensitive_actions.push_back (act); + ActionManager::transport_sensitive_actions.push_back (act); + act = global_actions.register_action (transport_actions, X_("solo-selection"), _("Solo Selection"), sigc::bind (sigc::mem_fun(*editor, &PublicEditor::play_solo_selection), true)); ActionManager::session_sensitive_actions.push_back (act); ActionManager::transport_sensitive_actions.push_back (act); + + act = global_actions.register_action (transport_actions, X_("RecordPreroll"), _("Record w/Preroll"), sigc::mem_fun(*this, &ARDOUR_UI::transport_rec_preroll)); + ActionManager::session_sensitive_actions.push_back (act); + ActionManager::write_sensitive_actions.push_back (act); + + act = global_actions.register_action (transport_actions, X_("RecordCountIn"), _("Record w/Count-In"), sigc::mem_fun(*this, &ARDOUR_UI::transport_rec_count_in)); + ActionManager::session_sensitive_actions.push_back (act); + ActionManager::write_sensitive_actions.push_back (act); + act = global_actions.register_action (transport_actions, X_("Record"), _("Enable Record"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::transport_record), false)); ActionManager::session_sensitive_actions.push_back (act); ActionManager::write_sensitive_actions.push_back (act); @@ -488,7 +573,9 @@ ARDOUR_UI::install_actions () ActionManager::session_sensitive_actions.push_back (act); act = global_actions.register_action (transport_actions, X_("primary-clock-minsec"), _("Minutes & Seconds"), sigc::bind (sigc::mem_fun(primary_clock, &AudioClock::set_mode), AudioClock::MinSec, false)); ActionManager::session_sensitive_actions.push_back (act); - act = global_actions.register_action (transport_actions, X_("primary-clock-samples"), _("Samples"), sigc::bind (sigc::mem_fun(primary_clock, &AudioClock::set_mode), AudioClock::Frames, false)); + act = global_actions.register_action (transport_actions, X_("primary-clock-seconds"), _("Seconds"), sigc::bind (sigc::mem_fun(primary_clock, &AudioClock::set_mode), AudioClock::Seconds, false)); + ActionManager::session_sensitive_actions.push_back (act); + act = global_actions.register_action (transport_actions, X_("primary-clock-samples"), _("Samples"), sigc::bind (sigc::mem_fun(primary_clock, &AudioClock::set_mode), AudioClock::Samples, false)); ActionManager::session_sensitive_actions.push_back (act); act = global_actions.register_action (transport_actions, X_("secondary-clock-timecode"), _("Timecode"), sigc::bind (sigc::mem_fun(secondary_clock, &AudioClock::set_mode), AudioClock::Timecode, false)); @@ -497,7 +584,16 @@ ARDOUR_UI::install_actions () ActionManager::session_sensitive_actions.push_back (act); act = global_actions.register_action (transport_actions, X_("secondary-clock-minsec"), _("Minutes & Seconds"), sigc::bind (sigc::mem_fun(secondary_clock, &AudioClock::set_mode), AudioClock::MinSec, false)); ActionManager::session_sensitive_actions.push_back (act); - act = global_actions.register_action (transport_actions, X_("secondary-clock-samples"), _("Samples"), sigc::bind (sigc::mem_fun(secondary_clock, &AudioClock::set_mode), AudioClock::Frames, false)); + act = global_actions.register_action (transport_actions, X_("secondary-clock-seconds"), _("Seconds"), sigc::bind (sigc::mem_fun(secondary_clock, &AudioClock::set_mode), AudioClock::Seconds, false)); + ActionManager::session_sensitive_actions.push_back (act); + act = global_actions.register_action (transport_actions, X_("secondary-clock-samples"), _("Samples"), sigc::bind (sigc::mem_fun(secondary_clock, &AudioClock::set_mode), AudioClock::Samples, false)); + ActionManager::session_sensitive_actions.push_back (act); + + act = global_actions.register_toggle_action (transport_actions, X_("SessionMonitorIn"), _("All Input"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_session_monitoring_in)); + act->set_short_label (_("All In")); + ActionManager::session_sensitive_actions.push_back (act); + act = global_actions.register_toggle_action (transport_actions, X_("SessionMonitorDisk"), _("All Disk"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_session_monitoring_disk)); + act->set_short_label (_("All Disk")); ActionManager::session_sensitive_actions.push_back (act); act = global_actions.register_toggle_action (transport_actions, X_("TogglePunchIn"), _("Punch In"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_punch_in)); @@ -524,10 +620,26 @@ ARDOUR_UI::install_actions () act = global_actions.register_toggle_action (transport_actions, X_("ToggleAutoReturn"), _("Auto Return"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_auto_return)); ActionManager::session_sensitive_actions.push_back (act); ActionManager::transport_sensitive_actions.push_back (act); - act = global_actions.register_toggle_action (transport_actions, X_("ToggleFollowEdits"), _("Follow Edits"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_follow_edits)); + act = global_actions.register_toggle_action (transport_actions, X_("ToggleFollowEdits"), _("Follow Range"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_follow_edits)); ActionManager::session_sensitive_actions.push_back (act); ActionManager::transport_sensitive_actions.push_back (act); + /* Monitor actions (accessible globally) */ + /* ...will get sensitized if a mon-section is added */ + + act = global_actions.register_action (main_actions, X_("MonitorMenu"), _("Monitor Section")); + ActionManager::session_sensitive_actions.push_back (act); + + Glib::RefPtr monitor_actions = global_actions.create_action_group (X_("Monitor")); + + act = global_actions.register_toggle_action (monitor_actions, X_("UseMonitorSection"), _("Use Monitor Section"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_use_monitor_section)); + ActionManager::session_sensitive_actions.push_back (act); + act = global_actions.register_toggle_action (monitor_actions, "monitor-mono", _("Monitor Section: Mono"), sigc::mem_fun (*this, &ARDOUR_UI::monitor_mono)); + act->set_sensitive(false); + act = global_actions.register_toggle_action (monitor_actions, "monitor-cut-all", _("Monitor Section: Mute"), sigc::mem_fun (*this, &ARDOUR_UI::monitor_cut_all)); + act->set_sensitive(false); + act = global_actions.register_toggle_action (monitor_actions, "monitor-dim-all", _("Monitor Section: Dim"), sigc::mem_fun (*this, &ARDOUR_UI::monitor_dim_all)); + act->set_sensitive(false); act = global_actions.register_toggle_action (transport_actions, X_("ToggleVideoSync"), _("Sync Startup to Video"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_video_sync)); ActionManager::session_sensitive_actions.push_back (act); @@ -558,13 +670,13 @@ ARDOUR_UI::install_actions () ActionManager::session_sensitive_actions.push_back (act); act = global_actions.register_toggle_action (option_actions, X_("SendMidiClock"), _("Send MIDI Clock"), sigc::mem_fun (*this, &ARDOUR_UI::toggle_send_midi_clock)); ActionManager::session_sensitive_actions.push_back (act); - act = global_actions.register_toggle_action (option_actions, X_("SendMIDIfeedback"), _("Send MIDI Feedback"), sigc::mem_fun (*this, &ARDOUR_UI::toggle_send_midi_feedback)); - ActionManager::session_sensitive_actions.push_back (act); /* MIDI */ Glib::RefPtr midi_actions = global_actions.create_action_group (X_("MIDI")); - global_actions.register_action (midi_actions, X_("panic"), _("Panic"), sigc::mem_fun(*this, &ARDOUR_UI::midi_panic)); + act = global_actions.register_action (midi_actions, X_("panic"), _("Panic (Send MIDI all-notes-off)"), sigc::mem_fun(*this, &ARDOUR_UI::midi_panic)); + ActionManager::session_sensitive_actions.push_back (act); + ActionManager::transport_sensitive_actions.push_back (act); } void @@ -574,72 +686,55 @@ ARDOUR_UI::build_menu_bar () menu_bar->set_name ("MainMenuBar"); EventBox* ev = manage (new EventBox); + ev->set_name ("MainMenuBar"); ev->show (); - CairoHPacker* hbox = manage (new CairoHPacker); - hbox->set_name (X_("StatusBarBox")); - hbox->show (); - hbox->set_border_width (3); - - VBox* vbox = manage (new VBox); - vbox->pack_start (*hbox, true, false); - vbox->show(); - ev->add (*vbox); + Gtk::HBox* hbox = manage (new Gtk::HBox); + hbox->show (); + hbox->set_border_width (2); + ev->add (*hbox); wall_clock_label.set_name ("WallClock"); wall_clock_label.set_use_markup (); - disk_space_label.set_name ("WallClock"); - disk_space_label.set_use_markup (); timecode_format_label.set_name ("WallClock"); timecode_format_label.set_use_markup (); - cpu_load_label.set_name ("CPULoad"); - cpu_load_label.set_use_markup (); - xrun_label.set_name ("XrunLabel"); - xrun_label.set_use_markup (); peak_thread_work_label.set_name ("PeakThreadWork"); peak_thread_work_label.set_use_markup (); - buffer_load_label.set_name ("BufferLoad"); - buffer_load_label.set_use_markup (); sample_rate_label.set_name ("SampleRate"); sample_rate_label.set_use_markup (); format_label.set_name ("Format"); format_label.set_use_markup (); -#ifndef TOP_MENUBAR - menu_hbox.pack_start (*menu_bar, false, false); -#else +#ifdef __APPLE__ use_menubar_as_top_menubar (); +#else + menu_hbox.pack_start (*menu_bar, false, false); #endif hbox->pack_end (error_alert_button, false, false, 2); - - hbox->pack_end (wall_clock_label, false, false, 2); + hbox->pack_end (dsp_load_label, false, false, 4); hbox->pack_end (disk_space_label, false, false, 4); - hbox->pack_end (xrun_label, false, false, 4); - hbox->pack_end (peak_thread_work_label, false, false, 4); - hbox->pack_end (cpu_load_label, false, false, 4); - hbox->pack_end (buffer_load_label, false, false, 4); hbox->pack_end (sample_rate_label, false, false, 4); hbox->pack_end (timecode_format_label, false, false, 4); hbox->pack_end (format_label, false, false, 4); + hbox->pack_end (peak_thread_work_label, false, false, 4); + hbox->pack_end (wall_clock_label, false, false, 2); - menu_hbox.pack_end (*ev, false, false, 2); + menu_hbox.pack_end (*ev, true, true, 2); menu_bar_base.set_name ("MainMenuBar"); menu_bar_base.add (menu_hbox); #ifndef __APPLE__ // OSX provides its own wallclock, thank you very much - _status_bar_visibility.add (&wall_clock_label, X_("WallClock"), _("Wall Clock"), true); + _status_bar_visibility.add (&wall_clock_label, X_("WallClock"), _("Wall Clock"), false); #endif - _status_bar_visibility.add (&disk_space_label, X_("Disk"), _("Disk Space"), !Profile->get_small_screen()); - _status_bar_visibility.add (&cpu_load_label, X_("DSP"), _("DSP"), true); - _status_bar_visibility.add (&xrun_label, X_("XRun"), _("X-run"), false); _status_bar_visibility.add (&peak_thread_work_label,X_("Peakfile"), _("Active Peak-file Work"), false); - _status_bar_visibility.add (&buffer_load_label, X_("Buffers"), _("Buffers"), true); + _status_bar_visibility.add (&format_label, X_("Format"), _("File Format"), false); + _status_bar_visibility.add (&timecode_format_label, X_("TCFormat"), _("Timecode Format"), false); _status_bar_visibility.add (&sample_rate_label, X_("Audio"), _("Audio"), true); - _status_bar_visibility.add (&timecode_format_label, X_("TCFormat"), _("Timecode Format"), true); - _status_bar_visibility.add (&format_label, X_("Format"), _("File Format"), true); + _status_bar_visibility.add (&disk_space_label, X_("Disk"), _("Disk Space"), !Profile->get_small_screen()); + _status_bar_visibility.add (&dsp_load_label, X_("DSP"), _("DSP"), true); ev->signal_button_press_event().connect (sigc::mem_fun (_status_bar_visibility, &VisibilityGroup::button_press_event)); ev->signal_button_release_event().connect (sigc::mem_fun (*this, &ARDOUR_UI::xrun_button_release)); @@ -651,8 +746,8 @@ ARDOUR_UI::use_menubar_as_top_menubar () Gtk::Widget* widget; Application* app = Application::instance (); - /* the addresses ("/ui/Main...") used below are based on the menu definitions in the menus file - */ + /* the addresses ("/ui/Main...") used below are based on the menu definitions in the menus file + */ /* Quit will be taken care of separately */ @@ -668,11 +763,11 @@ ARDOUR_UI::use_menubar_as_top_menubar () if ((widget = ActionManager::get_widget ("/ui/Main/Session/toggle-about"))) { app->add_app_menu_item (group, dynamic_cast(widget)); - } + } if ((widget = ActionManager::get_widget ("/ui/Main/Edit/menu-show-preferences"))) { app->add_app_menu_item (group, dynamic_cast(widget)); - } + } app->set_menu_bar (*menu_bar); } @@ -688,13 +783,11 @@ ARDOUR_UI::save_ardour_state () a different lifetime model from add_instant_xml(). */ - LocaleGuard lg; // one guard to rule them all XMLNode* node = new XMLNode (keyboard->get_state()); Config->add_extra_xml (*node); - Config->add_extra_xml (get_transport_controllable_state()); XMLNode* window_node = new XMLNode (X_("UI")); - window_node->add_property (_status_bar_visibility.get_state_name().c_str(), _status_bar_visibility.get_state_value ()); + window_node->set_property (_status_bar_visibility.get_state_name().c_str(), _status_bar_visibility.get_state_value ()); /* main window */ @@ -703,10 +796,10 @@ ARDOUR_UI::save_ardour_state () _main_window.get_size (mw, mh); XMLNode main_window_node (X_("Main")); - main_window_node.add_property (X_("x"), PBD::to_string (mx, std::dec)); - main_window_node.add_property (X_("y"), PBD::to_string (my, std::dec)); - main_window_node.add_property (X_("w"), PBD::to_string (mw, std::dec)); - main_window_node.add_property (X_("h"), PBD::to_string (mh, std::dec)); + main_window_node.set_property (X_("x"), mx); + main_window_node.set_property (X_("y"), my); + main_window_node.set_property (X_("w"), mw); + main_window_node.set_property (X_("h"), mh); string current_tab; int current_page_number = _tabs.get_current_page (); @@ -718,7 +811,7 @@ ARDOUR_UI::save_ardour_state () current_tab = "preferences"; } - main_window_node.add_property (X_("current-tab"), current_tab); + main_window_node.set_property (X_("current-tab"), current_tab); /* Windows */ @@ -744,6 +837,8 @@ ARDOUR_UI::save_ardour_state () Config->save_state(); + mixer->save_plugin_order_file(); + UIConfiguration::instance().save_state (); if (_session) { @@ -777,9 +872,6 @@ ARDOUR_UI::save_ardour_state () void ARDOUR_UI::resize_text_widgets () { - set_size_request_to_display_given_text (cpu_load_label, "DSP: 100.0%", 2, 2); - set_size_request_to_display_given_text (buffer_load_label, "Buffers: p:100% c:100%", 2, 2); - set_size_request_to_display_given_text (xrun_label, "X: 9999", 2, 2); } void @@ -799,7 +891,7 @@ ARDOUR_UI::xrun_button_release (GdkEventButton* ev) if (_session) { _session->reset_xrun_count (); - update_xrun_count (); + update_cpu_load (); } return true; }