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"));
73 ActionManager::register_action (main_actions, X_("TransportOptions"), _("Options"));
75 /* the real actions */
77 act = ActionManager::register_action (main_actions, X_("New"), _("New"), bind (mem_fun(*this, &ARDOUR_UI::new_session), false, string ()));
79 ActionManager::register_action (main_actions, X_("Open"), _("Open"), mem_fun(*this, &ARDOUR_UI::open_session));
80 ActionManager::register_action (main_actions, X_("Recent"), _("Recent"), mem_fun(*this, &ARDOUR_UI::open_recent_session));
81 act = ActionManager::register_action (main_actions, X_("Close"), _("Close"), mem_fun(*this, &ARDOUR_UI::close_session));
82 ActionManager::session_sensitive_actions.push_back (act);
84 act = ActionManager::register_action (main_actions, X_("AddTrackBus"), _("Add Track/Bus"), mem_fun(*this, &ARDOUR_UI::add_route));
85 ActionManager::session_sensitive_actions.push_back (act);
91 vector<string*>* results = scanner (getenv ("PATH"), "AniComp", false, false);
94 if (!results->empty()) {
95 act = ActionManager::register_action (main_actions, X_("aniConnect"), _("Connect"), (mem_fun (*editor, &PublicEditor::connect_to_image_compositor)));
96 ActionManager::session_sensitive_actions.push_back (act);
101 /* </CMT Additions> */
103 act = ActionManager::register_action (main_actions, X_("Snapshot"), _("Snapshot"), mem_fun(*this, &ARDOUR_UI::snapshot_session));
104 ActionManager::session_sensitive_actions.push_back (act);
106 act = ActionManager::register_action (main_actions, X_("SaveTemplate"), _("Save Template..."), mem_fun(*this, &ARDOUR_UI::save_template));
107 ActionManager::session_sensitive_actions.push_back (act);
109 act = ActionManager::register_action (main_actions, X_("ExportSession"), _("Export session to audiofile..."), mem_fun (*editor, &PublicEditor::export_session));
110 ActionManager::session_sensitive_actions.push_back (act);
112 act = ActionManager::register_action (main_actions, X_("ExportRange"), _("Export range to audiofile..."), mem_fun (*editor, &PublicEditor::export_selection));
113 ActionManager::session_sensitive_actions.push_back (act);
115 act = ActionManager::register_action (main_actions, X_("Export"), _("Export"));
116 ActionManager::session_sensitive_actions.push_back (act);
118 act = ActionManager::register_action (main_actions, X_("CleanupUnused"), _("Cleanup unused sources"), mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::cleanup));
119 ActionManager::session_sensitive_actions.push_back (act);
120 act = ActionManager::register_action (main_actions, X_("FlushWastebasket"), _("Flush wastebasket"), mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::flush_trash));
121 ActionManager::session_sensitive_actions.push_back (act);
123 /* JACK actions for controlling ... JACK */
125 Glib::RefPtr<ActionGroup> jack_actions = ActionGroup::create (X_("JACK"));
126 ActionManager::register_action (jack_actions, X_("JACK"), _("JACK"));
127 ActionManager::register_action (jack_actions, X_("Latency"), _("Latency"));
129 act = ActionManager::register_action (jack_actions, X_("JACKReconnect"), _("Reconnect"), mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::reconnect_to_jack));
130 ActionManager::jack_opposite_sensitive_actions.push_back (act);
132 act = ActionManager::register_action (jack_actions, X_("JACKDisconnect"), _("Disconnect"), mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::disconnect_from_jack));
133 ActionManager::jack_sensitive_actions.push_back (act);
135 RadioAction::Group jack_latency_group;
137 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));
138 ActionManager::jack_sensitive_actions.push_back (act);
139 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));
140 ActionManager::jack_sensitive_actions.push_back (act);
141 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));
142 ActionManager::jack_sensitive_actions.push_back (act);
143 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));
144 ActionManager::jack_sensitive_actions.push_back (act);
145 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));
146 ActionManager::jack_sensitive_actions.push_back (act);
147 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));
148 ActionManager::jack_sensitive_actions.push_back (act);
149 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));
150 ActionManager::jack_sensitive_actions.push_back (act);
151 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));
152 ActionManager::jack_sensitive_actions.push_back (act);
153 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));
154 ActionManager::jack_sensitive_actions.push_back (act);
156 /* these actions are intended to be shared across all windows */
158 common_actions = ActionGroup::create (X_("Common"));
159 ActionManager::register_action (main_actions, X_("Windows"), _("Windows"));
160 ActionManager::register_action (common_actions, X_("Start-Prefix"), _("start prefix"), mem_fun(*this, &ARDOUR_UI::start_keyboard_prefix));
161 ActionManager::register_action (common_actions, X_("Quit"), _("Quit"), (mem_fun(*this, &ARDOUR_UI::finish)));
163 /* windows visibility actions */
165 ActionManager::register_action (common_actions, X_("GotoEditor"), _("Editor"), mem_fun(*this, &ARDOUR_UI::goto_editor_window));
166 ActionManager::register_action (common_actions, X_("GotoMixer"), _("Mixer"), mem_fun(*this, &ARDOUR_UI::goto_mixer_window));
167 ActionManager::register_toggle_action (common_actions, X_("ToggleSoundFileBrowser"), _("Sound File Browser"), mem_fun(*this, &ARDOUR_UI::toggle_sound_file_browser));
168 ActionManager::register_toggle_action (common_actions, X_("ToggleOptionsEditor"), _("Options Editor"), mem_fun(*this, &ARDOUR_UI::toggle_options_window));
169 act = ActionManager::register_toggle_action (common_actions, X_("ToggleInspector"), _("Track/Bus Inspector"), mem_fun(*this, &ARDOUR_UI::toggle_route_params_window));
170 ActionManager::session_sensitive_actions.push_back (act);
171 act = ActionManager::register_toggle_action (common_actions, X_("ToggleConnections"), _("Connections"), mem_fun(*this, &ARDOUR_UI::toggle_connection_editor));
172 ActionManager::session_sensitive_actions.push_back (act);
173 act = ActionManager::register_toggle_action (common_actions, X_("ToggleLocations"), _("Locations"), mem_fun(*this, &ARDOUR_UI::toggle_location_window));
174 ActionManager::session_sensitive_actions.push_back (act);
175 act = ActionManager::register_toggle_action (common_actions, X_("ToggleBigClock"), _("Big Clock"), mem_fun(*this, &ARDOUR_UI::toggle_big_clock_window));
176 ActionManager::session_sensitive_actions.push_back (act);
177 ActionManager::register_action (common_actions, X_("About"), _("About"), mem_fun(*this, &ARDOUR_UI::show_splash));
179 act = ActionManager::register_action (common_actions, X_("AddAudioTrack"), _("add audio track"), bind (mem_fun(*this, &ARDOUR_UI::session_add_audio_track), 1, 1));
180 ActionManager::session_sensitive_actions.push_back (act);
181 act = ActionManager::register_action (common_actions, X_("AddAudioBus"), _("add audio bus"), bind (mem_fun(*this, &ARDOUR_UI::session_add_audio_bus), 1, 1));
182 ActionManager::session_sensitive_actions.push_back (act);
183 act = ActionManager::register_action (common_actions, X_("Save"), _("Save"), bind (mem_fun(*this, &ARDOUR_UI::save_state), string("")));
184 ActionManager::session_sensitive_actions.push_back (act);
185 act = ActionManager::register_action (common_actions, X_("RemoveLastCapture"), _("remove last capture"), mem_fun(*this, &ARDOUR_UI::remove_last_capture));
186 ActionManager::session_sensitive_actions.push_back (act);
188 Glib::RefPtr<ActionGroup> transport_actions = ActionGroup::create (X_("Transport"));
190 /* do-nothing action for the "transport" menu bar item */
192 ActionManager::register_action (transport_actions, X_("Transport"), _("Transport"));
194 /* these two are not used by key bindings, instead use ToggleRoll for that. these two do show up in
195 menus and via button proxies.
198 act = ActionManager::register_action (transport_actions, X_("Stop"), _("stop"), mem_fun(*this, &ARDOUR_UI::transport_stop));
199 ActionManager::session_sensitive_actions.push_back (act);
200 ActionManager::transport_sensitive_actions.push_back (act);
201 act = ActionManager::register_action (transport_actions, X_("Roll"), _("roll"), mem_fun(*this, &ARDOUR_UI::transport_roll));
202 ActionManager::session_sensitive_actions.push_back (act);
203 ActionManager::transport_sensitive_actions.push_back (act);
205 ActionManager::register_action (transport_actions, X_("ToggleRoll"), _("start/stop"), bind (mem_fun (*editor, &PublicEditor::toggle_playback), false));
206 ActionManager::session_sensitive_actions.push_back (act);
207 ActionManager::transport_sensitive_actions.push_back (act);
208 ActionManager::register_action (transport_actions, X_("ToggleRollForgetCapture"), _("stop + forget capture"), bind (mem_fun(*editor, &PublicEditor::toggle_playback), true));
209 ActionManager::session_sensitive_actions.push_back (act);
210 ActionManager::transport_sensitive_actions.push_back (act);
211 act = ActionManager::register_action (transport_actions, X_("Loop"), _("play loop range"), mem_fun(*this, &ARDOUR_UI::toggle_session_auto_loop));
212 ActionManager::session_sensitive_actions.push_back (act);
213 ActionManager::transport_sensitive_actions.push_back (act);
214 act = ActionManager::register_action (transport_actions, X_("PlaySelection"), _("play selection"), mem_fun(*this, &ARDOUR_UI::transport_play_selection));
215 ActionManager::session_sensitive_actions.push_back (act);
216 ActionManager::transport_sensitive_actions.push_back (act);
218 act = ActionManager::register_action (transport_actions, X_("Record"), _("enable record"), mem_fun(*this, &ARDOUR_UI::transport_record));
219 ActionManager::session_sensitive_actions.push_back (act);
220 ActionManager::transport_sensitive_actions.push_back (act);
221 act = ActionManager::register_action (transport_actions, X_("Rewind"), _("rewind"), bind (mem_fun(*this, &ARDOUR_UI::transport_rewind), 0));
222 ActionManager::session_sensitive_actions.push_back (act);
223 ActionManager::transport_sensitive_actions.push_back (act);
224 act = ActionManager::register_action (transport_actions, X_("RewindSlow"), _("rewind (slow)"), bind (mem_fun(*this, &ARDOUR_UI::transport_rewind), -1));
225 ActionManager::session_sensitive_actions.push_back (act);
226 ActionManager::transport_sensitive_actions.push_back (act);
227 act = ActionManager::register_action (transport_actions, X_("RewindFast"), _("rewind (fast)"), bind (mem_fun(*this, &ARDOUR_UI::transport_rewind), 1));
228 ActionManager::session_sensitive_actions.push_back (act);
229 ActionManager::transport_sensitive_actions.push_back (act);
230 act = ActionManager::register_action (transport_actions, X_("Forward"), _("forward"), bind (mem_fun(*this, &ARDOUR_UI::transport_forward), 0));
231 ActionManager::session_sensitive_actions.push_back (act);
232 ActionManager::transport_sensitive_actions.push_back (act);
233 act = ActionManager::register_action (transport_actions, X_("ForwardSlow"), _("forward (slow)"), bind (mem_fun(*this, &ARDOUR_UI::transport_forward), -1));
234 ActionManager::session_sensitive_actions.push_back (act);
235 ActionManager::transport_sensitive_actions.push_back (act);
236 act = ActionManager::register_action (transport_actions, X_("ForwardFast"), _("forward (fast)"), bind (mem_fun(*this, &ARDOUR_UI::transport_forward), 1));
237 ActionManager::session_sensitive_actions.push_back (act);
238 ActionManager::transport_sensitive_actions.push_back (act);
239 act = ActionManager::register_action (transport_actions, X_("GotoStart"), _("goto start"), mem_fun(*this, &ARDOUR_UI::transport_goto_start));
240 ActionManager::session_sensitive_actions.push_back (act);
241 ActionManager::transport_sensitive_actions.push_back (act);
242 act = ActionManager::register_action (transport_actions, X_("GotoEnd"), _("goto end"), mem_fun(*this, &ARDOUR_UI::transport_goto_end));
243 ActionManager::session_sensitive_actions.push_back (act);
244 ActionManager::transport_sensitive_actions.push_back (act);
246 /* XXX the newline in the displayed names of these action is really wrong, but its because we want the button
247 that proxies for these action to be more compact. It would be nice to find a way to override the action
248 name appearance on the buttons.
251 act = ActionManager::register_toggle_action (transport_actions, X_("TogglePunchIn"), _("punch\nin"), mem_fun(*this, &ARDOUR_UI::toggle_punch_in));
252 ActionManager::session_sensitive_actions.push_back (act);
253 ActionManager::transport_sensitive_actions.push_back (act);
254 act = ActionManager::register_toggle_action (transport_actions, X_("TogglePunchOut"), _("punch\nout"), mem_fun(*this, &ARDOUR_UI::toggle_punch_out));
255 ActionManager::session_sensitive_actions.push_back (act);
256 ActionManager::transport_sensitive_actions.push_back (act);
257 act = ActionManager::register_toggle_action (transport_actions, X_("ToggleClick"), _("click"), mem_fun(*this, &ARDOUR_UI::toggle_click));
258 ActionManager::session_sensitive_actions.push_back (act);
259 ActionManager::transport_sensitive_actions.push_back (act);
260 act = ActionManager::register_toggle_action (transport_actions, X_("ToggleAutoInput"), _("auto\ninput"), mem_fun(*this, &ARDOUR_UI::toggle_auto_input));
261 ActionManager::session_sensitive_actions.push_back (act);
262 ActionManager::transport_sensitive_actions.push_back (act);
263 act = ActionManager::register_toggle_action (transport_actions, X_("ToggleAutoPlay"), _("auto\nplay"), mem_fun(*this, &ARDOUR_UI::toggle_auto_play));
264 ActionManager::session_sensitive_actions.push_back (act);
265 ActionManager::transport_sensitive_actions.push_back (act);
266 act = ActionManager::register_toggle_action (transport_actions, X_("ToggleAutoReturn"), _("auto\nreturn"), mem_fun(*this, &ARDOUR_UI::toggle_auto_return));
267 ActionManager::session_sensitive_actions.push_back (act);
268 ActionManager::transport_sensitive_actions.push_back (act);
270 act = ActionManager::register_toggle_action (transport_actions, X_("ToggleTimeMaster"), _("time\nmaster"), mem_fun(*this, &ARDOUR_UI::toggle_time_master));
271 ActionManager::session_sensitive_actions.push_back (act);
273 act = ActionManager::register_action (common_actions, X_("SendAllMidiFeedback"), _("send all midi feedback"), mem_fun(*this, &ARDOUR_UI::send_all_midi_feedback));
274 ActionManager::session_sensitive_actions.push_back (act);
275 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack1"), _("toggle record enable track1"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 0U));
276 ActionManager::session_sensitive_actions.push_back (act);
277 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack2"), _("toggle record enable track2"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 1U));
278 ActionManager::session_sensitive_actions.push_back (act);
279 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack3"), _("toggle record enable track3"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 2U));
280 ActionManager::session_sensitive_actions.push_back (act);
281 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack4"), _("toggle record enable track4"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 3U));
282 ActionManager::session_sensitive_actions.push_back (act);
283 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack5"), _("toggle record enable track5"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 4U));
284 ActionManager::session_sensitive_actions.push_back (act);
285 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack6"), _("toggle record enable track6"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 5U));
286 ActionManager::session_sensitive_actions.push_back (act);
287 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack7"), _("toggle record enable track7"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 6U));
288 ActionManager::session_sensitive_actions.push_back (act);
289 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack8"), _("toggle record enable track8"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 7U));
290 ActionManager::session_sensitive_actions.push_back (act);
291 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack9"), _("toggle record enable track9"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 8U));
292 ActionManager::session_sensitive_actions.push_back (act);
293 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack10"), _("toggle record enable track10"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 9U));
294 ActionManager::session_sensitive_actions.push_back (act);
295 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack11"), _("toggle record enable track11"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 10U));
296 ActionManager::session_sensitive_actions.push_back (act);
297 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack12"), _("toggle record enable track12"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 11U));
298 ActionManager::session_sensitive_actions.push_back (act);
299 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack13"), _("toggle record enable track13"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 12U));
300 ActionManager::session_sensitive_actions.push_back (act);
301 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack14"), _("toggle record enable track14"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 13U));
302 ActionManager::session_sensitive_actions.push_back (act);
303 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack15"), _("toggle record enable track15"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 14U));
304 ActionManager::session_sensitive_actions.push_back (act);
305 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack16"), _("toggle record enable track16"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 15U));
306 ActionManager::session_sensitive_actions.push_back (act);
307 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack17"), _("toggle record enable track17"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 16U));
308 ActionManager::session_sensitive_actions.push_back (act);
309 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack18"), _("toggle record enable track18"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 17U));
310 ActionManager::session_sensitive_actions.push_back (act);
311 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack19"), _("toggle record enable track19"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 18U));
312 ActionManager::session_sensitive_actions.push_back (act);
313 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack20"), _("toggle record enable track20"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 19U));
314 ActionManager::session_sensitive_actions.push_back (act);
315 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack21"), _("toggle record enable track21"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 20U));
316 ActionManager::session_sensitive_actions.push_back (act);
317 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack22"), _("toggle record enable track22"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 21U));
318 ActionManager::session_sensitive_actions.push_back (act);
319 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack23"), _("toggle record enable track23"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 22U));
320 ActionManager::session_sensitive_actions.push_back (act);
321 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack24"), _("toggle record enable track24"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 23U));
322 ActionManager::session_sensitive_actions.push_back (act);
323 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack25"), _("toggle record enable track25"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 24U));
324 ActionManager::session_sensitive_actions.push_back (act);
325 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack26"), _("toggle record enable track26"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 25U));
326 ActionManager::session_sensitive_actions.push_back (act);
327 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack27"), _("toggle record enable track27"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 26U));
328 ActionManager::session_sensitive_actions.push_back (act);
329 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack28"), _("toggle record enable track28"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 27U));
330 ActionManager::session_sensitive_actions.push_back (act);
331 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack29"), _("toggle record enable track29"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 28U));
332 ActionManager::session_sensitive_actions.push_back (act);
333 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack30"), _("toggle record enable track30"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 29U));
334 ActionManager::session_sensitive_actions.push_back (act);
335 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack31"), _("toggle record enable track31"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 30U));
336 ActionManager::session_sensitive_actions.push_back (act);
337 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack32"), _("toggle record enable track32"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 31U));
338 ActionManager::session_sensitive_actions.push_back (act);
340 Glib::RefPtr<ActionGroup> shuttle_actions = ActionGroup::create ("ShuttleActions");
342 shuttle_actions->add (Action::create (X_("SetShuttleUnitsPercentage"), _("Percentage")), bind (mem_fun(*this, &ARDOUR_UI::set_shuttle_units), Percentage));
343 shuttle_actions->add (Action::create (X_("SetShuttleUnitsSemitones"), _("Semitones")), bind (mem_fun(*this, &ARDOUR_UI::set_shuttle_units), Semitones));
345 Glib::RefPtr<ActionGroup> option_actions = ActionGroup::create ("options");
347 act = ActionManager::register_toggle_action (option_actions, X_("SendMTC"), _("Send MTC"), mem_fun (*this, &ARDOUR_UI::toggle_send_mtc));
348 ActionManager::session_sensitive_actions.push_back (act);
349 act = ActionManager::register_toggle_action (option_actions, X_("SendMMC"), _("Send MMC"), mem_fun (*this, &ARDOUR_UI::toggle_send_mtc));
350 ActionManager::session_sensitive_actions.push_back (act);
351 act = ActionManager::register_toggle_action (option_actions, X_("UseMMC"), _("Use MMC"), mem_fun (*this, &ARDOUR_UI::toggle_use_mmc));
352 ActionManager::session_sensitive_actions.push_back (act);
353 act = ActionManager::register_toggle_action (option_actions, X_("SendMIDIfeedback"), _("Send MIDI feedback"), mem_fun (*this, &ARDOUR_UI::toggle_send_midi_feedback));
354 ActionManager::session_sensitive_actions.push_back (act);
355 act = ActionManager::register_toggle_action (option_actions, X_("UseMIDIcontrol"), _("Use MIDI control"), mem_fun (*this, &ARDOUR_UI::toggle_use_midi_control));
356 ActionManager::session_sensitive_actions.push_back (act);
358 act = ActionManager::register_toggle_action (option_actions, X_("AutoConnectNewTrackInputsToHardware"), _("Connect newtrack inputs to hardware"), mem_fun (*this, &ARDOUR_UI::toggle_AutoConnectNewTrackInputsToHardware));
359 ActionManager::session_sensitive_actions.push_back (act);
361 RadioAction::Group connect_outputs_group;
363 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));
364 ActionManager::session_sensitive_actions.push_back (act);
365 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));
366 ActionManager::session_sensitive_actions.push_back (act);
367 act = ActionManager::register_radio_action (option_actions, connect_outputs_group, X_("ManuallyConnectNewTrackOutputs"), _("Manually connect new track outputs"), mem_fun (*this, &ARDOUR_UI::toggle_ManuallyConnectNewTrackOutputs));
368 ActionManager::session_sensitive_actions.push_back (act);
370 RadioAction::Group monitoring_group;
372 act = ActionManager::register_radio_action (option_actions, monitoring_group, X_("UseHardwareMonitoring"), _("Hardware monitoring"), mem_fun (*this, &ARDOUR_UI::toggle_UseHardwareMonitoring));
373 ActionManager::session_sensitive_actions.push_back (act);
374 act = ActionManager::register_radio_action (option_actions, monitoring_group, X_("UseSoftwareMonitoring"), _("Software monitoring"), mem_fun (*this, &ARDOUR_UI::toggle_UseSoftwareMonitoring));
375 ActionManager::session_sensitive_actions.push_back (act);
376 act = ActionManager::register_radio_action (option_actions, monitoring_group, X_("UseExternalMonitoring"), _("External monitoring"), mem_fun (*this, &ARDOUR_UI::toggle_UseExternalMonitoring));
377 ActionManager::session_sensitive_actions.push_back (act);
379 act = ActionManager::register_toggle_action (option_actions, X_("StopPluginsWithTransport"), _("Stop plugins with transport"), mem_fun (*this, &ARDOUR_UI::toggle_StopPluginsWithTransport));
380 ActionManager::session_sensitive_actions.push_back (act);
381 act = ActionManager::register_toggle_action (option_actions, X_("RunPluginsWhileRecording"), _("Run plugins while recording"), mem_fun (*this, &ARDOUR_UI::toggle_RunPluginsWhileRecording));
382 ActionManager::session_sensitive_actions.push_back (act);
384 act = ActionManager::register_toggle_action (option_actions, X_("VerifyRemoveLastCapture"), _("Verify remove last capture"), mem_fun (*this, &ARDOUR_UI::toggle_VerifyRemoveLastCapture));
385 ActionManager::session_sensitive_actions.push_back (act);
386 act = ActionManager::register_toggle_action (option_actions, X_("StopRecordingOnXrun"), _("Stop recording on xrun"), mem_fun (*this, &ARDOUR_UI::toggle_StopRecordingOnXrun));
387 ActionManager::session_sensitive_actions.push_back (act);
388 act = ActionManager::register_toggle_action (option_actions, X_("StopTransportAtEndOfSession"), _("Stop transport at session end"), mem_fun (*this, &ARDOUR_UI::toggle_StopTransportAtEndOfSession));
389 ActionManager::session_sensitive_actions.push_back (act);
390 act = ActionManager::register_toggle_action (option_actions, X_("GainReduceFastTransport"), _("-12dB gain reduce ffwd/rewind"), mem_fun (*this, &ARDOUR_UI::toggle_GainReduceFastTransport));
391 ActionManager::session_sensitive_actions.push_back (act);
393 act = ActionManager::register_toggle_action (option_actions, X_("LatchedSolo"), _("Latched solo"), mem_fun (*this, &ARDOUR_UI::toggle_LatchedSolo));
394 ActionManager::session_sensitive_actions.push_back (act);
396 RadioAction::Group solo_group;
398 act = ActionManager::register_radio_action (option_actions, solo_group, X_("SoloInPlace"), _("Solo in-place"), mem_fun (*this, &ARDOUR_UI::toggle_SoloViaBus));
399 act = ActionManager::register_radio_action (option_actions, solo_group, X_("SoloViaBus"), _("Solo via bus"), mem_fun (*this, &ARDOUR_UI::toggle_SoloViaBus));
400 ActionManager::session_sensitive_actions.push_back (act);
402 act = ActionManager::register_action (option_actions, X_("AutomaticallyCreateCrossfades"), _("Automatically create crossfades"), mem_fun (*this, &ARDOUR_UI::toggle_AutomaticallyCreateCrossfades));
403 ActionManager::session_sensitive_actions.push_back (act);
404 act = ActionManager::register_action (option_actions, X_("UnmuteNewFullCrossfades"), _("Unmute new full crossfades"), mem_fun (*this, &ARDOUR_UI::toggle_UnmuteNewFullCrossfades));
405 ActionManager::session_sensitive_actions.push_back (act);
409 act = ActionManager::register_action (option_actions, X_("SetRegionLayerMode", _("SetRegionLayerMode"), mem_fun (*this, &ARDOUR_UI::toggle_SetRegionLayerMode)));
410 ActionManager::session_sensitive_actions.push_back (act);
411 act = ActionManager::register_action (option_actions, X_("SetCrossfadeModel", _("SetCrossfadeModel"), mem_fun (*this, &ARDOUR_UI::toggle_SetCrossfadeModel)));
412 ActionManager::session_sensitive_actions.push_back (act);
416 ActionManager::add_action_group (shuttle_actions);
417 ActionManager::add_action_group (option_actions);
418 ActionManager::add_action_group (jack_actions);
419 ActionManager::add_action_group (transport_actions);
420 ActionManager::add_action_group (main_actions);
421 ActionManager::add_action_group (common_actions);
425 ARDOUR_UI::build_menu_bar ()
427 menu_bar = dynamic_cast<MenuBar*> (ActionManager::get_widget (X_("/Main")));
428 menu_bar->set_name ("MainMenuBar");
430 wall_clock_box.add (wall_clock_label);
431 wall_clock_box.set_name ("WallClock");
432 wall_clock_label.set_name ("WallClock");
434 disk_space_box.add (disk_space_label);
435 disk_space_box.set_name ("WallClock");
436 disk_space_label.set_name ("WallClock");
438 cpu_load_box.add (cpu_load_label);
439 cpu_load_box.set_name ("CPULoad");
440 cpu_load_label.set_name ("CPULoad");
442 buffer_load_box.add (buffer_load_label);
443 buffer_load_box.set_name ("BufferLoad");
444 buffer_load_label.set_name ("BufferLoad");
446 // disk_rate_box.add (disk_rate_label);
447 // disk_rate_box.set_name ("DiskRate");
448 // disk_rate_label.set_name ("DiskRate");
450 sample_rate_box.add (sample_rate_label);
451 sample_rate_box.set_name ("SampleRate");
452 sample_rate_label.set_name ("SampleRate");
454 menu_hbox.pack_start (*menu_bar, true, true);
455 menu_hbox.pack_end (wall_clock_box, false, false, 10);
456 menu_hbox.pack_end (disk_space_box, false, false, 10);
457 menu_hbox.pack_end (cpu_load_box, false, false, 10);
458 // menu_hbox.pack_end (disk_rate_box, false, false, 10);
459 menu_hbox.pack_end (buffer_load_box, false, false, 10);
460 menu_hbox.pack_end (sample_rate_box, false, false, 10);
462 menu_bar_base.set_name ("MainMenuBar");
463 menu_bar_base.add (menu_hbox);