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"));
74 ActionManager::register_action (main_actions, X_("Help"), _("Help"));
75 ActionManager::register_action (main_actions, X_("KeyMouse Actions"), _("KeyMouse Actions"));
76 /* the real actions */
78 act = ActionManager::register_action (main_actions, X_("New"), _("New"), bind (mem_fun(*this, &ARDOUR_UI::new_session), false, string ()));
80 ActionManager::register_action (main_actions, X_("Open"), _("Open"), mem_fun(*this, &ARDOUR_UI::open_session));
81 ActionManager::register_action (main_actions, X_("Recent"), _("Recent"), mem_fun(*this, &ARDOUR_UI::open_recent_session));
82 act = ActionManager::register_action (main_actions, X_("Close"), _("Close"), mem_fun(*this, &ARDOUR_UI::close_session));
83 ActionManager::session_sensitive_actions.push_back (act);
85 act = ActionManager::register_action (main_actions, X_("AddTrackBus"), _("Add Track/Bus"), mem_fun(*this, &ARDOUR_UI::add_route));
86 ActionManager::session_sensitive_actions.push_back (act);
92 vector<string*>* results = scanner (getenv ("PATH"), "AniComp", false, false);
95 if (!results->empty()) {
96 act = ActionManager::register_action (main_actions, X_("aniConnect"), _("Connect"), (mem_fun (*editor, &PublicEditor::connect_to_image_compositor)));
97 ActionManager::session_sensitive_actions.push_back (act);
102 /* </CMT Additions> */
104 act = ActionManager::register_action (main_actions, X_("Snapshot"), _("Snapshot"), mem_fun(*this, &ARDOUR_UI::snapshot_session));
105 ActionManager::session_sensitive_actions.push_back (act);
107 act = ActionManager::register_action (main_actions, X_("SaveTemplate"), _("Save Template..."), mem_fun(*this, &ARDOUR_UI::save_template));
108 ActionManager::session_sensitive_actions.push_back (act);
110 act = ActionManager::register_action (main_actions, X_("ExportSession"), _("Export session to audiofile..."), mem_fun (*editor, &PublicEditor::export_session));
111 ActionManager::session_sensitive_actions.push_back (act);
113 act = ActionManager::register_action (main_actions, X_("ExportRange"), _("Export range to audiofile..."), mem_fun (*editor, &PublicEditor::export_selection));
114 ActionManager::session_sensitive_actions.push_back (act);
116 act = ActionManager::register_action (main_actions, X_("Export"), _("Export"));
117 ActionManager::session_sensitive_actions.push_back (act);
119 act = ActionManager::register_action (main_actions, X_("CleanupUnused"), _("Cleanup unused sources"), mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::cleanup));
120 ActionManager::session_sensitive_actions.push_back (act);
121 act = ActionManager::register_action (main_actions, X_("FlushWastebasket"), _("Flush wastebasket"), mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::flush_trash));
122 ActionManager::session_sensitive_actions.push_back (act);
124 /* JACK actions for controlling ... JACK */
126 Glib::RefPtr<ActionGroup> jack_actions = ActionGroup::create (X_("JACK"));
127 ActionManager::register_action (jack_actions, X_("JACK"), _("JACK"));
128 ActionManager::register_action (jack_actions, X_("Latency"), _("Latency"));
130 act = ActionManager::register_action (jack_actions, X_("JACKReconnect"), _("Reconnect"), mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::reconnect_to_jack));
131 ActionManager::jack_opposite_sensitive_actions.push_back (act);
133 act = ActionManager::register_action (jack_actions, X_("JACKDisconnect"), _("Disconnect"), mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::disconnect_from_jack));
134 ActionManager::jack_sensitive_actions.push_back (act);
136 RadioAction::Group jack_latency_group;
138 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));
139 ActionManager::jack_sensitive_actions.push_back (act);
140 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));
141 ActionManager::jack_sensitive_actions.push_back (act);
142 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));
143 ActionManager::jack_sensitive_actions.push_back (act);
144 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));
145 ActionManager::jack_sensitive_actions.push_back (act);
146 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));
147 ActionManager::jack_sensitive_actions.push_back (act);
148 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));
149 ActionManager::jack_sensitive_actions.push_back (act);
150 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));
151 ActionManager::jack_sensitive_actions.push_back (act);
152 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));
153 ActionManager::jack_sensitive_actions.push_back (act);
154 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));
155 ActionManager::jack_sensitive_actions.push_back (act);
157 /* these actions are intended to be shared across all windows */
159 common_actions = ActionGroup::create (X_("Common"));
160 ActionManager::register_action (main_actions, X_("Windows"), _("Windows"));
161 ActionManager::register_action (common_actions, X_("Start-Prefix"), _("start prefix"), mem_fun(*this, &ARDOUR_UI::start_keyboard_prefix));
162 ActionManager::register_action (common_actions, X_("Quit"), _("Quit"), (mem_fun(*this, &ARDOUR_UI::finish)));
164 /* windows visibility actions */
166 ActionManager::register_toggle_action (common_actions, X_("ToggleMaximalEditor"), _("maximise editor space"), mem_fun (*this, &ARDOUR_UI::toggle_editing_space));
168 ActionManager::register_action (common_actions, X_("goto-editor"), _("show editor"), mem_fun(*this, &ARDOUR_UI::goto_editor_window));
169 ActionManager::register_action (common_actions, X_("goto-mixer"), _("show mixer"), mem_fun(*this, &ARDOUR_UI::goto_mixer_window));
170 ActionManager::register_toggle_action (common_actions, X_("ToggleSoundFileBrowser"), _("Sound File Browser"), mem_fun(*this, &ARDOUR_UI::toggle_sound_file_browser));
171 ActionManager::register_toggle_action (common_actions, X_("ToggleOptionsEditor"), _("Options Editor"), mem_fun(*this, &ARDOUR_UI::toggle_options_window));
172 act = ActionManager::register_toggle_action (common_actions, X_("ToggleInspector"), _("Track/Bus Inspector"), mem_fun(*this, &ARDOUR_UI::toggle_route_params_window));
173 ActionManager::session_sensitive_actions.push_back (act);
174 act = ActionManager::register_toggle_action (common_actions, X_("ToggleConnections"), _("Connections"), mem_fun(*this, &ARDOUR_UI::toggle_connection_editor));
175 ActionManager::session_sensitive_actions.push_back (act);
176 act = ActionManager::register_toggle_action (common_actions, X_("ToggleLocations"), _("Locations"), mem_fun(*this, &ARDOUR_UI::toggle_location_window));
177 ActionManager::session_sensitive_actions.push_back (act);
178 act = ActionManager::register_toggle_action (common_actions, X_("ToggleBigClock"), _("Big Clock"), mem_fun(*this, &ARDOUR_UI::toggle_big_clock_window));
179 ActionManager::session_sensitive_actions.push_back (act);
180 ActionManager::register_action (common_actions, X_("About"), _("About"), mem_fun(*this, &ARDOUR_UI::show_splash));
182 act = ActionManager::register_action (common_actions, X_("AddAudioTrack"), _("add audio track"), bind (mem_fun(*this, &ARDOUR_UI::session_add_audio_track), 1, 1, ARDOUR::Normal));
183 ActionManager::session_sensitive_actions.push_back (act);
184 act = ActionManager::register_action (common_actions, X_("AddAudioBus"), _("add audio bus"), bind (mem_fun(*this, &ARDOUR_UI::session_add_audio_bus), 1, 1));
185 ActionManager::session_sensitive_actions.push_back (act);
186 act = ActionManager::register_action (common_actions, X_("Save"), _("Save"), bind (mem_fun(*this, &ARDOUR_UI::save_state), string("")));
187 ActionManager::session_sensitive_actions.push_back (act);
188 act = ActionManager::register_action (common_actions, X_("RemoveLastCapture"), _("remove last capture"), mem_fun(*this, &ARDOUR_UI::remove_last_capture));
189 ActionManager::session_sensitive_actions.push_back (act);
191 Glib::RefPtr<ActionGroup> transport_actions = ActionGroup::create (X_("Transport"));
193 /* do-nothing action for the "transport" menu bar item */
195 ActionManager::register_action (transport_actions, X_("Transport"), _("Transport"));
197 /* these two are not used by key bindings, instead use ToggleRoll for that. these two do show up in
198 menus and via button proxies.
201 act = ActionManager::register_action (transport_actions, X_("Stop"), _("stop"), mem_fun(*this, &ARDOUR_UI::transport_stop));
202 ActionManager::session_sensitive_actions.push_back (act);
203 ActionManager::transport_sensitive_actions.push_back (act);
204 act = ActionManager::register_action (transport_actions, X_("Roll"), _("roll"), mem_fun(*this, &ARDOUR_UI::transport_roll));
205 ActionManager::session_sensitive_actions.push_back (act);
206 ActionManager::transport_sensitive_actions.push_back (act);
208 ActionManager::register_action (transport_actions, X_("ToggleRoll"), _("start/stop"), bind (mem_fun (*editor, &PublicEditor::toggle_playback), false));
209 ActionManager::session_sensitive_actions.push_back (act);
210 ActionManager::transport_sensitive_actions.push_back (act);
211 ActionManager::register_action (transport_actions, X_("ToggleRollForgetCapture"), _("stop + forget capture"), bind (mem_fun(*editor, &PublicEditor::toggle_playback), true));
212 ActionManager::session_sensitive_actions.push_back (act);
213 ActionManager::transport_sensitive_actions.push_back (act);
214 act = ActionManager::register_action (transport_actions, X_("Loop"), _("play loop range"), mem_fun(*this, &ARDOUR_UI::toggle_session_auto_loop));
215 ActionManager::session_sensitive_actions.push_back (act);
216 ActionManager::transport_sensitive_actions.push_back (act);
217 act = ActionManager::register_action (transport_actions, X_("PlaySelection"), _("play selection"), mem_fun(*this, &ARDOUR_UI::transport_play_selection));
218 ActionManager::session_sensitive_actions.push_back (act);
219 ActionManager::transport_sensitive_actions.push_back (act);
221 act = ActionManager::register_action (transport_actions, X_("Record"), _("enable record"), mem_fun(*this, &ARDOUR_UI::transport_record));
222 ActionManager::session_sensitive_actions.push_back (act);
223 ActionManager::transport_sensitive_actions.push_back (act);
224 act = ActionManager::register_action (transport_actions, X_("Rewind"), _("rewind"), bind (mem_fun(*this, &ARDOUR_UI::transport_rewind), 0));
225 ActionManager::session_sensitive_actions.push_back (act);
226 ActionManager::transport_sensitive_actions.push_back (act);
227 act = ActionManager::register_action (transport_actions, X_("RewindSlow"), _("rewind (slow)"), 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_("RewindFast"), _("rewind (fast)"), bind (mem_fun(*this, &ARDOUR_UI::transport_rewind), 1));
231 ActionManager::session_sensitive_actions.push_back (act);
232 ActionManager::transport_sensitive_actions.push_back (act);
233 act = ActionManager::register_action (transport_actions, X_("Forward"), _("forward"), bind (mem_fun(*this, &ARDOUR_UI::transport_forward), 0));
234 ActionManager::session_sensitive_actions.push_back (act);
235 ActionManager::transport_sensitive_actions.push_back (act);
236 act = ActionManager::register_action (transport_actions, X_("ForwardSlow"), _("forward (slow)"), 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_("ForwardFast"), _("forward (fast)"), bind (mem_fun(*this, &ARDOUR_UI::transport_forward), 1));
240 ActionManager::session_sensitive_actions.push_back (act);
241 ActionManager::transport_sensitive_actions.push_back (act);
242 act = ActionManager::register_action (transport_actions, X_("GotoStart"), _("goto start"), mem_fun(*this, &ARDOUR_UI::transport_goto_start));
243 ActionManager::session_sensitive_actions.push_back (act);
244 ActionManager::transport_sensitive_actions.push_back (act);
245 act = ActionManager::register_action (transport_actions, X_("GotoEnd"), _("goto end"), mem_fun(*this, &ARDOUR_UI::transport_goto_end));
246 ActionManager::session_sensitive_actions.push_back (act);
247 ActionManager::transport_sensitive_actions.push_back (act);
249 /* XXX the newline in the displayed names of these action is really wrong, but its because we want the button
250 that proxies for these action to be more compact. It would be nice to find a way to override the action
251 name appearance on the buttons.
254 act = ActionManager::register_toggle_action (transport_actions, X_("TogglePunchIn"), _("punch\nin"), mem_fun(*this, &ARDOUR_UI::toggle_punch_in));
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_("TogglePunchOut"), _("punch\nout"), mem_fun(*this, &ARDOUR_UI::toggle_punch_out));
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_("ToggleClick"), _("click"), mem_fun(*this, &ARDOUR_UI::toggle_click));
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_("ToggleAutoInput"), _("auto\ninput"), mem_fun(*this, &ARDOUR_UI::toggle_auto_input));
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_("ToggleAutoPlay"), _("auto\nplay"), mem_fun(*this, &ARDOUR_UI::toggle_auto_play));
267 ActionManager::session_sensitive_actions.push_back (act);
268 ActionManager::transport_sensitive_actions.push_back (act);
269 act = ActionManager::register_toggle_action (transport_actions, X_("ToggleAutoReturn"), _("auto\nreturn"), mem_fun(*this, &ARDOUR_UI::toggle_auto_return));
270 ActionManager::session_sensitive_actions.push_back (act);
271 ActionManager::transport_sensitive_actions.push_back (act);
273 act = ActionManager::register_toggle_action (transport_actions, X_("ToggleTimeMaster"), _("time\nmaster"), mem_fun(*this, &ARDOUR_UI::toggle_time_master));
274 ActionManager::session_sensitive_actions.push_back (act);
276 act = ActionManager::register_action (common_actions, X_("SendAllMidiFeedback"), _("send all midi feedback"), mem_fun(*this, &ARDOUR_UI::send_all_midi_feedback));
277 ActionManager::session_sensitive_actions.push_back (act);
278 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack1"), _("toggle record enable track1"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 0U));
279 ActionManager::session_sensitive_actions.push_back (act);
280 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack2"), _("toggle record enable track2"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 1U));
281 ActionManager::session_sensitive_actions.push_back (act);
282 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack3"), _("toggle record enable track3"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 2U));
283 ActionManager::session_sensitive_actions.push_back (act);
284 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack4"), _("toggle record enable track4"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 3U));
285 ActionManager::session_sensitive_actions.push_back (act);
286 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack5"), _("toggle record enable track5"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 4U));
287 ActionManager::session_sensitive_actions.push_back (act);
288 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack6"), _("toggle record enable track6"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 5U));
289 ActionManager::session_sensitive_actions.push_back (act);
290 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack7"), _("toggle record enable track7"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 6U));
291 ActionManager::session_sensitive_actions.push_back (act);
292 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack8"), _("toggle record enable track8"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 7U));
293 ActionManager::session_sensitive_actions.push_back (act);
294 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack9"), _("toggle record enable track9"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 8U));
295 ActionManager::session_sensitive_actions.push_back (act);
296 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack10"), _("toggle record enable track10"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 9U));
297 ActionManager::session_sensitive_actions.push_back (act);
298 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack11"), _("toggle record enable track11"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 10U));
299 ActionManager::session_sensitive_actions.push_back (act);
300 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack12"), _("toggle record enable track12"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 11U));
301 ActionManager::session_sensitive_actions.push_back (act);
302 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack13"), _("toggle record enable track13"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 12U));
303 ActionManager::session_sensitive_actions.push_back (act);
304 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack14"), _("toggle record enable track14"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 13U));
305 ActionManager::session_sensitive_actions.push_back (act);
306 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack15"), _("toggle record enable track15"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 14U));
307 ActionManager::session_sensitive_actions.push_back (act);
308 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack16"), _("toggle record enable track16"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 15U));
309 ActionManager::session_sensitive_actions.push_back (act);
310 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack17"), _("toggle record enable track17"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 16U));
311 ActionManager::session_sensitive_actions.push_back (act);
312 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack18"), _("toggle record enable track18"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 17U));
313 ActionManager::session_sensitive_actions.push_back (act);
314 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack19"), _("toggle record enable track19"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 18U));
315 ActionManager::session_sensitive_actions.push_back (act);
316 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack20"), _("toggle record enable track20"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 19U));
317 ActionManager::session_sensitive_actions.push_back (act);
318 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack21"), _("toggle record enable track21"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 20U));
319 ActionManager::session_sensitive_actions.push_back (act);
320 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack22"), _("toggle record enable track22"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 21U));
321 ActionManager::session_sensitive_actions.push_back (act);
322 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack23"), _("toggle record enable track23"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 22U));
323 ActionManager::session_sensitive_actions.push_back (act);
324 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack24"), _("toggle record enable track24"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 23U));
325 ActionManager::session_sensitive_actions.push_back (act);
326 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack25"), _("toggle record enable track25"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 24U));
327 ActionManager::session_sensitive_actions.push_back (act);
328 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack26"), _("toggle record enable track26"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 25U));
329 ActionManager::session_sensitive_actions.push_back (act);
330 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack27"), _("toggle record enable track27"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 26U));
331 ActionManager::session_sensitive_actions.push_back (act);
332 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack28"), _("toggle record enable track28"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 27U));
333 ActionManager::session_sensitive_actions.push_back (act);
334 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack29"), _("toggle record enable track29"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 28U));
335 ActionManager::session_sensitive_actions.push_back (act);
336 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack30"), _("toggle record enable track30"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 29U));
337 ActionManager::session_sensitive_actions.push_back (act);
338 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack31"), _("toggle record enable track31"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 30U));
339 ActionManager::session_sensitive_actions.push_back (act);
340 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack32"), _("toggle record enable track32"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 31U));
341 ActionManager::session_sensitive_actions.push_back (act);
343 Glib::RefPtr<ActionGroup> shuttle_actions = ActionGroup::create ("ShuttleActions");
345 shuttle_actions->add (Action::create (X_("SetShuttleUnitsPercentage"), _("Percentage")), bind (mem_fun(*this, &ARDOUR_UI::set_shuttle_units), Percentage));
346 shuttle_actions->add (Action::create (X_("SetShuttleUnitsSemitones"), _("Semitones")), bind (mem_fun(*this, &ARDOUR_UI::set_shuttle_units), Semitones));
348 Glib::RefPtr<ActionGroup> option_actions = ActionGroup::create ("options");
350 act = ActionManager::register_toggle_action (option_actions, X_("SendMTC"), _("Send MTC"), mem_fun (*this, &ARDOUR_UI::toggle_send_mtc));
351 ActionManager::session_sensitive_actions.push_back (act);
352 act = ActionManager::register_toggle_action (option_actions, X_("SendMMC"), _("Send MMC"), mem_fun (*this, &ARDOUR_UI::toggle_send_mtc));
353 ActionManager::session_sensitive_actions.push_back (act);
354 act = ActionManager::register_toggle_action (option_actions, X_("UseMMC"), _("Use MMC"), mem_fun (*this, &ARDOUR_UI::toggle_use_mmc));
355 ActionManager::session_sensitive_actions.push_back (act);
356 act = ActionManager::register_toggle_action (option_actions, X_("SendMIDIfeedback"), _("Send MIDI feedback"), mem_fun (*this, &ARDOUR_UI::toggle_send_midi_feedback));
357 ActionManager::session_sensitive_actions.push_back (act);
358 act = ActionManager::register_toggle_action (option_actions, X_("UseMIDIcontrol"), _("Use MIDI control"), mem_fun (*this, &ARDOUR_UI::toggle_use_midi_control));
359 ActionManager::session_sensitive_actions.push_back (act);
361 act = ActionManager::register_toggle_action (option_actions, X_("AutoConnectNewTrackInputsToHardware"), _("Connect newtrack inputs to hardware"), mem_fun (*this, &ARDOUR_UI::toggle_AutoConnectNewTrackInputsToHardware));
362 ActionManager::session_sensitive_actions.push_back (act);
364 RadioAction::Group connect_outputs_group;
366 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));
367 ActionManager::session_sensitive_actions.push_back (act);
368 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));
369 ActionManager::session_sensitive_actions.push_back (act);
370 act = ActionManager::register_radio_action (option_actions, connect_outputs_group, X_("ManuallyConnectNewTrackOutputs"), _("Manually connect new track outputs"), mem_fun (*this, &ARDOUR_UI::toggle_ManuallyConnectNewTrackOutputs));
371 ActionManager::session_sensitive_actions.push_back (act);
373 RadioAction::Group monitoring_group;
375 act = ActionManager::register_radio_action (option_actions, monitoring_group, X_("UseHardwareMonitoring"), _("Hardware monitoring"), mem_fun (*this, &ARDOUR_UI::toggle_UseHardwareMonitoring));
376 ActionManager::session_sensitive_actions.push_back (act);
377 act = ActionManager::register_radio_action (option_actions, monitoring_group, X_("UseSoftwareMonitoring"), _("Software monitoring"), mem_fun (*this, &ARDOUR_UI::toggle_UseSoftwareMonitoring));
378 ActionManager::session_sensitive_actions.push_back (act);
379 act = ActionManager::register_radio_action (option_actions, monitoring_group, X_("UseExternalMonitoring"), _("External monitoring"), mem_fun (*this, &ARDOUR_UI::toggle_UseExternalMonitoring));
380 ActionManager::session_sensitive_actions.push_back (act);
382 act = ActionManager::register_toggle_action (option_actions, X_("StopPluginsWithTransport"), _("Stop plugins with transport"), mem_fun (*this, &ARDOUR_UI::toggle_StopPluginsWithTransport));
383 ActionManager::session_sensitive_actions.push_back (act);
384 act = ActionManager::register_toggle_action (option_actions, X_("DoNotRunPluginsWhileRecording"), _("Do not run plugins while recording"), mem_fun (*this, &ARDOUR_UI::toggle_DoNotRunPluginsWhileRecording));
385 ActionManager::session_sensitive_actions.push_back (act);
387 ActionManager::register_toggle_action (option_actions, X_("LatchedRecordEnable"), _("Rec-enable stays engaged at stop"), mem_fun (*this, &ARDOUR_UI::toggle_LatchedRecordEnable));
389 act = ActionManager::register_toggle_action (option_actions, X_("VerifyRemoveLastCapture"), _("Verify remove last capture"), mem_fun (*this, &ARDOUR_UI::toggle_VerifyRemoveLastCapture));
390 ActionManager::session_sensitive_actions.push_back (act);
391 act = ActionManager::register_toggle_action (option_actions, X_("StopRecordingOnXrun"), _("Stop recording on xrun"), mem_fun (*this, &ARDOUR_UI::toggle_StopRecordingOnXrun));
392 ActionManager::session_sensitive_actions.push_back (act);
393 act = ActionManager::register_toggle_action (option_actions, X_("StopTransportAtEndOfSession"), _("Stop transport at session end"), mem_fun (*this, &ARDOUR_UI::toggle_StopTransportAtEndOfSession));
394 ActionManager::session_sensitive_actions.push_back (act);
395 act = ActionManager::register_toggle_action (option_actions, X_("GainReduceFastTransport"), _("-12dB gain reduce ffwd/rewind"), mem_fun (*this, &ARDOUR_UI::toggle_GainReduceFastTransport));
396 ActionManager::session_sensitive_actions.push_back (act);
398 act = ActionManager::register_toggle_action (option_actions, X_("LatchedSolo"), _("Latched solo"), mem_fun (*this, &ARDOUR_UI::toggle_LatchedSolo));
399 ActionManager::session_sensitive_actions.push_back (act);
401 RadioAction::Group solo_group;
403 act = ActionManager::register_radio_action (option_actions, solo_group, X_("SoloInPlace"), _("Solo in-place"), mem_fun (*this, &ARDOUR_UI::toggle_SoloViaBus));
404 act = ActionManager::register_radio_action (option_actions, solo_group, X_("SoloViaBus"), _("Solo via bus"), mem_fun (*this, &ARDOUR_UI::toggle_SoloViaBus));
405 ActionManager::session_sensitive_actions.push_back (act);
407 act = ActionManager::register_action (option_actions, X_("AutomaticallyCreateCrossfades"), _("Automatically create crossfades"), mem_fun (*this, &ARDOUR_UI::toggle_AutomaticallyCreateCrossfades));
408 ActionManager::session_sensitive_actions.push_back (act);
409 act = ActionManager::register_action (option_actions, X_("UnmuteNewFullCrossfades"), _("Unmute new full crossfades"), mem_fun (*this, &ARDOUR_UI::toggle_UnmuteNewFullCrossfades));
410 ActionManager::session_sensitive_actions.push_back (act);
414 act = ActionManager::register_action (option_actions, X_("SetRegionLayerMode", _("SetRegionLayerMode"), mem_fun (*this, &ARDOUR_UI::toggle_SetRegionLayerMode)));
415 ActionManager::session_sensitive_actions.push_back (act);
416 act = ActionManager::register_action (option_actions, X_("SetCrossfadeModel", _("SetCrossfadeModel"), mem_fun (*this, &ARDOUR_UI::toggle_SetCrossfadeModel)));
417 ActionManager::session_sensitive_actions.push_back (act);
421 ActionManager::add_action_group (shuttle_actions);
422 ActionManager::add_action_group (option_actions);
423 ActionManager::add_action_group (jack_actions);
424 ActionManager::add_action_group (transport_actions);
425 ActionManager::add_action_group (main_actions);
426 ActionManager::add_action_group (common_actions);
430 ARDOUR_UI::build_menu_bar ()
432 menu_bar = dynamic_cast<MenuBar*> (ActionManager::get_widget (X_("/Main")));
433 menu_bar->set_name ("MainMenuBar");
436 * This is needed because this property does not get installed
437 * until the Menu GObject class is registered, which happens
438 * when the first menu instance is created.
440 Gtk::Settings::get_default()->property_gtk_can_change_accels() = true;
442 wall_clock_box.add (wall_clock_label);
443 wall_clock_box.set_name ("WallClock");
444 wall_clock_label.set_name ("WallClock");
446 disk_space_box.add (disk_space_label);
447 disk_space_box.set_name ("WallClock");
448 disk_space_label.set_name ("WallClock");
450 cpu_load_box.add (cpu_load_label);
451 cpu_load_box.set_name ("CPULoad");
452 cpu_load_label.set_name ("CPULoad");
454 buffer_load_box.add (buffer_load_label);
455 buffer_load_box.set_name ("BufferLoad");
456 buffer_load_label.set_name ("BufferLoad");
458 // disk_rate_box.add (disk_rate_label);
459 // disk_rate_box.set_name ("DiskRate");
460 // disk_rate_label.set_name ("DiskRate");
462 sample_rate_box.add (sample_rate_label);
463 sample_rate_box.set_name ("SampleRate");
464 sample_rate_label.set_name ("SampleRate");
466 menu_hbox.pack_start (*menu_bar, true, true);
467 menu_hbox.pack_end (wall_clock_box, false, false, 10);
468 menu_hbox.pack_end (disk_space_box, false, false, 10);
469 menu_hbox.pack_end (cpu_load_box, false, false, 10);
470 // menu_hbox.pack_end (disk_rate_box, false, false, 10);
471 menu_hbox.pack_end (buffer_load_box, false, false, 10);
472 menu_hbox.pack_end (sample_rate_box, false, false, 10);
474 menu_bar_base.set_name ("MainMenuBar");
475 menu_bar_base.add (menu_hbox);