2 Copyright (C) 20002-2004 Paul Davis
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 /* This file contains any ARDOUR_UI methods that require knowledge of
22 the editor, and exists so that no compilation dependency exists
23 between the main ARDOUR_UI modules and the PublicEditor class. This
24 is to cut down on the nasty compile times for both these classes.
27 #include <pbd/pathscanner.h>
29 #include "ardour_ui.h"
30 #include "public_editor.h"
31 #include "audio_clock.h"
35 #include <ardour/session.h>
39 using namespace ARDOUR;
41 using namespace Gtkmm2ext;
44 ARDOUR_UI::create_editor ()
48 editor = new Editor (*engine);
51 catch (failed_constructor& err) {
55 editor->Realized.connect (mem_fun (*this, &ARDOUR_UI::editor_realized));
61 ARDOUR_UI::install_actions ()
63 Glib::RefPtr<ActionGroup> main_actions = ActionGroup::create (X_("Main"));
64 Glib::RefPtr<Action> act;
66 /* menus + submenus that need action items */
68 ActionManager::register_action (main_actions, X_("Session"), _("Session"));
69 ActionManager::register_action (main_actions, X_("Export"), _("Export"));
70 ActionManager::register_action (main_actions, X_("Cleanup"), _("Cleanup"));
71 ActionManager::register_action (main_actions, X_("Sync"), _("Sync"));
72 ActionManager::register_action (main_actions, X_("Options"), _("Options"));
74 /* the real actions */
76 act = ActionManager::register_action (main_actions, X_("New"), _("New"), bind (mem_fun(*this, &ARDOUR_UI::new_session), false, string ()));
78 ActionManager::register_action (main_actions, X_("Open"), _("Open"), mem_fun(*this, &ARDOUR_UI::open_session));
79 ActionManager::register_action (main_actions, X_("Recent"), _("Recent"), mem_fun(*this, &ARDOUR_UI::open_recent_session));
80 act = ActionManager::register_action (main_actions, X_("Close"), _("Close"), mem_fun(*this, &ARDOUR_UI::close_session));
81 ActionManager::session_sensitive_actions.push_back (act);
83 act = ActionManager::register_action (main_actions, X_("AddTrackBus"), _("Add Track/Bus"), mem_fun(*this, &ARDOUR_UI::add_route));
84 ActionManager::session_sensitive_actions.push_back (act);
90 vector<string*>* results = scanner (getenv ("PATH"), "AniComp", false, false);
93 if (!results->empty()) {
94 act = ActionManager::register_action (main_actions, X_("aniConnect"), _("Connect"), (mem_fun (*editor, &PublicEditor::connect_to_image_compositor)));
95 ActionManager::session_sensitive_actions.push_back (act);
100 /* </CMT Additions> */
102 act = ActionManager::register_action (main_actions, X_("Snapshot"), _("Snapshot"), mem_fun(*this, &ARDOUR_UI::snapshot_session));
103 ActionManager::session_sensitive_actions.push_back (act);
105 act = ActionManager::register_action (main_actions, X_("SaveTemplate"), _("Save Template..."), mem_fun(*this, &ARDOUR_UI::save_template));
106 ActionManager::session_sensitive_actions.push_back (act);
108 act = ActionManager::register_action (main_actions, X_("ExportSession"), _("Export session to audiofile..."), mem_fun (*editor, &PublicEditor::export_session));
109 ActionManager::session_sensitive_actions.push_back (act);
111 act = ActionManager::register_action (main_actions, X_("ExportRange"), _("Export range to audiofile..."), mem_fun (*editor, &PublicEditor::export_selection));
112 ActionManager::session_sensitive_actions.push_back (act);
114 act = ActionManager::register_action (main_actions, X_("Export"), _("Export"));
115 ActionManager::session_sensitive_actions.push_back (act);
117 act = ActionManager::register_action (main_actions, X_("CleanupUnused"), _("Cleanup unused sources"), mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::cleanup));
118 ActionManager::session_sensitive_actions.push_back (act);
119 act = ActionManager::register_action (main_actions, X_("FlushWastebasket"), _("Flush wastebasket"), mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::flush_trash));
120 ActionManager::session_sensitive_actions.push_back (act);
122 /* JACK actions for controlling ... JACK */
124 Glib::RefPtr<ActionGroup> jack_actions = ActionGroup::create (X_("JACK"));
125 ActionManager::register_action (jack_actions, X_("JACK"), _("JACK"));
126 ActionManager::register_action (jack_actions, X_("Latency"), _("Latency"));
128 act = ActionManager::register_action (jack_actions, X_("JACKReconnect"), _("Reconnect"), mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::reconnect_to_jack));
129 ActionManager::jack_opposite_sensitive_actions.push_back (act);
131 act = ActionManager::register_action (jack_actions, X_("JACKDisconnect"), _("Disconnect"), mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::disconnect_from_jack));
132 ActionManager::jack_sensitive_actions.push_back (act);
134 RadioAction::Group jack_latency_group;
136 act = ActionManager::register_radio_action (jack_actions, jack_latency_group, X_("JACKLatency32"), X_("32"), bind (mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (jack_nframes_t) 32));
137 ActionManager::jack_sensitive_actions.push_back (act);
138 act = ActionManager::register_radio_action (jack_actions, jack_latency_group, X_("JACKLatency64"), X_("64"), bind (mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (jack_nframes_t) 64));
139 ActionManager::jack_sensitive_actions.push_back (act);
140 act = ActionManager::register_radio_action (jack_actions, jack_latency_group, X_("JACKLatency128"), X_("128"), bind (mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (jack_nframes_t) 128));
141 ActionManager::jack_sensitive_actions.push_back (act);
142 act = ActionManager::register_radio_action (jack_actions, jack_latency_group, X_("JACKLatency256"), X_("256"), bind (mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (jack_nframes_t) 256));
143 ActionManager::jack_sensitive_actions.push_back (act);
144 act = ActionManager::register_radio_action (jack_actions, jack_latency_group, X_("JACKLatency512"), X_("512"), bind (mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (jack_nframes_t) 512));
145 ActionManager::jack_sensitive_actions.push_back (act);
146 act = ActionManager::register_radio_action (jack_actions, jack_latency_group, X_("JACKLatency1024"), X_("1024"), bind (mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (jack_nframes_t) 1024));
147 ActionManager::jack_sensitive_actions.push_back (act);
148 act = ActionManager::register_radio_action (jack_actions, jack_latency_group, X_("JACKLatency2048"), X_("2048"), bind (mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (jack_nframes_t) 2048));
149 ActionManager::jack_sensitive_actions.push_back (act);
150 act = ActionManager::register_radio_action (jack_actions, jack_latency_group, X_("JACKLatency4096"), X_("4096"), bind (mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (jack_nframes_t) 4096));
151 ActionManager::jack_sensitive_actions.push_back (act);
152 act = ActionManager::register_radio_action (jack_actions, jack_latency_group, X_("JACKLatency8192"), X_("8192"), bind (mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (jack_nframes_t) 8192));
153 ActionManager::jack_sensitive_actions.push_back (act);
155 /* these actions are intended to be shared across all windows */
157 common_actions = ActionGroup::create (X_("Common"));
158 ActionManager::register_action (main_actions, X_("Windows"), _("Windows"));
159 ActionManager::register_action (common_actions, X_("Start-Prefix"), _("start prefix"), mem_fun(*this, &ARDOUR_UI::start_keyboard_prefix));
160 ActionManager::register_action (common_actions, X_("Quit"), _("Quit"), (mem_fun(*this, &ARDOUR_UI::finish)));
162 /* windows visibility actions */
164 ActionManager::register_action (common_actions, X_("GotoEditor"), _("Editor"), mem_fun(*this, &ARDOUR_UI::goto_editor_window));
165 ActionManager::register_action (common_actions, X_("GotoMixer"), _("Mixer"), mem_fun(*this, &ARDOUR_UI::goto_mixer_window));
166 ActionManager::register_toggle_action (common_actions, X_("ToggleSoundFileBrowser"), _("Sound File Browser"), mem_fun(*this, &ARDOUR_UI::toggle_sound_file_browser));
167 ActionManager::register_toggle_action (common_actions, X_("ToggleOptionsEditor"), _("Options Editor"), mem_fun(*this, &ARDOUR_UI::toggle_options_window));
168 act = ActionManager::register_toggle_action (common_actions, X_("ToggleInspector"), _("Track/Bus Inspector"), mem_fun(*this, &ARDOUR_UI::toggle_route_params_window));
169 ActionManager::session_sensitive_actions.push_back (act);
170 act = ActionManager::register_toggle_action (common_actions, X_("ToggleConnections"), _("Connections"), mem_fun(*this, &ARDOUR_UI::toggle_connection_editor));
171 ActionManager::session_sensitive_actions.push_back (act);
172 act = ActionManager::register_toggle_action (common_actions, X_("ToggleLocations"), _("Locations"), mem_fun(*this, &ARDOUR_UI::toggle_location_window));
173 ActionManager::session_sensitive_actions.push_back (act);
174 act = ActionManager::register_toggle_action (common_actions, X_("ToggleBigClock"), _("Big Clock"), mem_fun(*this, &ARDOUR_UI::toggle_big_clock_window));
175 ActionManager::session_sensitive_actions.push_back (act);
176 ActionManager::register_action (common_actions, X_("About"), _("About"), mem_fun(*this, &ARDOUR_UI::show_splash));
178 act = ActionManager::register_action (common_actions, X_("AddAudioTrack"), _("add audio track"), bind (mem_fun(*this, &ARDOUR_UI::session_add_audio_track), 1, 1));
179 ActionManager::session_sensitive_actions.push_back (act);
180 act = ActionManager::register_action (common_actions, X_("AddAudioBus"), _("add audio bus"), bind (mem_fun(*this, &ARDOUR_UI::session_add_audio_bus), 1, 1));
181 ActionManager::session_sensitive_actions.push_back (act);
182 act = ActionManager::register_action (common_actions, X_("Save"), _("Save"), bind (mem_fun(*this, &ARDOUR_UI::save_state), string("")));
183 ActionManager::session_sensitive_actions.push_back (act);
184 act = ActionManager::register_action (common_actions, X_("RemoveLastCapture"), _("remove last capture"), mem_fun(*this, &ARDOUR_UI::remove_last_capture));
185 ActionManager::session_sensitive_actions.push_back (act);
187 Glib::RefPtr<ActionGroup> transport_actions = ActionGroup::create (X_("Transport"));
189 /* do-nothing action for the "transport" menu bar item */
191 ActionManager::register_action (transport_actions, X_("Transport"), _("Transport"));
193 /* these two are not used by key bindings, instead use ToggleRoll for that. these two do show up in
194 menus and via button proxies.
197 act = ActionManager::register_action (transport_actions, X_("Stop"), _("stop"), mem_fun(*this, &ARDOUR_UI::transport_stop));
198 ActionManager::session_sensitive_actions.push_back (act);
199 ActionManager::transport_sensitive_actions.push_back (act);
200 act = ActionManager::register_action (transport_actions, X_("Roll"), _("roll"), mem_fun(*this, &ARDOUR_UI::transport_roll));
201 ActionManager::session_sensitive_actions.push_back (act);
202 ActionManager::transport_sensitive_actions.push_back (act);
204 ActionManager::register_action (transport_actions, X_("ToggleRoll"), _("start/stop"), bind (mem_fun (*editor, &PublicEditor::toggle_playback), false));
205 ActionManager::session_sensitive_actions.push_back (act);
206 ActionManager::transport_sensitive_actions.push_back (act);
207 ActionManager::register_action (transport_actions, X_("ToggleRollForgetCapture"), _("stop + forget capture"), bind (mem_fun(*editor, &PublicEditor::toggle_playback), true));
208 ActionManager::session_sensitive_actions.push_back (act);
209 ActionManager::transport_sensitive_actions.push_back (act);
210 act = ActionManager::register_action (transport_actions, X_("Loop"), _("play loop range"), mem_fun(*this, &ARDOUR_UI::toggle_session_auto_loop));
211 ActionManager::session_sensitive_actions.push_back (act);
212 ActionManager::transport_sensitive_actions.push_back (act);
213 act = ActionManager::register_action (transport_actions, X_("PlaySelection"), _("play selection"), mem_fun(*this, &ARDOUR_UI::transport_play_selection));
214 ActionManager::session_sensitive_actions.push_back (act);
215 ActionManager::transport_sensitive_actions.push_back (act);
217 act = ActionManager::register_action (transport_actions, X_("Record"), _("enable record"), mem_fun(*this, &ARDOUR_UI::transport_record));
218 ActionManager::session_sensitive_actions.push_back (act);
219 ActionManager::transport_sensitive_actions.push_back (act);
220 act = ActionManager::register_action (transport_actions, X_("Rewind"), _("rewind"), bind (mem_fun(*this, &ARDOUR_UI::transport_rewind), 0));
221 ActionManager::session_sensitive_actions.push_back (act);
222 ActionManager::transport_sensitive_actions.push_back (act);
223 act = ActionManager::register_action (transport_actions, X_("RewindSlow"), _("rewind (slow)"), bind (mem_fun(*this, &ARDOUR_UI::transport_rewind), -1));
224 ActionManager::session_sensitive_actions.push_back (act);
225 ActionManager::transport_sensitive_actions.push_back (act);
226 act = ActionManager::register_action (transport_actions, X_("RewindFast"), _("rewind (fast)"), bind (mem_fun(*this, &ARDOUR_UI::transport_rewind), 1));
227 ActionManager::session_sensitive_actions.push_back (act);
228 ActionManager::transport_sensitive_actions.push_back (act);
229 act = ActionManager::register_action (transport_actions, X_("Forward"), _("forward"), bind (mem_fun(*this, &ARDOUR_UI::transport_forward), 0));
230 ActionManager::session_sensitive_actions.push_back (act);
231 ActionManager::transport_sensitive_actions.push_back (act);
232 act = ActionManager::register_action (transport_actions, X_("ForwardSlow"), _("forward (slow)"), bind (mem_fun(*this, &ARDOUR_UI::transport_forward), -1));
233 ActionManager::session_sensitive_actions.push_back (act);
234 ActionManager::transport_sensitive_actions.push_back (act);
235 act = ActionManager::register_action (transport_actions, X_("ForwardFast"), _("forward (fast)"), bind (mem_fun(*this, &ARDOUR_UI::transport_forward), 1));
236 ActionManager::session_sensitive_actions.push_back (act);
237 ActionManager::transport_sensitive_actions.push_back (act);
238 act = ActionManager::register_action (transport_actions, X_("GotoStart"), _("goto start"), mem_fun(*this, &ARDOUR_UI::transport_goto_start));
239 ActionManager::session_sensitive_actions.push_back (act);
240 ActionManager::transport_sensitive_actions.push_back (act);
241 act = ActionManager::register_action (transport_actions, X_("GotoEnd"), _("goto end"), mem_fun(*this, &ARDOUR_UI::transport_goto_end));
242 ActionManager::session_sensitive_actions.push_back (act);
243 ActionManager::transport_sensitive_actions.push_back (act);
245 act = ActionManager::register_toggle_action (transport_actions, X_("TogglePunchIn"), _("punch in"), mem_fun(*this, &ARDOUR_UI::toggle_punch_in));
246 ActionManager::session_sensitive_actions.push_back (act);
247 ActionManager::transport_sensitive_actions.push_back (act);
248 act = ActionManager::register_toggle_action (transport_actions, X_("TogglePunchOut"), _("punch out"), mem_fun(*this, &ARDOUR_UI::toggle_punch_out));
249 ActionManager::session_sensitive_actions.push_back (act);
250 ActionManager::transport_sensitive_actions.push_back (act);
252 /* XXX the newline in the displayed name of this action is really wrong, but its because we want the button
253 that proxies for this action to be more compact. It would be nice to find a way to override the action
254 name appearance on the button.
257 act = ActionManager::register_action (transport_actions, X_("ToggleTimeMaster"), _("time\nmaster"), mem_fun(*this, &ARDOUR_UI::toggle_time_master));
258 ActionManager::session_sensitive_actions.push_back (act);
260 act = ActionManager::register_action (common_actions, X_("SendAllMidiFeedback"), _("send all midi feedback"), mem_fun(*this, &ARDOUR_UI::send_all_midi_feedback));
261 ActionManager::session_sensitive_actions.push_back (act);
262 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack1"), _("toggle record enable track1"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 0U));
263 ActionManager::session_sensitive_actions.push_back (act);
264 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack2"), _("toggle record enable track2"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 1U));
265 ActionManager::session_sensitive_actions.push_back (act);
266 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack3"), _("toggle record enable track3"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 2U));
267 ActionManager::session_sensitive_actions.push_back (act);
268 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack4"), _("toggle record enable track4"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 3U));
269 ActionManager::session_sensitive_actions.push_back (act);
270 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack5"), _("toggle record enable track5"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 4U));
271 ActionManager::session_sensitive_actions.push_back (act);
272 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack6"), _("toggle record enable track6"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 5U));
273 ActionManager::session_sensitive_actions.push_back (act);
274 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack7"), _("toggle record enable track7"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 6U));
275 ActionManager::session_sensitive_actions.push_back (act);
276 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack8"), _("toggle record enable track8"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 7U));
277 ActionManager::session_sensitive_actions.push_back (act);
278 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack9"), _("toggle record enable track9"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 8U));
279 ActionManager::session_sensitive_actions.push_back (act);
280 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack10"), _("toggle record enable track10"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 9U));
281 ActionManager::session_sensitive_actions.push_back (act);
282 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack11"), _("toggle record enable track11"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 10U));
283 ActionManager::session_sensitive_actions.push_back (act);
284 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack12"), _("toggle record enable track12"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 11U));
285 ActionManager::session_sensitive_actions.push_back (act);
286 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack13"), _("toggle record enable track13"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 12U));
287 ActionManager::session_sensitive_actions.push_back (act);
288 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack14"), _("toggle record enable track14"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 13U));
289 ActionManager::session_sensitive_actions.push_back (act);
290 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack15"), _("toggle record enable track15"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 14U));
291 ActionManager::session_sensitive_actions.push_back (act);
292 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack16"), _("toggle record enable track16"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 15U));
293 ActionManager::session_sensitive_actions.push_back (act);
294 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack17"), _("toggle record enable track17"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 16U));
295 ActionManager::session_sensitive_actions.push_back (act);
296 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack18"), _("toggle record enable track18"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 17U));
297 ActionManager::session_sensitive_actions.push_back (act);
298 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack19"), _("toggle record enable track19"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 18U));
299 ActionManager::session_sensitive_actions.push_back (act);
300 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack20"), _("toggle record enable track20"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 19U));
301 ActionManager::session_sensitive_actions.push_back (act);
302 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack21"), _("toggle record enable track21"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 20U));
303 ActionManager::session_sensitive_actions.push_back (act);
304 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack22"), _("toggle record enable track22"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 21U));
305 ActionManager::session_sensitive_actions.push_back (act);
306 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack23"), _("toggle record enable track23"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 22U));
307 ActionManager::session_sensitive_actions.push_back (act);
308 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack24"), _("toggle record enable track24"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 23U));
309 ActionManager::session_sensitive_actions.push_back (act);
310 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack25"), _("toggle record enable track25"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 24U));
311 ActionManager::session_sensitive_actions.push_back (act);
312 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack26"), _("toggle record enable track26"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 25U));
313 ActionManager::session_sensitive_actions.push_back (act);
314 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack27"), _("toggle record enable track27"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 26U));
315 ActionManager::session_sensitive_actions.push_back (act);
316 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack28"), _("toggle record enable track28"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 27U));
317 ActionManager::session_sensitive_actions.push_back (act);
318 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack29"), _("toggle record enable track29"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 28U));
319 ActionManager::session_sensitive_actions.push_back (act);
320 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack30"), _("toggle record enable track30"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 29U));
321 ActionManager::session_sensitive_actions.push_back (act);
322 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack31"), _("toggle record enable track31"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 30U));
323 ActionManager::session_sensitive_actions.push_back (act);
324 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack32"), _("toggle record enable track32"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 31U));
325 ActionManager::session_sensitive_actions.push_back (act);
327 Glib::RefPtr<ActionGroup> shuttle_actions = ActionGroup::create ("ShuttleActions");
329 shuttle_actions->add (Action::create (X_("SetShuttleUnitsPercentage"), _("Percentage")), bind (mem_fun(*this, &ARDOUR_UI::set_shuttle_units), Percentage));
330 shuttle_actions->add (Action::create (X_("SetShuttleUnitsSemitones"), _("Semitones")), bind (mem_fun(*this, &ARDOUR_UI::set_shuttle_units), Semitones));
332 Glib::RefPtr<ActionGroup> option_actions = ActionGroup::create ("options");
334 act = ActionManager::register_toggle_action (option_actions, X_("SendMTC"), _("Send MTC"), mem_fun (*this, &ARDOUR_UI::toggle_send_mtc));
335 ActionManager::session_sensitive_actions.push_back (act);
336 act = ActionManager::register_toggle_action (option_actions, X_("SendMMC"), _("Send MMC"), mem_fun (*this, &ARDOUR_UI::toggle_send_mtc));
337 ActionManager::session_sensitive_actions.push_back (act);
338 act = ActionManager::register_toggle_action (option_actions, X_("UseMMC"), _("Send MMC"), mem_fun (*this, &ARDOUR_UI::toggle_use_mmc));
339 ActionManager::session_sensitive_actions.push_back (act);
340 act = ActionManager::register_toggle_action (option_actions, X_("SendMIDIfeedback"), _("Send MIDI feedback"), mem_fun (*this, &ARDOUR_UI::toggle_send_midi_feedback));
341 ActionManager::session_sensitive_actions.push_back (act);
342 act = ActionManager::register_toggle_action (option_actions, X_("UseMIDIcontrol"), _("Use MIDI control"), mem_fun (*this, &ARDOUR_UI::toggle_use_midi_control));
343 ActionManager::session_sensitive_actions.push_back (act);
345 act = ActionManager::register_toggle_action (option_actions, X_("AutoConnectNewTrackInputsToHardware"), _("Connect newtrack inputs to hardware"), mem_fun (*this, &ARDOUR_UI::toggle_AutoConnectNewTrackInputsToHardware));
346 ActionManager::session_sensitive_actions.push_back (act);
348 RadioAction::Group connect_outputs_group;
350 act = ActionManager::register_radio_action (option_actions, connect_outputs_group, X_("AutoConnectNewTrackOutputsToHardware"), _("Connect new track outputs to hardware"), mem_fun (*this, &ARDOUR_UI::toggle_AutoConnectNewTrackOutputsToHardware));
351 ActionManager::session_sensitive_actions.push_back (act);
352 act = ActionManager::register_radio_action (option_actions, connect_outputs_group, X_("AutoConnectNewTrackOutputsToMaster"), _("Connect new track outputs to master"), mem_fun (*this, &ARDOUR_UI::toggle_AutoConnectNewTrackOutputsToMaster));
353 ActionManager::session_sensitive_actions.push_back (act);
354 act = ActionManager::register_radio_action (option_actions, connect_outputs_group, X_("ManuallyConnectNewTrackOutputs"), _("Manually connect new track outputs"), mem_fun (*this, &ARDOUR_UI::toggle_ManuallyConnectNewTrackOutputs));
355 ActionManager::session_sensitive_actions.push_back (act);
357 RadioAction::Group monitoring_group;
359 act = ActionManager::register_radio_action (option_actions, monitoring_group, X_("UseHardwareMonitoring"), _("Hardware monitoring"), mem_fun (*this, &ARDOUR_UI::toggle_UseHardwareMonitoring));
360 ActionManager::session_sensitive_actions.push_back (act);
361 act = ActionManager::register_radio_action (option_actions, monitoring_group, X_("UseSoftwareMonitoring"), _("Software monitoring"), mem_fun (*this, &ARDOUR_UI::toggle_UseSoftwareMonitoring));
362 ActionManager::session_sensitive_actions.push_back (act);
363 act = ActionManager::register_radio_action (option_actions, monitoring_group, X_("UseExternalMonitoring"), _("External monitoring"), mem_fun (*this, &ARDOUR_UI::toggle_UseExternalMonitoring));
364 ActionManager::session_sensitive_actions.push_back (act);
366 act = ActionManager::register_toggle_action (option_actions, X_("StopPluginsWithTransport"), _("Stop plugins with transport"), mem_fun (*this, &ARDOUR_UI::toggle_StopPluginsWithTransport));
367 ActionManager::session_sensitive_actions.push_back (act);
368 act = ActionManager::register_toggle_action (option_actions, X_("RunPluginsWhileRecording"), _("Run plugins while recording"), mem_fun (*this, &ARDOUR_UI::toggle_RunPluginsWhileRecording));
369 ActionManager::session_sensitive_actions.push_back (act);
371 act = ActionManager::register_toggle_action (option_actions, X_("VerifyRemoveLastCapture"), _("Verify remove last capture"), mem_fun (*this, &ARDOUR_UI::toggle_VerifyRemoveLastCapture));
372 ActionManager::session_sensitive_actions.push_back (act);
373 act = ActionManager::register_toggle_action (option_actions, X_("StopRecordingOnXrun"), _("Stop recording on xrun"), mem_fun (*this, &ARDOUR_UI::toggle_StopRecordingOnXrun));
374 ActionManager::session_sensitive_actions.push_back (act);
375 act = ActionManager::register_toggle_action (option_actions, X_("StopTransportAtEndOfSession"), _("Stop transport at session end"), mem_fun (*this, &ARDOUR_UI::toggle_StopTransportAtEndOfSession));
376 ActionManager::session_sensitive_actions.push_back (act);
377 act = ActionManager::register_toggle_action (option_actions, X_("GainReduceFastTransport"), _("-12dB gain reduce ffwd/rewind"), mem_fun (*this, &ARDOUR_UI::toggle_GainReduceFastTransport));
378 ActionManager::session_sensitive_actions.push_back (act);
380 act = ActionManager::register_toggle_action (option_actions, X_("LatchedSolo"), _("Latched solo"), mem_fun (*this, &ARDOUR_UI::toggle_LatchedSolo));
381 ActionManager::session_sensitive_actions.push_back (act);
383 RadioAction::Group solo_group;
385 act = ActionManager::register_radio_action (option_actions, solo_group, X_("SoloInPlace"), _("Solo in-place"), mem_fun (*this, &ARDOUR_UI::toggle_SoloViaBus));
386 act = ActionManager::register_radio_action (option_actions, solo_group, X_("SoloViaBus"), _("Solo via bus"), mem_fun (*this, &ARDOUR_UI::toggle_SoloViaBus));
387 ActionManager::session_sensitive_actions.push_back (act);
389 act = ActionManager::register_action (option_actions, X_("AutomaticallyCreateCrossfades"), _("Automatically create crossfades"), mem_fun (*this, &ARDOUR_UI::toggle_AutomaticallyCreateCrossfades));
390 ActionManager::session_sensitive_actions.push_back (act);
391 act = ActionManager::register_action (option_actions, X_("UnmuteNewFullCrossfades"), _("Unmute new full crossfades"), mem_fun (*this, &ARDOUR_UI::toggle_UnmuteNewFullCrossfades));
392 ActionManager::session_sensitive_actions.push_back (act);
395 act = ActionManager::register_action (option_actions, X_("SetRegionLayerMode", _("SetRegionLayerMode"), mem_fun (*this, &ARDOUR_UI::toggle_SetRegionLayerMode)));
396 ActionManager::session_sensitive_actions.push_back (act);
397 act = ActionManager::register_action (option_actions, X_("SetCrossfadeModel", _("SetCrossfadeModel"), mem_fun (*this, &ARDOUR_UI::toggle_SetCrossfadeModel)));
398 ActionManager::session_sensitive_actions.push_back (act);
402 ActionManager::add_action_group (shuttle_actions);
403 ActionManager::add_action_group (option_actions);
404 ActionManager::add_action_group (jack_actions);
405 ActionManager::add_action_group (transport_actions);
406 ActionManager::add_action_group (main_actions);
407 ActionManager::add_action_group (common_actions);
411 ARDOUR_UI::build_menu_bar ()
413 menu_bar = dynamic_cast<MenuBar*> (ActionManager::get_widget (X_("/Main")));
414 menu_bar->set_name ("MainMenuBar");
416 wall_clock_box.add (wall_clock_label);
417 wall_clock_box.set_name ("WallClock");
418 wall_clock_label.set_name ("WallClock");
420 disk_space_box.add (disk_space_label);
421 disk_space_box.set_name ("WallClock");
422 disk_space_label.set_name ("WallClock");
424 cpu_load_box.add (cpu_load_label);
425 cpu_load_box.set_name ("CPULoad");
426 cpu_load_label.set_name ("CPULoad");
428 buffer_load_box.add (buffer_load_label);
429 buffer_load_box.set_name ("BufferLoad");
430 buffer_load_label.set_name ("BufferLoad");
432 // disk_rate_box.add (disk_rate_label);
433 // disk_rate_box.set_name ("DiskRate");
434 // disk_rate_label.set_name ("DiskRate");
436 sample_rate_box.add (sample_rate_label);
437 sample_rate_box.set_name ("SampleRate");
438 sample_rate_label.set_name ("SampleRate");
440 menu_hbox.pack_start (*menu_bar, true, true);
441 menu_hbox.pack_end (wall_clock_box, false, false, 10);
442 menu_hbox.pack_end (disk_space_box, false, false, 10);
443 menu_hbox.pack_end (cpu_load_box, false, false, 10);
444 // menu_hbox.pack_end (disk_rate_box, false, false, 10);
445 menu_hbox.pack_end (buffer_load_box, false, false, 10);
446 menu_hbox.pack_end (sample_rate_box, false, false, 10);
448 menu_bar_base.set_name ("MainMenuBar");
449 menu_bar_base.add (menu_hbox);