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_("ExportSelection"), _("Export selection to audiofile..."), mem_fun (*editor, &PublicEditor::export_selection));
114 ActionManager::session_sensitive_actions.push_back (act);
115 ActionManager::time_selection_sensitive_actions.push_back (act);
117 act = ActionManager::register_action (main_actions, X_("ExportRangeMarkers"), _("Export range markers to audiofile..."), mem_fun (*editor, &PublicEditor::export_range_markers));
118 ActionManager::session_sensitive_actions.push_back (act);
119 ActionManager::range_sensitive_actions.push_back (act);
121 act = ActionManager::register_action (main_actions, X_("Export"), _("Export"));
122 ActionManager::session_sensitive_actions.push_back (act);
124 act = ActionManager::register_action (main_actions, X_("CleanupUnused"), _("Cleanup unused sources"), mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::cleanup));
125 ActionManager::session_sensitive_actions.push_back (act);
126 act = ActionManager::register_action (main_actions, X_("FlushWastebasket"), _("Flush wastebasket"), mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::flush_trash));
127 ActionManager::session_sensitive_actions.push_back (act);
129 /* JACK actions for controlling ... JACK */
131 Glib::RefPtr<ActionGroup> jack_actions = ActionGroup::create (X_("JACK"));
132 ActionManager::register_action (jack_actions, X_("JACK"), _("JACK"));
133 ActionManager::register_action (jack_actions, X_("Latency"), _("Latency"));
135 act = ActionManager::register_action (jack_actions, X_("JACKReconnect"), _("Reconnect"), mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::reconnect_to_jack));
136 ActionManager::jack_opposite_sensitive_actions.push_back (act);
138 act = ActionManager::register_action (jack_actions, X_("JACKDisconnect"), _("Disconnect"), mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::disconnect_from_jack));
139 ActionManager::jack_sensitive_actions.push_back (act);
141 RadioAction::Group jack_latency_group;
143 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));
144 ActionManager::jack_sensitive_actions.push_back (act);
145 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));
146 ActionManager::jack_sensitive_actions.push_back (act);
147 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));
148 ActionManager::jack_sensitive_actions.push_back (act);
149 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));
150 ActionManager::jack_sensitive_actions.push_back (act);
151 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));
152 ActionManager::jack_sensitive_actions.push_back (act);
153 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));
154 ActionManager::jack_sensitive_actions.push_back (act);
155 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));
156 ActionManager::jack_sensitive_actions.push_back (act);
157 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));
158 ActionManager::jack_sensitive_actions.push_back (act);
159 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));
160 ActionManager::jack_sensitive_actions.push_back (act);
162 /* these actions are intended to be shared across all windows */
164 common_actions = ActionGroup::create (X_("Common"));
165 ActionManager::register_action (main_actions, X_("Windows"), _("Windows"));
166 ActionManager::register_action (common_actions, X_("Start-Prefix"), _("start prefix"), mem_fun(*this, &ARDOUR_UI::start_keyboard_prefix));
167 ActionManager::register_action (common_actions, X_("Quit"), _("Quit"), (mem_fun(*this, &ARDOUR_UI::finish)));
169 /* windows visibility actions */
171 ActionManager::register_toggle_action (common_actions, X_("ToggleMaximalEditor"), _("maximise editor space"), mem_fun (*this, &ARDOUR_UI::toggle_editing_space));
173 ActionManager::register_action (common_actions, X_("goto-editor"), _("show editor"), mem_fun(*this, &ARDOUR_UI::goto_editor_window));
174 ActionManager::register_action (common_actions, X_("goto-mixer"), _("show mixer"), mem_fun(*this, &ARDOUR_UI::goto_mixer_window));
175 ActionManager::register_toggle_action (common_actions, X_("ToggleSoundFileBrowser"), _("Sound File Browser"), mem_fun(*this, &ARDOUR_UI::toggle_sound_file_browser));
176 ActionManager::register_toggle_action (common_actions, X_("ToggleOptionsEditor"), _("Options Editor"), mem_fun(*this, &ARDOUR_UI::toggle_options_window));
177 act = ActionManager::register_toggle_action (common_actions, X_("ToggleInspector"), _("Track/Bus Inspector"), mem_fun(*this, &ARDOUR_UI::toggle_route_params_window));
178 ActionManager::session_sensitive_actions.push_back (act);
179 act = ActionManager::register_toggle_action (common_actions, X_("ToggleConnections"), _("Connections"), mem_fun(*this, &ARDOUR_UI::toggle_connection_editor));
180 ActionManager::session_sensitive_actions.push_back (act);
181 act = ActionManager::register_toggle_action (common_actions, X_("ToggleLocations"), _("Locations"), mem_fun(*this, &ARDOUR_UI::toggle_location_window));
182 ActionManager::session_sensitive_actions.push_back (act);
183 act = ActionManager::register_toggle_action (common_actions, X_("ToggleBigClock"), _("Big Clock"), mem_fun(*this, &ARDOUR_UI::toggle_big_clock_window));
184 ActionManager::session_sensitive_actions.push_back (act);
185 ActionManager::register_action (common_actions, X_("About"), _("About"), mem_fun(*this, &ARDOUR_UI::show_splash));
186 act = ActionManager::register_toggle_action (common_actions, X_("ToggleColorManager"), _("Colors"), mem_fun(*this, &ARDOUR_UI::toggle_color_manager));
188 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));
189 ActionManager::session_sensitive_actions.push_back (act);
190 act = ActionManager::register_action (common_actions, X_("AddAudioBus"), _("add audio bus"), bind (mem_fun(*this, &ARDOUR_UI::session_add_audio_bus), 1, 1));
191 ActionManager::session_sensitive_actions.push_back (act);
192 act = ActionManager::register_action (common_actions, X_("Save"), _("Save"), bind (mem_fun(*this, &ARDOUR_UI::save_state), string("")));
193 ActionManager::session_sensitive_actions.push_back (act);
194 act = ActionManager::register_action (common_actions, X_("RemoveLastCapture"), _("remove last capture"), mem_fun(*this, &ARDOUR_UI::remove_last_capture));
195 ActionManager::session_sensitive_actions.push_back (act);
197 Glib::RefPtr<ActionGroup> transport_actions = ActionGroup::create (X_("Transport"));
199 /* do-nothing action for the "transport" menu bar item */
201 ActionManager::register_action (transport_actions, X_("Transport"), _("Transport"));
203 /* these two are not used by key bindings, instead use ToggleRoll for that. these two do show up in
204 menus and via button proxies.
207 act = ActionManager::register_action (transport_actions, X_("Stop"), _("stop"), mem_fun(*this, &ARDOUR_UI::transport_stop));
208 ActionManager::session_sensitive_actions.push_back (act);
209 ActionManager::transport_sensitive_actions.push_back (act);
210 act = ActionManager::register_action (transport_actions, X_("Roll"), _("roll"), mem_fun(*this, &ARDOUR_UI::transport_roll));
211 ActionManager::session_sensitive_actions.push_back (act);
212 ActionManager::transport_sensitive_actions.push_back (act);
214 ActionManager::register_action (transport_actions, X_("ToggleRoll"), _("start/stop"), bind (mem_fun (*editor, &PublicEditor::toggle_playback), false));
215 ActionManager::session_sensitive_actions.push_back (act);
216 ActionManager::transport_sensitive_actions.push_back (act);
217 ActionManager::register_action (transport_actions, X_("ToggleRollForgetCapture"), _("stop + forget capture"), bind (mem_fun(*editor, &PublicEditor::toggle_playback), true));
218 ActionManager::session_sensitive_actions.push_back (act);
219 ActionManager::transport_sensitive_actions.push_back (act);
220 act = ActionManager::register_action (transport_actions, X_("Loop"), _("play loop range"), mem_fun(*this, &ARDOUR_UI::toggle_session_auto_loop));
221 ActionManager::session_sensitive_actions.push_back (act);
222 ActionManager::transport_sensitive_actions.push_back (act);
223 act = ActionManager::register_action (transport_actions, X_("PlaySelection"), _("play selection"), mem_fun(*this, &ARDOUR_UI::transport_play_selection));
224 ActionManager::session_sensitive_actions.push_back (act);
225 ActionManager::transport_sensitive_actions.push_back (act);
227 act = ActionManager::register_action (transport_actions, X_("Record"), _("enable record"), mem_fun(*this, &ARDOUR_UI::transport_record));
228 ActionManager::session_sensitive_actions.push_back (act);
229 ActionManager::transport_sensitive_actions.push_back (act);
230 act = ActionManager::register_action (transport_actions, X_("Rewind"), _("rewind"), bind (mem_fun(*this, &ARDOUR_UI::transport_rewind), 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_("RewindSlow"), _("rewind (slow)"), bind (mem_fun(*this, &ARDOUR_UI::transport_rewind), -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_("RewindFast"), _("rewind (fast)"), bind (mem_fun(*this, &ARDOUR_UI::transport_rewind), 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_("Forward"), _("forward"), bind (mem_fun(*this, &ARDOUR_UI::transport_forward), 0));
240 ActionManager::session_sensitive_actions.push_back (act);
241 ActionManager::transport_sensitive_actions.push_back (act);
242 act = ActionManager::register_action (transport_actions, X_("ForwardSlow"), _("forward (slow)"), bind (mem_fun(*this, &ARDOUR_UI::transport_forward), -1));
243 ActionManager::session_sensitive_actions.push_back (act);
244 ActionManager::transport_sensitive_actions.push_back (act);
245 act = ActionManager::register_action (transport_actions, X_("ForwardFast"), _("forward (fast)"), bind (mem_fun(*this, &ARDOUR_UI::transport_forward), 1));
246 ActionManager::session_sensitive_actions.push_back (act);
247 ActionManager::transport_sensitive_actions.push_back (act);
248 act = ActionManager::register_action (transport_actions, X_("GotoStart"), _("goto start"), mem_fun(*this, &ARDOUR_UI::transport_goto_start));
249 ActionManager::session_sensitive_actions.push_back (act);
250 ActionManager::transport_sensitive_actions.push_back (act);
251 act = ActionManager::register_action (transport_actions, X_("GotoEnd"), _("goto end"), mem_fun(*this, &ARDOUR_UI::transport_goto_end));
252 ActionManager::session_sensitive_actions.push_back (act);
253 ActionManager::transport_sensitive_actions.push_back (act);
255 /* XXX the newline in the displayed names of these action is really wrong, but its because we want the button
256 that proxies for these action to be more compact. It would be nice to find a way to override the action
257 name appearance on the buttons.
260 act = ActionManager::register_toggle_action (transport_actions, X_("TogglePunchIn"), _("punch\nin"), mem_fun(*this, &ARDOUR_UI::toggle_punch_in));
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_("TogglePunchOut"), _("punch\nout"), mem_fun(*this, &ARDOUR_UI::toggle_punch_out));
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_("ToggleClick"), _("click"), mem_fun(*this, &ARDOUR_UI::toggle_click));
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_("ToggleAutoInput"), _("auto\ninput"), mem_fun(*this, &ARDOUR_UI::toggle_auto_input));
270 ActionManager::session_sensitive_actions.push_back (act);
271 ActionManager::transport_sensitive_actions.push_back (act);
272 act = ActionManager::register_toggle_action (transport_actions, X_("ToggleAutoPlay"), _("auto\nplay"), mem_fun(*this, &ARDOUR_UI::toggle_auto_play));
273 ActionManager::session_sensitive_actions.push_back (act);
274 ActionManager::transport_sensitive_actions.push_back (act);
275 act = ActionManager::register_toggle_action (transport_actions, X_("ToggleAutoReturn"), _("auto\nreturn"), mem_fun(*this, &ARDOUR_UI::toggle_auto_return));
276 ActionManager::session_sensitive_actions.push_back (act);
277 ActionManager::transport_sensitive_actions.push_back (act);
279 act = ActionManager::register_toggle_action (transport_actions, X_("ToggleTimeMaster"), _("time\nmaster"), mem_fun(*this, &ARDOUR_UI::toggle_time_master));
280 ActionManager::session_sensitive_actions.push_back (act);
282 act = ActionManager::register_action (common_actions, X_("SendAllMidiFeedback"), _("send all midi feedback"), mem_fun(*this, &ARDOUR_UI::send_all_midi_feedback));
283 ActionManager::session_sensitive_actions.push_back (act);
284 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack1"), _("toggle record enable track1"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 0U));
285 ActionManager::session_sensitive_actions.push_back (act);
286 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack2"), _("toggle record enable track2"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 1U));
287 ActionManager::session_sensitive_actions.push_back (act);
288 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack3"), _("toggle record enable track3"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 2U));
289 ActionManager::session_sensitive_actions.push_back (act);
290 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack4"), _("toggle record enable track4"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 3U));
291 ActionManager::session_sensitive_actions.push_back (act);
292 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack5"), _("toggle record enable track5"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 4U));
293 ActionManager::session_sensitive_actions.push_back (act);
294 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack6"), _("toggle record enable track6"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 5U));
295 ActionManager::session_sensitive_actions.push_back (act);
296 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack7"), _("toggle record enable track7"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 6U));
297 ActionManager::session_sensitive_actions.push_back (act);
298 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack8"), _("toggle record enable track8"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 7U));
299 ActionManager::session_sensitive_actions.push_back (act);
300 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack9"), _("toggle record enable track9"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 8U));
301 ActionManager::session_sensitive_actions.push_back (act);
302 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack10"), _("toggle record enable track10"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 9U));
303 ActionManager::session_sensitive_actions.push_back (act);
304 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack11"), _("toggle record enable track11"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 10U));
305 ActionManager::session_sensitive_actions.push_back (act);
306 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack12"), _("toggle record enable track12"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 11U));
307 ActionManager::session_sensitive_actions.push_back (act);
308 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack13"), _("toggle record enable track13"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 12U));
309 ActionManager::session_sensitive_actions.push_back (act);
310 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack14"), _("toggle record enable track14"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 13U));
311 ActionManager::session_sensitive_actions.push_back (act);
312 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack15"), _("toggle record enable track15"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 14U));
313 ActionManager::session_sensitive_actions.push_back (act);
314 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack16"), _("toggle record enable track16"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 15U));
315 ActionManager::session_sensitive_actions.push_back (act);
316 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack17"), _("toggle record enable track17"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 16U));
317 ActionManager::session_sensitive_actions.push_back (act);
318 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack18"), _("toggle record enable track18"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 17U));
319 ActionManager::session_sensitive_actions.push_back (act);
320 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack19"), _("toggle record enable track19"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 18U));
321 ActionManager::session_sensitive_actions.push_back (act);
322 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack20"), _("toggle record enable track20"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 19U));
323 ActionManager::session_sensitive_actions.push_back (act);
324 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack21"), _("toggle record enable track21"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 20U));
325 ActionManager::session_sensitive_actions.push_back (act);
326 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack22"), _("toggle record enable track22"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 21U));
327 ActionManager::session_sensitive_actions.push_back (act);
328 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack23"), _("toggle record enable track23"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 22U));
329 ActionManager::session_sensitive_actions.push_back (act);
330 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack24"), _("toggle record enable track24"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 23U));
331 ActionManager::session_sensitive_actions.push_back (act);
332 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack25"), _("toggle record enable track25"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 24U));
333 ActionManager::session_sensitive_actions.push_back (act);
334 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack26"), _("toggle record enable track26"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 25U));
335 ActionManager::session_sensitive_actions.push_back (act);
336 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack27"), _("toggle record enable track27"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 26U));
337 ActionManager::session_sensitive_actions.push_back (act);
338 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack28"), _("toggle record enable track28"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 27U));
339 ActionManager::session_sensitive_actions.push_back (act);
340 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack29"), _("toggle record enable track29"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 28U));
341 ActionManager::session_sensitive_actions.push_back (act);
342 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack30"), _("toggle record enable track30"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 29U));
343 ActionManager::session_sensitive_actions.push_back (act);
344 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack31"), _("toggle record enable track31"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 30U));
345 ActionManager::session_sensitive_actions.push_back (act);
346 act = ActionManager::register_action (common_actions, X_("ToggleRecordEnableTrack32"), _("toggle record enable track32"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 31U));
347 ActionManager::session_sensitive_actions.push_back (act);
349 Glib::RefPtr<ActionGroup> shuttle_actions = ActionGroup::create ("ShuttleActions");
351 shuttle_actions->add (Action::create (X_("SetShuttleUnitsPercentage"), _("Percentage")), bind (mem_fun(*this, &ARDOUR_UI::set_shuttle_units), Percentage));
352 shuttle_actions->add (Action::create (X_("SetShuttleUnitsSemitones"), _("Semitones")), bind (mem_fun(*this, &ARDOUR_UI::set_shuttle_units), Semitones));
354 Glib::RefPtr<ActionGroup> option_actions = ActionGroup::create ("options");
356 act = ActionManager::register_toggle_action (option_actions, X_("SendMTC"), _("Send MTC"), mem_fun (*this, &ARDOUR_UI::toggle_send_mtc));
357 ActionManager::session_sensitive_actions.push_back (act);
358 act = ActionManager::register_toggle_action (option_actions, X_("SendMMC"), _("Send MMC"), mem_fun (*this, &ARDOUR_UI::toggle_send_mtc));
359 ActionManager::session_sensitive_actions.push_back (act);
360 act = ActionManager::register_toggle_action (option_actions, X_("UseMMC"), _("Use MMC"), mem_fun (*this, &ARDOUR_UI::toggle_use_mmc));
361 ActionManager::session_sensitive_actions.push_back (act);
362 act = ActionManager::register_toggle_action (option_actions, X_("SendMIDIfeedback"), _("Send MIDI feedback"), mem_fun (*this, &ARDOUR_UI::toggle_send_midi_feedback));
363 ActionManager::session_sensitive_actions.push_back (act);
364 act = ActionManager::register_toggle_action (option_actions, X_("UseMIDIcontrol"), _("Use MIDI control"), mem_fun (*this, &ARDOUR_UI::toggle_use_midi_control));
365 ActionManager::session_sensitive_actions.push_back (act);
367 act = ActionManager::register_toggle_action (option_actions, X_("AutoConnectNewTrackInputsToHardware"), _("Connect newtrack inputs to hardware"), mem_fun (*this, &ARDOUR_UI::toggle_AutoConnectNewTrackInputsToHardware));
368 ActionManager::session_sensitive_actions.push_back (act);
370 RadioAction::Group connect_outputs_group;
372 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));
373 ActionManager::session_sensitive_actions.push_back (act);
374 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));
375 ActionManager::session_sensitive_actions.push_back (act);
376 act = ActionManager::register_radio_action (option_actions, connect_outputs_group, X_("ManuallyConnectNewTrackOutputs"), _("Manually connect new track outputs"), mem_fun (*this, &ARDOUR_UI::toggle_ManuallyConnectNewTrackOutputs));
377 ActionManager::session_sensitive_actions.push_back (act);
379 RadioAction::Group monitoring_group;
381 act = ActionManager::register_radio_action (option_actions, monitoring_group, X_("UseHardwareMonitoring"), _("Hardware monitoring"), mem_fun (*this, &ARDOUR_UI::toggle_UseHardwareMonitoring));
382 ActionManager::session_sensitive_actions.push_back (act);
383 act = ActionManager::register_radio_action (option_actions, monitoring_group, X_("UseSoftwareMonitoring"), _("Software monitoring"), mem_fun (*this, &ARDOUR_UI::toggle_UseSoftwareMonitoring));
384 ActionManager::session_sensitive_actions.push_back (act);
385 act = ActionManager::register_radio_action (option_actions, monitoring_group, X_("UseExternalMonitoring"), _("External monitoring"), mem_fun (*this, &ARDOUR_UI::toggle_UseExternalMonitoring));
386 ActionManager::session_sensitive_actions.push_back (act);
388 act = ActionManager::register_toggle_action (option_actions, X_("StopPluginsWithTransport"), _("Stop plugins with transport"), mem_fun (*this, &ARDOUR_UI::toggle_StopPluginsWithTransport));
389 ActionManager::session_sensitive_actions.push_back (act);
390 act = ActionManager::register_toggle_action (option_actions, X_("DoNotRunPluginsWhileRecording"), _("Do not run plugins while recording"), mem_fun (*this, &ARDOUR_UI::toggle_DoNotRunPluginsWhileRecording));
391 ActionManager::session_sensitive_actions.push_back (act);
393 ActionManager::register_toggle_action (option_actions, X_("LatchedRecordEnable"), _("Rec-enable stays engaged at stop"), mem_fun (*this, &ARDOUR_UI::toggle_LatchedRecordEnable));
395 act = ActionManager::register_toggle_action (option_actions, X_("VerifyRemoveLastCapture"), _("Verify remove last capture"), mem_fun (*this, &ARDOUR_UI::toggle_VerifyRemoveLastCapture));
396 ActionManager::session_sensitive_actions.push_back (act);
397 act = ActionManager::register_toggle_action (option_actions, X_("StopRecordingOnXrun"), _("Stop recording on xrun"), mem_fun (*this, &ARDOUR_UI::toggle_StopRecordingOnXrun));
398 ActionManager::session_sensitive_actions.push_back (act);
399 act = ActionManager::register_toggle_action (option_actions, X_("StopTransportAtEndOfSession"), _("Stop transport at session end"), mem_fun (*this, &ARDOUR_UI::toggle_StopTransportAtEndOfSession));
400 ActionManager::session_sensitive_actions.push_back (act);
401 act = ActionManager::register_toggle_action (option_actions, X_("GainReduceFastTransport"), _("-12dB gain reduce ffwd/rewind"), mem_fun (*this, &ARDOUR_UI::toggle_GainReduceFastTransport));
402 ActionManager::session_sensitive_actions.push_back (act);
404 act = ActionManager::register_toggle_action (option_actions, X_("LatchedSolo"), _("Latched solo"), mem_fun (*this, &ARDOUR_UI::toggle_LatchedSolo));
405 ActionManager::session_sensitive_actions.push_back (act);
407 RadioAction::Group solo_group;
409 act = ActionManager::register_radio_action (option_actions, solo_group, X_("SoloInPlace"), _("Solo in-place"), mem_fun (*this, &ARDOUR_UI::toggle_SoloViaBus));
410 act = ActionManager::register_radio_action (option_actions, solo_group, X_("SoloViaBus"), _("Solo via bus"), mem_fun (*this, &ARDOUR_UI::toggle_SoloViaBus));
411 ActionManager::session_sensitive_actions.push_back (act);
413 act = ActionManager::register_action (option_actions, X_("AutomaticallyCreateCrossfades"), _("Automatically create crossfades"), mem_fun (*this, &ARDOUR_UI::toggle_AutomaticallyCreateCrossfades));
414 ActionManager::session_sensitive_actions.push_back (act);
415 act = ActionManager::register_action (option_actions, X_("UnmuteNewFullCrossfades"), _("Unmute new full crossfades"), mem_fun (*this, &ARDOUR_UI::toggle_UnmuteNewFullCrossfades));
416 ActionManager::session_sensitive_actions.push_back (act);
420 act = ActionManager::register_action (option_actions, X_("SetRegionLayerMode", _("SetRegionLayerMode"), mem_fun (*this, &ARDOUR_UI::toggle_SetRegionLayerMode)));
421 ActionManager::session_sensitive_actions.push_back (act);
422 act = ActionManager::register_action (option_actions, X_("SetCrossfadeModel", _("SetCrossfadeModel"), mem_fun (*this, &ARDOUR_UI::toggle_SetCrossfadeModel)));
423 ActionManager::session_sensitive_actions.push_back (act);
427 ActionManager::add_action_group (shuttle_actions);
428 ActionManager::add_action_group (option_actions);
429 ActionManager::add_action_group (jack_actions);
430 ActionManager::add_action_group (transport_actions);
431 ActionManager::add_action_group (main_actions);
432 ActionManager::add_action_group (common_actions);
436 ARDOUR_UI::build_menu_bar ()
438 menu_bar = dynamic_cast<MenuBar*> (ActionManager::get_widget (X_("/Main")));
439 menu_bar->set_name ("MainMenuBar");
442 * This is needed because this property does not get installed
443 * until the Menu GObject class is registered, which happens
444 * when the first menu instance is created.
446 Gtk::Settings::get_default()->property_gtk_can_change_accels() = true;
448 wall_clock_box.add (wall_clock_label);
449 wall_clock_box.set_name ("WallClock");
450 wall_clock_label.set_name ("WallClock");
452 disk_space_box.add (disk_space_label);
453 disk_space_box.set_name ("WallClock");
454 disk_space_label.set_name ("WallClock");
456 cpu_load_box.add (cpu_load_label);
457 cpu_load_box.set_name ("CPULoad");
458 cpu_load_label.set_name ("CPULoad");
460 buffer_load_box.add (buffer_load_label);
461 buffer_load_box.set_name ("BufferLoad");
462 buffer_load_label.set_name ("BufferLoad");
464 // disk_rate_box.add (disk_rate_label);
465 // disk_rate_box.set_name ("DiskRate");
466 // disk_rate_label.set_name ("DiskRate");
468 sample_rate_box.add (sample_rate_label);
469 sample_rate_box.set_name ("SampleRate");
470 sample_rate_label.set_name ("SampleRate");
472 menu_hbox.pack_start (*menu_bar, true, true);
473 menu_hbox.pack_end (wall_clock_box, false, false, 10);
474 menu_hbox.pack_end (disk_space_box, false, false, 10);
475 menu_hbox.pack_end (cpu_load_box, false, false, 10);
476 // menu_hbox.pack_end (disk_rate_box, false, false, 10);
477 menu_hbox.pack_end (buffer_load_box, false, false, 10);
478 menu_hbox.pack_end (sample_rate_box, false, false, 10);
480 menu_bar_base.set_name ("MainMenuBar");
481 menu_bar_base.add (menu_hbox);