diff options
27 files changed, 640 insertions, 529 deletions
diff --git a/autowaf.py b/autowaf.py index 21ec430d37..9078761ef8 100644 --- a/autowaf.py +++ b/autowaf.py @@ -130,6 +130,102 @@ def configure(conf): conf.env['DEBUG'] = Options.options.debug conf.env['STRICT'] = Options.options.strict conf.env['PREFIX'] = os.path.abspath(os.path.expanduser(os.path.normpath(conf.env['PREFIX']))) + + if sys.platform == 'darwin': + # + # Define OSX as a uselib to use when compiling + # on Darwin to add all applicable flags at once + # + conf.env.append_value('CXXFLAGS_OSX', "-mmacosx-version-min=10.4") + conf.env.append_value('CCFLAGS_OSX', "-mmacosx-version-min=10.4") + conf.env.append_value('CXXFLAGS_OSX', "-isysroot /Developer/SDKs/MacOSX10.4u.sdk") + conf.env.append_value('CCFLAGS_OSX', "-isysroot /Developer/SDKs/MacOSX10.4u.sdk") + conf.env.append_value('LINKFLAGS_OSX', "-mmacosx-version-min=10.4") + conf.env.append_value('LINKFLAGS_OSX', "-isysroot /Developer/SDKs/MacOSX10.4u.sdk") + + conf.env.append_value('LINKFLAGS_OSX', "-sysroot /Developer/SDKs/MacOSX10.4u.sdk") + conf.env.append_value('LINKFLAGS_OSX', "-F/System/Library/Frameworks") + + conf.env.append_value('CXXFLAGS_OSX', "-msse") + conf.env.append_value('CCFLAGS_OSX', "-msse") + conf.env.append_value('CXXFLAGS_OSX', "-msse2") + conf.env.append_value('CCFLAGS_OSX', "-msse2") + # + # TODO: The previous sse flags NEED to be based + # off processor type. Need to add in a check + # for that. + # + + conf.env.append_value('LINKFLAGS_OSX', ['-undefined', 'suppress']) + conf.env.append_value('LINKFLAGS_OSX', "-flat_namespace") + # + # The previous 2 flags avoid circular dependencies + # between libardour and libardour_cp on OS X. + # ld reported -undefined suppress as an unknown option + # in one of the tests ran, removing it for the moment + # + conf.env.append_value('CXXFLAGS_OSX', "-F/System/Library/Frameworks") + conf.env.append_value('CCFLAGS_OSX', "-F/System/Library/Frameworks") + + + if Options.options.gtkosx: + # + # Define Include Paths for GTKOSX + # + conf.env.append_value('CPPPATH_GTKOSX', "/usr/include/") + conf.env.append_value('CPPPATH_GTKOSX', "/usr/include/c++/4.0.0") + conf.env.append_value('CPPPATH_GTKOSX', "/usr/include/c++/4.0.0/i686-apple-darwin8/") + # + # TODO: Fix the above include path, it needs to be + # defined based off what is read in the configuration + # stage about the machine(PPC, X86, X86_64, etc.) + # + conf.env.append_value('CPPPATH_GTKOSX', "/usr/lib/gcc/i686-apple-darwin9/4.0.1/include/") + # + # TODO: Likewise this needs to be defined not only + # based off the machine characteristics, but also + # based off the version of GCC being used. + # + conf.env.append_value('CPPPATH_GTKOSX', "/System/Library/Frameworks/") + conf.env.append_value('CXXFLAGS_GTKOSX', '-DTOP_MENUBAR') + conf.env.append_value('CXXFLAGS_GTKOSX', '-DGTKOSX') + conf.env.append_value('LINKFLAGS_GTKOSX', "-framework AppKit") + conf.env.append_value('LINKFLAGS_GTKOSX', "-Xlinker -headerpad") + conf.env.append_value('LINKFLAGS_GTKOSX', "-Xlinker 2048") + conf.env.append_value('CPPPATH_GTKOSX', "/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/") + # + # I had a note the previous was for MacTypes.h + # + + if Options.options.coreaudio: + #conf.env.append_value('LINKFLAGS_COREAUDIO', "-framework CoreAudioKit") + #conf.env.append_value('LINKFLAGS_COREAUDIO', "-framework AudioToolbox") + #conf.env.append_value('LINKFLAGS_COREAUDIO', "-framework CoreServices") + conf.check_cc (header_name = '/System/Library/Frameworks/CoreAudio.framework/Headers/CoreAudio.h', + define_name = 'HAVE_COREAUDIO', linkflags = ['-framework', 'CoreAudio']) + conf.check_cxx (header_name = '/System/Library/Frameworks/AudioToolbox.framework/Headers/ExtendedAudioFile.h', + linkflags = [ '-framework', 'AudioToolbox' ]) + conf.check_cc (header_name = '/System/Library/Frameworks/CoreFoundation.framework/Headers/CoreFoundation.h', + linkflags = ['-framework', 'CoreFoundation']) + conf.check_cc (header_name = '/System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h', + linkflags = ['-framework', 'CoreServices']) + # + # TODO: For some reason the above doesn't seem to be correctly adding the + # the link flags, so we will add them manually. + # + conf.env.append_value('LINKFLAGS_COREAUDIO', ['-framework', 'CoreServices']) + conf.env.append_value('LINKFLAGS_COREAUDIO', ['-framework', 'CoreFoundation']) + conf.env.append_value('LINKFLAGS_COREAUDIO', ['-framework', 'AudioToolbox']) + conf.env.append_value('LINKFLAGS_COREAUDIO', ['-framework', 'CoreAudio']) + + if Options.options.audiounits: + #conf.env.append_value('CXXFLAGS_AUDIOUNITS', "-DHAVE_AUDIOUNITS") + conf.env.append_value('LINKFLAGS_AUDIOUNITS', "-framework AudioToolbox") + conf.env.append_value('LINKFLAGS_AUDIOUNITS', "-framework CoreServices") + conf.check_cc (header_name = '/System/Library/Frameworks/AudioUnit.framework/Headers/AudioUnit.h', + define_name = 'HAVE_AUDIOUNITS', linkflags = [ '-framework', 'AudioUnit' ]) + + if Options.options.bundle: conf.env['BUNDLE'] = True conf.define('BUNDLE', 1) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index de1273a719..b551dc37d3 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -172,7 +172,12 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[]) #ifdef TOP_MENUBAR - _auto_display_errors = false; + // _auto_display_errors = false; + /* + * This was commented out as it wasn't defined + * in A3 IIRC. If this is not needed it should + * be completely removed. + */ #endif about = 0; @@ -2204,6 +2209,41 @@ ARDOUR_UI::build_session_from_nsd (const Glib::ustring& session_path, const Glib } void +ARDOUR_UI::idle_load (const Glib::ustring& path) +{ + if (session) { + if (Glib::file_test (path, Glib::FILE_TEST_IS_DIR)) { + /* /path/to/foo => /path/to/foo, foo */ + load_session (path, basename_nosuffix (path)); + } else { + /* /path/to/foo/foo.ardour => /path/to/foo, foo */ + load_session (Glib::path_get_dirname (path), basename_nosuffix (path)); + } + } else { + + ARDOUR_COMMAND_LINE::session_name = path; + + /* + * new_session_dialog doens't exist in A3 + * Try to remove all references to it to + * see if it will compile. NOTE: this will + * likely cause a runtime issue is my somewhat + * uneducated guess. + */ + + //if (new_session_dialog) { + + + /* make it break out of Dialog::run() and + start again. + */ + + //new_session_dialog->response (1); + //} + } +} + +void ARDOUR_UI::end_loading_messages () { // hide_splash (); diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index acf711290a..407867167a 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -115,6 +115,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI void show_about (); void hide_about (); + void idle_load (const Glib::ustring& path); void finish(); int load_session (const Glib::ustring& path, const Glib::ustring& snapshot, Glib::ustring mix_template = Glib::ustring()); diff --git a/gtk2_ardour/cocoacarbon.mm b/gtk2_ardour/cocoacarbon.mm index e4f833dd26..84e34bd74d 100644 --- a/gtk2_ardour/cocoacarbon.mm +++ b/gtk2_ardour/cocoacarbon.mm @@ -21,6 +21,14 @@ #undef YES // stupid, stupid gtkmm and/or NSObjC #undef NO // ditto +#ifdef GTKOSX +#include <objc/objc.h> +#ifdef nil + /*Stupid OS X defining nil*/ +#undef nil +#endif +#endif + #include "ardour_ui.h" #include "actions.h" #include "opts.h" diff --git a/gtk2_ardour/diamond.cc b/gtk2_ardour/diamond.cc index 04fdd509c2..7d3e66357d 100644 --- a/gtk2_ardour/diamond.cc +++ b/gtk2_ardour/diamond.cc @@ -32,10 +32,10 @@ void Diamond::set_height(double height) { Points points; - points.push_back(Point(0, height*2.0)); - points.push_back(Point(height, height)); - points.push_back(Point(0, 0)); - points.push_back(Point(-height, height)); + points.push_back(Art::Point(0, height*2.0)); + points.push_back(Art::Point(height, height)); + points.push_back(Art::Point(0, 0)); + points.push_back(Art::Point(-height, height)); property_points() = points; } diff --git a/gtk2_ardour/diamond.h b/gtk2_ardour/diamond.h index da344fed29..6afa3e3d64 100644 --- a/gtk2_ardour/diamond.h +++ b/gtk2_ardour/diamond.h @@ -22,6 +22,7 @@ #include <libgnomecanvasmm/polygon.h> #include "canvas-note-event.h" +#include "canvas.h" namespace Gnome { namespace Canvas { diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 6b6358c2cb..2a1875d17d 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -38,8 +38,8 @@ #include <cmath> -#include <gtkmm/layout.h> #include <gtkmm/comboboxtext.h> +#include <gtkmm/layout.h> #include <gtkmm2ext/selector.h> #include <gtkmm2ext/click_box.h> @@ -48,7 +48,6 @@ #include "pbd/stateful.h" #include "ardour/session.h" #include "ardour/tempo.h" -#include "ardour/stretch.h" #include "ardour/location.h" #include "ardour/audioregion.h" #include "ardour/track.h" diff --git a/gtk2_ardour/editor_canvas_events.cc b/gtk2_ardour/editor_canvas_events.cc index d965c82c08..e789fef314 100644 --- a/gtk2_ardour/editor_canvas_events.cc +++ b/gtk2_ardour/editor_canvas_events.cc @@ -26,9 +26,9 @@ #include "ardour/audio_diskstream.h" #include "ardour/audioplaylist.h" -#include "ardour/midi_region.h" #include "ardour/audioregion.h" #include "ardour/region_factory.h" +#include "ardour/midi_region.h" #include "editor.h" #include "keyboard.h" diff --git a/gtk2_ardour/editor_routes.cc b/gtk2_ardour/editor_routes.cc index 4b6ca10b72..ebb467dc60 100644 --- a/gtk2_ardour/editor_routes.cc +++ b/gtk2_ardour/editor_routes.cc @@ -24,8 +24,6 @@ #include <cmath> #include <cassert> -#include "gtkmm2ext/cell_renderer_pixbuf_toggle.h" - #include "ardour/diskstream.h" #include "editor.h" @@ -44,6 +42,8 @@ #include "ardour/route.h" +#include "gtkmm2ext/cell_renderer_pixbuf_toggle.h" + #include "i18n.h" using namespace std; diff --git a/gtk2_ardour/marker.cc b/gtk2_ardour/marker.cc index 392ba85152..131354e72e 100644 --- a/gtk2_ardour/marker.cc +++ b/gtk2_ardour/marker.cc @@ -20,11 +20,17 @@ #include <sigc++/bind.h> #include "ardour/tempo.h" +#include "ardour_ui.h" +/* + * ardour_ui.h include was moved to the top of the list + * due to a conflicting definition of 'Rect' between + * Apple's MacTypes.h and GTK. + */ + #include "marker.h" #include "public_editor.h" #include "utils.h" #include "canvas_impl.h" -#include "ardour_ui.h" #include "simpleline.h" #include <gtkmm2ext/utils.h> diff --git a/gtk2_ardour/mnemonic-us.bindings.in b/gtk2_ardour/mnemonic-us.bindings.in index 39e193ba99..7ea5b8bf67 100644 --- a/gtk2_ardour/mnemonic-us.bindings.in +++ b/gtk2_ardour/mnemonic-us.bindings.in @@ -1,450 +1,372 @@ -; ardour-2.2 GtkAccelMap rc-file -*- scheme -*- -; this file is a hand-edited map that is processed by scons -; to produce a real accelmap. +; this is a template file processed by tools/fmt-bindings to generate either +; a gtk accelmap file or a LaTeX key binding cheat sheet. ; +; it is the reference for any bindings or cheatsheets +; +; +; FORMAT: +; $text -> defines cheatsheet title as "text", which may contain LaTeX markup +; +; %group text -> defines a binding group called "group" which will have the title "text" on the cheatsheet. +; may be followed by zero or more lines of descriptive text, which may contain LaTeX markup +; +; @group|action|binding|description -> defines an action+binding with description, as a member of a binding group +; if group starts with '-' it will not be printed in the cheatsheet. +; if group starts with '+' it will be printed in the cheatsheet no matter what +; if the group is a mouse binding group, action should contain a ':', and +; have the binding before the colon, and the target area after it -;; punctuation +;; Title +$ARDOUR Shortcuts \linebreak Mnemonic US-Keypad -(gtk_accel_path "<Actions>/Editor/temporal-zoom-in" "equal") -(gtk_accel_path "<Actions>/Editor/temporal-zoom-out" "minus") -(gtk_accel_path "<Actions>/Editor/edit-cursor-to-previous-region-sync" "apostrophe") -(gtk_accel_path "<Actions>/Editor/edit-cursor-to-next-region-sync" "semicolon") -(gtk_accel_path "<Actions>/Editor/cycle-edit-point" "grave") -(gtk_accel_path "<Actions>/Editor/cycle-edit-point-with-marker" "<@PRIMARY@>asciicircum") +;; GROUP DEFINITIONS -(gtk_accel_path "<Actions>/Editor/playhead-to-next-region-boundary" "period") -(gtk_accel_path "<Actions>/Editor/playhead-to-next-region-sync" "<@PRIMARY@>period") +%trans Transport \& Recording Control -(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-boundary" "comma") -(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-sync" "<@PRIMARY@>comma") +%sess Session \& File Handling -(gtk_accel_path "<Actions>/Editor/extend-range-to-end-of-region" "rightanglebracket") -(gtk_accel_path "<Actions>/Editor/extend-range-to-start-of-region" "leftanglebracket") +%edit Basic Editing -(gtk_accel_path "<Actions>/Transport/ToggleRoll" "space") -(gtk_accel_path "<Actions>/Transport/ToggleRollForgetCapture" "<@PRIMARY@>space") -(gtk_accel_path "<Actions>/Transport/record-roll" "<@TERTIARY@>space") +%vis Changing What's Visible -(gtk_accel_path "<Actions>/Editor/set-fade-in-length" "slash") -(gtk_accel_path "<Actions>/Editor/set-fade-out-length" "backslash") +%wvis Window Visibility -(gtk_accel_path "<Actions>/Editor/trim-from-start" "<@TERTIARY@>braceleft") -(gtk_accel_path "<Actions>/Editor/trim-to-end" "<@TERTIARY@>braceright") +%eep Editing with Edit Point +Most edit functions operate on a single "Edit Point". The edit point can be any of: playhead (default), the mouse or an active marker. The choice of Edit Point is by default linked to the Zoom Focus. -(gtk_accel_path "<Actions>/Editor/set-loop-from-edit-range" "bracketright") -(gtk_accel_path "<Actions>/Editor/set-loop-from-region" "<@SECONDARY@>bracketright") +%aep Aligning with the Edit Point +Align operations move regions so that their start/end/sync point is at the edit point. "Relative" operations +just align the first region and moves other selected regions to maintain relative positioning. -(gtk_accel_path "<Actions>/Editor/set-punch-from-edit-range" "bracketleft") -(gtk_accel_path "<Actions>/Editor/set-punch-from-region" "<@SECONDARY@>bracketleft") +%epp Edit Point Playback -(gtk_accel_path "<Actions>/Editor/boost-region-gain" "asciicircum") -(gtk_accel_path "<Actions>/Editor/cut-region-gain" "ampersand") +%movp Moving the Playhead +A left click in the rulers positions the playhead unless Ardour is recording. You can use {\tt KP$\_$n} to move the +playhead to the n-th marker. -;; letters +%rop Region Operations + +%edit Edit Range +There are only a few functions that refer to an "Edit Range". The current edit range is defined using combinations of the possible edit points: Playhead, Marker or Mouse.\par +\begin{tabular}{lll} +{\bf Edit Point} & {\bf Active Mark?} & {\bf Edit Range} \\ +Playhead & no & from Playhead to Mouse \\ +Playhead & yes & from Playhead to Active Marker \\ + & & \\ +Mouse & no & from Mouse to Playhead \\ +Mouse & yes & from Mouse to Active Marker \\ + & & \\ +Marker & no & {\it No edit range defined} \\ +Marker & yes & from Active Marker to Mouse +\end{tabular} + +%select Selecting + +%ranges Defining Loop, Punch Range and Tempo Changes + +%markers Markers \& Locations +The "move" commands all move the active marker(s). Jump to the first 9 markers using +the keypad digits 1-9 (requires numlock). + +%mmode Mouse Modes + +%mouse Mouse Usage +Right click on most objects and controls displays a context menu +Shift+Right click deletes most objects. +OS X users without a 3 button mouse can use {\tt Option+Ctrl+Left} to simulate "Middle" for some purposes. +Use F1 to step through mouse modes. + +%mobject Mouse Object Mode +This mode provides many different operations on both regions and control points, partially depending on where you click/drag with the mouse. The "body" of a region is the area where the waveform is displayed. +%mzoom Mouse Zoom Mode +%mops Mouse Ops on Solo/Mute/Rec-enable +%mopsolo Mouse Ops on Solo Buttons only +%mopsfader Mouse Ops on Faders \& Plugin Controls + +;; END GROUP DEFINITIONS + +;; punctuation + +@vis|Editor/temporal-zoom-in|equal|zoom in +@vis|Editor/temporal-zoom-out|minus|zoom out +@eep|Editor/edit-cursor-to-previous-region-sync|apostrophe|EP to previous region sync +@eep|Editor/edit-cursor-to-next-region-sync|semicolon|EP to next region sync +@eep|Editor/cycle-edit-point|grave|next EP w/o marker +@eep|Editor/cycle-edit-point-with-marker|<@PRIMARY@>asciicircum|next EP w/marker + +@aep|Editor/extend-range-to-end-of-region|rightanglebracket|align sync point relative +@-group|Editor/extend-range-to-start-of-region|leftanglebracket|some text + +@trans|Transport/ToggleRoll|space|toggle roll +@epp|Editor/play-edit-range|<@SECONDARY@>space|play edit range +@epp|Editor/play-from-edit-point-and-return|<@LEVEL4@>space|play from EP \& return +@trans|Transport/ToggleRollForgetCapture|<@PRIMARY@>space|stop and destroy +@trans|Transport/record-roll|<@TERTIARY@>space|start recording + +@rop|Editor/set-fade-in-length|slash|set fade in length +@rop|Editor/set-fade-in-length|<@PRIMARY@>slash|toggle fade in active +@rop|Editor/toggle-fade-out-active|backslash|set fade out length +@rop|Editor/toggle-fade-out-active|<@PRIMARY@>backslash|toggle fade out active + +@eep|Editor/trim-from-start|<@TERTIARY@>braceleft|trim region start to edit point +@eep|Editor/trim-to-end|<@TERTIARY@>braceright|trim region end to edit point + +@ranges|Editor/set-loop-from-edit-range|bracketright|set loop range from edit range +@ranges|Editor/set-loop-from-region|<@SECONDARY@>bracketright|set loop range from region(s) + +@ranges|Editor/set-punch-from-edit-range|bracketleft|set punch range from edit range +@ranges|Editor/set-punch-from-region|<@SECONDARY@>bracketleft|set punch range from region(s) + +@rop|Editor/boost-region-gain|asciicircum|increase region gain +@rop|Editor/cut-region-gain|ampersand|reduce region gain + +;; letters ;; TOP ROW -(gtk_accel_path "<Actions>/Common/Quit" "<@PRIMARY@>q") +@sess|Common/Quit|<@PRIMARY@>q|quit ;; note that ctrl-w is special and consumed by the keyboard snooper -(gtk_accel_path "<Actions>/Editor/set-edit-point" "e") -(gtk_accel_path "<Actions>/Editor/select-all-before-edit-cursor" "<@PRIMARY@>e") -(gtk_accel_path "<Actions>/Editor/show-editor-mixer" "<@TERTIARY@>e") -(gtk_accel_path "<Actions>/Common/goto-editor" "<@WINDOW@>e") -(gtk_accel_path "<Actions>/Editor/select-all-after-edit-cursor" "<@TERTIARY@><@PRIMARY@>e") -(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-range" "r") -(gtk_accel_path "<Actions>/Editor/redo" "<@PRIMARY@>r") -(gtk_accel_path "<Actions>/Transport/Record" "<@TERTIARY@>r") -(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-timefx" "t") -(gtk_accel_path "<Actions>/Editor/insert-time" "<@PRIMARY@>t") -(gtk_accel_path "<Actions>/Editor/select-all-between-cursors" "u") -(gtk_accel_path "<Actions>/Editor/insert-region" "i") -(gtk_accel_path "<Actions>/Editor/invert-selection" "<@TERTIARY@>i") -(gtk_accel_path "<Actions>/Editor/addExistingAudioFiles" "<@SECONDARY@>i") -(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-object" "o") -(gtk_accel_path "<Actions>/Common/ToggleOptionsEditor" "<@WINDOW@>o") -(gtk_accel_path "<Actions>/Editor/set-playhead" "p") -(gtk_accel_path "<Actions>/Editor/select-all-before-playhead" "<@PRIMARY@>p") -(gtk_accel_path "<Actions>/Editor/select-all-after-playhead" "<@TERTIARY@><@PRIMARY@>p") +@rop|Editor/set-edit-point|e|set fade out length +@select|Editor/select-all-before-edit-cursor|<@PRIMARY@>e|select all before EP +@rop|Editor/export-region|<@PRIMARY@><@LEVEL4@>e|export selected region(s) +@sess|Main/ExportSession|<@LEVEL4@>e|export session +@select|Editor/select-all-after-edit-cursor|<@PRIMARY@><@TERTIARY@>e|select all after EP +@vis|Editor/show-editor-mixer|<@TERTIARY@>e|toggle editor window mixer +@wvis|Common/goto-editor|<@WINDOW@>e|toggle editor window +@mmode|MouseMode/set-mouse-mode-range|r|range mode +@edit|Editor/redo|<@PRIMARY@>r|redo +@edit|Editor/reverse-region|<@PRIMARY@>r|reverse +@trans|Transport/Record|<@TERTIARY@>r|engage record +@mmode|MouseMode/set-mouse-mode-timefx|t|timefx mode +@rop|Editor/pitch-shift-region|<@SECONDARY@>t|transpose +@eep|Editor/insert-time|<@PRIMARY@>t|insert time +@select|Editor/select-all-between-cursors|<@PRIMARY@>u|all enclosed by edit range +@select|Editor/select-all-within-cursors|u|all present in edit range +@eep|Editor/insert-region|i|insert from region list +@select|Editor/invert-selection|<@TERTIARY@>i|invert selection +@sess|Editor/addExistingAudioFiles|<@SECONDARY@>i|import audio files +@mmode|MouseMode/set-mouse-mode-object|o|object mode +@sess|Main/Open|<@PRIMARY@>o|open an existing session +@sess|Main/Recent|<@PRIMARY@><@TERTIARY@>o|open a recent session +@wvis|Common/ToggleOptionsEditor|<@WINDOW@>o|toggle preferences dialog +@rop|Editor/naturalize-region|<@LEVEL4@>o|move to original position +@trans|Editor/set-playhead|p|toggle auto-punch status +@select|Editor/select-all-before-playhead|<@PRIMARY@>p|all before playhead +@select|Editor/select-all-after-playhead|<@TERTIARY@><@PRIMARY@>p|all after playhead ;; MIDDLE ROW -(gtk_accel_path "<Actions>/Editor/align-regions-sync-relative" "a") -(gtk_accel_path "<Actions>/Editor/select-all" "<@PRIMARY@>a") -(gtk_accel_path "<Actions>/Editor/align-regions-end" "<@SECONDARY@>a") -(gtk_accel_path "<Actions>/Editor/align-regions-sync" "<@TERTIARY@>a") -(gtk_accel_path "<Actions>/Editor/align-regions-start-relative" "<@LEVEL4@>a") -(gtk_accel_path "<Actions>/Editor/split-region" "s") -(gtk_accel_path "<Actions>/Common/Save" "<@PRIMARY@>s") -(gtk_accel_path "<Actions>/Editor/duplicate-region" "d") -(gtk_accel_path "<Actions>/Editor/select-all-in-punch-range" "<@PRIMARY@>d") -(gtk_accel_path "<Actions>/Editor/fit-tracks" "f") -(gtk_accel_path "<Actions>/Editor/toggle-follow-playhead" "<@PRIMARY@>f") -(gtk_accel_path "<Actions>/Editor/toggle-rhythm-ferret" "<@WINDOW@>f") -(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-gain" "g") -(gtk_accel_path "<Actions>/Editor/play-selected-regions" "h") -(gtk_accel_path "<Actions>/Editor/trim-front" "j") -(gtk_accel_path "<Actions>/Editor/trim-back" "k") -(gtk_accel_path "<Actions>/Common/ToggleKeyEditor" "<@WINDOW@>k") -(gtk_accel_path "<Actions>/Transport/Loop" "l") -(gtk_accel_path "<Actions>/Editor/select-all-in-loop-range" "<@PRIMARY@>l") -(gtk_accel_path "<Actions>/Common/ToggleLocations" "<@WINDOW@>l") +@aep|Editor/align-regions-sync-relative|a|align sync points (relative) +@select|Editor/select-all|<@PRIMARY@>a|select everything +@aep|Editor/align-regions-end|<@SECONDARY@>a|align end(s) +@aep|Editor/align-regions-sync|<@TERTIARY@>a|align sync points +@aep|Editor/align-regions-start|<@PRIMARY@><@LEVEL4@>a|align start(s) +@aep|Editor/align-regions-start-relative|<@LEVEL4@>a|align start(s) relative +@rop|Editor/split-region|s|split +@sess|Common/Save|<@PRIMARY@>s|save session +@sess|Main/Snapshot|<@PRIMARY@><@TERTIARY@>s|snapshot session +@rop|Editor/duplicate-region|d|duplicate region (once) +@rop|Editor/multi-duplicate-region|<@TERTIARY@>d|duplicate region (multi) +@select|Editor/select-all-in-punch-range|<@PRIMARY@>d|select all in punch range +@vis|Editor/fit-tracks|f|fit tracks vertically +@trans|Editor/toggle-follow-playhead|<@PRIMARY@>f|toggle playhead tracking +@wvis|Editor/toggle-rhythm-ferret|<@WINDOW@>f|toggle rhythm ferret window +@mmode|MouseMode/set-mouse-mode-gain|g|region gain +@epp|Editor/play-selected-regions|h|play selected region(s) +@eep|Editor/trim-front|j|trim front +@eep|Editor/trim-back|k|trim back +@wvis|Common/ToggleKeyEditor|<@WINDOW@>k|toggle key bindings editor +@trans|Transport/Loop|l|loop play (the loop range) +@select|Editor/select-all-in-loop-range|<@PRIMARY@>l|select all in loop range +@wvis|Common/ToggleLocations|<@WINDOW@>l| toggle locations dialog ;; HOME ROW -(gtk_accel_path "<Actions>/Editor/zoom-to-region" "<@PRIMARY@><@SECONDARY@>z") -(gtk_accel_path "<Actions>/Editor/zoom-to-region-both-axes" "<@SECONDARY@>z") -(gtk_accel_path "<Actions>/Editor/undo" "<@PRIMARY@>z") -(gtk_accel_path "<Actions>/Editor/toggle-zoom" "<@TERTIARY@>z") -(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-zoom" "z") -(gtk_accel_path "<Actions>/Editor/editor-cut" "<@PRIMARY@>x") -(gtk_accel_path "<Actions>/Editor/editor-copy" "<@PRIMARY@>c") -(gtk_accel_path "<Actions>/Common/ToggleColorManager" "<@WINDOW@>c") -(gtk_accel_path "<Actions>/Editor/set-region-sync-position" "v") -(gtk_accel_path "<Actions>/Editor/editor-paste" "<@PRIMARY@>v") -(gtk_accel_path "<Actions>/Editor/brush-at-mouse" "<@PRIMARY@>b") -(gtk_accel_path "<Actions>/Common/ToggleBigClock" "<@WINDOW@>b") -(gtk_accel_path "<Actions>/Editor/normalize-region" "n") -(gtk_accel_path "<Actions>/Editor/mute-unmute-region" "m") -(gtk_accel_path "<Actions>/Common/toggle-editor-mixer-on-top" "<@WINDOW@>m") +@vis|Editor/zoom-to-region|<@PRIMARY@><@SECONDARY@>z|zoom (x) to selected region(s) +@vis|Editor/zoom-to-region-both-axes|<@SECONDARY@>z|zoom (x+y) to selected region +@edit|Editor/undo|<@PRIMARY@>z|undo +@vis|Editor/toggle-zoom|<@TERTIARY@>z|toggle last 2 zoom states +@vis|MouseMode/set-mouse-mode-zoom|z| zoom to selected region(s) +@edit|Editor/editor-cut|<@PRIMARY@>x|cut +@edit|Editor/editor-copy|<@PRIMARY@>c|copy +@wvis|Common/ToggleColorManager|<@WINDOW@>c|toggle color manager +@rop|Editor/set-region-sync-position|v|set region sync point +@edit|Editor/editor-paste|<@PRIMARY@>v|paste +@-group|Editor/brush-at-mouse|<@PRIMARY@>b|some text +@wvis|Common/ToggleBigClock|<@WINDOW@>b|toggle big clock +@rop|Editor/normalize-region|n|normalize +@sess|Main/AddTrackBus|<@PRIMARY@><@TERTIARY@>n|add track(s) or bus(ses) +@sess|Main/New|<@PRIMARY@>n|open a new session +@rop|Editor/mute-unmute-region|m|mute/unmute +@wvis|Common/toggle-editor-mixer-on-top|<@WINDOW@>m|rotate editor \& mixer window ;; arrow keys, navigation etc. -(gtk_accel_path "<Actions>/Editor/step-tracks-up" "uparrow") -(gtk_accel_path "<Actions>/Transport/TransitionToRoll" "<@TERTIARY@>uparrow") -(gtk_accel_path "<Actions>/Editor/select-prev-route" "<@SECONDARY@>uparrow") -(gtk_accel_path "<Actions>/Editor/move-selected-tracks-up" "<@PRIMARY@>uparrow") - -(gtk_accel_path "<Actions>/Editor/step-tracks-down" "downarrow") -(gtk_accel_path "<Actions>/Transport/TransitionToReverse" "<@TERTIARY@>downarrow") -(gtk_accel_path "<Actions>/Editor/select-next-route" "<@SECONDARY@>downarrow") -(gtk_accel_path "<Actions>/Editor/move-selected-tracks-down" "<@PRIMARY@>downarrow") - -(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-boundary" "leftarrow") -(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-boundary-noselection" "<@LEVEL4@>leftarrow") -(gtk_accel_path "<Actions>/Editor/tab-to-transient-backwards" "<@PRIMARY@>leftarrow") -(gtk_accel_path "<Actions>/Editor/nudge-playhead-backward" "<@SECONDARY@>leftarrow") -(gtk_accel_path "<Actions>/Transport/Rewind" "<@TERTIARY@>leftarrow") -(gtk_accel_path "<Actions>/Editor/selected-marker-to-previous-region-boundary" "<@PRIMARY@><@TERTIARY@>leftarrow") - -(gtk_accel_path "<Actions>/Editor/playhead-to-next-region-boundary" "rightarrow") -(gtk_accel_path "<Actions>/Editor/playhead-to-next-region-boundary-noselection" "<@LEVEL4@>rightarrow") -(gtk_accel_path "<Actions>/Editor/tab-to-transient-forwards" "<@PRIMARY@>rightarrow") -(gtk_accel_path "<Actions>/Editor/nudge-playhead-forward" "<@SECONDARY@>rightarrow") -(gtk_accel_path "<Actions>/Transport/Forward" "<@TERTIARY@>rightarrow") -(gtk_accel_path "<Actions>/Editor/selected-marker-to-next-region-boundary" "<@PRIMARY@><@TERTIARY@>rightarrow") - -(gtk_accel_path "<Actions>/Editor/scroll-tracks-down" "Page_Down") -(gtk_accel_path "<Actions>/Editor/scroll-tracks-up" "Page_Up") -(gtk_accel_path "<Actions>/Transport/GotoStart" "Home") -(gtk_accel_path "<Actions>/Transport/GotoEnd" "End") -(gtk_accel_path "<Actions>/Editor/editor-delete" "Delete") - -(gtk_accel_path "<Actions>/Editor/playhead-to-edit" "Return") -(gtk_accel_path "<Actions>/Editor/edit-to-playhead" "<@SECONDARY@>Return") -(gtk_accel_path "<Actions>/Editor/remove-last-capture" "<@PRIMARY@>Delete") +@vis|Editor/step-tracks-up|uparrow|scroll up (step) +@trans|Transport/TransitionToRoll|<@TERTIARY@>uparrow|transition to roll +@select|Editor/select-prev-route|<@SECONDARY@>uparrow|select previous track/bus +@vis|Editor/move-selected-tracks-up|<@PRIMARY@>uparrow|move selected tracks up + +@vis|Editor/step-tracks-down|downarrow|scroll down (step) +@trans|Transport/TransitionToReverse|<@TERTIARY@>downarrow|transition to reverse +@select|Editor/select-next-route|<@SECONDARY@>downarrow|select next track/bus +@vis|Editor/move-selected-tracks-down|<@PRIMARY@>downarrow|move selected tracks down + +@movp|Editor/playhead-to-previous-region-boundary|leftarrow|to previous region edge +@movp|Editor/playhead-to-previous-region-boundary-noselection|<@LEVEL4@>leftarrow|to previous edge \linebreak[4] (ignore selection) +@movp|Editor/playhead-to-previous-region-sync|<@PRIMARY@><@SECONDARY@>leftarrow|to previous region sync +@movp|Editor/tab-to-transient-backwards|<@PRIMARY@>leftarrow|to previous transient +@movp|Editor/nudge-playhead-backward|<@SECONDARY@>leftarrow|nudge backward +@movp|Editor/playhead-backward-to-grid|<@TERTIARY@><@LEVEL4@>leftarrow|to previous grid point +@trans|Transport/Rewind|<@TERTIARY@>leftarrow|rewind +@markers|Editor/selected-marker-to-previous-region-boundary|<@PRIMARY@><@TERTIARY@>leftarrow|move to prev. region edge + +@movp|Editor/playhead-to-next-region-boundary|rightarrow|to next region edge +@movp|Editor/playhead-to-next-region-boundary-noselection|<@LEVEL4@>rightarrow|to next region edge \linebreak[4] (ignore selection) +@movp|Editor/playhead-to-next-region-sync|<@PRIMARY@><@SECONDARY@>rightarrow|to next region sync +@movp|Editor/tab-to-transient-forwards|<@PRIMARY@>rightarrow|to next transient +@movp|Editor/nudge-playhead-forward|<@SECONDARY@>rightarrow|nudge forwards +@movp|Editor/playhead-forward-to-grid|<@TERTIARY@><@LEVEL4@>rightarrow|to next grid point +@trans|Transport/Forward|<@TERTIARY@>rightarrow|fast forward +@markers|Editor/selected-marker-to-next-region-boundary|<@PRIMARY@><@TERTIARY@>rightarrow|move to next region edge + +@vis|Editor/scroll-tracks-down|Page_Down|scroll down (page) +@vis|Editor/scroll-tracks-up|Page_Up|scroll up (page) +@movp|Transport/GotoStart|Home|to start marker +@movp|Transport/GotoEnd|End|to end marker +@edit|Editor/editor-delete|Delete|delete + +@movp|Editor/playhead-to-edit|Return|to edit point +@eep|Editor/edit-to-playhead|<@SECONDARY@>Return|move EP to playhead +@trans|Editor/remove-last-capture|<@PRIMARY@>Delete|destroy last recording ;; keypad -(gtk_accel_path "<Actions>/Editor/nudge-backward" "KP_Subtract") -(gtk_accel_path "<Actions>/Editor/nudge-next-backward" "<@PRIMARY@>KP_Subtract") +@rop|Editor/nudge-backward|KP_Subtract|nudge backward +@-group|Editor/nudge-next-backward|<@PRIMARY@>KP_Subtract|some text -(gtk_accel_path "<Actions>/Editor/jump-forward-to-mark" "<@PRIMARY@>KP_Right") -(gtk_accel_path "<Actions>/Editor/jump-backward-to-mark" "<@PRIMARY@>KP_Left") +@movp|Editor/jump-forward-to-mark|<@PRIMARY@>KP_Right|to next mark +@movp|Editor/jump-backward-to-mark|<@PRIMARY@>KP_Left|to previous mark -(gtk_accel_path "<Actions>/Editor/nudge-forward" "KP_Add") -(gtk_accel_path "<Actions>/Editor/nudge-next-forward" "<@PRIMARY@>KP_Add") +@rop|Editor/nudge-forward|KP_Add|nudge forward +@-group|Editor/nudge-next-forward|<@PRIMARY@>KP_Add|some text -(gtk_accel_path "<Actions>/Editor/start-range" "<@PRIMARY@>KP_Down") +@-group|Editor/start-range|<@PRIMARY@>KP_Down|some text -(gtk_accel_path "<Actions>/Editor/finish-range" "<@PRIMARY@>KP_Up") -(gtk_accel_path "<Actions>/Editor/finish-add-range" "<@TERTIARY@><@PRIMARY@>KP_Up") +@-group|Editor/finish-range|<@PRIMARY@>KP_Up|some text +@-group|Editor/finish-add-range|<@TERTIARY@><@PRIMARY@>KP_Up|some text -(gtk_accel_path "<Actions>/Editor/add-location-from-playhead" "KP_Enter") -(gtk_accel_path "<Actions>/Transport/focus-on-clock" "KP_Divide") +@markers|Editor/add-location-from-playhead|KP_Enter|add mark at playhead +@wvis|Transport/focus-on-clock|KP_Divide|focus on main clock -(gtk_accel_path "<Actions>/Transport/GotoZero" "KP_0") -(gtk_accel_path "<Actions>/Editor/goto-mark-1" "KP_1") -(gtk_accel_path "<Actions>/Editor/goto-mark-2" "KP_2") -(gtk_accel_path "<Actions>/Editor/goto-mark-3" "KP_3") -(gtk_accel_path "<Actions>/Editor/goto-mark-4" "KP_4") -(gtk_accel_path "<Actions>/Editor/goto-mark-5" "KP_5") -(gtk_accel_path "<Actions>/Editor/goto-mark-6" "KP_6") -(gtk_accel_path "<Actions>/Editor/goto-mark-7" "KP_7") -(gtk_accel_path "<Actions>/Editor/goto-mark-8" "KP_8") -(gtk_accel_path "<Actions>/Editor/goto-mark-9" "KP_9") +@trans|Transport/GotoZero|KP_0|to zero +@-group|Editor/goto-mark-1|KP_1|some text +@-group|Editor/goto-mark-2|KP_2|some text +@-group|Editor/goto-mark-3|KP_3|some text +@-group|Editor/goto-mark-4|KP_4|some text +@-group|Editor/goto-mark-5|KP_5|some text +@-group|Editor/goto-mark-6|KP_6|some text +@-group|Editor/goto-mark-7|KP_7|some text +@-group|Editor/goto-mark-8|KP_8|some text +@-group|Editor/goto-mark-9|KP_9|some text ;; F-N keys -(gtk_accel_path "<Actions>/Editor/edit-cursor-to-range-start" "F1") -(gtk_accel_path "<Actions>/Editor/edit-cursor-to-range-end" "F2") -(gtk_accel_path "<Actions>/Editor/crop" "F3") -(gtk_accel_path "<Actions>/Editor/separate" "F4") -(gtk_accel_path "<Actions>/Editor/pitch-shift-region" "F5") -(gtk_accel_path "<Actions>/Editor/select-range-between-cursors" "F6") -(gtk_accel_path "<Actions>/Common/ToggleMaximalEditor" "F11") - -(gtk_accel_path "<Actions>/Editor/save-visual-state-1" "<@PRIMARY@>F1") -(gtk_accel_path "<Actions>/Editor/save-visual-state-2" "<@PRIMARY@>F2") -(gtk_accel_path "<Actions>/Editor/save-visual-state-3" "<@PRIMARY@>F3") -(gtk_accel_path "<Actions>/Editor/save-visual-state-4" "<@PRIMARY@>F4") -(gtk_accel_path "<Actions>/Editor/save-visual-state-5" "<@PRIMARY@>F5") -(gtk_accel_path "<Actions>/Editor/save-visual-state-6" "<@PRIMARY@>F6") -(gtk_accel_path "<Actions>/Editor/save-visual-state-7" "<@PRIMARY@>F7") -(gtk_accel_path "<Actions>/Editor/save-visual-state-8" "<@PRIMARY@>F8") -(gtk_accel_path "<Actions>/Editor/save-visual-state-9" "<@PRIMARY@>F9") -(gtk_accel_path "<Actions>/Editor/save-visual-state-10" "<@PRIMARY@>F10") -(gtk_accel_path "<Actions>/Editor/save-visual-state-11" "<@PRIMARY@>F11") -(gtk_accel_path "<Actions>/Editor/save-visual-state-12" "<@PRIMARY@>F12") - -(gtk_accel_path "<Actions>/Editor/goto-visual-state-1" "<release><@PRIMARY@>F1") -(gtk_accel_path "<Actions>/Editor/goto-visual-state-2" "<release><@PRIMARY@>F2") -(gtk_accel_path "<Actions>/Editor/goto-visual-state-3" "<release><@PRIMARY@>F3") -(gtk_accel_path "<Actions>/Editor/goto-visual-state-4" "<release><@PRIMARY@>F4") -(gtk_accel_path "<Actions>/Editor/goto-visual-state-5" "<release><@PRIMARY@>F5") -(gtk_accel_path "<Actions>/Editor/goto-visual-state-6" "<release><@PRIMARY@>F6") -(gtk_accel_path "<Actions>/Editor/goto-visual-state-7" "<release><@PRIMARY@>F7") -(gtk_accel_path "<Actions>/Editor/goto-visual-state-8" "<release><@PRIMARY@>F8") -(gtk_accel_path "<Actions>/Editor/goto-visual-state-9" "<release><@PRIMARY@>F9") -(gtk_accel_path "<Actions>/Editor/goto-visual-state-10" "<release><@PRIMARY@>F10") -(gtk_accel_path "<Actions>/Editor/goto-visual-state-11" "<release><@PRIMARY@>F11") -(gtk_accel_path "<Actions>/Editor/goto-visual-state-12" "<release><@PRIMARY@>F12") +@-group|Editor/edit-cursor-to-range-start|F1|some text +@-group|Editor/edit-cursor-to-range-end|F2|some text +@-group|Editor/crop|F3|some text +@-group|Editor/separate|F4|some text +@-group|Editor/pitch-shift-region|F5|some text +@select|Editor/select-range-between-cursors|F6|convert edit range as range +@wvis|Common/ToggleMaximalEditor|F11|toggle fullscreen editor window + +@-group|Editor/save-visual-state-1|<@PRIMARY@>F1|some text +@-group|Editor/save-visual-state-2|<@PRIMARY@>F2|some text +@-group|Editor/save-visual-state-3|<@PRIMARY@>F3|some text +@-group|Editor/save-visual-state-4|<@PRIMARY@>F4|some text +@-group|Editor/save-visual-state-5|<@PRIMARY@>F5|some text +@-group|Editor/save-visual-state-6|<@PRIMARY@>F6|some text +@-group|Editor/save-visual-state-7|<@PRIMARY@>F7|some text +@-group|Editor/save-visual-state-8|<@PRIMARY@>F8|some text +@-group|Editor/save-visual-state-9|<@PRIMARY@>F9|some text +@-group|Editor/save-visual-state-10|<@PRIMARY@>F10|some text +@-group|Editor/save-visual-state-11|<@PRIMARY@>F11|some text +@-group|Editor/save-visual-state-12|<@PRIMARY@>F12|some text + +@-group|Editor/goto-visual-state-1|<release><@PRIMARY@>F1|some text +@-group|Editor/goto-visual-state-2|<release><@PRIMARY@>F2|some text +@-group|Editor/goto-visual-state-3|<release><@PRIMARY@>F3|some text +@-group|Editor/goto-visual-state-4|<release><@PRIMARY@>F4|some text +@-group|Editor/goto-visual-state-5|<release><@PRIMARY@>F5|some text +@-group|Editor/goto-visual-state-6|<release><@PRIMARY@>F6|some text +@-group|Editor/goto-visual-state-7|<release><@PRIMARY@>F7|some text +@-group|Editor/goto-visual-state-8|<release><@PRIMARY@>F8|some text +@-group|Editor/goto-visual-state-9|<release><@PRIMARY@>F9|some text +@-group|Editor/goto-visual-state-10|<release><@PRIMARY@>F10|some text +@-group|Editor/goto-visual-state-11|<release><@PRIMARY@>F11|some text +@-group|Editor/goto-visual-state-12|<release><@PRIMARY@>F12|some text ;; numbers -(gtk_accel_path "<Actions>/Editor/toggle-edit-mode" "1") -(gtk_accel_path "<Actions>/Editor/cycle-snap-mode" "2") -(gtk_accel_path "<Actions>/Editor/cycle-snap-choice" "3") -(gtk_accel_path "<Actions>/Editor/step-mouse-mode" "4") -(gtk_accel_path "<Actions>/Transport/ToggleAutoReturn" "5") -(gtk_accel_path "<Actions>/Transport/ToggleClick" "6") -(gtk_accel_path "<Actions>/Editor/set-tempo-from-region" "9") -(gtk_accel_path "<Actions>/Editor/set-tempo-from-edit-range" "0") - -;; -;; unbound actions -;; - -; (gtk_accel_path "<Actions>/RegionList/RegionListSort" "") -; (gtk_accel_path "<Actions>/Main/Windows" "") -; (gtk_accel_path "<Actions>/Main/CleanupUnused" "") -; (gtk_accel_path "<Actions>/redirectmenu/deselectall" "") -; (gtk_accel_path "<Actions>/options/SoloViaBus" "") -; (gtk_accel_path "<Actions>/RegionList/rlAudition" "") -; (gtk_accel_path "<Actions>/Editor/PullupPlus4Plus1" "") -; (gtk_accel_path "<Actions>/Snap/snap-to-region-boundary" "") -; (gtk_accel_path "<Actions>/JACK/JACK" "") -; (gtk_accel_path "<Actions>/RegionList/SortAscending" "") -; (gtk_accel_path "<Actions>/Main/Help" "") -; (gtk_accel_path "<Actions>/options/UseExternalMonitoring" "") -; (gtk_accel_path "<Actions>/Editor/Smpte23976" "") -; (gtk_accel_path "<Actions>/options/ShowSoloMutes" "") -; (gtk_accel_path "<Actions>/Snap/snap-to-eighths" "") -; (gtk_accel_path "<Actions>/RegionList/SortBySourceFileLength" "") -; (gtk_accel_path "<Actions>/Editor/Timecode" "") -; (gtk_accel_path "<Actions>/Transport/PlaySelection" "") -; (gtk_accel_path "<Actions>/Editor/PullupMinus4Minus1" "") -; (gtk_accel_path "<Actions>/RegionList/SortBySourceFileName" "") -; (gtk_accel_path "<Actions>/Editor/CrossfadesFull" "") -; (gtk_accel_path "<Actions>/Transport/ToggleClick" "") -; (gtk_accel_path "<Actions>/options/SendMTC" "") -; (gtk_accel_path "<Actions>/Transport/TogglePunchOut" "") -; (gtk_accel_path "<Actions>/options/SoloInPlace" "") -; (gtk_accel_path "<Actions>/Main/Options" "") -; (gtk_accel_path "<Actions>/options/MeterFalloffMedium" "") -; (gtk_accel_path "<Actions>/Main/SaveTemplate" "") -; (gtk_accel_path "<Actions>/RegionList/SortByRegionStartinFile" "") -; (gtk_accel_path "<Actions>/options/GainReduceFastTransport" "") -; (gtk_accel_path "<Actions>/Common/ToggleInspector" "") -; (gtk_accel_path "<Actions>/Transport/ToggleAutoPlay" "") -; (gtk_accel_path "<Actions>/Editor/playhead-to-next-region-sync" "") -; (gtk_accel_path "<Actions>/Editor/LayerMoveAddHigher" "") -; (gtk_accel_path "<Actions>/Editor/Smpte60" "") -; (gtk_accel_path "<Actions>/Main/Open" "") -; (gtk_accel_path "<Actions>/Zoom/zoom-focus-left" "") -; (gtk_accel_path "<Actions>/Main/TransportOptions" "") -; (gtk_accel_path "<Actions>/Main/ControlSurfaces" "") -; (gtk_accel_path "<Actions>/options/FileHeaderFormatBWF" "") -; (gtk_accel_path "<Actions>/Transport/ToggleAutoReturn" "") -; (gtk_accel_path "<Actions>/Editor/Smpte2997" "") -; (gtk_accel_path "<Actions>/Editor/ToggleWaveformVisibility" "") -; (gtk_accel_path "<Actions>/Main/ExportSession" "") -; (gtk_accel_path "<Actions>/options/InputAutoConnectPhysical" "") -; (gtk_accel_path "<Actions>/Snap/snap-to-edit-cursor" "") -; (gtk_accel_path "<Actions>/JACK/Latency" "") -; (gtk_accel_path "<Actions>/redirectmenu/rename" "") -; (gtk_accel_path "<Actions>/RegionList/rlShowAuto" "") -; (gtk_accel_path "<Actions>/Main/Session" "") -; (gtk_accel_path "<Actions>/Main/AudioFileFormat" "") -; (gtk_accel_path "<Actions>/Transport/Transport" "") -; (gtk_accel_path "<Actions>/RegionList/SortByRegionName" "") -; (gtk_accel_path "<Actions>/Main/KeyMouse Actions" "") -; (gtk_accel_path "<Actions>/Snap/snap-to-frame" "") -; (gtk_accel_path "<Actions>/Editor/SnapTo" "") -; (gtk_accel_path "<Actions>/Editor/Crossfades" "") -; (gtk_accel_path "<Actions>/Editor/PullupPlus4" "") -; (gtk_accel_path "<Actions>/Main/MeteringHoldTime" "") -; (gtk_accel_path "<Actions>/Editor/PullupPlus1" "") -; (gtk_accel_path "<Actions>/Editor/Smpte24976" "") -; (gtk_accel_path "<Actions>/options/FileDataFormat24bit" "") -; (gtk_accel_path "<Actions>/Editor/SnapMode" "") -; (gtk_accel_path "<Actions>/Editor/PullupMinus4" "") -; (gtk_accel_path "<Actions>/RegionList/SortBySourceFileCreationDate" "") -; (gtk_accel_path "<Actions>/redirectmenu/activate" "") -; (gtk_accel_path "<Actions>/Editor/PullupMinus1" "") -; (gtk_accel_path "<Actions>/Editor/snap-normal" "") -; (gtk_accel_path "<Actions>/Snap/snap-to-asixteenthbeat" "") -; (gtk_accel_path "<Actions>/redirectmenu/edit" "") -; (gtk_accel_path "<Actions>/JACK/JACKLatency2048" "") -; (gtk_accel_path "<Actions>/Editor/ToggleWaveformsWhileRecording" "") -; (gtk_accel_path "<Actions>/Zoom/zoom-focus-right" "") -; (gtk_accel_path "<Actions>/options/FileHeaderFormatWAVE" "") -; (gtk_accel_path "<Actions>/redirectmenu/cut" "") -; (gtk_accel_path "<Actions>/redirectmenu/newinsert" "") -; (gtk_accel_path "<Actions>/options/UseMMC" "") -; (gtk_accel_path "<Actions>/options/MeterFalloffOff" "") -; (gtk_accel_path "<Actions>/Editor/PullupMinus4Plus1" "") -; (gtk_accel_path "<Actions>/Editor/MeterHold" "") -; (gtk_accel_path "<Actions>/Snap/snap-to-cd-frame" "") -; (gtk_accel_path "<Actions>/options/StopTransportAtEndOfSession" "") -; (gtk_accel_path "<Actions>/Main/Cleanup" "") -; (gtk_accel_path "<Actions>/Main/Snapshot" "") -; (gtk_accel_path "<Actions>/Transport/ToggleVideoSync" "") -; (gtk_accel_path "<Actions>/RegionList/SortBySourceFilesystem" "") -; (gtk_accel_path "<Actions>/Common/About" "") -; (gtk_accel_path "<Actions>/JACK/JACKLatency32" "") -; (gtk_accel_path "<Actions>/options/FileHeaderFormatWAVE64" "") -; (gtk_accel_path "<Actions>/RegionList/rlShowAll" "") -; (gtk_accel_path "<Actions>/RegionList/SortByRegionTimestamp" "") -; (gtk_accel_path "<Actions>/options/VerifyRemoveLastCapture" "") -; (gtk_accel_path "<Actions>/options/OutputAutoConnectPhysical" "") -; (gtk_accel_path "<Actions>/options/SendMMC" "") -; (gtk_accel_path "<Actions>/Editor/toggle-auto-xfades" "") -; (gtk_accel_path "<Actions>/Main/AudioFileFormatHeader" "") -; (gtk_accel_path "<Actions>/options/MeterHoldShort" "") -; (gtk_accel_path "<Actions>/options/MeterHoldMedium" "") -; (gtk_accel_path "<Actions>/Editor/Subframes80" "") -; (gtk_accel_path "<Actions>/options/FileHeaderFormatCAF" "") -; (gtk_accel_path "<Actions>/Editor/ToggleGeneric MIDISurface" "") -; (gtk_accel_path "<Actions>/JACK/JACKLatency256" "") -; (gtk_accel_path "<Actions>/Editor/LayerAddHigher" "") -; (gtk_accel_path "<Actions>/Editor/Solo" "") -; (gtk_accel_path "<Actions>/JACK/JACKLatency1024" "") -; (gtk_accel_path "<Actions>/Main/ExportRangeMarkers" "") -; (gtk_accel_path "<Actions>/Editor/toggle-xfades-active" "") -; (gtk_accel_path "<Actions>/Snap/snap-to-bar" "") -; (gtk_accel_path "<Actions>/Editor/LayerLaterHigher" "") -; (gtk_accel_path "<Actions>/redirectmenu/selectall" "") -; (gtk_accel_path "<Actions>/Snap/snap-to-quarters" "") -; (gtk_accel_path "<Actions>/options/UseSoftwareMonitoring" "") -; (gtk_accel_path "<Actions>/Editor/Subframes100" "") - - -; (gtk_accel_path "<Actions>/redirectmenu/clear" "") -; (gtk_accel_path "<Actions>/Editor/ToggleGeneric MIDISurfaceFeedback" "") -; (gtk_accel_path "<Actions>/Editor/PullupPlus4Minus1" "") -; (gtk_accel_path "<Actions>/JACK/JACKLatency512" "") -; (gtk_accel_path "<Actions>/Main/Recent" "") -; (gtk_accel_path "<Actions>/redirectmenu/newplugin" "") -; (gtk_accel_path "<Actions>/options/InputAutoConnectManual" "") -; (gtk_accel_path "<Actions>/options/MeterHoldLong" "") -; (gtk_accel_path "<Actions>/Snap/snap-to-seconds" "") -; (gtk_accel_path "<Actions>/options/OutputAutoConnectManual" "") -; (gtk_accel_path "<Actions>/Snap/snap-to-region-sync" "") -; (gtk_accel_path "<Actions>/Editor/Pullup" "") -; (gtk_accel_path "<Actions>/Editor/zoom-to-session" "") -; (gtk_accel_path "<Actions>/JACK/JACKReconnect" "") -; (gtk_accel_path "<Actions>/Editor/Autoconnect" "") -; (gtk_accel_path "<Actions>/Editor/Edit" "") -; (gtk_accel_path "<Actions>/redirectmenu/copy" "") -; (gtk_accel_path "<Actions>/options/MeterFalloffFaster" "") -; (gtk_accel_path "<Actions>/RegionList/SortByRegionLength" "") -; (gtk_accel_path "<Actions>/options/MeterFalloffSlowest" "") -; (gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-sync" "") -; (gtk_accel_path "<Actions>/redirectmenu/deactivate_all" "") -; (gtk_accel_path "<Actions>/RegionList/SortByRegionPosition" "") -; (gtk_accel_path "<Actions>/Editor/ZoomFocus" "") -; (gtk_accel_path "<Actions>/options/MeterFalloffSlow" "") -; (gtk_accel_path "<Actions>/RegionList/rlHide" "") -; (gtk_accel_path "<Actions>/Main/Metering" "") -; (gtk_accel_path "<Actions>/Zoom/zoom-focus-playhead" "") -; (gtk_accel_path "<Actions>/Editor/center-edit-cursor" "") -; (gtk_accel_path "<Actions>/Editor/Monitoring" "") -; (gtk_accel_path "<Actions>/redirectmenu/deactivate" "") -; (gtk_accel_path "<Actions>/options/LatchedRecordEnable" "") -; (gtk_accel_path "<Actions>/Transport/TogglePunchIn" "") -; (gtk_accel_path "<Actions>/ShuttleActions/SetShuttleUnitsPercentage" "") -; (gtk_accel_path "<Actions>/Main/Close" "") -; (gtk_accel_path "<Actions>/Main/New" "") -; (gtk_accel_path "<Actions>/Editor/EditSelectRangeOptions" "") -; (gtk_accel_path "<Actions>/Transport/ToggleTimeMaster" "") -; (gtk_accel_path "<Actions>/Snap/snap-to-thirds" "") -; (gtk_accel_path "<Actions>/Main/Export" "") -; (gtk_accel_path "<Actions>/Editor/Smpte30" "") -; (gtk_accel_path "<Actions>/Editor/playhead-to-range-start" "") -; (gtk_accel_path "<Actions>/Editor/Subframes" "") -; (gtk_accel_path "<Actions>/Editor/Smpte2997drop" "") -; (gtk_accel_path "<Actions>/Main/AddTrackBus" "") -; (gtk_accel_path "<Actions>/JACK/JACKDisconnect" "") -; (gtk_accel_path "<Actions>/options/MeterFalloffFast" "") -; (gtk_accel_path "<Actions>/options/FileDataFormatFloat" "") -; (gtk_accel_path "<Actions>/Snap/snap-to-region-end" "") -; (gtk_accel_path "<Actions>/options/StopRecordingOnXrun" "") -; (gtk_accel_path "<Actions>/RegionList/SortDescending" "") -; (gtk_accel_path "<Actions>/options/DoNotRunPluginsWhileRecording" "") -; (gtk_accel_path "<Actions>/Editor/PullupNone" "") -; (gtk_accel_path "<Actions>/Main/AudioFileFormatData" "") -; (gtk_accel_path "<Actions>/options/MeterFalloffFastest" "") -; (gtk_accel_path "<Actions>/Editor/audition-at-mouse" "") -; (gtk_accel_path "<Actions>/Snap/snap-to-smpte-seconds" "") -; (gtk_accel_path "<Actions>/Snap/snap-to-smpte-frame" "") -; (gtk_accel_path "<Actions>/Main/ExportSelection" "") -; (gtk_accel_path "<Actions>/options/StopPluginsWithTransport" "") -; (gtk_accel_path "<Actions>/Snap/snap-to-smpte-minutes" "") -; (gtk_accel_path "<Actions>/Main/FlushWastebasket" "") -; (gtk_accel_path "<Actions>/RegionList/SortByRegionEndinFile" "") -; (gtk_accel_path "<Actions>/Editor/ToggleMeasureVisibility" "") -; (gtk_accel_path "<Actions>/Zoom/zoom-focus-center" "") -; (gtk_accel_path "<Actions>/options/LatchedSolo" "") -; (gtk_accel_path "<Actions>/options/MeterHoldOff" "") -; (gtk_accel_path "<Actions>/options/OutputAutoConnectMaster" "") -; (gtk_accel_path "<Actions>/JACK/JACKLatency64" "") -; (gtk_accel_path "<Actions>/Editor/center-playhead" "") -; (gtk_accel_path "<Actions>/Snap/snap-to-region-start" "") -; (gtk_accel_path "<Actions>/Editor/View" "") -; (gtk_accel_path "<Actions>/Editor/Layering" "") -; (gtk_accel_path "<Actions>/JACK/JACKLatency4096" "") -; (gtk_accel_path "<Actions>/Editor/Smpte30drop" "") -; (gtk_accel_path "<Actions>/Zoom/zoom-focus-edit" "") -; (gtk_accel_path "<Actions>/Editor/EditCursorMovementOptions" "") -; (gtk_accel_path "<Actions>/redirectmenu/activate_all" "") -; (gtk_accel_path "<Actions>/redirectmenu/paste" "") -; (gtk_accel_path "<Actions>/Editor/Smpte25" "") -; (gtk_accel_path "<Actions>/options/RegionEquivalentsOverlap" "") -; (gtk_accel_path "<Actions>/Main/MeteringFallOffRate" "") -; (gtk_accel_path "<Actions>/options/UseHardwareMonitoring" "") -; (gtk_accel_path "<Actions>/Editor/Smpte24" "") -; (gtk_accel_path "<Actions>/Snap/snap-to-mark" "") -; (gtk_accel_path "<Actions>/Editor/CrossfadesShort" "") -; (gtk_accel_path "<Actions>/Editor/Smpte5994" "") -; (gtk_accel_path "<Actions>/JACK/JACKLatency8192" "") -; (gtk_accel_path "<Actions>/Editor/toggle-xfades-visible" "") -; (gtk_accel_path "<Actions>/ShuttleActions/SetShuttleUnitsSemitones" "") -; (gtk_accel_path "<Actions>/JACK/JACKLatency128" "") -; (gtk_accel_path "<Actions>/Snap/snap-to-beat" "") -; (gtk_accel_path "<Actions>/Editor/RegionEditOps" "") -; (gtk_accel_path "<Actions>/Editor/snap-magnetic" "") -; (gtk_accel_path "<Actions>/Editor/playhead-to-range-end" "") -; (gtk_accel_path "<Actions>/Editor/EditSelectRegionOptions" "") -; (gtk_accel_path "<Actions>/redirectmenu/newsend" "") -; (gtk_accel_path "<Actions>/redirectmenu/newreturn" "") -; (gtk_accel_path "<Actions>/Editor/ToggleGeneric MIDISurfaceSubMenu" "") -; (gtk_accel_path "<Actions>/Editor/MeterFalloff" "") -; (gtk_accel_path "<Actions>/RegionList/rlRemove" "") -; (gtk_accel_path "<Actions>/Transport/ToggleAutoInput" "") -; (gtk_accel_path "<Actions>/Snap/snap-to-thirtyseconds" "") -; (gtk_accel_path "<Actions>/Snap/snap-to-minutes" "") -; (gtk_accel_path "<Actions>/RegionList/RegionListSort" "") -; (gtk_accel_path "<Actions>/Editor/edit-cursor-to-previous-region-start" "") +@eep|Editor/toggle-edit-mode|1|cycle to next edit mode +@eep|Editor/cycle-snap-mode|2|cycle to next grid snap mode +@eep|Editor/cycle-snap-choice|3|cycle to next grid unit +@trans|Editor/step-mouse-mode|4|toggle auto play +@trans|Transport/ToggleAutoReturn|5|toggle auto return +@trans|Transport/ToggleClick|6|toggle auto input +@ranges|Editor/set-tempo-from-region|9|set tempo (1 bar) from region(s) +@ranges|Editor/set-tempo-from-edit-range|0|set tempo (1 bar) from edit range + +; mouse stuff + +@+mobject|foo|left-click:on body|select +@+mobject|foo|<@TERTIARY@>left-click:on body|extend selection +@+mobject|foo|<@PRIMARY@>left-click:on body|add/remove selection +@+mobject|foo|left-drag:on body|move region(s) +@+mobject|foo|<@PRIMARY@>left-drag:on body|copy+move region(s) +@+mobject|foo|<@PRIMARY@>middle-drag:on body|fixed time copy+move +@+mobject|foo|middle-drag:on body|fixed time move +@+mobject|foo|<@SECONDARY@><@TERTIARY@>midde:on body|lower region +@+mobject|foo|<@TERTIARY@>middle:on body|raise region +@+mobject|foo|<@PRIMARY@>left-drag:in trim bar|slip audio in region +@+mobject|foo|left-click:in trim bar|set region start +@+mobject|foo|middle:in trim bar|set region end +@+mobject|foo|left-drag:near ends of trim bar|adjust region edges +@+mobject|foo|left-click:in auto track|add control point +@+mobject|foo|left-drag:on point|move control point +@+mobject|foo|middle-drag:on point|fixed time adjust +@+mobject|foo|<@PRIMARY@>left-drag:on point|move point+later points +@+mobject|foo|<@PRIMARY@>middle-drag:on point|fixed time move +@+mobject|foo|left-drag:on line|move line segment +@+mobject|foo|<@PRIMARY@><@SECONDARY@>left-drag:on regions|rubber-band select +@+mobject|foo|left-drag:in auto track|rubber-band select\linebreak control points +@+mobject|foo|left-drag:empty space|rubber-band select + +; mouse zoom +@+mzoom|foo|<@PRIMARY@>middle|zoom to session +@+mzoom|foo|middle-click|zoom out +@+mzoom|foo|left-click|zoom in +@+mzoom|foo|left+drag |define the new visible area + +; mouse solo etc. +@+mops|foo|<@PRIMARY@>middle-click|learn MIDI control +@+mops|foo|<@PRIMARY@><@TERTIARY@>left-click|apply to all tracks/busses +@+mops|foo|<@PRIMARY@>left-click|apply to group +@+mops|foo|middle-click|momentary switch +@+mops|foo|left-click|apply to track or active group + +; mouse solo + +@+mopsolo|foo|<@PRIMARY@><@SECONDARY@>left-click|exclusive solo +@+mopsolo|foo|<@TERTIARY@>left-click|temporary latched solo + +; mouse fader etc. + +@+mopsfader|foo|<@PRIMARY@>middle-click|learn MIDI control +@+mopsfader|foo|<@TERTIARY@>left-click|reset to default +@+mopsfader|foo|<@PRIMARY@><@SECONDARY@>left-drag|finest-drag control +@+mopsfader|foo|<@PRIMARY@>left-drag|fine-drag control +@+mopsfader|foo|left-drag|adjust diff --git a/gtk2_ardour/public_editor.h b/gtk2_ardour/public_editor.h index 4d40e1c11e..85fb7faf70 100644 --- a/gtk2_ardour/public_editor.h +++ b/gtk2_ardour/public_editor.h @@ -25,6 +25,7 @@ #include <string> #include <glib.h> #include <gdk/gdktypes.h> +#include <gtkmm/box.h> #include <gtkmm/window.h> #include <gtkmm/actiongroup.h> #include <jack/types.h> @@ -327,6 +328,14 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulThingWithGoingAway static const int vertical_spacing; static const int horizontal_spacing; +#ifdef TOP_MENUBAR + /* + * This is needed for OS X primarily + * but also any other OS that uses a single + * top menubar instead of per window menus + */ + virtual Gtk::HBox& get_status_bar_packer() = 0; +#endif virtual gdouble get_trackview_group_vertical_offset () const = 0; virtual gdouble get_canvas_timebars_vsize () const = 0; diff --git a/gtk2_ardour/time_axis_view_item.cc b/gtk2_ardour/time_axis_view_item.cc index db141a9f01..793e70c990 100644 --- a/gtk2_ardour/time_axis_view_item.cc +++ b/gtk2_ardour/time_axis_view_item.cc @@ -25,6 +25,13 @@ #include <gtkmm2ext/utils.h> +#include "ardour_ui.h" +/* + * ardour_ui.h was moved up in the include list + * due to a conflicting definition of 'Rect' between + * Apple's MacTypes.h file and GTK + */ + #include "public_editor.h" #include "time_axis_view_item.h" #include "time_axis_view.h" @@ -32,7 +39,6 @@ #include "utils.h" #include "canvas_impl.h" #include "rgb_macros.h" -#include "ardour_ui.h" #include "i18n.h" diff --git a/gtk2_ardour/wscript b/gtk2_ardour/wscript index 6b791799cb..592b48efd0 100644 --- a/gtk2_ardour/wscript +++ b/gtk2_ardour/wscript @@ -2,6 +2,10 @@ import autowaf import os import glob +import Options +import sys +import TaskGen +import re from w18n import build_i18n # Version of this package (even if built as a child) @@ -193,8 +197,6 @@ gtk2_ardour_sources = [ def set_options(opt): autowaf.set_options(opt) - opt.add_option('--potupdate', action='store_true', dest='potupdate', - help='Rebuild pot file for translators') def configure(conf): autowaf.build_version_files(path_prefix+'version.h', path_prefix+'version.cc', @@ -202,7 +204,13 @@ def configure(conf): autowaf.configure(conf) conf.check_tool('compiler_cxx') - autowaf.check_pkg(conf, 'alsa', uselib_store='ALSA') + if re.search ("linux", sys.platform) != None: + autowaf.check_pkg(conf, 'alsa', uselib_store='ALSA') + # + # TODO: Insert a sanity check for on OS X + # to ensure that CoreAudio is present.... + # Really shouldn't these checks be in AutoWaf? + # autowaf.check_pkg(conf, 'flac', uselib_store='FLAC', atleast_version='1.2.1') autowaf.check_pkg(conf, 'gthread', uselib_store='GTHREAD', atleast_version='2.10.1') autowaf.check_pkg(conf, 'gtk+-2.0', uselib_store='GTK', atleast_version='2.12.1') @@ -214,10 +222,7 @@ def configure(conf): conf.check_tool('misc') # subst tool conf.write_config_header('gtk2ardour-config.h') - - # TODO - conf.define('WINDOWS_KEY', 'Mod4') - + # Boost headers autowaf.check_header(conf, 'boost/shared_ptr.hpp') autowaf.check_header(conf, 'boost/weak_ptr.hpp') @@ -231,7 +236,7 @@ def build(bld): obj.target = 'ardour-3.0' obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3') obj.uselib = 'UUID FLAC GLIBMM GTHREAD GTK GNOMECANVAS OGG ALSA' - obj.uselib += ' GTKMM GNOMECANVASMM' + obj.uselib += ' GTKMM GNOMECANVASMM OSX GTKOSX COREAUDIO' obj.uselib_local = '''libpbd libmidipp libtaglib libardour libardour_cp libgtkmm2ext libtaglib''' obj.cflags = ['-DPACKAGE="gtk2_ardour"'] @@ -242,6 +247,7 @@ def build(bld): obj.cxxflags += ['-DMODULE_DIR="' + os.path.normpath(bld.env['LIBDIRNAME']) + '"'] obj.cxxflags += ['-DLOCALEDIR="' + os.path.join( os.path.normpath(bld.env['DATADIRNAME']), 'locale') + '"'] + if bld.env['HAVE_SLV2']: obj.source += [ 'lv2_plugin_ui.cc' ] obj.uselib += ' SLV2 ' @@ -254,14 +260,11 @@ def build(bld): obj.cxxflags += [ '-DVST_SUPPORT' ] if bld.env['GTKOSX']: - obj.features += ' objc ' + TaskGen.task_gen.mappings['.mm'] = TaskGen.task_gen.mappings['.cc'] obj.source += [ 'cocoacarbon.mm' ] - obj.cxxflags += [ '-DTOP_MENUBAR', '-DGTKOSX' ] - obj.linkflags += [ '-framework', 'AppKit', '-framework', 'CoreAudioKit' ] if bld.env['AUDIOUNITS']: obj.source += [ 'au_pluginui.mm' ] - obj.cxxflags += [ '-DHAVE_AUDIOUNITS' ] obj.uselib_local += ' libappleutility ' else: @@ -380,26 +383,15 @@ def build(bld): bld.install_files(os.path.join(bld.env['CONFIGDIR'], 'ardour3'), 'ardour.menus') # Keybindings - keybindings_dict = {} - if bld.env['GTKOSX']: - keybindings_dict['PRIMARY'] = 'Meta' - keybindings_dict['SECONDARY'] = 'Mod1' - keybindings_dict['TERTIARY'] = 'Shift' - keybindings_dict['LEVEL4'] = 'Ctrl' - keybindings_dict['WINDOW'] = 'Mod1' - else: - keybindings_dict['PRIMARY'] = 'Ctrl' - keybindings_dict['SECONDARY'] = 'Alt' - keybindings_dict['TERTIARY'] = 'Shift' - keybindings_dict['LEVEL4'] = bld.env['WINDOWS_KEY'] - keybindings_dict['WINDOW'] = 'Alt' - - for b in [ 'SAE-de-keypad', 'SAE-de-nokeypad', 'SAE-us-keypad', 'SAE-us-nokeypad', - 'mnemonic-us', 'ergonomic-us' ]: - obj = bld.new_task_gen('subst') - obj.target = b + '.bindings' - obj.source = obj.target + '.in' - obj.dict = keybindings_dict + + # 'SAE-de-keypad', 'SAE-de-nokeypad', 'SAE-us-keypad', 'SAE-us-nokeypad', 'ergonomic-us' + + for b in [ 'mnemonic-us' ] : + obj = bld.new_task_gen ( + target = b + '.bindings', + source = b + '.bindings.in', + rule = '../tools/fmt-bindings --winkey=%s --accelmap <${SRC} >${TGT}' % bld.env['windows_key'] + ) obj.install_path = os.path.join(bld.env['CONFIGDIR'], 'ardour3') # Icons/Images diff --git a/libs/ardour/ardour/coreaudiosource.h b/libs/ardour/ardour/coreaudiosource.h index 7e9f975d03..e8b22e5524 100644 --- a/libs/ardour/ardour/coreaudiosource.h +++ b/libs/ardour/ardour/coreaudiosource.h @@ -22,17 +22,20 @@ #include <appleutility/CAAudioFile.h> #include "ardour/audiofilesource.h" +#include <string> + +using namespace std; namespace ARDOUR { class CoreAudioSource : public AudioFileSource { public: CoreAudioSource (ARDOUR::Session&, const XMLNode&); - CoreAudioSource (ARDOUR::Session&, const string& path, int chn, Flag); + CoreAudioSource (ARDOUR::Session&, const string& path, bool, int chn, Flag); ~CoreAudioSource (); float sample_rate() const; - int update_header (nframes_t when, struct tm&, time_t); + int update_header (sframes_t when, struct tm&, time_t); int flush_header () {return 0;}; void set_header_timeline_position () {}; @@ -40,7 +43,7 @@ class CoreAudioSource : public AudioFileSource { static int get_soundfile_info (string path, SoundFileInfo& _info, string& error_msg); protected: - nframes_t read_unlocked (Sample *dst, nframes_t start, nframes_t cnt) const; + nframes_t read_unlocked (Sample *dst, sframes_t start, nframes_t cnt) const; nframes_t write_unlocked (Sample *dst, nframes_t cnt) { return 0; } private: diff --git a/libs/ardour/coreaudiosource.cc b/libs/ardour/coreaudiosource.cc index 95cae8c4ee..d9d1f01601 100644 --- a/libs/ardour/coreaudiosource.cc +++ b/libs/ardour/coreaudiosource.cc @@ -38,14 +38,16 @@ using namespace ARDOUR; using namespace PBD; CoreAudioSource::CoreAudioSource (Session& s, const XMLNode& node) - : AudioFileSource (s, node) + : Source (s, node), + AudioFileSource (s, node) { init (); } -CoreAudioSource::CoreAudioSource (Session& s, const string& path, int chn, Flag flags) +CoreAudioSource::CoreAudioSource (Session& s, const string& path, bool, int chn, Flag flags) /* files created this way are never writable or removable */ - : AudioFileSource (s, path, + : Source (s, DataType::AUDIO, path, Source::Flag (flags & ~(Writable|Removable|RemovableIfEmpty|RemoveAtDestroy))), + AudioFileSource (s, path, Source::Flag (flags & ~(Writable|Removable|RemovableIfEmpty|RemoveAtDestroy))) { _channel = chn; @@ -138,7 +140,7 @@ CoreAudioSource::safe_read (Sample* dst, nframes_t start, nframes_t cnt, AudioBu nframes_t -CoreAudioSource::read_unlocked (Sample *dst, nframes_t start, nframes_t cnt) const +CoreAudioSource::read_unlocked (Sample *dst, sframes_t start, nframes_t cnt) const { nframes_t file_cnt; AudioBufferList abl; @@ -217,7 +219,7 @@ CoreAudioSource::sample_rate() const } int -CoreAudioSource::update_header (nframes_t when, struct tm&, time_t) +CoreAudioSource::update_header (sframes_t when, struct tm&, time_t) { return 0; } diff --git a/libs/ardour/plugin_manager.cc b/libs/ardour/plugin_manager.cc index 44974a7199..bdc4d9e9b5 100644 --- a/libs/ardour/plugin_manager.cc +++ b/libs/ardour/plugin_manager.cc @@ -80,7 +80,7 @@ PluginManager::PluginManager () load_favorites (); -#ifdef GTKOSX +#ifdef HAVE_AUDIOUNITS ProcessSerialNumber psn = { 0, kCurrentProcess }; OSStatus returnCode = TransformProcessType(& psn, kProcessTransformToForegroundApplication); if( returnCode != 0) { diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index e1c85bf968..9895cf1e18 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -420,7 +420,12 @@ Route::process_output_buffers (BufferSet& bufs, if (rm.locked()) { for (ProcessorList::iterator i = _processors.begin(); i != _processors.end(); ++i) { - bufs.set_count (ChanCount::max(bufs.count(), (*i)->input_streams())); + if (bufs.count() != (*i)->input_streams()) { + cerr << _name << " bufs = " << bufs.count() + << " input = " << (*i)->input_streams() + << endl; + } + assert (bufs.count() == (*i)->input_streams()); (*i)->run (bufs, start_frame, end_frame, nframes); bufs.set_count (ChanCount::max(bufs.count(), (*i)->output_streams())); } @@ -1333,6 +1338,7 @@ Route::configure_processors_unlocked (ProcessorStreams* err) // We can, so configure everything list< pair<ChanCount,ChanCount> >::iterator c = configuration.begin(); for (ProcessorList::iterator p = _processors.begin(); p != _processors.end(); ++p, ++c) { + cerr << _name << " Configure " << (*p)->name() << " for " << in << " + " << out << endl; (*p)->configure_io(c->first, c->second); processor_max_streams = ChanCount::max(processor_max_streams, c->first); processor_max_streams = ChanCount::max(processor_max_streams, c->second); diff --git a/libs/ardour/wscript b/libs/ardour/wscript index 09c4e57149..0f64c32f54 100644 --- a/libs/ardour/wscript +++ b/libs/ardour/wscript @@ -210,19 +210,6 @@ def configure(conf): conf.check(header_name='sys/vfs.h', define_name='HAVE_SYS_VFS_H') conf.check(header_name='wordexp.h', define_name='HAVE_WORDEXP') - if conf.env['IS_OSX']: - conf.check_cc (header_name = '/System/Library/Frameworks/CoreMIDI.framework/Headers/CoreMIDI.h', - linkflags = [ '-framework', 'CoreMIDI' ]) - - conf.check_cc (header_name = '/System/Library/Frameworks/AudioToolbox.framework/Headers/ExtendedAudioFile.h', - linkflags = [ '-framework', 'AudioToolbox' ]) - - conf.check_cc (header_name = '/System/Library/Frameworks/CoreAudio.framework/Headers/CoreAudio.h', - define_name = 'HAVE_COREAUDIO') - - conf.check_cc (header_name = '/System/Library/Frameworks/AudioUnit.framework/Headers/AudioUnit.h', - define_name = 'HAVE_AUDIOUNITS', linkflags = [ '-framework', 'AudioUnit' ]) - conf.write_config_header('libardour-config.h') # Boost headers @@ -234,10 +221,10 @@ def build(bld): obj = bld.new_task_gen('cxx', 'shlib') obj.source = libardour_sources obj.export_incdirs = ['.'] - obj.includes = ['.', '../surfaces/control_protocol'] + obj.includes = ['.', '../surfaces/control_protocol', '..'] obj.name = 'libardour' obj.target = 'ardour' - obj.uselib = 'GLIBMM AUBIO SIGCPP XML UUID JACK SNDFILE SAMPLERATE LRDF' + obj.uselib = 'GLIBMM AUBIO SIGCPP XML UUID JACK SNDFILE SAMPLERATE LRDF OSX' obj.uselib_local = 'libpbd libmidipp libevoral libvamphost libvampplugin libtaglib librubberband' obj.vnum = LIBARDOUR_LIB_VERSION obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3') @@ -251,6 +238,14 @@ def build(bld): os.path.normpath(bld.env['LIBDIR']), 'ardour3', 'vamp') + '"'] #obj.source += ' st_stretch.cc st_pitch.cc ' #obj.uselib += ' SOUNDTOUCH ' + #obj.add_objects = 'default/libs/surfaces/control_protocol/smpte_1.o' + + obj.env.append_value('LINKFLAGS', 'default/libs/surfaces/control_protocol/smpte_1.o') + # + # TODO: The above is an ugly hack that shouldn't be needed. We really need + # to refactor SMPTE out of libardour_cp to get rid of that circular dependency + # alltogether. + # if bld.env['HAVE_SLV2']: obj.source += [ 'lv2_plugin.cc', 'lv2_event_buffer.cc', 'uri_map.cc' ] obj.uselib += ' SLV2 ' @@ -259,14 +254,13 @@ def build(bld): obj.source += [ 'vst_plugin.cc', 'session_vst.cc' ] if bld.env['HAVE_COREAUDIO'] and bld.env['COREAUDIO']: - obj.sources += [ 'coreaudio.cc', 'caimportable.cc' ] + obj.source += [ 'coreaudiosource.cc', 'caimportable.cc' ] - if bld.env['HAVE_AUDIOUNITS'] and bld.env['AUDIOUNITS']: - obj.sources += [ 'audio_unit.cc' ] + if bld.env['HAVE_AUDIOUNITS'] or bld.env['HAVE_COREAUDIO']: + obj.uselib_local += ' libappleutility' - if bld.env['IS_OSX']: - # this avoids issues with circular dependencies between libardour and libardour_cp. - obj.linkflags += '-undefined suppress -flat_namespace' + if bld.env['HAVE_AUDIOUNITS'] and bld.env['AUDIOUNITS']: + obj.source += [ 'audio_unit.cc' ] if bld.env['FPU_OPTIMIZATION']: obj.source += [ 'sse_functions_xmm.cc' ] diff --git a/libs/gtkmm2ext/barcontroller.cc b/libs/gtkmm2ext/barcontroller.cc index 60ec7e1cd6..53d642ce23 100644 --- a/libs/gtkmm2ext/barcontroller.cc +++ b/libs/gtkmm2ext/barcontroller.cc @@ -369,7 +369,7 @@ BarController::expose (GdkEventExpose* /*event*/) } void -BarController::set_style (Style s) +BarController::set_style (barStyle s) { _style = s; darea.queue_draw (); diff --git a/libs/gtkmm2ext/gtkmm2ext/barcontroller.h b/libs/gtkmm2ext/gtkmm2ext/barcontroller.h index 9c9c4c18b9..e5c01c7191 100644 --- a/libs/gtkmm2ext/gtkmm2ext/barcontroller.h +++ b/libs/gtkmm2ext/gtkmm2ext/barcontroller.h @@ -33,7 +33,7 @@ class BarController : public Gtk::Frame virtual ~BarController () {} - enum Style { + enum barStyle { LeftToRight, RightToLeft, Line, @@ -43,8 +43,8 @@ class BarController : public Gtk::Frame BottomToTop }; - Style style() const { return _style; } - void set_style (Style); + barStyle style() const { return _style; } + void set_style (barStyle); void set_use_parent (bool yn); void set_sensitive (bool yn); @@ -64,7 +64,7 @@ class BarController : public Gtk::Frame BindingProxy binding_proxy; Gtk::DrawingArea darea; Glib::RefPtr<Pango::Layout> layout; - Style _style; + barStyle _style; bool grabbed; bool switching; bool switch_on_release; diff --git a/libs/gtkmm2ext/gtkmm2ext/cell_renderer_pixbuf_toggle.h b/libs/gtkmm2ext/gtkmm2ext/cell_renderer_pixbuf_toggle.h index 18c1e5cac0..4a1bbb9051 100644 --- a/libs/gtkmm2ext/gtkmm2ext/cell_renderer_pixbuf_toggle.h +++ b/libs/gtkmm2ext/gtkmm2ext/cell_renderer_pixbuf_toggle.h @@ -17,6 +17,13 @@ */ +#ifdef GTKOSX +#include <MacTypes.h> +#if defined(Style) +#undef style +#endif +#endif + #ifndef __gtkmm2ext_cell_renderer_pixbuf_toggle_h__ #define __gtkmm2ext_cell_renderer_pixbuf_toggle_h__ @@ -37,7 +44,7 @@ class CellRendererPixbufToggle : public Gtk::CellRenderer CellRendererPixbufToggle(); virtual ~CellRendererPixbufToggle(){}; - virtual void render_vfunc (const Glib::RefPtr<Gdk::Drawable>& window, Widget& widget, const Gdk::Rectangle& background_area, const Gdk::Rectangle& cell_area, const Gdk::Rectangle& expose_area, Gtk::CellRendererState flags); + virtual void render_vfunc (const Glib::RefPtr<Gdk::Drawable>& window, Gtk::Widget& widget, const Gdk::Rectangle& background_area, const Gdk::Rectangle& cell_area, const Gdk::Rectangle& expose_area, Gtk::CellRendererState flags); virtual void get_size_vfunc (Gtk::Widget& widget, const Gdk::Rectangle* cell_area, int* x_offset, int* y_offset, int* width, int* height) const; diff --git a/libs/gtkmm2ext/wscript b/libs/gtkmm2ext/wscript index 212a471989..7c8f4cda99 100644 --- a/libs/gtkmm2ext/wscript +++ b/libs/gtkmm2ext/wscript @@ -18,6 +18,34 @@ GTKMM2EXT_LIB_VERSION = '0.8.3' APPNAME = 'gtkmm2ext' VERSION = GTKMM2EXT_VERSION +gtkmm2ext_sources = [ + 'auto_spin.cc', + 'barcontroller.cc', + 'binding_proxy.cc', + 'cell_renderer_pixbuf_toggle.cc', + 'choice.cc', + 'click_box.cc', + 'dndtreeview.cc', + 'fastmeter.cc', + 'focus_entry.cc', + 'grouped_buttons.cc', + 'gtk_ui.cc', + 'idle_adjustment.cc', + 'pixfader.cc', + 'pixscroller.cc', + 'popup.cc', + 'prompter.cc', + 'scroomer.cc', + 'selector.cc', + 'slider_controller.cc', + 'stateful_button.cc', + 'tearoff.cc', + 'textviewer.cc', + 'utils.cc', + 'version.cc', + 'window_title.cc' +] + # Mandatory variables srcdir = '.' blddir = 'build' @@ -33,41 +61,17 @@ def configure(conf): autowaf.configure(conf) conf.check_tool('compiler_cxx') autowaf.check_pkg(conf, 'gtkmm-2.4', uselib_store='GTKMM', atleast_version='2.8') + autowaf.check_pkg(conf, 'gtk+-2.0', uselib_store='GTK', atleast_version='2.12.1') + def build(bld): - obj = bld.new_task_gen('cxx', 'shlib') - obj.source = ''' - auto_spin.cc - barcontroller.cc - binding_proxy.cc - cell_renderer_pixbuf_toggle.cc - choice.cc - click_box.cc - dndtreeview.cc - fastmeter.cc - focus_entry.cc - grouped_buttons.cc - gtk_ui.cc - idle_adjustment.cc - pixfader.cc - pixscroller.cc - popup.cc - prompter.cc - scroomer.cc - selector.cc - slider_controller.cc - stateful_button.cc - tearoff.cc - textviewer.cc - utils.cc - version.cc - window_title.cc - ''' + obj = bld.new_task_gen(features = 'cc cxx cshlib') + obj.source = gtkmm2ext_sources obj.export_incdirs = ['.'] obj.includes = ['.'] obj.name = 'libgtkmm2ext' obj.target = 'gtkmm2ext' - obj.uselib = 'GTKMM' + obj.uselib = 'GTKMM GTK GTKOSX OSX GDK' obj.uselib_local = 'libpbd' obj.vnum = GTKMM2EXT_LIB_VERSION obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3') @@ -75,6 +79,8 @@ def build(bld): '-DPACKAGE="libgtkmm2ext"', '-DLOCALEDIR="' + os.path.join( os.path.normpath(bld.env['DATADIRNAME']), 'locale') + '"'] + if bld.env['GTKOSX']: + obj.source += ['sync-menu.c'] def shutdown(): autowaf.shutdown() diff --git a/libs/pbd/wscript b/libs/pbd/wscript index c06cd31503..be65a84ac1 100644 --- a/libs/pbd/wscript +++ b/libs/pbd/wscript @@ -1,6 +1,7 @@ #!/usr/bin/env python import autowaf import os +import sys # Version of this package (even if built as a child) MAJOR = '4' @@ -34,7 +35,8 @@ def configure(conf): conf.check_tool('compiler_cxx') autowaf.check_pkg(conf, 'libxml-2.0', uselib_store='XML') autowaf.check_pkg(conf, 'sigc++-2.0', uselib_store='SIGCPP', atleast_version='2.0') - autowaf.check_pkg(conf, 'uuid', uselib_store='UUID') + if sys.platform != 'darwin': + autowaf.check_pkg(conf, 'uuid', uselib_store='UUID') conf.check(function_name='getmntent', header_name='mntent.h', define_name='HAVE_GETMNTENT') conf.check(header_name='execinfo.h', define_name='HAVE_EXECINFO') diff --git a/libs/surfaces/control_protocol/wscript b/libs/surfaces/control_protocol/wscript index e8354e58d4..b118ca5726 100644 --- a/libs/surfaces/control_protocol/wscript +++ b/libs/surfaces/control_protocol/wscript @@ -6,6 +6,7 @@ import os # major increment <=> incompatible changes # minor increment <=> compatible changes (additions) # micro increment <=> no interface changes +APPNAME = 'libardour_cp' LIBARDOUR_CP_LIB_VERSION = '4.1.0' # Mandatory variables diff --git a/libs/surfaces/osc/wscript b/libs/surfaces/osc/wscript index d254d00313..4e1e87d7f5 100644 --- a/libs/surfaces/osc/wscript +++ b/libs/surfaces/osc/wscript @@ -17,7 +17,12 @@ def set_options(opt): def configure(conf): autowaf.configure(conf) - autowaf.check_pkg(conf, 'liblo', uselib_store='LO') + autowaf.check_pkg(conf, 'liblo', uselib_store='LO', linkflags='-llo') + conf.env.append_value('LINKFLAGS_LO', '-llo') + # + # TODO: Again this append_value shouldn't be necessary really + # but for some reason the link flag is not being added otherwise. + # def build(bld): obj = bld.new_task_gen('cxx', 'shlib') @@ -6,6 +6,7 @@ import commands import re import string import subprocess +import sys # Variables for 'waf dist' VERSION = '3.0pre0' @@ -200,7 +201,7 @@ def set_compiler_flags (conf,opt): if conf.env['build_target'] == 'tiger' or conf.env['build_target'] == 'leopard': optimization_flags.append ("-DBUILD_VECLIB_OPTIMIZATIONS"); debug_flags.append ("-DBUILD_VECLIB_OPTIMIZATIONS"); - libraries['core'].Append(LINKFLAGS= '-framework Accelerate') + conf.env.append_value('LINKFLAGS', "-framework Accelerate") elif conf.env['build_target'] == 'i686' or conf.env['build_target'] == 'x86_64': optimization_flags.append ("-DBUILD_SSE_OPTIMIZATIONS") debug_flags.append ("-DBUILD_SSE_OPTIMIZATIONS") @@ -209,6 +210,8 @@ def set_compiler_flags (conf,opt): debug_flags.append ("-DUSE_X86_64_ASM") if build_host_supports_sse != 1: print "\nWarning: you are building Ardour with SSE support even though your system does not support these instructions. (This may not be an error, especially if you are a package maintainer)" + if conf.check_cc(function_name='posix_memalign', header_name='stdlib.h') == False: + optimization_flags.append("-DNO_POSIX_MEMALIGN") # end optimization section @@ -231,13 +234,7 @@ def set_compiler_flags (conf,opt): conf.define ('IS_OSX', 1) # force tiger or later, to avoid issues on PPC which defaults # back to 10.1 if we don't tell it otherwise. - conf.env.append_value (CCFLAGS="-DMAC_OS_X_VERSION_MIN_REQUIRED=1040") - - if conf.env['build_target'] == 'leopard': - # need this to force build against the 10.4 SDK when building on later versions of OS X - # ideally this would be configurable, but lets just do that later when we need it - conf.env.append_value(CCFLAGS="-mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk") - conf.env.append_value(LINKFLAGS="-mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.4u.sdk") + conf.env.append_value('CCFLAGS', "-DMAC_OS_X_VERSION_MIN_REQUIRED=1040") else: conf.define ('IS_OSX', 0) @@ -353,8 +350,10 @@ def set_options(opt): help='Compile with support for VST') opt.add_option('--wiimote', action='store_true', default=False, dest='wiimote', help='Build the wiimote control surface') - opt.add_option('--windows-key', type='string', dest='windows_key', - help='Set X Modifier (Mod1,Mod2,Mod3,Mod4,Mod5) for "Windows" key [Default: Mod4]', default='Mod4><Super') + opt.add_option('--windows-key', type='string', action='store', dest='windows_key', default='Mod4><Super', + help='X Modifier(s) (Mod1,Mod2, etc) for the Windows key (X11 builds only). ' + + 'Multiple modifiers must be separated by \'><\'') + for i in children: opt.sub_options(i) @@ -368,6 +367,8 @@ def configure(conf): autowaf.configure(conf) autowaf.check_pkg(conf, 'glib-2.0', uselib_store='GLIB', atleast_version='2.2') autowaf.check_pkg(conf, 'glibmm-2.4', uselib_store='GLIBMM', atleast_version='2.14.0') + if sys.platform == 'darwin': + sub_config_and_use(conf, 'libs/appleutility') for i in children: sub_config_and_use(conf, i) @@ -398,6 +399,8 @@ def configure(conf): autowaf.display_msg(conf, 'GtkOSX', opts.gtkosx) if opts.gtkosx: conf.define ('GTKOSX', 1) + if opts.coreaudio: + conf.define ('COREAUDIO', 1) autowaf.display_msg(conf, 'LV2 Support', bool(conf.env['HAVE_SLV2'])) autowaf.display_msg(conf, 'Rubberband', bool(conf.env['HAVE_RUBBERBAND'])) autowaf.display_msg(conf, 'Samplerate', bool(conf.env['HAVE_SAMPLERATE'])) @@ -416,9 +419,9 @@ def configure(conf): autowaf.display_msg(conf, 'Wiimote Support', opts.wiimote) if opts.wiimote: conf.define('WIIMOTE',1) - autowaf.display_msg(conf, 'Windows Key', opts.windows_key) if opts.windows_key: conf.define('WINDOWS_KEY', opts.windows_key) + autowaf.display_msg(conf, 'Windows Key', opts.windows_key) set_compiler_flags (conf, Options.options) @@ -427,6 +430,8 @@ def configure(conf): def build(bld): autowaf.set_recursive() + if sys.platform == 'darwin': + bld.add_subdirs('libs/appleutility') for i in children: bld.add_subdirs(i) |