waf build works on OS X ; new bindings file and processing system in place for mnemonic-us

git-svn-id: svn://localhost/ardour2/branches/3.0@5498 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2009-08-08 22:36:32 +00:00
parent 9c6449567d
commit bcc929a5b6
27 changed files with 629 additions and 518 deletions

View File

@ -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)

View File

@ -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;
@ -2203,6 +2208,41 @@ ARDOUR_UI::build_session_from_nsd (const Glib::ustring& session_path, const Glib
return 0;
}
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 ()
{

View File

@ -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());

View File

@ -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"

View File

@ -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;
}

View File

@ -22,6 +22,7 @@
#include <libgnomecanvasmm/polygon.h>
#include "canvas-note-event.h"
#include "canvas.h"
namespace Gnome {
namespace Canvas {

View File

@ -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"

View File

@ -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"

View File

@ -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;

View File

@ -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>

View File

@ -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
;; Title
$ARDOUR Shortcuts \linebreak Mnemonic US-Keypad
;; GROUP DEFINITIONS
%trans Transport \& Recording Control
%sess Session \& File Handling
%edit Basic Editing
%vis Changing What's Visible
%wvis Window Visibility
%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.
%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.
%epp Edit Point Playback
%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.
%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
(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")
@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
(gtk_accel_path "<Actions>/Editor/playhead-to-next-region-boundary" "period")
(gtk_accel_path "<Actions>/Editor/playhead-to-next-region-sync" "<@PRIMARY@>period")
@aep|Editor/extend-range-to-end-of-region|rightanglebracket|align sync point relative
@-group|Editor/extend-range-to-start-of-region|leftanglebracket|some text
(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-boundary" "comma")
(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-sync" "<@PRIMARY@>comma")
@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
(gtk_accel_path "<Actions>/Editor/extend-range-to-end-of-region" "rightanglebracket")
(gtk_accel_path "<Actions>/Editor/extend-range-to-start-of-region" "leftanglebracket")
@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
(gtk_accel_path "<Actions>/Transport/ToggleRoll" "space")
(gtk_accel_path "<Actions>/Transport/ToggleRollForgetCapture" "<@PRIMARY@>space")
(gtk_accel_path "<Actions>/Transport/record-roll" "<@TERTIARY@>space")
@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
(gtk_accel_path "<Actions>/Editor/set-fade-in-length" "slash")
(gtk_accel_path "<Actions>/Editor/set-fade-out-length" "backslash")
@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)
(gtk_accel_path "<Actions>/Editor/trim-from-start" "<@TERTIARY@>braceleft")
(gtk_accel_path "<Actions>/Editor/trim-to-end" "<@TERTIARY@>braceright")
@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)
(gtk_accel_path "<Actions>/Editor/set-loop-from-edit-range" "bracketright")
(gtk_accel_path "<Actions>/Editor/set-loop-from-region" "<@SECONDARY@>bracketright")
(gtk_accel_path "<Actions>/Editor/set-punch-from-edit-range" "bracketleft")
(gtk_accel_path "<Actions>/Editor/set-punch-from-region" "<@SECONDARY@>bracketleft")
(gtk_accel_path "<Actions>/Editor/boost-region-gain" "asciicircum")
(gtk_accel_path "<Actions>/Editor/cut-region-gain" "ampersand")
@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")
@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
(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")
@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
(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")
@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
(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")
@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
(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")
@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
(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")
@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")
@-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
(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")
@-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
(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/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")
@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
;;
;; unbound actions
;;
; mouse stuff
; (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" "")
@+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
; (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" "")
; 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

View File

@ -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;

View File

@ -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"

View File

@ -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

View File

@ -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:

View File

@ -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;
}

View File

@ -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) {

View File

@ -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);

View File

@ -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'] or bld.env['HAVE_COREAUDIO']:
obj.uselib_local += ' libappleutility'
if bld.env['HAVE_AUDIOUNITS'] and bld.env['AUDIOUNITS']:
obj.sources += [ 'audio_unit.cc' ]
if bld.env['IS_OSX']:
# this avoids issues with circular dependencies between libardour and libardour_cp.
obj.linkflags += '-undefined suppress -flat_namespace'
obj.source += [ 'audio_unit.cc' ]
if bld.env['FPU_OPTIMIZATION']:
obj.source += [ 'sse_functions_xmm.cc' ]

View File

@ -369,7 +369,7 @@ BarController::expose (GdkEventExpose* /*event*/)
}
void
BarController::set_style (Style s)
BarController::set_style (barStyle s)
{
_style = s;
darea.queue_draw ();

View File

@ -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;

View File

@ -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;

View File

@ -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()

View File

@ -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')

View File

@ -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

View File

@ -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')

27
wscript
View File

@ -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)