2005-09-25 14:42:24 -04:00
/*
2008-08-04 18:37:24 -04:00
Copyright ( C ) 20002 - 2004 Paul Davis
2005-09-25 14:42:24 -04:00
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation ; either version 2 of the License , or
( at your option ) any later version .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program ; if not , write to the Free Software
Foundation , Inc . , 675 Mass Ave , Cambridge , MA 0213 9 , USA .
*/
2010-11-13 00:14:48 -05:00
# ifdef WAF_BUILD
# include "gtk2ardour-config.h"
# endif
2005-09-25 14:42:24 -04:00
/* This file contains any ARDOUR_UI methods that require knowledge of
the editor , and exists so that no compilation dependency exists
between the main ARDOUR_UI modules and the PublicEditor class . This
is to cut down on the nasty compile times for both these classes .
*/
2010-03-05 07:43:40 -05:00
# include <cmath>
2005-09-25 14:42:24 -04:00
2007-03-19 03:07:38 -04:00
# include <glibmm/miscutils.h>
2015-08-01 23:40:55 -04:00
# include <gtkmm/accelmap.h>
2008-09-10 11:03:30 -04:00
# include <gtk/gtk.h>
2006-10-21 15:01:50 -04:00
2015-07-27 18:05:42 -04:00
# include "gtkmm2ext/cairo_packer.h"
# include "gtkmm2ext/tearoff.h"
2010-03-18 22:49:01 -04:00
# include "gtkmm2ext/utils.h"
# include "gtkmm2ext/window_title.h"
2010-03-05 07:43:40 -05:00
# include "pbd/file_utils.h"
# include "pbd/fpu.h"
2010-03-05 16:51:31 -05:00
# include "pbd/convert.h"
2010-03-05 07:43:40 -05:00
2005-09-25 14:42:24 -04:00
# include "ardour_ui.h"
# include "public_editor.h"
# include "audio_clock.h"
2010-03-18 22:49:01 -04:00
# include "keyboard.h"
# include "monitor_section.h"
2007-10-11 18:07:47 -04:00
# include "engine_dialog.h"
2005-09-25 14:42:24 -04:00
# include "editor.h"
2005-10-10 16:38:53 -04:00
# include "actions.h"
2015-01-02 09:44:54 -05:00
# include "meterbridge.h"
2016-02-23 09:42:13 -05:00
# include "luawindow.h"
2008-04-11 10:06:50 -04:00
# include "mixer_ui.h"
2010-03-18 22:49:01 -04:00
# include "startup.h"
2013-05-04 22:02:05 -04:00
# include "window_manager.h"
2010-08-17 22:20:15 -04:00
# include "global_port_matrix.h"
2011-11-23 16:22:02 -05:00
# include "location_ui.h"
2012-05-31 19:14:03 -04:00
# include "main_clock.h"
2015-10-22 19:19:24 -04:00
# include "rc_option_editor.h"
2008-02-16 17:43:18 -05:00
2010-08-16 22:48:24 -04:00
# include <gtkmm2ext/application.h>
2005-09-25 14:42:24 -04:00
2009-02-25 13:26:51 -05:00
# include "ardour/session.h"
# include "ardour/profile.h"
# include "ardour/audioengine.h"
2006-05-23 15:54:52 -04:00
2009-02-25 13:39:39 -05:00
# include "control_protocol/control_protocol.h"
2005-09-25 14:42:24 -04:00
# include "i18n.h"
2006-10-21 15:01:50 -04:00
using namespace std ;
2005-09-25 14:42:24 -04:00
using namespace ARDOUR ;
Large nasty commit in the form of a 5000 line patch chock-full of completely
unecessary changes. (Sorry, doing a "sprint" based thing, this is the end of the first one)
Achieved MIDI track and bus creation, associated Jack port and diskstream creation, and minimal GUI stuff for creating them. Should be set to start work on actually recording and playing midi to/from disk now.
Relevant (significant) changes:
- Creation of a Buffer class. Base class is type agnostic so things can point to a buffer but not care what kind it is (otherwise it'd be a template). Derived into AudioBuffer and MidiBuffer, with a type tag because checking type is necessary in parts of the code where dynamic_cast wouldn't be wise. Originally I considered this a hack, but passing around a type proved to be a very good solution to all the other problems (below). There is a 1:1 mapping between jack port data types and ardour Buffer types (with a conversion function), but that's easily removed if it ever becomes necessary. Having the type scoped in the Buffer class is maybe not the best spot for it, but whatever (this is proof of concept kinda stuff right now...)
- IO now has a "default" port type (passed to the constructor and stored as a member), used by ensure_io (and similar) to create n ports. IO::register_***_port has a type argument that defaults to the default type if not passed. Rationale: previous IO API is identical, no changes needed to existing code, but path is paved for multiple port types in one IO, which we will need for eg synth plugin inserts, among other things. This is not quite ideal (best would be to only have the two port register functions and have them take a type), but the alternative is a lot of work (namely destroying the 'ensure' functions and everything that uses them) for very little gain. (I am convinced after quite a few tries at the whiteboard that subclassing IO in any way is not a feasible option, look at it's inheritance diagram in Doxygen and you can see why)
- AudioEngine::register_audio_input_port is now register_input_port and takes a type argument. Ditto for output.
- (Most significant change) AudioDiskstream abstracted into Distream, and sibling MidiDiskstream created. Very much still a work in progress, but Diskstream is there to switch references over to (most already are), which is the important part. It is still unclear what the MIDI diskstream's relation to channels is, but I'm pretty sure they will be single channel only (so SMF Type 0) since noone can come up with a reason otherwise.
- MidiTrack creation. Same thing as AudioTrack but with a different default type basically. No big deal here.
- Random cleanups and variable renamings etc. because I have OCD and can't help myself. :)
Known broken: Loading of sessions containing MIDI tracks.
git-svn-id: svn://localhost/ardour2/branches/midi@641 d708f5d6-7413-0410-9779-e7cbd77b26cf
2006-06-26 12:01:34 -04:00
using namespace PBD ;
2005-09-25 16:33:00 -04:00
using namespace Gtkmm2ext ;
2006-10-21 15:01:50 -04:00
using namespace Gtk ;
using namespace Glib ;
2005-09-25 14:42:24 -04:00
int
ARDOUR_UI : : create_editor ( )
{
try {
2007-03-18 02:07:08 -04:00
editor = new Editor ( ) ;
2015-07-22 21:14:08 -04:00
editor - > StateChange . connect ( sigc : : mem_fun ( * this , & ARDOUR_UI : : tabbable_state_change ) ) ;
2005-09-25 14:42:24 -04:00
}
catch ( failed_constructor & err ) {
return - 1 ;
}
2016-02-22 14:42:40 -05:00
// editor->signal_event().connect (sigc::bind (sigc::ptr_fun (&Keyboard::catch_user_event_for_pre_dialog_focus), editor));
2005-09-25 14:42:24 -04:00
return 0 ;
}
2016-02-23 09:42:13 -05:00
int
ARDOUR_UI : : create_luawindow ( )
{
try {
luawindow = LuaWindow : : instance ( ) ;
}
catch ( failed_constructor & err ) {
return - 1 ;
}
return 0 ;
}
2016-05-21 08:34:09 -04:00
void
ARDOUR_UI : : escape ( )
{
Escape ( ) ; /* EMIT SIGNAL */
}
2005-09-25 14:42:24 -04:00
void
2005-10-10 16:38:53 -04:00
ARDOUR_UI : : install_actions ( )
2005-09-25 14:42:24 -04:00
{
2015-08-10 14:31:59 -04:00
Glib : : RefPtr < ActionGroup > main_actions = global_actions . create_action_group ( X_ ( " Main " ) ) ;
Glib : : RefPtr < ActionGroup > main_menu_actions = global_actions . create_action_group ( X_ ( " Main_menu " ) ) ;
2005-10-10 16:38:53 -04:00
Glib : : RefPtr < Action > act ;
2005-09-25 14:42:24 -04:00
2016-05-21 08:34:09 -04:00
global_actions . register_action ( main_actions , X_ ( " Escape " ) , _ ( " Escape " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : escape ) ) ;
2005-12-31 13:20:42 -05:00
/* menus + submenus that need action items */
2015-08-10 14:31:59 -04:00
global_actions . register_action ( main_menu_actions , X_ ( " Session " ) , _ ( " Session " ) ) ;
act = global_actions . register_action ( main_menu_actions , X_ ( " Cleanup " ) , _ ( " Clean-up " ) ) ;
2009-10-13 16:43:28 -04:00
ActionManager : : write_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
global_actions . register_action ( main_menu_actions , X_ ( " Sync " ) , _ ( " Sync " ) ) ;
global_actions . register_action ( main_menu_actions , X_ ( " TransportOptions " ) , _ ( " Options " ) ) ;
global_actions . register_action ( main_menu_actions , X_ ( " WindowMenu " ) , _ ( " Window " ) ) ;
global_actions . register_action ( main_menu_actions , X_ ( " MixerMenu " ) , _ ( " Mixer " ) ) ;
global_actions . register_action ( main_menu_actions , X_ ( " EditorMenu " ) , _ ( " Editor " ) ) ;
global_actions . register_action ( main_menu_actions , X_ ( " PrefsMenu " ) , _ ( " Preferences " ) ) ;
2016-01-23 16:26:41 -05:00
global_actions . register_action ( main_menu_actions , X_ ( " MastersMenu " ) , _ ( " Master Faders " ) ) ;
2015-08-10 14:31:59 -04:00
global_actions . register_action ( main_menu_actions , X_ ( " DetachMenu " ) , _ ( " Detach " ) ) ;
global_actions . register_action ( main_menu_actions , X_ ( " Help " ) , _ ( " Help " ) ) ;
2015-11-17 17:49:27 -05:00
global_actions . register_action ( main_menu_actions , X_ ( " KeyMouseActions " ) , _ ( " Misc. Shortcuts " ) ) ;
2015-08-10 14:31:59 -04:00
global_actions . register_action ( main_menu_actions , X_ ( " AudioFileFormat " ) , _ ( " Audio File Format " ) ) ;
global_actions . register_action ( main_menu_actions , X_ ( " AudioFileFormatHeader " ) , _ ( " File Type " ) ) ;
global_actions . register_action ( main_menu_actions , X_ ( " AudioFileFormatData " ) , _ ( " Sample Format " ) ) ;
global_actions . register_action ( main_menu_actions , X_ ( " ControlSurfaces " ) , _ ( " Control Surfaces " ) ) ;
global_actions . register_action ( main_menu_actions , X_ ( " Plugins " ) , _ ( " Plugins " ) ) ;
global_actions . register_action ( main_menu_actions , X_ ( " Metering " ) , _ ( " Metering " ) ) ;
global_actions . register_action ( main_menu_actions , X_ ( " MeteringFallOffRate " ) , _ ( " Fall Off Rate " ) ) ;
global_actions . register_action ( main_menu_actions , X_ ( " MeteringHoldTime " ) , _ ( " Hold Time " ) ) ;
global_actions . register_action ( main_menu_actions , X_ ( " Denormals " ) , _ ( " Denormal Handling " ) ) ;
2006-03-28 14:22:29 -05:00
2005-12-31 13:20:42 -05:00
/* the real actions */
2005-11-28 22:53:24 -05:00
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( main_actions , X_ ( " New " ) , _ ( " New... " ) , hide_return ( sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : get_session_parameters ) , false , true , " " ) ) ) ;
2005-11-28 17:36:26 -05:00
2015-08-10 14:31:59 -04:00
global_actions . register_action ( main_actions , X_ ( " Open " ) , _ ( " Open... " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : open_session ) ) ;
global_actions . register_action ( main_actions , X_ ( " Recent " ) , _ ( " Recent... " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : open_recent_session ) ) ;
act = global_actions . register_action ( main_actions , X_ ( " Close " ) , _ ( " Close " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : close_session ) ) ;
2005-11-22 23:13:32 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2005-09-25 14:42:24 -04:00
2016-04-23 11:55:58 -04:00
act = global_actions . register_action ( main_actions , X_ ( " AddTrackBus " ) , _ ( " Add Track or Bus... " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : add_route ) ) ;
2005-11-22 23:13:32 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2009-10-13 16:43:28 -04:00
ActionManager : : write_sensitive_actions . push_back ( act ) ;
2008-08-04 18:37:24 -04:00
2016-01-11 21:36:44 -05:00
act = global_actions . register_action ( main_actions , X_ ( " duplicate-routes " ) , _ ( " Duplicate Tracks/Busses... " ) ,
2015-11-14 10:29:50 -05:00
sigc : : mem_fun ( * this , & ARDOUR_UI : : start_duplicate_routes ) ) ;
2015-11-13 16:14:42 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : write_sensitive_actions . push_back ( act ) ;
ActionManager : : track_selection_sensitive_actions . push_back ( act ) ;
2015-10-02 07:32:49 -04:00
2016-01-11 21:36:44 -05:00
act = global_actions . register_action ( main_actions , X_ ( " cancel-solo " ) , _ ( " Cancel Solo " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : cancel_solo ) ) ;
2015-10-02 07:32:49 -04:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : write_sensitive_actions . push_back ( act ) ;
2016-02-22 17:10:55 -05:00
act = global_actions . register_action ( main_actions , X_ ( " Scripting " ) , S_ ( " Session|Scripting " ) ) ;
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2016-05-03 08:33:37 -04:00
act = global_actions . register_action ( main_actions , X_ ( " AddLuaScript " ) , _ ( " Add Lua Script... " ) ,
2016-02-22 17:10:55 -05:00
sigc : : mem_fun ( * this , & ARDOUR_UI : : add_lua_script ) ) ;
ActionManager : : session_sensitive_actions . push_back ( act ) ;
act = global_actions . register_action ( main_actions , X_ ( " RemoveLuaScript " ) , _ ( " Remove Lua Script " ) ,
sigc : : mem_fun ( * this , & ARDOUR_UI : : remove_lua_script ) ) ;
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2016-05-03 13:24:33 -04:00
act = global_actions . register_action ( main_actions , X_ ( " OpenVideo " ) , _ ( " Open Video... " ) ,
2015-08-10 14:31:59 -04:00
sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : add_video ) , ( Gtk : : Window * ) 0 ) ) ;
2013-03-12 17:00:09 -04:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( main_actions , X_ ( " CloseVideo " ) , _ ( " Remove Video " ) ,
2013-03-29 04:46:29 -04:00
sigc : : mem_fun ( * this , & ARDOUR_UI : : remove_video ) ) ;
2013-06-12 18:54:43 -04:00
act - > set_sensitive ( false ) ;
2016-05-04 19:59:11 -04:00
act = global_actions . register_action ( main_actions , X_ ( " ExportVideo " ) , _ ( " Export to Video File... " ) ,
2015-08-01 23:40:55 -04:00
hide_return ( sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : export_video ) , false ) ) ) ;
2013-03-12 17:00:09 -04:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( main_actions , X_ ( " SnapshotStay " ) , _ ( " Snapshot (& keep working on current version) ... " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : snapshot_session ) , false ) ) ;
2010-04-20 22:24:38 -04:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( main_actions , X_ ( " SnapshotSwitch " ) , _ ( " Snapshot (& switch to new version) ... " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : snapshot_session ) , true ) ) ;
2015-01-11 12:15:46 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2016-05-03 08:33:37 -04:00
act = global_actions . register_action ( main_actions , X_ ( " QuickSnapshotStay " ) , _ ( " Quick Snapshot (& keep working on current version) ... " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : quick_snapshot_session ) , false ) ) ;
2016-01-16 13:33:49 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2016-02-02 10:15:24 -05:00
act = global_actions . register_action ( main_actions , X_ ( " QuickSnapshotSwitch " ) , _ ( " Quick Snapshot (& switch to new version) ... " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : quick_snapshot_session ) , true ) ) ;
2016-01-16 13:33:49 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : write_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( main_actions , X_ ( " SaveAs " ) , _ ( " Save As... " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : save_session_as ) ) ;
2005-11-22 23:13:32 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2005-09-25 14:42:24 -04:00
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( main_actions , X_ ( " Rename " ) , _ ( " Rename... " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : rename_session ) ) ;
2011-07-14 13:41:06 -04:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : write_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( main_actions , X_ ( " SaveTemplate " ) , _ ( " Save Template... " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : save_template ) ) ;
2005-11-22 23:13:32 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2005-09-25 14:42:24 -04:00
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( main_actions , X_ ( " Metadata " ) , _ ( " Metadata " ) ) ;
2005-11-22 23:13:32 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2005-09-25 14:42:24 -04:00
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( main_actions , X_ ( " EditMetadata " ) , _ ( " Edit Metadata... " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : edit_metadata ) ) ;
2005-11-22 23:13:32 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2006-03-05 14:39:16 -05:00
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( main_actions , X_ ( " ImportMetadata " ) , _ ( " Import Metadata... " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : import_metadata ) ) ;
2008-09-17 04:44:51 -04:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( main_actions , X_ ( " ExportAudio " ) , _ ( " Export to Audio File(s)... " ) , sigc : : mem_fun ( * editor , & PublicEditor : : export_audio ) ) ;
2006-03-05 14:39:16 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2011-06-01 13:00:29 -04:00
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( main_actions , X_ ( " StemExport " ) , _ ( " Stem export... " ) , sigc : : mem_fun ( * editor , & PublicEditor : : stem_export ) ) ;
2011-01-06 11:55:19 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2005-09-25 14:42:24 -04:00
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( main_actions , X_ ( " Export " ) , _ ( " Export " ) ) ;
2005-11-22 23:13:32 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2005-09-25 14:42:24 -04:00
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( main_actions , X_ ( " CleanupUnused " ) , _ ( " Clean-up Unused Sources... " ) , sigc : : mem_fun ( * ( ARDOUR_UI : : instance ( ) ) , & ARDOUR_UI : : cleanup ) ) ;
2005-11-22 23:13:32 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2009-10-13 16:43:28 -04:00
ActionManager : : write_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( main_actions , X_ ( " CleanupPeakFiles " ) , _ ( " Reset Peak Files " ) , sigc : : mem_fun ( * ( ARDOUR_UI : : instance ( ) ) , & ARDOUR_UI : : cleanup_peakfiles ) ) ;
2015-09-15 08:42:43 -04:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : write_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( main_actions , X_ ( " FlushWastebasket " ) , _ ( " Flush Wastebasket " ) , sigc : : mem_fun ( * ( ARDOUR_UI : : instance ( ) ) , & ARDOUR_UI : : flush_trash ) ) ;
2015-08-01 23:40:55 -04:00
2009-10-13 16:43:28 -04:00
ActionManager : : write_sensitive_actions . push_back ( act ) ;
2005-11-22 23:13:32 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2008-08-04 18:37:24 -04:00
2005-11-17 16:31:37 -05:00
/* these actions are intended to be shared across all windows */
2008-08-04 18:37:24 -04:00
2015-08-10 14:31:59 -04:00
common_actions = global_actions . create_action_group ( X_ ( " Common " ) ) ;
global_actions . register_action ( common_actions , X_ ( " Quit " ) , _ ( " Quit " ) , ( hide_return ( sigc : : mem_fun ( * this , & ARDOUR_UI : : finish ) ) ) ) ;
global_actions . register_action ( common_actions , X_ ( " Hide " ) , _ ( " Hide " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : hide_application ) ) ;
2015-07-22 15:22:58 -04:00
2015-11-18 22:25:18 -05:00
global_actions . register_action ( common_actions , X_ ( " show-editor " ) , _ ( " Show " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : show_tabbable ) , editor ) ) ;
global_actions . register_action ( common_actions , X_ ( " show-mixer " ) , _ ( " Show " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : show_tabbable ) , mixer ) ) ;
global_actions . register_action ( common_actions , X_ ( " show-preferences " ) , _ ( " Show " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : show_tabbable ) , rc_option_editor ) ) ;
2015-11-24 11:19:29 -05:00
global_actions . register_action ( common_actions , X_ ( " menu-show-preferences " ) , _ ( " Preferences " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : show_tabbable ) , rc_option_editor ) ) ;
2015-07-22 15:22:58 -04:00
2015-08-10 14:31:59 -04:00
global_actions . register_action ( common_actions , X_ ( " hide-editor " ) , _ ( " Hide " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : hide_tabbable ) , editor ) ) ;
global_actions . register_action ( common_actions , X_ ( " hide-mixer " ) , _ ( " Hide " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : hide_tabbable ) , mixer ) ) ;
global_actions . register_action ( common_actions , X_ ( " hide-preferences " ) , _ ( " Hide " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : hide_tabbable ) , rc_option_editor ) ) ;
2015-10-26 14:35:06 -04:00
2015-08-10 14:31:59 -04:00
global_actions . register_action ( common_actions , X_ ( " attach-editor " ) , _ ( " Attach " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : attach_tabbable ) , editor ) ) ;
global_actions . register_action ( common_actions , X_ ( " attach-mixer " ) , _ ( " Attach " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : attach_tabbable ) , mixer ) ) ;
global_actions . register_action ( common_actions , X_ ( " attach-preferences " ) , _ ( " Attach " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : attach_tabbable ) , rc_option_editor ) ) ;
2015-10-26 14:35:06 -04:00
2015-08-10 14:31:59 -04:00
global_actions . register_action ( common_actions , X_ ( " detach-editor " ) , _ ( " Detach " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : detach_tabbable ) , editor ) ) ;
global_actions . register_action ( common_actions , X_ ( " detach-mixer " ) , _ ( " Detach " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : detach_tabbable ) , mixer ) ) ;
global_actions . register_action ( common_actions , X_ ( " detach-preferences " ) , _ ( " Detach " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : detach_tabbable ) , rc_option_editor ) ) ;
2005-10-10 16:38:53 -04:00
2015-11-20 09:28:05 -05:00
/* These "change" actions are not intended to be used inside menus, but
are for the tab / window control buttons , which have somewhat odd
semantics .
*/
2015-11-20 14:19:22 -05:00
global_actions . register_action ( common_actions , X_ ( " change-editor-visibility " ) , _ ( " Change " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : button_change_tabbable_visibility ) , editor ) ) ;
global_actions . register_action ( common_actions , X_ ( " change-mixer-visibility " ) , _ ( " Change " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : button_change_tabbable_visibility ) , mixer ) ) ;
global_actions . register_action ( common_actions , X_ ( " change-preferences-visibility " ) , _ ( " Change " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : button_change_tabbable_visibility ) , rc_option_editor ) ) ;
/* These "change" actions are not intended to be used inside menus, but
are for the tab / window control key bindings , which have somewhat odd
semantics .
*/
global_actions . register_action ( common_actions , X_ ( " key-change-editor-visibility " ) , _ ( " Change " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : key_change_tabbable_visibility ) , editor ) ) ;
global_actions . register_action ( common_actions , X_ ( " key-change-mixer-visibility " ) , _ ( " Change " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : key_change_tabbable_visibility ) , mixer ) ) ;
global_actions . register_action ( common_actions , X_ ( " key-change-preferences-visibility " ) , _ ( " Change " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : key_change_tabbable_visibility ) , rc_option_editor ) ) ;
2016-02-25 15:08:06 -05:00
global_actions . register_action ( common_actions , X_ ( " previous-tab " ) , _ ( " Previous Tab " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : step_up_through_tabs ) ) ;
global_actions . register_action ( common_actions , X_ ( " next-tab " ) , _ ( " Next Tab " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : step_down_through_tabs ) ) ;
2015-11-20 14:19:22 -05:00
global_actions . register_action ( common_actions , X_ ( " toggle-editor-and-mixer " ) , _ ( " Toggle Editor & Mixer " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : toggle_editor_and_mixer ) ) ;
2015-11-20 09:28:05 -05:00
2010-11-25 15:37:39 -05:00
/* windows visibility actions */
2005-10-10 16:38:53 -04:00
2015-08-10 14:31:59 -04:00
global_actions . register_toggle_action ( common_actions , X_ ( " ToggleMaximalEditor " ) , _ ( " Maximise Editor Space " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : toggle_editing_space ) ) ;
global_actions . register_toggle_action ( common_actions , X_ ( " ToggleMaximalMixer " ) , _ ( " Maximise Mixer Space " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : toggle_mixer_space ) ) ;
2010-07-23 19:29:36 -04:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2006-01-19 13:05:31 -05:00
2016-01-11 21:36:44 -05:00
act = global_actions . register_toggle_action ( common_actions , X_ ( " ToggleMixerList " ) , _ ( " Toggle Mixer List " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : toggle_mixer_list ) ) ;
2015-12-10 18:21:02 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2016-01-11 21:36:44 -05:00
act = global_actions . register_toggle_action ( common_actions , X_ ( " ToggleMonitorSection " ) , _ ( " Toggle Monitor Section Visibility " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : toggle_monitor_section_visibility ) ) ;
2015-12-19 11:42:36 -05:00
act - > set_sensitive ( false ) ;
2016-01-11 21:36:44 -05:00
if ( Profile - > get_mixbus ( ) ) {
global_actions . register_action ( common_actions , X_ ( " show-ui-prefs " ) , _ ( " Show more UI preferences " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : show_ui_prefs ) ) ;
}
2014-07-14 13:19:52 -04:00
2016-02-23 09:42:13 -05:00
global_actions . register_action ( common_actions , X_ ( " toggle-luawindow " ) , S_ ( " Window|Scripting " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : toggle_luawindow ) ) ;
2015-08-10 14:31:59 -04:00
global_actions . register_action ( common_actions , X_ ( " toggle-meterbridge " ) , S_ ( " Window|Meterbridge " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : toggle_meterbridge ) ) ;
2013-05-04 22:02:05 -04:00
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( common_actions , X_ ( " NewMIDITracer " ) , _ ( " MIDI Tracer " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : new_midi_tracer_window ) ) ;
2010-07-06 20:40:58 -04:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2015-08-01 23:40:55 -04:00
global_actions . register_action ( common_actions , X_ ( " chat " ) , _ ( " Chat " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : launch_chat ) ) ;
2011-11-20 19:04:44 -05:00
/** TRANSLATORS: This is `Manual' in the sense of an instruction book that tells a user how to use Ardour */
2015-08-01 23:40:55 -04:00
global_actions . register_action ( common_actions , X_ ( " manual " ) , S_ ( " Help|Manual " ) , mem_fun ( * this , & ARDOUR_UI : : launch_manual ) ) ;
global_actions . register_action ( common_actions , X_ ( " reference " ) , S_ ( " Manual|Reference " ) , mem_fun ( * this , & ARDOUR_UI : : launch_reference ) ) ;
global_actions . register_action ( common_actions , X_ ( " tracker " ) , _ ( " Report a Bug " ) , mem_fun ( * this , & ARDOUR_UI : : launch_tracker ) ) ;
global_actions . register_action ( common_actions , X_ ( " cheat-sheet " ) , _ ( " Cheat Sheet " ) , mem_fun ( * this , & ARDOUR_UI : : launch_cheat_sheet ) ) ;
global_actions . register_action ( common_actions , X_ ( " website " ) , _ ( " Ardour Website " ) , mem_fun ( * this , & ARDOUR_UI : : launch_website ) ) ;
global_actions . register_action ( common_actions , X_ ( " website-dev " ) , _ ( " Ardour Development " ) , mem_fun ( * this , & ARDOUR_UI : : launch_website_dev ) ) ;
global_actions . register_action ( common_actions , X_ ( " forums " ) , _ ( " User Forums " ) , mem_fun ( * this , & ARDOUR_UI : : launch_forums ) ) ;
global_actions . register_action ( common_actions , X_ ( " howto-report " ) , _ ( " How to Report a Bug " ) , mem_fun ( * this , & ARDOUR_UI : : launch_howto_report ) ) ;
2008-08-04 18:37:24 -04:00
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( common_actions , X_ ( " Save " ) , _ ( " Save " ) , sigc : : hide_return ( sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : save_state ) , string ( " " ) , false ) ) ) ;
2005-11-22 23:13:32 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2009-10-13 16:43:28 -04:00
ActionManager : : write_sensitive_actions . push_back ( act ) ;
2005-12-21 16:37:18 -05:00
2015-08-10 14:31:59 -04:00
Glib : : RefPtr < ActionGroup > transport_actions = global_actions . create_action_group ( X_ ( " Transport " ) ) ;
2005-12-21 16:37:18 -05:00
/* do-nothing action for the "transport" menu bar item */
2015-08-10 14:31:59 -04:00
global_actions . register_action ( transport_actions , X_ ( " Transport " ) , _ ( " Transport " ) ) ;
2005-12-21 16:37:18 -05:00
/* these two are not used by key bindings, instead use ToggleRoll for that. these two do show up in
menus and via button proxies .
*/
2008-08-04 18:37:24 -04:00
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " Stop " ) , _ ( " Stop " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : transport_stop ) ) ;
2005-12-21 16:37:18 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " Roll " ) , _ ( " Roll " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : transport_roll ) ) ;
2005-12-21 16:37:18 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " ToggleRoll " ) , _ ( " Start/Stop " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : toggle_roll ) , false , false ) ) ;
2005-12-21 16:37:18 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " alternate-ToggleRoll " ) , _ ( " Start/Stop " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : toggle_roll ) , false , false ) ) ;
2014-07-03 18:50:14 -04:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " ToggleRollMaybe " ) , _ ( " Start/Continue/Stop " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : toggle_roll ) , false , true ) ) ;
2009-11-08 11:28:21 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " ToggleRollForgetCapture " ) , _ ( " Stop and Forget Capture " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : toggle_roll ) , true , false ) ) ;
2005-11-22 23:13:32 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2005-12-21 16:37:18 -05:00
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2007-01-28 12:44:13 -05:00
/* these two behave as follows:
- if transport speed ! = 1.0 or ! = - 1.0 , change speed to 1.0 or - 1.0 ( respectively )
- otherwise do nothing
*/
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " TransitionToRoll " ) , _ ( " Transition to Roll " ) , sigc : : bind ( sigc : : mem_fun ( * editor , & PublicEditor : : transition_to_rolling ) , true ) ) ;
2007-01-28 12:44:13 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2009-11-08 13:02:03 -05:00
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2007-01-28 12:44:13 -05:00
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " TransitionToReverse " ) , _ ( " Transition to Reverse " ) , sigc : : bind ( sigc : : mem_fun ( * editor , & PublicEditor : : transition_to_rolling ) , false ) ) ;
2007-01-28 12:44:13 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2009-11-08 13:02:03 -05:00
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2007-01-28 12:44:13 -05:00
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " Loop " ) , _ ( " Play Loop Range " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : toggle_session_auto_loop ) ) ;
2005-11-22 23:13:32 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2005-12-21 16:37:18 -05:00
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " PlaySelection " ) , _ ( " Play Selection " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : transport_play_selection ) ) ;
2005-11-22 23:13:32 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2005-12-21 16:37:18 -05:00
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " PlayPreroll " ) , _ ( " Play Selection w/Preroll " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : transport_play_preroll ) ) ;
2012-11-20 14:43:43 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2005-12-21 16:37:18 -05:00
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " Record " ) , _ ( " Enable Record " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : transport_record ) , false ) ) ;
2008-01-10 16:20:59 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2009-10-13 16:43:28 -04:00
ActionManager : : write_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " record-roll " ) , _ ( " Start Recording " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : transport_record ) , true ) ) ;
2005-12-21 16:37:18 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2009-10-13 16:43:28 -04:00
ActionManager : : write_sensitive_actions . push_back ( act ) ;
2005-12-21 16:37:18 -05:00
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " alternate-record-roll " ) , _ ( " Start Recording " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : transport_record ) , true ) ) ;
2014-07-03 18:50:14 -04:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : write_sensitive_actions . push_back ( act ) ;
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " Rewind " ) , _ ( " Rewind " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : transport_rewind ) , 0 ) ) ;
2005-11-22 23:13:32 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2005-12-21 16:37:18 -05:00
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " RewindSlow " ) , _ ( " Rewind (Slow) " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : transport_rewind ) , - 1 ) ) ;
2005-11-22 23:13:32 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2005-12-21 16:37:18 -05:00
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " RewindFast " ) , _ ( " Rewind (Fast) " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : transport_rewind ) , 1 ) ) ;
2005-11-22 23:13:32 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2005-12-21 16:37:18 -05:00
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " Forward " ) , _ ( " Forward " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : transport_forward ) , 0 ) ) ;
2005-11-22 23:13:32 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2005-12-21 16:37:18 -05:00
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " ForwardSlow " ) , _ ( " Forward (Slow) " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : transport_forward ) , - 1 ) ) ;
2005-11-22 23:13:32 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2005-12-21 16:37:18 -05:00
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " ForwardFast " ) , _ ( " Forward (Fast) " ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : transport_forward ) , 1 ) ) ;
2005-11-22 23:13:32 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2005-12-21 16:37:18 -05:00
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " GotoZero " ) , _ ( " Go to Zero " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : transport_goto_zero ) ) ;
2006-03-11 11:01:06 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " GotoStart " ) , _ ( " Go to Start " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : transport_goto_start ) ) ;
2005-11-22 23:13:32 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2005-12-21 16:37:18 -05:00
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " alternate-GotoStart " ) , _ ( " Go to Start " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : transport_goto_start ) ) ;
2014-07-03 18:50:14 -04:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " GotoEnd " ) , _ ( " Go to End " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : transport_goto_end ) ) ;
2005-11-22 23:13:32 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2005-12-21 16:37:18 -05:00
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " GotoWallClock " ) , _ ( " Go to Wall Clock " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : transport_goto_wallclock ) ) ;
2008-09-10 11:03:30 -04:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2005-12-21 16:37:18 -05:00
2014-07-03 18:50:14 -04:00
//these actions handle the numpad events, ProTools style
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " numpad-decimal " ) , _ ( " Numpad Decimal " ) , mem_fun ( * this , & ARDOUR_UI : : transport_numpad_decimal ) ) ;
2014-07-03 18:50:14 -04:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " alternate-numpad-decimal " ) , _ ( " Numpad Decimal " ) , mem_fun ( * this , & ARDOUR_UI : : transport_numpad_decimal ) ) ;
2014-10-21 17:36:15 -04:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " numpad-0 " ) , _ ( " Numpad 0 " ) , bind ( mem_fun ( * this , & ARDOUR_UI : : transport_numpad_event ) , 0 ) ) ;
2014-07-03 18:50:14 -04:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " numpad-1 " ) , _ ( " Numpad 1 " ) , bind ( mem_fun ( * this , & ARDOUR_UI : : transport_numpad_event ) , 1 ) ) ;
2014-07-03 18:50:14 -04:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " numpad-2 " ) , _ ( " Numpad 2 " ) , bind ( mem_fun ( * this , & ARDOUR_UI : : transport_numpad_event ) , 2 ) ) ;
2014-07-03 18:50:14 -04:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " numpad-3 " ) , _ ( " Numpad 3 " ) , bind ( mem_fun ( * this , & ARDOUR_UI : : transport_numpad_event ) , 3 ) ) ;
2014-07-03 18:50:14 -04:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " numpad-4 " ) , _ ( " Numpad 4 " ) , bind ( mem_fun ( * this , & ARDOUR_UI : : transport_numpad_event ) , 4 ) ) ;
2014-07-03 18:50:14 -04:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " numpad-5 " ) , _ ( " Numpad 5 " ) , bind ( mem_fun ( * this , & ARDOUR_UI : : transport_numpad_event ) , 5 ) ) ;
2014-07-03 18:50:14 -04:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " numpad-6 " ) , _ ( " Numpad 6 " ) , bind ( mem_fun ( * this , & ARDOUR_UI : : transport_numpad_event ) , 6 ) ) ;
2014-07-03 18:50:14 -04:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " numpad-7 " ) , _ ( " Numpad 7 " ) , bind ( mem_fun ( * this , & ARDOUR_UI : : transport_numpad_event ) , 7 ) ) ;
2014-07-03 18:50:14 -04:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " numpad-8 " ) , _ ( " Numpad 8 " ) , bind ( mem_fun ( * this , & ARDOUR_UI : : transport_numpad_event ) , 8 ) ) ;
2014-07-03 18:50:14 -04:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " numpad-9 " ) , _ ( " Numpad 9 " ) , bind ( mem_fun ( * this , & ARDOUR_UI : : transport_numpad_event ) , 9 ) ) ;
2014-07-03 18:50:14 -04:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " focus-on-clock " ) , _ ( " Focus On Clock " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : focus_on_clock ) ) ;
2008-01-10 16:20:59 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2016-04-24 08:39:12 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " primary-clock-timecode " ) , _ ( " Timecode " ) , sigc : : bind ( sigc : : mem_fun ( primary_clock , & AudioClock : : set_mode ) , AudioClock : : Timecode , false ) ) ;
2011-06-07 19:07:08 -04:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2016-04-24 08:39:12 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " primary-clock-bbt " ) , _ ( " Bars & Beats " ) , sigc : : bind ( sigc : : mem_fun ( primary_clock , & AudioClock : : set_mode ) , AudioClock : : BBT , false ) ) ;
2008-02-19 17:10:27 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2016-04-24 08:39:12 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " primary-clock-minsec " ) , _ ( " Minutes & Seconds " ) , sigc : : bind ( sigc : : mem_fun ( primary_clock , & AudioClock : : set_mode ) , AudioClock : : MinSec , false ) ) ;
2008-02-19 17:10:27 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2016-04-24 08:39:12 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " primary-clock-samples " ) , _ ( " Samples " ) , sigc : : bind ( sigc : : mem_fun ( primary_clock , & AudioClock : : set_mode ) , AudioClock : : Frames , false ) ) ;
2008-02-19 17:10:27 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2016-04-24 08:39:12 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " secondary-clock-timecode " ) , _ ( " Timecode " ) , sigc : : bind ( sigc : : mem_fun ( secondary_clock , & AudioClock : : set_mode ) , AudioClock : : Timecode , false ) ) ;
2011-06-07 19:07:08 -04:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2016-04-24 08:39:12 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " secondary-clock-bbt " ) , _ ( " Bars & Beats " ) , sigc : : bind ( sigc : : mem_fun ( secondary_clock , & AudioClock : : set_mode ) , AudioClock : : BBT , false ) ) ;
2008-02-19 17:10:27 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2016-04-24 08:39:12 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " secondary-clock-minsec " ) , _ ( " Minutes & Seconds " ) , sigc : : bind ( sigc : : mem_fun ( secondary_clock , & AudioClock : : set_mode ) , AudioClock : : MinSec , false ) ) ;
2008-02-19 17:10:27 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2016-04-24 08:39:12 -04:00
act = global_actions . register_action ( transport_actions , X_ ( " secondary-clock-samples " ) , _ ( " Samples " ) , sigc : : bind ( sigc : : mem_fun ( secondary_clock , & AudioClock : : set_mode ) , AudioClock : : Frames , false ) ) ;
2008-02-19 17:10:27 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_toggle_action ( transport_actions , X_ ( " TogglePunchIn " ) , _ ( " Punch In " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : toggle_punch_in ) ) ;
2011-06-08 15:48:57 -04:00
act - > set_short_label ( _ ( " In " ) ) ;
2005-11-22 23:13:32 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2005-12-21 16:37:18 -05:00
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_toggle_action ( transport_actions , X_ ( " TogglePunchOut " ) , _ ( " Punch Out " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : toggle_punch_out ) ) ;
2011-06-08 15:48:57 -04:00
act - > set_short_label ( _ ( " Out " ) ) ;
2006-01-08 00:19:38 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_toggle_action ( transport_actions , X_ ( " TogglePunch " ) , _ ( " Punch In/Out " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : toggle_punch ) ) ;
2011-06-08 15:48:57 -04:00
act - > set_short_label ( _ ( " In/Out " ) ) ;
2008-03-17 16:54:03 -04:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_toggle_action ( transport_actions , X_ ( " ToggleClick " ) , _ ( " Click " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : toggle_click ) ) ;
2006-01-08 00:19:38 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_toggle_action ( transport_actions , X_ ( " ToggleAutoInput " ) , _ ( " Auto Input " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : toggle_auto_input ) ) ;
2006-01-08 00:19:38 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_toggle_action ( transport_actions , X_ ( " ToggleAutoPlay " ) , _ ( " Auto Play " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : toggle_auto_play ) ) ;
2006-01-08 00:19:38 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_toggle_action ( transport_actions , X_ ( " ToggleAutoReturn " ) , _ ( " Auto Return " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : toggle_auto_return ) ) ;
2005-11-22 23:13:32 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2005-12-21 16:37:18 -05:00
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_toggle_action ( transport_actions , X_ ( " ToggleFollowEdits " ) , _ ( " Follow Edits " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : toggle_follow_edits ) ) ;
2012-11-20 14:43:43 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
ActionManager : : transport_sensitive_actions . push_back ( act ) ;
2005-12-21 16:37:18 -05:00
2015-08-10 14:31:59 -04:00
act = global_actions . register_toggle_action ( transport_actions , X_ ( " ToggleVideoSync " ) , _ ( " Sync Startup to Video " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : toggle_video_sync ) ) ;
2009-11-09 23:30:08 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_toggle_action ( transport_actions , X_ ( " ToggleTimeMaster " ) , _ ( " Time Master " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : toggle_time_master ) ) ;
2005-12-31 13:20:42 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_toggle_action ( transport_actions , X_ ( " ToggleExternalSync " ) , _ ( " Use External Positional Sync Source " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : toggle_external_sync ) ) ;
2009-11-09 23:30:08 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2005-12-31 13:20:42 -05:00
2010-01-13 20:04:27 -05:00
for ( int i = 1 ; i < = 32 ; + + i ) {
string const a = string_compose ( X_ ( " ToggleRecordEnableTrack%1 " ) , i ) ;
string const n = string_compose ( _ ( " Toggle Record Enable Track %1 " ) , i ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_action ( common_actions , a . c_str ( ) , n . c_str ( ) , sigc : : bind ( sigc : : mem_fun ( * this , & ARDOUR_UI : : toggle_record_enable ) , i - 1 ) ) ;
2010-01-13 20:04:27 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
}
2005-11-28 10:29:49 -05:00
2015-08-10 14:31:59 -04:00
Glib : : RefPtr < ActionGroup > shuttle_actions = global_actions . create_action_group ( " ShuttleActions " ) ;
2008-08-04 18:37:24 -04:00
2009-12-11 18:29:48 -05:00
shuttle_actions - > add ( Action : : create ( X_ ( " SetShuttleUnitsPercentage " ) , _ ( " Percentage " ) ) , hide_return ( sigc : : bind ( sigc : : mem_fun ( * Config , & RCConfiguration : : set_shuttle_units ) , Percentage ) ) ) ;
shuttle_actions - > add ( Action : : create ( X_ ( " SetShuttleUnitsSemitones " ) , _ ( " Semitones " ) ) , hide_return ( sigc : : bind ( sigc : : mem_fun ( * Config , & RCConfiguration : : set_shuttle_units ) , Semitones ) ) ) ;
2005-12-31 13:20:42 -05:00
2016-02-27 19:11:48 -05:00
Glib : : RefPtr < ActionGroup > option_actions = global_actions . create_action_group ( " Options " ) ;
2005-12-31 13:20:42 -05:00
2015-08-10 14:31:59 -04:00
act = global_actions . register_toggle_action ( option_actions , X_ ( " SendMTC " ) , _ ( " Send MTC " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : toggle_send_mtc ) ) ;
2005-12-31 13:20:42 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_toggle_action ( option_actions , X_ ( " SendMMC " ) , _ ( " Send MMC " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : toggle_send_mmc ) ) ;
2005-12-31 13:20:42 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_toggle_action ( option_actions , X_ ( " UseMMC " ) , _ ( " Use MMC " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : toggle_use_mmc ) ) ;
2005-12-31 13:20:42 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_toggle_action ( option_actions , X_ ( " SendMidiClock " ) , _ ( " Send MIDI Clock " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : toggle_send_midi_clock ) ) ;
2008-11-26 18:32:55 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2015-08-10 14:31:59 -04:00
act = global_actions . register_toggle_action ( option_actions , X_ ( " SendMIDIfeedback " ) , _ ( " Send MIDI Feedback " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : toggle_send_midi_feedback ) ) ;
2005-12-31 13:20:42 -05:00
ActionManager : : session_sensitive_actions . push_back ( act ) ;
2008-04-11 10:06:50 -04:00
2011-11-10 13:04:34 -05:00
/* MIDI */
2015-08-10 14:31:59 -04:00
Glib : : RefPtr < ActionGroup > midi_actions = global_actions . create_action_group ( X_ ( " MIDI " ) ) ;
global_actions . register_action ( midi_actions , X_ ( " panic " ) , _ ( " Panic " ) , sigc : : mem_fun ( * this , & ARDOUR_UI : : midi_panic ) ) ;
2005-10-10 16:38:53 -04:00
}
void
ARDOUR_UI : : build_menu_bar ( )
{
2005-11-25 19:06:46 -05:00
menu_bar = dynamic_cast < MenuBar * > ( ActionManager : : get_widget ( X_ ( " /Main " ) ) ) ;
2005-10-10 16:38:53 -04:00
menu_bar - > set_name ( " MainMenuBar " ) ;
2005-09-25 14:42:24 -04:00
2011-10-23 17:31:28 -04:00
EventBox * ev = manage ( new EventBox ) ;
ev - > show ( ) ;
2011-12-07 08:57:45 -05:00
CairoHPacker * hbox = manage ( new CairoHPacker ) ;
2012-11-11 17:36:00 -05:00
hbox - > set_name ( X_ ( " StatusBarBox " ) ) ;
2011-10-23 17:31:28 -04:00
hbox - > show ( ) ;
2011-12-29 09:29:23 -05:00
hbox - > set_border_width ( 3 ) ;
VBox * vbox = manage ( new VBox ) ;
vbox - > pack_start ( * hbox , true , false ) ;
vbox - > show ( ) ;
ev - > add ( * vbox ) ;
2011-10-23 17:31:28 -04:00
2005-09-25 14:42:24 -04:00
wall_clock_label . set_name ( " WallClock " ) ;
2011-12-07 08:57:45 -05:00
wall_clock_label . set_use_markup ( ) ;
2005-09-25 14:42:24 -04:00
disk_space_label . set_name ( " WallClock " ) ;
2011-10-22 20:15:35 -04:00
disk_space_label . set_use_markup ( ) ;
2012-10-12 12:25:57 -04:00
timecode_format_label . set_name ( " WallClock " ) ;
timecode_format_label . set_use_markup ( ) ;
2005-09-25 14:42:24 -04:00
cpu_load_label . set_name ( " CPULoad " ) ;
2011-10-22 20:15:35 -04:00
cpu_load_label . set_use_markup ( ) ;
2015-04-28 21:10:27 -04:00
xrun_label . set_name ( " XrunLabel " ) ;
xrun_label . set_use_markup ( ) ;
2015-09-15 11:46:48 -04:00
peak_thread_work_label . set_name ( " PeakThreadWork " ) ;
peak_thread_work_label . set_use_markup ( ) ;
2005-09-25 14:42:24 -04:00
buffer_load_label . set_name ( " BufferLoad " ) ;
2011-10-22 20:15:35 -04:00
buffer_load_label . set_use_markup ( ) ;
2005-09-25 14:42:24 -04:00
sample_rate_label . set_name ( " SampleRate " ) ;
2011-10-22 20:15:35 -04:00
sample_rate_label . set_use_markup ( ) ;
2011-07-02 20:45:15 -04:00
format_label . set_name ( " Format " ) ;
2011-10-22 20:15:35 -04:00
format_label . set_use_markup ( ) ;
2011-07-02 20:45:15 -04:00
2007-10-11 18:07:47 -04:00
# ifndef TOP_MENUBAR
2015-11-17 17:49:27 -05:00
menu_hbox . pack_start ( * menu_bar , false , false ) ;
2007-10-11 18:07:47 -04:00
# else
use_menubar_as_top_menubar ( ) ;
# endif
2011-10-29 16:07:00 -04:00
bool wall_clock = false ;
bool disk_space = false ;
2015-11-17 17:49:27 -05:00
if ( ! Profile - > get_small_screen ( ) ) {
2015-10-27 13:43:31 -04:00
# ifndef __APPLE__
2007-10-11 18:07:47 -04:00
// OSX provides its own wallclock, thank you very much
2011-10-29 16:07:00 -04:00
wall_clock = true ;
2007-10-11 18:07:47 -04:00
# endif
2011-10-29 16:07:00 -04:00
disk_space = true ;
2007-04-12 19:20:37 -04:00
}
2015-03-14 12:28:20 -04:00
2015-11-17 17:49:27 -05:00
2015-03-14 12:28:20 -04:00
hbox - > pack_end ( error_alert_button , false , false , 2 ) ;
2015-03-16 17:16:38 -04:00
2011-12-07 08:57:45 -05:00
hbox - > pack_end ( wall_clock_label , false , false , 2 ) ;
hbox - > pack_end ( disk_space_label , false , false , 4 ) ;
2015-04-28 21:10:27 -04:00
hbox - > pack_end ( xrun_label , false , false , 4 ) ;
2015-09-15 11:46:48 -04:00
hbox - > pack_end ( peak_thread_work_label , false , false , 4 ) ;
2011-12-07 08:57:45 -05:00
hbox - > pack_end ( cpu_load_label , false , false , 4 ) ;
hbox - > pack_end ( buffer_load_label , false , false , 4 ) ;
hbox - > pack_end ( sample_rate_label , false , false , 4 ) ;
2012-10-12 12:25:57 -04:00
hbox - > pack_end ( timecode_format_label , false , false , 4 ) ;
2011-12-07 08:57:45 -05:00
hbox - > pack_end ( format_label , false , false , 4 ) ;
2007-10-11 18:07:47 -04:00
2015-03-14 13:26:10 -04:00
menu_hbox . pack_end ( * ev , false , false , 2 ) ;
2005-09-25 14:42:24 -04:00
menu_bar_base . set_name ( " MainMenuBar " ) ;
menu_bar_base . add ( menu_hbox ) ;
2011-10-23 17:31:28 -04:00
2015-10-27 13:43:31 -04:00
# ifndef __APPLE__
2012-10-12 12:25:57 -04:00
_status_bar_visibility . add ( & wall_clock_label , X_ ( " WallClock " ) , _ ( " Wall Clock " ) , wall_clock ) ;
2015-03-14 13:26:53 -04:00
# endif
2012-10-12 12:25:57 -04:00
_status_bar_visibility . add ( & disk_space_label , X_ ( " Disk " ) , _ ( " Disk Space " ) , disk_space ) ;
_status_bar_visibility . add ( & cpu_load_label , X_ ( " DSP " ) , _ ( " DSP " ) , true ) ;
2015-04-29 09:45:04 -04:00
_status_bar_visibility . add ( & xrun_label , X_ ( " XRun " ) , _ ( " X-run " ) , false ) ;
2015-09-15 11:46:48 -04:00
_status_bar_visibility . add ( & peak_thread_work_label , X_ ( " Peakfile " ) , _ ( " Active Peak-file Work " ) , false ) ;
2012-10-12 12:25:57 -04:00
_status_bar_visibility . add ( & buffer_load_label , X_ ( " Buffers " ) , _ ( " Buffers " ) , true ) ;
2013-09-17 22:25:21 -04:00
_status_bar_visibility . add ( & sample_rate_label , X_ ( " Audio " ) , _ ( " Audio " ) , true ) ;
2012-10-12 12:25:57 -04:00
_status_bar_visibility . add ( & timecode_format_label , X_ ( " TCFormat " ) , _ ( " Timecode Format " ) , true ) ;
_status_bar_visibility . add ( & format_label , X_ ( " Format " ) , _ ( " File Format " ) , true ) ;
2011-10-23 17:31:28 -04:00
2011-10-29 16:07:00 -04:00
ev - > signal_button_press_event ( ) . connect ( sigc : : mem_fun ( _status_bar_visibility , & VisibilityGroup : : button_press_event ) ) ;
2015-04-29 09:45:04 -04:00
ev - > signal_button_release_event ( ) . connect ( sigc : : mem_fun ( * this , & ARDOUR_UI : : xrun_button_release ) ) ;
2005-09-25 14:42:24 -04:00
}
2006-10-21 15:01:50 -04:00
2007-10-11 18:07:47 -04:00
void
ARDOUR_UI : : use_menubar_as_top_menubar ( )
{
2010-08-20 18:36:35 -04:00
Gtk : : Widget * widget ;
Application * app = Application : : instance ( ) ;
2013-05-08 11:43:33 -04:00
/* the addresses ("/ui/Main...") used below are based on the menu definitions in the menus file
*/
/* Quit will be taken care of separately */
2010-08-20 18:36:35 -04:00
if ( ( widget = ActionManager : : get_widget ( " /ui/Main/Session/Quit " ) ) ) {
widget - > hide ( ) ;
}
2013-05-08 10:47:45 -04:00
/* Put items for About and Preferences into App menu (the
* ardour . menus . in file does not list them for OS X )
*/
2010-08-20 18:36:35 -04:00
GtkApplicationMenuGroup * group = app - > add_app_menu_group ( ) ;
2013-05-08 11:43:33 -04:00
if ( ( widget = ActionManager : : get_widget ( " /ui/Main/Session/toggle-about " ) ) ) {
2010-08-20 18:36:35 -04:00
app - > add_app_menu_item ( group , dynamic_cast < MenuItem * > ( widget ) ) ;
2013-05-08 11:43:33 -04:00
}
2010-08-20 18:36:35 -04:00
2016-04-13 12:34:21 -04:00
if ( ( widget = ActionManager : : get_widget ( " /ui/Main/Edit/menu-show-preferences " ) ) ) {
2010-08-20 18:36:35 -04:00
app - > add_app_menu_item ( group , dynamic_cast < MenuItem * > ( widget ) ) ;
2013-05-08 11:43:33 -04:00
}
2010-08-20 18:36:35 -04:00
app - > set_menu_bar ( * menu_bar ) ;
2007-10-11 18:07:47 -04:00
}
2010-03-18 22:49:01 -04:00
void
ARDOUR_UI : : save_ardour_state ( )
{
2013-07-01 14:42:26 -04:00
if ( ! keyboard | | ! mixer | | ! editor | | ! meterbridge ) {
2010-03-18 22:49:01 -04:00
return ;
}
/* XXX this is all a bit dubious. add_extra_xml() uses
a different lifetime model from add_instant_xml ( ) .
*/
2016-05-07 11:17:41 -04:00
LocaleGuard lg ; // one guard to rule them all
2010-03-18 22:49:01 -04:00
XMLNode * node = new XMLNode ( keyboard - > get_state ( ) ) ;
Config - > add_extra_xml ( * node ) ;
Config - > add_extra_xml ( get_transport_controllable_state ( ) ) ;
2010-11-25 15:37:39 -05:00
XMLNode * window_node = new XMLNode ( X_ ( " UI " ) ) ;
2011-10-29 16:07:00 -04:00
window_node - > add_property ( _status_bar_visibility . get_state_name ( ) . c_str ( ) , _status_bar_visibility . get_state_value ( ) ) ;
2010-03-18 22:49:01 -04:00
2015-07-09 19:22:06 -04:00
/* main window */
gint mx , my , mw , mh ;
_main_window . get_position ( mx , my ) ;
_main_window . get_size ( mw , mh ) ;
XMLNode main_window_node ( X_ ( " Main " ) ) ;
main_window_node . add_property ( X_ ( " x " ) , PBD : : to_string ( mx , std : : dec ) ) ;
main_window_node . add_property ( X_ ( " y " ) , PBD : : to_string ( my , std : : dec ) ) ;
main_window_node . add_property ( X_ ( " w " ) , PBD : : to_string ( mw , std : : dec ) ) ;
main_window_node . add_property ( X_ ( " h " ) , PBD : : to_string ( mh , std : : dec ) ) ;
2015-07-27 17:12:35 -04:00
string current_tab ;
int current_page_number = _tabs . get_current_page ( ) ;
2016-02-28 06:17:57 -05:00
if ( current_page_number = = _tabs . page_num ( editor - > contents ( ) ) ) {
2015-07-27 17:12:35 -04:00
current_tab = " editor " ;
2016-02-28 06:17:57 -05:00
} else if ( current_page_number = = _tabs . page_num ( mixer - > contents ( ) ) ) {
2015-07-27 17:12:35 -04:00
current_tab = " mixer " ;
2016-02-28 06:17:57 -05:00
} else if ( current_page_number = = _tabs . page_num ( rc_option_editor - > contents ( ) ) ) {
2016-05-15 08:45:34 -04:00
current_tab = " preferences " ;
2015-07-27 17:12:35 -04:00
}
main_window_node . add_property ( X_ ( " current-tab " ) , current_tab ) ;
2015-10-26 14:35:06 -04:00
2013-05-04 22:02:05 -04:00
/* Windows */
2013-05-07 22:09:16 -04:00
WM : : Manager : : instance ( ) . add_state ( * window_node ) ;
2011-06-01 13:00:29 -04:00
2010-11-25 15:37:39 -05:00
XMLNode * tearoff_node = new XMLNode ( X_ ( " Tearoffs " ) ) ;
2014-12-08 12:46:54 -05:00
if ( mixer - > monitor_section ( ) ) {
2010-11-25 15:37:39 -05:00
XMLNode * t = new XMLNode ( X_ ( " monitor-section " ) ) ;
mixer - > monitor_section ( ) - > tearoff ( ) . add_state ( * t ) ;
tearoff_node - > add_child_nocopy ( * t ) ;
2011-06-01 13:00:29 -04:00
}
2010-11-25 15:37:39 -05:00
window_node - > add_child_nocopy ( * tearoff_node ) ;
2010-03-18 22:49:01 -04:00
2015-07-09 12:40:51 -04:00
XMLNode & enode ( editor - > get_state ( ) ) ;
XMLNode & mnode ( mixer - > get_state ( ) ) ;
XMLNode & bnode ( meterbridge - > get_state ( ) ) ;
2010-11-25 15:37:39 -05:00
Config - > add_extra_xml ( * window_node ) ;
2013-09-22 19:22:56 -04:00
Config - > add_extra_xml ( audio_midi_setup - > get_state ( ) ) ;
2010-03-18 22:49:01 -04:00
Config - > save_state ( ) ;
2013-09-05 14:21:25 -04:00
2015-01-02 09:44:54 -05:00
UIConfiguration : : instance ( ) . save_state ( ) ;
2010-03-18 22:49:01 -04:00
if ( _session ) {
2015-07-09 19:22:06 -04:00
_session - > add_instant_xml ( main_window_node ) ;
2010-03-18 22:49:01 -04:00
_session - > add_instant_xml ( enode ) ;
_session - > add_instant_xml ( mnode ) ;
2013-06-23 10:05:52 -04:00
_session - > add_instant_xml ( bnode ) ;
2013-05-04 22:02:05 -04:00
if ( location_ui ) {
_session - > add_instant_xml ( location_ui - > ui ( ) . get_state ( ) ) ;
2011-11-23 19:05:00 -05:00
}
2010-03-18 22:49:01 -04:00
} else {
2015-07-09 19:22:06 -04:00
Config - > add_instant_xml ( main_window_node ) ;
2010-03-18 22:49:01 -04:00
Config - > add_instant_xml ( enode ) ;
Config - > add_instant_xml ( mnode ) ;
2015-07-09 12:40:51 -04:00
Config - > add_instant_xml ( bnode ) ;
2013-05-04 22:02:05 -04:00
if ( location_ui ) {
Config - > add_instant_xml ( location_ui - > ui ( ) . get_state ( ) ) ;
2011-11-23 19:05:00 -05:00
}
2010-03-18 22:49:01 -04:00
}
2014-09-10 20:34:09 -04:00
delete & enode ;
2010-03-18 22:49:01 -04:00
Keyboard : : save_keybindings ( ) ;
}
2011-11-14 06:31:27 -05:00
void
ARDOUR_UI : : resize_text_widgets ( )
{
set_size_request_to_display_given_text ( cpu_load_label , " DSP: 100.0% " , 2 , 2 ) ;
set_size_request_to_display_given_text ( buffer_load_label , " Buffers: p:100% c:100% " , 2 , 2 ) ;
2015-04-28 21:10:27 -04:00
set_size_request_to_display_given_text ( xrun_label , " X: 9999 " , 2 , 2 ) ;
2011-11-14 06:31:27 -05:00
}
2011-11-20 11:38:51 -05:00
void
ARDOUR_UI : : focus_on_clock ( )
{
if ( editor & & primary_clock ) {
editor - > present ( ) ;
primary_clock - > focus ( ) ;
}
}
2015-04-29 09:45:04 -04:00
bool
ARDOUR_UI : : xrun_button_release ( GdkEventButton * ev )
{
if ( ev - > button ! = 1 | | ! Keyboard : : modifier_state_equals ( ev - > state , Keyboard : : TertiaryModifier ) ) {
return false ;
}
if ( _session ) {
_session - > reset_xrun_count ( ) ;
update_xrun_count ( ) ;
}
return true ;
}
2015-04-21 15:10:49 -04:00
Gtk : : Notebook &
ARDOUR_UI : : tabs ( )
{
2015-07-07 22:12:21 -04:00
return _tabs ;
2015-04-21 15:10:49 -04:00
}
2015-11-24 10:12:07 -05:00
bool
ARDOUR_UI : : tabbable_visibility_button_press ( GdkEventButton * ev , string const & tabbable_name )
{
if ( ev - > button ! = 3 ) {
return false ;
}
/* context menu is defined in *.menus.in
*/
string menu_name = string ( " /ui/ " ) + tabbable_name + X_ ( " TabbableButtonMenu " ) ;
Gtk : : Menu * menu = dynamic_cast < Gtk : : Menu * > ( ActionManager : : get_widget ( menu_name . c_str ( ) ) ) ;
if ( menu ) {
menu - > popup ( 3 , ev - > time ) ;
}
return true ;
}