save keybindings to file used at startup; allow keybindings file to be cmdline-specif...
authorPaul Davis <paul@linuxaudiosystems.com>
Tue, 19 Dec 2006 02:41:19 +0000 (02:41 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Tue, 19 Dec 2006 02:41:19 +0000 (02:41 +0000)
git-svn-id: svn://localhost/ardour2/trunk@1223 d708f5d6-7413-0410-9779-e7cbd77b26cf

23 files changed:
gtk2_ardour/ardour.bindings
gtk2_ardour/ardour_ui.cc
gtk2_ardour/ardour_ui.h
gtk2_ardour/ardour_ui_dependents.cc
gtk2_ardour/ardour_ui_ed.cc
gtk2_ardour/audio_region_view.cc
gtk2_ardour/crossfade_edit.cc
gtk2_ardour/editor.cc
gtk2_ardour/editor_imageframe.cc
gtk2_ardour/main.cc
gtk2_ardour/option_editor.cc
gtk2_ardour/opts.cc
gtk2_ardour/opts.h
gtk2_ardour/playlist_selector.cc
libs/ardour/ardour/session.h
libs/ardour/audioengine.cc
libs/ardour/audiosource.cc
libs/ardour/control_protocol_manager.cc
libs/ardour/session.cc
libs/ardour/session_command.cc
libs/ardour/session_state.cc
libs/clearlooks/SConscript
templates/SConscript

index f7c39fba9e566a4f48731d16215b406b7b69bd56..eb1dc87f6f5b9e5daa884ca86707dee23176a09f 100644 (file)
-; this file is NOT an automated accelerator map dump
-
-(gtk_accel_path "<Actions>/Transport/ToggleRoll" "space")
-(gtk_accel_path "<Actions>/Transport/ToggleRollForgetCapture" "<control>space")
-(gtk_accel_path "<Actions>/Transport/Forward" "<control>Right")
-(gtk_accel_path "<Actions>/Transport/Rewind" "<control>Left")
-(gtk_accel_path "<Actions>/Transport/GotoZero" "KP_Insert")
-(gtk_accel_path "<Actions>/Transport/GotoStart" "Home")
-(gtk_accel_path "<Actions>/Transport/GotoEnd" "End")
-
-(gtk_accel_path "<Actions>/Editor/align-regions-sync-relative" "a")
-(gtk_accel_path "<Actions>/Editor/crop" "c")
-(gtk_accel_path "<Actions>/Editor/duplicate-region" "d")
-(gtk_accel_path "<Actions>/Editor/set-edit-cursor" "e")
-(gtk_accel_path "<Actions>/Editor/toggle-follow-playhead" "f")
-(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-gain" "g")
-(gtk_accel_path "<Actions>/Editor/split-region" "s")
-(gtk_accel_path "<Actions>/Editor/set-region-sync-position" "v")
-(gtk_accel_path "<Actions>/Editor/mute-unmute-region" "m")
-(gtk_accel_path "<Actions>/Editor/insert-region" "i")
-(gtk_accel_path "<Actions>/Editor/normalize-region" "n")
-(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-object" "o")
-(gtk_accel_path "<Actions>/Transport/Loop" "l")
-(gtk_accel_path "<Actions>/Editor/set-playhead" "p")
+; ardour.bin GtkAccelMap rc-file         -*- scheme -*-
+; this file is an automated accelerator map dump
+;
+; (gtk_accel_path "<Actions>/RegionList/RegionListSort" "")
+(gtk_accel_path "<Actions>/Common/Quit" "<Control>q")
+(gtk_accel_path "<Actions>/Common/Save" "<Control>s")
+; (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>/Editor/playhead-to-previous-region-end" "<Control>grave")
+; (gtk_accel_path "<Actions>/redirectmenu/copy" "")
+; (gtk_accel_path "<Actions>/options/MeterFalloffFaster" "")
+(gtk_accel_path "<Actions>/Transport/ToggleRollForgetCapture" "<Control>space")
+(gtk_accel_path "<Actions>/Transport/Record" "<Shift>r")
+; (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>/Editor/playhead-to-next-region-end" "<Control>Tab")
+; (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>/Editor/edit-cursor-to-previous-region-start" "bracketleft")
+; (gtk_accel_path "<Actions>/Main/Close" "")
+; (gtk_accel_path "<Actions>/Main/New" "")
+(gtk_accel_path "<Actions>/Editor/nudge-next-backward" "<Control>KP_Subtract")
+; (gtk_accel_path "<Actions>/Editor/EditSelectRangeOptions" "")
+; (gtk_accel_path "<Actions>/Transport/ToggleTimeMaster" "")
+; (gtk_accel_path "<Actions>/Snap/snap-to-thirds" "")
+(gtk_accel_path "<Actions>/Editor/align-regions-start-relative" "<Shift>a")
+; (gtk_accel_path "<Actions>/Main/Export" "")
+(gtk_accel_path "<Actions>/Editor/jump-forward-to-mark" "<Control>KP_Right")
+; (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>/Editor/align-regions-end" "<Control><Mod2>a")
+; (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>/Editor/edit-cursor-to-next-region-sync" "semicolon")
+; (gtk_accel_path "<Actions>/options/StopRecordingOnXrun" "")
+; (gtk_accel_path "<Actions>/Editor/addExternalAudioToRegionList" "")
+; (gtk_accel_path "<Actions>/RegionList/SortDescending" "")
+; (gtk_accel_path "<Actions>/options/DoNotRunPluginsWhileRecording" "")
+; (gtk_accel_path "<Actions>/Editor/PullupNone" "")
 (gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-range" "r")
-(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-timefx" "t")
-(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-zoom" "z")
-
-(gtk_accel_path "<Actions>/Transport/Record" "<shift>r")
-
-
+(gtk_accel_path "<Actions>/Editor/jump-backward-to-mark" "<Control>KP_Left")
+; (gtk_accel_path "<Actions>/Main/AudioFileFormatData" "")
+; (gtk_accel_path "<Actions>/options/MeterFalloffFastest" "")
+(gtk_accel_path "<Actions>/Editor/audition-at-mouse" "period")
+(gtk_accel_path "<Actions>/Transport/Forward" "<Control>Right")
+; (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>/Editor/editor-paste" "<Control>v")
+(gtk_accel_path "<Actions>/Editor/scroll-tracks-down" "Page_Down")
+; (gtk_accel_path "<Actions>/Snap/snap-to-smpte-minutes" "")
+(gtk_accel_path "<Actions>/Editor/normalize-region" "n")
 (gtk_accel_path "<Actions>/Editor/nudge-forward" "KP_Add")
-(gtk_accel_path "<Actions>/Editor/nudge-next-forward" "<control>KP_Add")
+; (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>/Editor/nudge-backward" "KP_Subtract")
-(gtk_accel_path "<Actions>/Editor/nudge-next-backward" "<control>KP_Subtract")
-
-(gtk_accel_path "<Actions>/Editor/show-editor-mixer" "<shift>e")
-
-(gtk_accel_path "<Actions>/Common/goto-editor" "<alt>e")
-(gtk_accel_path "<Actions>/Common/goto-mixer" "<alt>m")
-(gtk_accel_path "<Actions>/Common/ToggleSoundFileBrowser" "<alt>f")
-(gtk_accel_path "<Actions>/Common/ToggleLocations" "<alt>l")
-(gtk_accel_path "<Actions>/Common/ToggleBigClock" "<alt>b")
-(gtk_accel_path "<Actions>/Common/ToggleColorManager" "<alt>c")
-
-(gtk_accel_path "<Actions>/Editor/editor-copy" "<control>c")
-(gtk_accel_path "<Actions>/Common/Quit" "<control>q")
-(gtk_accel_path "<Actions>/Editor/redo" "<control>r")
-(gtk_accel_path "<Actions>/Common/Save" "<control>s")
-(gtk_accel_path "<Actions>/Editor/editor-paste" "<control>v")
-(gtk_accel_path "<Actions>/Editor/remove-last-capture" "<control>Delete")
-(gtk_accel_path "<Actions>/Editor/editor-cut" "<control>x")
-(gtk_accel_path "<Actions>/Editor/editor-delete" "Delete")
-(gtk_accel_path "<Actions>/Editor/undo" "<control>z")
-
-(gtk_accel_path "<Actions>/Editor/scroll-tracks-down" "Page_Down")
+; (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/undo" "<Control>z")
+(gtk_accel_path "<Actions>/Editor/insert-region" "i")
+; (gtk_accel_path "<Actions>/Editor/center-playhead" "")
+(gtk_accel_path "<Actions>/Editor/edit-cursor-to-next-region-start" "bracketright")
+; (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/scroll-tracks-up" "Page_Up")
-(gtk_accel_path "<Actions>/Editor/scroll-backward" "leftarrow")
-(gtk_accel_path "<Actions>/Editor/scroll-forward" "rightarrow")
+(gtk_accel_path "<Actions>/Editor/set-edit-cursor" "e")
+; (gtk_accel_path "<Actions>/Editor/Smpte30drop" "")
+; (gtk_accel_path "<Actions>/Zoom/zoom-focus-edit" "")
+(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-start" "grave")
+; (gtk_accel_path "<Actions>/Editor/EditCursorMovementOptions" "")
+; (gtk_accel_path "<Actions>/redirectmenu/activate_all" "")
+; (gtk_accel_path "<Actions>/Editor/addExternalAudioAsTapeTrack" "")
+; (gtk_accel_path "<Actions>/redirectmenu/paste" "")
+; (gtk_accel_path "<Actions>/Editor/Smpte25" "")
+; (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/step-tracks-down" "downarrow")
-(gtk_accel_path "<Actions>/Editor/step-tracks-up" "uparrow")
-(gtk_accel_path "<Actions>/Editor/playhead-to-edit" "Return")
+; (gtk_accel_path "<Actions>/Editor/toggle-xfades-visible" "")
+(gtk_accel_path "<Actions>/Editor/extend-range-to-end-of-region" "rightanglebracket")
+(gtk_accel_path "<Actions>/Editor/scroll-backward" "leftarrow")
+(gtk_accel_path "<Actions>/Editor/start-range" "<Control>KP_Down")
+; (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/align-regions-sync-relative" "a")
+; (gtk_accel_path "<Actions>/Editor/EditSelectRegionOptions" "")
+(gtk_accel_path "<Actions>/Editor/crop" "c")
+; (gtk_accel_path "<Actions>/redirectmenu/newsend" "")
+; (gtk_accel_path "<Actions>/Editor/ToggleGeneric MIDISurfaceSubMenu" "")
+; (gtk_accel_path "<Actions>/Editor/MeterFalloff" "")
+; (gtk_accel_path "<Actions>/RegionList/rlRemove" "")
+(gtk_accel_path "<Actions>/Transport/GotoStart" "Home")
+(gtk_accel_path "<Actions>/Editor/split-region" "s")
+; (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>/Editor/align-regions-sync" "<Mod2>a")
+; (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>/MouseMode/set-mouse-mode-zoom" "z")
+; (gtk_accel_path "<Actions>/RegionList/rlAudition" "")
+(gtk_accel_path "<Actions>/Editor/set-region-sync-position" "v")
+; (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>/Editor/editor-cut" "<Control>x")
+; (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>/Common/goto-editor" "<Alt>e")
+(gtk_accel_path "<Actions>/Editor/select-all" "<Control>a")
+(gtk_accel_path "<Actions>/Editor/nudge-next-forward" "<Control>KP_Add")
+; (gtk_accel_path "<Actions>/Snap/snap-to-eighths" "")
+(gtk_accel_path "<Actions>/Editor/select-all-after-playhead" "<Shift><Control>p")
+(gtk_accel_path "<Actions>/Common/ToggleMaximalEditor" "F11")
+; (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>/Editor/select-all-after-edit-cursor" "<Shift><Control>e")
+; (gtk_accel_path "<Actions>/RegionList/SortBySourceFileName" "")
+(gtk_accel_path "<Actions>/Editor/finish-range" "<Control>KP_Up")
+(gtk_accel_path "<Actions>/Transport/Loop" "l")
+; (gtk_accel_path "<Actions>/Editor/CrossfadesFull" "")
+(gtk_accel_path "<Actions>/Editor/finish-add-range" "<Shift><Control>KP_Up")
+; (gtk_accel_path "<Actions>/Transport/ToggleClick" "")
+; (gtk_accel_path "<Actions>/options/SendMTC" "")
+; (gtk_accel_path "<Actions>/Transport/TogglePunchOut" "")
+(gtk_accel_path "<Actions>/Editor/select-all-in-loop-range" "<Control>l")
+(gtk_accel_path "<Actions>/Editor/show-editor-mixer" "<Shift>e")
+; (gtk_accel_path "<Actions>/options/SoloInPlace" "")
+; (gtk_accel_path "<Actions>/Main/Options" "")
+; (gtk_accel_path "<Actions>/options/MeterFalloffMedium" "")
+(gtk_accel_path "<Actions>/Editor/toggle-follow-playhead" "f")
+; (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/edit-to-playhead" "<Alt>Return")
-
+; (gtk_accel_path "<Actions>/Editor/LayerMoveAddHigher" "")
+; (gtk_accel_path "<Actions>/Editor/Smpte60" "")
+; (gtk_accel_path "<Actions>/Main/Open" "")
+(gtk_accel_path "<Actions>/Editor/scroll-forward" "rightarrow")
+; (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>/Editor/redo" "<Control>r")
+; (gtk_accel_path "<Actions>/Editor/addExternalAudioAsRegion" "")
+; (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>/Editor/temporal-zoom-in" "minus")
-(gtk_accel_path "<Actions>/Editor/temporal-zoom-out" "equal")
-
-(gtk_accel_path "<Actions>/Editor/select-all" "<control>a")
-(gtk_accel_path "<Actions>/Editor/select-all-after-edit-cursor" "<shift><Control>e")
-(gtk_accel_path "<Actions>/Editor/select-all-before-edit-cursor" "<control>e")
-(gtk_accel_path "<Actions>/Editor/select-all-after-playhead" "<shift><Control>p")
-(gtk_accel_path "<Actions>/Editor/select-all-before-playhead" "<control>p")
-(gtk_accel_path "<Actions>/Editor/select-all-between-cursors" "u")
-(gtk_accel_path "<Actions>/Editor/select-all-in-punch-range" "<Control>d")
-(gtk_accel_path "<Actions>/Editor/select-all-in-loop-range" "<Control>l")
-
+; (gtk_accel_path "<Actions>/JACK/Latency" "")
+(gtk_accel_path "<Actions>/Editor/edit-cursor-to-range-end" "F2")
+; (gtk_accel_path "<Actions>/redirectmenu/rename" "")
+; (gtk_accel_path "<Actions>/RegionList/rlShowAuto" "")
+(gtk_accel_path "<Actions>/Editor/select-all-before-playhead" "<Control>p")
+; (gtk_accel_path "<Actions>/Editor/addExistingAudioFiles" "")
+; (gtk_accel_path "<Actions>/Main/Session" "")
+(gtk_accel_path "<Actions>/Editor/edit-cursor-to-range-start" "F1")
+; (gtk_accel_path "<Actions>/Main/AudioFileFormat" "")
+(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-timefx" "t")
+; (gtk_accel_path "<Actions>/Transport/Transport" "")
+; (gtk_accel_path "<Actions>/RegionList/SortByRegionName" "")
+; (gtk_accel_path "<Actions>/Main/KeyMouse Actions" "")
+(gtk_accel_path "<Actions>/MouseMode/set-mouse-mode-gain" "g")
+; (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>/Editor/add-location-from-playhead" "KP_Enter")
+(gtk_accel_path "<Actions>/Common/ToggleSoundFileBrowser" "<Alt>f")
+(gtk_accel_path "<Actions>/Editor/edit-cursor-to-previous-region-end" "<Control>bracketleft")
+; (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>/Common/ToggleOptionsEditor" "")
+; (gtk_accel_path "<Actions>/Editor/SnapMode" "")
+; (gtk_accel_path "<Actions>/Editor/PullupMinus4" "")
+(gtk_accel_path "<Actions>/Common/goto-mixer" "<Alt>m")
+; (gtk_accel_path "<Actions>/Editor/addExternalAudioToTrack" "")
+; (gtk_accel_path "<Actions>/RegionList/SortBySourceFileCreationDate" "")
+; (gtk_accel_path "<Actions>/redirectmenu/activate" "")
 (gtk_accel_path "<Actions>/Editor/extend-range-to-start-of-region" "leftanglebracket")
-(gtk_accel_path "<Actions>/Editor/extend-range-to-end-of-region" "rightanglebracket")
-
-(gtk_accel_path "<Actions>/Editor/align-regions-sync" "<mod2>a")
-(gtk_accel_path "<Actions>/Editor/align-regions-end" "<mod2><control>a")
-(gtk_accel_path "<Actions>/Editor/align-regions-start-relative" "<shift>a")
-
-(gtk_accel_path "<Actions>/Editor/brush-at-mouse" "<control>b")
-(gtk_accel_path "<Actions>/Editor/audition-at-mouse" "period")
-
+; (gtk_accel_path "<Actions>/Editor/PullupMinus1" "")
+; (gtk_accel_path "<Actions>/Editor/snap-normal" "")
+; (gtk_accel_path "<Actions>/Editor/addExternalAudioAsTrack" "")
+(gtk_accel_path "<Actions>/Common/ToggleBigClock" "<Alt>b")
+; (gtk_accel_path "<Actions>/Snap/snap-to-asixteenthbeat" "")
+(gtk_accel_path "<Actions>/Editor/select-all-in-punch-range" "<Control>d")
+; (gtk_accel_path "<Actions>/redirectmenu/edit" "")
+(gtk_accel_path "<Actions>/Editor/duplicate-region" "d")
+; (gtk_accel_path "<Actions>/JACK/JACKLatency2048" "")
+; (gtk_accel_path "<Actions>/Editor/ToggleWaveformsWhileRecording" "")
+; (gtk_accel_path "<Actions>/Zoom/zoom-focus-right" "")
+(gtk_accel_path "<Actions>/Editor/remove-last-capture" "<Control>Delete")
+; (gtk_accel_path "<Actions>/options/FileHeaderFormatWAVE" "")
+(gtk_accel_path "<Actions>/Transport/GotoZero" "KP_Insert")
+(gtk_accel_path "<Actions>/Transport/GotoEnd" "End")
+; (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>/MouseMode/set-mouse-mode-object" "o")
+; (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>/Transport/ToggleRoll" "space")
+; (gtk_accel_path "<Actions>/RegionList/SortBySourceFilesystem" "")
+(gtk_accel_path "<Actions>/Common/ToggleColorManager" "<Alt>c")
+; (gtk_accel_path "<Actions>/Common/About" "")
+; (gtk_accel_path "<Actions>/JACK/JACKLatency32" "")
+(gtk_accel_path "<Actions>/Editor/playhead-to-edit" "Return")
+; (gtk_accel_path "<Actions>/options/FileHeaderFormatWAVE64" "")
+(gtk_accel_path "<Actions>/Editor/brush-at-mouse" "<Control>b")
+; (gtk_accel_path "<Actions>/RegionList/rlShowAll" "")
+(gtk_accel_path "<Actions>/Transport/Rewind" "<Control>Left")
+; (gtk_accel_path "<Actions>/RegionList/SortByRegionTimestamp" "")
+; (gtk_accel_path "<Actions>/options/VerifyRemoveLastCapture" "")
+; (gtk_accel_path "<Actions>/options/OutputAutoConnectPhysical" "")
+(gtk_accel_path "<Actions>/Editor/step-tracks-up" "uparrow")
 (gtk_accel_path "<Actions>/Editor/playhead-to-next-region-start" "Tab")
-(gtk_accel_path "<Actions>/Editor/playhead-to-next-region-end" "<Control>Tab")
-
-(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-start" "grave")
-(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-end" "<control>grave")
-
-(gtk_accel_path "<Actions>/Editor/edit-cursor-to-previous-region-start" "bracketleft")
-(gtk_accel_path "<Actions>/Editor/edit-cursor-to-previous-region-end" "<Control>bracketleft")
-
-(gtk_accel_path "<Actions>/Editor/edit-cursor-to-next-region-start" "bracketright")
-(gtk_accel_path "<Actions>/Editor/edit-cursor-to-next-region-end" "<Control>bracketright")
-
+; (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/select-all-before-edit-cursor" "<Control>e")
+; (gtk_accel_path "<Actions>/Editor/Subframes80" "")
+; (gtk_accel_path "<Actions>/options/FileHeaderFormatCAF" "")
+(gtk_accel_path "<Actions>/Common/ToggleLocations" "<Alt>l")
+; (gtk_accel_path "<Actions>/Editor/ToggleGeneric MIDISurface" "")
+(gtk_accel_path "<Actions>/Editor/editor-delete" "Delete")
+; (gtk_accel_path "<Actions>/JACK/JACKLatency256" "")
+(gtk_accel_path "<Actions>/Editor/select-all-between-cursors" "u")
+; (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/set-playhead" "p")
+; (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>/Editor/editor-copy" "<Control>c")
+; (gtk_accel_path "<Actions>/Snap/snap-to-quarters" "")
+(gtk_accel_path "<Actions>/Editor/temporal-zoom-out" "equal")
+; (gtk_accel_path "<Actions>/options/UseSoftwareMonitoring" "")
+; (gtk_accel_path "<Actions>/Editor/Subframes100" "")
+(gtk_accel_path "<Actions>/Editor/mute-unmute-region" "m")
+; (gtk_accel_path "<Actions>/options/OutputAutoConnectManual" "")
+; (gtk_accel_path "<Actions>/Snap/snap-to-region-sync" "")
 (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/edit-cursor-to-range-start" "F1")
-(gtk_accel_path "<Actions>/Editor/edit-cursor-to-range-end" "F2")
-(gtk_accel_path "<Actions>/Common/ToggleMaximalEditor" "F11")
-
-(gtk_accel_path "<Actions>/Editor/jump-forward-to-mark" "<control>KP_Right")
-(gtk_accel_path "<Actions>/Editor/jump-backward-to-mark" "<control>KP_Left")
-
-(gtk_accel_path "<Actions>/Editor/start-range" "<control>KP_Down")
-(gtk_accel_path "<Actions>/Editor/finish-range" "<control>KP_Up")
-(gtk_accel_path "<Actions>/Editor/finish-add-range" "<shift><control>KP_Up")
-
-
-(gtk_accel_path "<Actions>/Editor/add-location-from-playhead" "KP_Enter")
-
-
+; (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>/Editor/edit-cursor-to-next-region-end" "<Control>bracketright")
+; (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" "")
index e369c852618dbd5ffc926f292c77f753a35cdca3..4680514771e2c11b07e4886dcf865db7eadee6a3 100644 (file)
@@ -164,6 +164,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], string rcfile)
        _will_create_new_session_automatically = false;
        session_loaded = false;
        last_speed_displayed = -1.0f;
+       keybindings_path = ARDOUR::find_config_file ("ardour.bindings");
 
        last_configure_time.tv_sec = 0;
        last_configure_time.tv_usec = 0;
@@ -345,9 +346,7 @@ ARDOUR_UI::save_ardour_state ()
                Config->add_instant_xml (mnode, get_user_ardour_path());
        }
 
-       /* keybindings */
-
-       AccelMap::save ("ardour.saved_bindings");
+       save_keybindings ();
 }
 
 void
@@ -382,6 +381,9 @@ If you still wish to quit, please use the\n\n\
                }
        }
 
+       if (session) {
+               session->set_deletion_in_progress ();
+       }
        engine->stop (true);
        Config->save_state();
        quit ();
@@ -2412,3 +2414,15 @@ ARDOUR_UI::record_state_changed ()
                break;
        }
 }
+
+void
+ARDOUR_UI::set_keybindings_path (string path)
+{
+       keybindings_path = path;
+}
+
+void
+ARDOUR_UI::save_keybindings ()
+{
+       AccelMap::save (keybindings_path);
+}
index 80aad8763c99534aeda5d426b5dbb19c343bf3b2..d59fbd476f0e7809638563f9edd373a5db5fe2ca 100644 (file)
@@ -208,6 +208,9 @@ class ARDOUR_UI : public Gtkmm2ext::UI
        void set_native_file_header_format (ARDOUR::HeaderFormat sf);
        void set_native_file_data_format (ARDOUR::SampleFormat sf);
 
+       void set_keybindings_path (std::string path);
+       void save_keybindings ();
+
   protected:
        friend class PublicEditor;
 
@@ -534,6 +537,9 @@ class ARDOUR_UI : public Gtkmm2ext::UI
        void connect_to_session (ARDOUR::Session *);
        void connect_dependents_to_session (ARDOUR::Session *);
        void we_have_dependents ();
+       
+       std::string keybindings_path;
+
        void setup_keybindings ();
        void setup_session_options ();
        
@@ -665,7 +671,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI
        void map_meter_falloff ();
 
        void toggle_control_protocol (ARDOUR::ControlProtocolInfo*);
-       void toggle_control_protocol_feedback (ARDOUR::ControlProtocolInfo*, const char* group_name, const char* action_name);
+       void toggle_control_protocol_feedback (ARDOUR::ControlProtocolInfo*, const char* group_name, std::string action_name);
 };
 
 #endif /* __ardour_gui_h__ */
index e00a769a37aa801da959525105509e459445f23d..7c4f3563f3d3f77f81f4f2f68a4fc923c421ada3 100644 (file)
@@ -60,19 +60,36 @@ ARDOUR_UI::we_have_dependents ()
        editor->UpdateAllTransportClocks.connect (mem_fun (*this, &ARDOUR_UI::update_transport_clocks));
 }
 
+static void 
+accel_map_changed (GtkAccelMap* map,
+                  gchar* path,
+                  guint  key,
+                  GdkModifierType mod,
+                  gpointer arg)
+{
+       static_cast<ARDOUR_UI*>(arg)->save_keybindings ();
+}
+
 void
 ARDOUR_UI::setup_keybindings ()
 {
        install_actions ();
        RedirectBox::register_actions ();
        
-       std::string key_binding_file = ARDOUR::find_config_file("ardour.bindings");
+       cerr << "loading bindings from " << keybindings_path << endl;
 
        try {
-               AccelMap::load (key_binding_file);
+               AccelMap::load (keybindings_path);
        } catch (...) {
-               error << "ardour key bindings file not found" << endmsg;
+               error << string_compose (_("Ardour key bindings file not found at \"%1\" or contains errors."), keybindings_path)
+                     << endmsg;
        }
+
+       /* catch changes */
+
+       GtkAccelMap* accelmap = gtk_accel_map_get();
+       g_signal_connect (accelmap, "changed", (GCallback) accel_map_changed, this);
+
 }
 
 void
@@ -80,6 +97,10 @@ ARDOUR_UI::connect_dependents_to_session (ARDOUR::Session *s)
 {
        editor->connect_to_session (s);
        mixer->connect_to_session (s);
+
+       /* its safe to do this now */
+       
+       s->restore_history ("");
 }
 
 void
index 2acf1b28c6598c5578a781b1d732c8edd69e66e2..33307e61ec80de6979c0163bcdf18e680c7108e6 100644 (file)
@@ -479,7 +479,7 @@ ARDOUR_UI::toggle_control_protocol (ControlProtocolInfo* cpi)
 }
 
 void
-ARDOUR_UI::toggle_control_protocol_feedback (ControlProtocolInfo* cpi, const char* group, const char* action)
+ARDOUR_UI::toggle_control_protocol_feedback (ControlProtocolInfo* cpi, const char* group, string action)
 {
        if (!session) {
                /* this happens when we build the menu bar when control protocol support
@@ -490,14 +490,17 @@ ARDOUR_UI::toggle_control_protocol_feedback (ControlProtocolInfo* cpi, const cha
        }
 
        if (cpi->protocol) {
-               Glib::RefPtr<Gtk::Action> act = ActionManager::get_action (group, action);
+               Glib::RefPtr<Gtk::Action> act = ActionManager::get_action (group, action.c_str());
 
                if (act) {
                        Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic (act);
-                       bool x = tact->get_active();
 
-                       if (tact && x != cpi->protocol->get_feedback()) {
-                               cpi->protocol->set_feedback (!x);
+                       if (tact) {
+                               bool x = tact->get_active();
+
+                               if (x != cpi->protocol->get_feedback()) {
+                                       cpi->protocol->set_feedback (x);
+                               }
                        }
                }
        }
@@ -552,7 +555,7 @@ ARDOUR_UI::build_control_surface_menu ()
                                                                                                  (bind (mem_fun (*this, &ARDOUR_UI::toggle_control_protocol_feedback), 
                                                                                                         *i, 
                                                                                                         "Editor",
-                                                                                                        action_name.c_str())));
+                                                                                                        action_name)));
                                
                                ui += "<menu action='";
                                ui += submenu_name;
index 02debbaf8abf02bf9a121504a654962819a7c531..c71abe8676aa361c7bc0c974b096be7ded4a31d4 100644 (file)
@@ -715,8 +715,7 @@ AudioRegionView::show_region_editor ()
                // trackview.editor.ensure_float (*editor);
        } 
 
-       editor->show_all ();
-       editor->get_window()->raise();
+       editor->present ();
 }
 
 void
index be96a65e9aee9646cb85e54025c77ac072d8e25d..4271a35315a84ac2315e0679496658a789109906 100644 (file)
@@ -698,8 +698,6 @@ CrossfadeEditor::redraw ()
 
        }
 
-       // GTK2FIX some odd math to fix up here
-
        size_t last_spt = (npoints + 3) - 1;
 
        for (size_t i = 0; i < npoints; ++i) {
index b21db92119ae709812b4e845f1de249b444f3d46..ef507740ff042cfde84418dd7648fe35a2bbbcb5 100644 (file)
@@ -2639,13 +2639,10 @@ Editor::setup_toolbar ()
        zoom_focus_selector.signal_changed().connect (mem_fun(*this, &Editor::zoom_focus_selection_done));
        ARDOUR_UI::instance()->tooltips().set_tip (zoom_focus_selector, _("Zoom focus"));
 
-       zoom_box.pack_start (zoom_focus_selector, false, false);
+       zoom_box.pack_start (zoom_focus_selector, true, true);
        zoom_box.pack_start (zoom_out_button, false, false);
        zoom_box.pack_start (zoom_in_button, false, false);
-       //zoom_box.pack_start (zoom_range_clock, false, false); 
        zoom_box.pack_start (zoom_out_full_button, false, false);
-       
-       ARDOUR_UI::instance()->tooltips().set_tip (zoom_range_clock, _("Current Zoom Range\n(Width of visible area)"));
 
        /* Edit Cursor / Snap */
 
index b90ce174236346f85f695aa290304a9134c20f8d..0e5131bb97d18be7d4cbcab496107e0bafec54a5 100644 (file)
@@ -100,16 +100,14 @@ Editor::scroll_timeaxis_to_imageframe_item(const TimeAxisViewItem* item)
        nframes_t offset = 0;
 
        nframes_t x_pos = 0 ;
-       if(item->get_position() < offset)
-       {
+
+       if (item->get_position() < offset) {
                x_pos = 0 ;
-       }
-       else
-       {
-               x_pos = item->get_position() - offset + (item->get_duration() / 2) ;
+       } else {
+               x_pos = item->get_position() - offset + (item->get_duration() / 2);
        }
        
-       reposition_x_origin(x_pos) ;
+       reposition_x_origin (x_pos);
 }
 
 void
index 21b03f9a63d2c749b5b17055140b4c4ffe90bab6..3e0d6d4e6292c175748e6bb3b8d713e666843e1e 100644 (file)
@@ -417,6 +417,9 @@ int main (int argc, char *argv[])
                exit (1);
        }
 
+       if (!keybindings_path.empty()) {
+               ui->set_keybindings_path (keybindings_path);
+       }
 
        if (!no_splash) {
                ui->show_splash ();
@@ -445,7 +448,7 @@ int main (int argc, char *argv[])
        } 
 
        ui->start_engine ();
-       
+
        if (maybe_load_session ()) {
                ui->run (text_receiver);
                ui = 0;
index 77af85584590dcac682817bdde6fe25b20e2416b..ac3122d74088ceab80dcf7e5267ead2954f5c7bb 100644 (file)
@@ -533,7 +533,7 @@ void
 OptionEditor::port_online_toggled (MIDI::Port* port, ToggleButton* tb)
 {
        bool wanted = tb->get_active();
-       
+
        if (wanted != port->input()->offline()) {
                port->input()->set_offline (wanted);
        } 
@@ -542,12 +542,16 @@ OptionEditor::port_online_toggled (MIDI::Port* port, ToggleButton* tb)
 void
 OptionEditor::map_port_online (MIDI::Port* port, ToggleButton* tb)
 {
-       if (port->input()->offline()) {
-               tb->set_label (_("offline"));
-               tb->set_active (false);
-       } else {
-               tb->set_label (_("online"));
-               tb->set_active (true);
+       bool bstate = tb->get_active ();
+
+       if (bstate != port->input()->offline()) {
+               if (port->input()->offline()) {
+                       tb->set_label (_("offline"));
+                       tb->set_active (false);
+               } else {
+                       tb->set_label (_("online"));
+                       tb->set_active (true);
+               }
        }
 }
 
index fcd62de51280404b6b76e03cdd99f472d24202f1..820b346d40bf6edc0ce9cbf1fae3a4b3acd7941b 100644 (file)
@@ -37,6 +37,7 @@ bool GTK_ARDOUR::use_vst = true;
 bool GTK_ARDOUR::new_session = false;
 char* GTK_ARDOUR::curvetest_file = 0;
 bool GTK_ARDOUR::try_hw_optimization = true;
+string GTK_ARDOUR::keybindings_path = ""; /* empty means use builtin default */
 
 using namespace GTK_ARDOUR;
 
@@ -56,7 +57,7 @@ print_help (const char *execname)
 #endif
             << _("  [session-name]                   Name of session to load\n")
             << _("  -C, --curvetest filename         Curve algorithm debugger\n")
-            << _("  -g, --gtktheme                   Allow GTK to load a theme\n")
+            << _("  -k, --keybindings filename       Name of key bindings to load (default is ~/.ardour2/ardour.bindings)")
                ;
        return 1;
 
@@ -66,7 +67,7 @@ int
 GTK_ARDOUR::parse_opts (int argc, char *argv[])
 
 {
-       const char *optstring = "U:hbvVnoc:C:N:g";
+       const char *optstring = "U:hbvVnoc:C:N:k:";
        const char *execname = strrchr (argv[0], '/');
 
        if (execname == 0) {
@@ -85,7 +86,6 @@ GTK_ARDOUR::parse_opts (int argc, char *argv[])
                { "new", 1, 0, 'N' },
                { "no-hw-optimizations", 0, 0, 'O' },
                { "curvetest", 1, 0, 'C' },
-               { "gtktheme", 0, 0, 'g' },
                { 0, 0, 0, 0 }
        };
 
@@ -142,6 +142,10 @@ GTK_ARDOUR::parse_opts (int argc, char *argv[])
                        curvetest_file = optarg;
                        break;
 
+               case 'k':
+                       keybindings_path = optarg;
+                       break;
+
                default:
                        return print_help(execname);
                }
index 0516c3aa98c11543b292ee23523dbe1ca589243d..710621ac6526d4888ac5b5eb4a064a43fc097fc8 100644 (file)
@@ -37,6 +37,7 @@ extern bool   new_session;
 extern char*  curvetest_file;
 extern bool   try_hw_optimization;
 extern bool   use_gtk_theme;
+extern string keybindings_path;
 
 extern int32_t parse_opts (int argc, char *argv[]);
 
index 87531bbbd0e0d11aa749fd839b4027c033086537..d02c5a88de7d941f57634e38927e136004e0504e 100644 (file)
@@ -61,9 +61,8 @@ PlaylistSelector::PlaylistSelector ()
        scroller.add (tree);
        scroller.set_policy (POLICY_AUTOMATIC, POLICY_AUTOMATIC);
 
-       // GTK2FIX do we need this stuff or is GTK applying some policy now?
-       //set_border_width (6);
-       // set_spacing (12);
+       get_vbox()->set_border_width (6);
+       get_vbox()->set_spacing (12);
 
        get_vbox()->pack_start (scroller);
 
index 253cd28b7f8f87b87be4c39a760ba075a6aac0fd..3ea443d9ef7bca9cc0219175653a0dbeee9635c3 100644 (file)
@@ -242,6 +242,7 @@ class Session : public PBD::StatefulDestructible
        void set_dirty ();
        void set_clean ();
        bool dirty() const { return _state_of_the_state & Dirty; }
+       void set_deletion_in_progress ();
        bool deletion_in_progress() const { return _state_of_the_state & Deletion; }
        sigc::signal<void> DirtyChanged;
 
@@ -762,8 +763,10 @@ class Session : public PBD::StatefulDestructible
        std::map<PBD::ID, PBD::StatefulThingWithGoingAway*> registry;
 
         // these commands are implemented in libs/ardour/session_command.cc
-       Command *memento_command_factory(XMLNode *n);
-        void register_with_memento_command_factory(PBD::ID, PBD::StatefulThingWithGoingAway *);
+       Command* memento_command_factory(XMLNode* n);
+        void register_with_memento_command_factory(PBD::ID, PBD::StatefulThingWithGoingAway*);
+
+       Command* global_state_command_factory (XMLNode* n);
 
         class GlobalSoloStateCommand : public Command
         {
index e68dc718d9d352527e558a5c9383cf30ef3b1772..b68235171f82794bce1552dc82768a69c32e0304 100644 (file)
@@ -156,6 +156,7 @@ AudioEngine::stop (bool forever)
                        jack_client_t* foo = _jack;
                        _jack = 0;
                        jack_client_close (foo);
+                       stop_metering_thread ();
                } else {
                        jack_deactivate (_jack);
                }
@@ -379,9 +380,9 @@ AudioEngine::stop_metering_thread ()
 {
        if (m_meter_thread) {
                g_atomic_int_set (&m_meter_exit, 1);
+               m_meter_thread->join ();
+               m_meter_thread = 0;
        }
-       m_meter_thread->join ();
-       m_meter_thread = 0;
 }
 
 void
@@ -395,8 +396,11 @@ AudioEngine::start_metering_thread ()
 void
 AudioEngine::meter_thread ()
 {
-       while (g_atomic_int_get(&m_meter_exit) != true) {
+       while (true) {
                Glib::usleep (10000); /* 1/100th sec interval */
+               if (g_atomic_int_get(&m_meter_exit)) {
+                       break;
+               }
                IO::update_meters ();
        }
 }
index a8d892981214d448dd450d9933d681fcee647702..cc6d156c9c703e1bfbc7364ac80e136ea5b420d4 100644 (file)
@@ -35,6 +35,7 @@
 #include <pbd/pthread_utils.h>
 
 #include <ardour/audiosource.h>
+#include <ardour/cycle_timer.h>
 
 #include "i18n.h"
 
@@ -431,7 +432,8 @@ AudioSource::read_peaks (PeakData *peaks, nframes_t npeaks, nframes_t start, nfr
        expected_peaks = (cnt / (double) frames_per_peak);
        scale = npeaks/expected_peaks;
 
-#if 0
+#undef DEBUG_READ_PEAKS
+#ifdef DEBUG_READ_PEAKS
        cerr << "======>RP: npeaks = " << npeaks 
             << " start = " << start 
             << " cnt = " << cnt 
@@ -457,8 +459,9 @@ AudioSource::read_peaks (PeakData *peaks, nframes_t npeaks, nframes_t start, nfr
        
        if (npeaks == cnt) {
 
+#ifdef DEBUG_READ_PEAKS
                cerr << "RAW DATA\n";
-               
+#endif         
                /* no scaling at all, just get the sample data and duplicate it for
                   both max and min peak values.
                */
@@ -490,7 +493,9 @@ AudioSource::read_peaks (PeakData *peaks, nframes_t npeaks, nframes_t start, nfr
                        return -1;
                }
 
-               // cerr << "DIRECT PEAKS\n";
+#ifdef DEBUG_READ_PEAKS
+               cerr << "DIRECT PEAKS\n";
+#endif
                
                nread = ::pread (peakfile, peaks, sizeof (PeakData)* npeaks, first_peak_byte);
                close (peakfile);
@@ -523,8 +528,9 @@ AudioSource::read_peaks (PeakData *peaks, nframes_t npeaks, nframes_t start, nfr
 
        if (scale < 1.0) {
 
-               // cerr << "DOWNSAMPLE\n";
-
+#ifdef DEBUG_READ_PEAKS
+               cerr << "DOWNSAMPLE\n";
+#endif         
                /* the caller wants:
 
                    - more frames-per-peak (lower resolution) than the peakfile, or to put it another way,
@@ -535,7 +541,7 @@ AudioSource::read_peaks (PeakData *peaks, nframes_t npeaks, nframes_t start, nfr
                    to avoid confusion, I'll refer to the requested peaks as visual_peaks and the peakfile peaks as stored_peaks  
                */
 
-               const uint32_t chunksize = (uint32_t) min (expected_peaks, 4096.0);
+               const uint32_t chunksize = (uint32_t) min (expected_peaks, 65536.0);
                
                staging = new PeakData[chunksize];
                
@@ -569,10 +575,15 @@ AudioSource::read_peaks (PeakData *peaks, nframes_t npeaks, nframes_t start, nfr
                                tnp = min ((_length/frames_per_peak - current_stored_peak), (nframes_t) expected_peaks);
                                to_read = min (chunksize, tnp);
                                
-                               off_t fend = lseek (peakfile, 0, SEEK_END);
+#ifdef DEBUG_READ_PEAKS
+                               cerr << "read " << sizeof (PeakData) * to_read << " from peakfile @ " << start_byte << endl;
+#endif
                                
                                if ((nread = ::pread (peakfile, staging, sizeof (PeakData) * to_read, start_byte))
                                    != sizeof (PeakData) * to_read) {
+
+                                       off_t fend = lseek (peakfile, 0, SEEK_END);
+                                       
                                        cerr << "AudioSource["
                                             << _name
                                             << "]: cannot read peak data from peakfile ("
@@ -589,11 +600,11 @@ AudioSource::read_peaks (PeakData *peaks, nframes_t npeaks, nframes_t start, nfr
                                             << endl;
                                        goto out;
                                }
-
+                               
                                i = 0;
                                stored_peaks_read = nread / sizeof(PeakData);
                        }
-
+                       
                        xmax = -1.0;
                        xmin = 1.0;
 
@@ -624,8 +635,9 @@ AudioSource::read_peaks (PeakData *peaks, nframes_t npeaks, nframes_t start, nfr
 
        } else {
                
-               // cerr << "UPSAMPLE\n";
-
+#ifdef DEBUG_READ_PEAKS
+               cerr << "UPSAMPLE\n";
+#endif
                /* the caller wants 
 
                     - less frames-per-peak (more resolution)
@@ -704,6 +716,10 @@ AudioSource::read_peaks (PeakData *peaks, nframes_t npeaks, nframes_t start, nfr
                delete [] raw_staging;
        }
 
+#ifdef DEBUG_READ_PEAKS
+       cerr << "RP DONE\n";
+#endif
+
        return ret;
 }
 
@@ -777,6 +793,7 @@ AudioSource::do_build_peak (nframes_t first_frame, nframes_t cnt)
        off_t first_peak_byte;
        int peakfile = -1;
        int ret = -1;
+       off_t target_length;
 
 #ifdef DEBUG_PEAK_BUILD
        cerr << pthread_self() << ": " << _name << ": building peaks for " << first_frame << " to " << first_frame + cnt - 1 << endl;
@@ -828,6 +845,20 @@ AudioSource::do_build_peak (nframes_t first_frame, nframes_t cnt)
                cnt -= frames_read;
        }
 
+#define BLOCKSIZE (256 * 1024)
+
+       target_length = BLOCKSIZE * ((first_peak_byte + BLOCKSIZE + 1) / BLOCKSIZE);
+
+       /* on some filesystems (ext3, at least) this helps to reduce fragmentation of
+          the peakfiles. its not guaranteed to do so, and even on ext3 (as of december 2006)
+          it does not cause single-extent allocation even for peakfiles of 
+          less than BLOCKSIZE bytes.
+       */
+
+       ftruncate (peakfile, target_length);
+
+       /* error doesn't actually matter though, so continue on without testing */
+
        if (::pwrite (peakfile, peakbuf, sizeof (PeakData) * peaki, first_peak_byte) != (ssize_t) (sizeof (PeakData) * peaki)) {
                error << string_compose(_("%1: could not write peak file data (%2)"), _name, strerror (errno)) << endmsg;
                goto out;
index a7152547472d6cdb516d7064ed897c7c2f18bb10..495a66465e2a92685e03ec1071b4d917f37bfd01 100644 (file)
@@ -180,7 +180,7 @@ ControlProtocolManager::discover_control_protocols (string path)
        vector<string *> *found;
        PathScanner scanner;
 
-       info << string_compose (_("looking for control protocols in %1"), path) << endmsg;
+       // info << string_compose (_("looking for control protocols in %1"), path) << endmsg;
 
        found = scanner (path, protocol_filter, 0, false, true);
 
index 86770939da36727472ad1ced0e982677f2923d7e..932db17909ed4e3f05eb70be4a6a7d4dd21f9d2b 100644 (file)
@@ -831,10 +831,6 @@ Session::when_engine_running ()
                }
        }
 
-
-       /* its safe to do this now */
-
-       restore_history (snap_name());
        
        _state_of_the_state = StateOfTheState (_state_of_the_state & ~(CannotSave|Dirty));
 
@@ -861,7 +857,6 @@ Session::hookup_io ()
        */
 
        _state_of_the_state = StateOfTheState (_state_of_the_state | InitialConnecting);
-       cerr << "InitialConnecting set\n";
 
        if (auditioner == 0) {
                
@@ -917,7 +912,6 @@ Session::hookup_io ()
        IOConnectionsComplete (); /* EMIT SIGNAL */
 
        _state_of_the_state = StateOfTheState (_state_of_the_state & ~InitialConnecting);
-       cerr << "InitialConnectingUN set\n";
 
        /* now handle the whole enchilada as if it was one
           graph reorder event.
index 06ed44f722a51126e08503164be359b910ab5cad..022aa43145a0b6747f0fa780d6871ae13bac7a02 100644 (file)
@@ -22,7 +22,8 @@ void Session::register_with_memento_command_factory(PBD::ID id, PBD::StatefulThi
     registry[id] = ptr;
 }
     
-Command *Session::memento_command_factory(XMLNode *n)
+Command *
+Session::memento_command_factory(XMLNode *n)
 {
     PBD::ID id;
     XMLNode *before = 0, *after = 0;
@@ -87,6 +88,13 @@ Command *Session::memento_command_factory(XMLNode *n)
     return 0 ;
 }
 
+Command *
+Session::global_state_command_factory(XMLNode *n)
+{
+       error << string_compose (_("cannot reconstitute %1 from XML yet, ignored"), n->name()) << endmsg;
+       return 0 ;
+}
+
 // solo
 Session::GlobalSoloStateCommand::GlobalSoloStateCommand(Session &sess, void *src)
     : sess(sess), src(src)
index 55f2e4be29c3e02925b84fa77d71e0613c857091..cbc363a203db2f8cf9967c3505f2f968198d90b6 100644 (file)
@@ -1218,7 +1218,6 @@ Session::set_state (const XMLNode& node)
        StateReady (); /* EMIT SIGNAL */
 
        _state_of_the_state = Clean;
-       cerr << "session marked clean\n";
 
        if (state_was_pending) {
                save_state (_current_snapshot_name);
@@ -2817,6 +2816,12 @@ Session::set_clean ()
        }
 }
 
+void
+Session::set_deletion_in_progress ()
+{
+       _state_of_the_state = StateOfTheState (_state_of_the_state | Deletion);
+}
+
 void
 Session::add_controllable (Controllable* c)
 {
@@ -2917,6 +2922,10 @@ Session::restore_history (string snapshot_name)
     XMLTree tree;
     string xmlpath;
 
+    if (snapshot_name.empty()) {
+           snapshot_name = _current_snapshot_name;
+    }
+
     /* read xml */
     xmlpath = _path + snapshot_name + ".history";
     cerr << string_compose(_("Loading history from '%1'."), xmlpath) << endmsg;
@@ -2957,10 +2966,21 @@ Session::restore_history (string snapshot_name)
                    if (n->name() == "MementoCommand" ||
                        n->name() == "MementoUndoCommand" ||
                        n->name() == "MementoRedoCommand") {
+
                            if ((c = memento_command_factory(n))) {
                                    ut->add_command(c);
                            }
+                           
+                   } else if (n->name() == "GlobalRecordEnableStateCommand" ||
+                              n->name() == "GlobalSoloStateCommand" || 
+                              n->name() == "GlobalMuteStateCommand") {
+
+                           if ((c = global_state_command_factory (n))) {
+                                   ut->add_command (c);
+                           }
+                           
                    } else {
+
                            error << string_compose(_("Couldn't figure out how to make a Command out of a %1 XMLNode."), n->name()) << endmsg;
                    }
            }
index 0df20efe56ec977c2fb55727702adb4defa1a03e..fe8acf915f9ceb9b4db948b58315e96a3b7ed9a8 100644 (file)
@@ -1,4 +1,14 @@
+# -*- python -*-
+
 import os.path
+import glob
+
+libclearlooks_files = [
+    'clearlooks_draw.c',
+    'clearlooks_rc_style.c',
+    'clearlooks_style.c',
+    'clearlooks_theme_main.c',
+    'support.c' ]
 
 Import ('env install_prefix')
 
@@ -7,13 +17,7 @@ clearlooks = env.Copy()
 clearlooks.Replace(CCFLAGS = ' `pkg-config --cflags gtk+-2.0` ',
                    LINKFLAGS = ' `pkg-config --libs gtk+-2.0` ')
 
-libclearlooks = clearlooks.SharedLibrary('clearlooks', [
-    'clearlooks_draw.c',
-    'clearlooks_rc_style.c',
-    'clearlooks_style.c',
-    'clearlooks_theme_main.c',
-    'support.c'
-])
+libclearlooks = clearlooks.SharedLibrary('clearlooks', libclearlooks_files) 
 
 usable_libclearlooks = clearlooks.Install ('engines', libclearlooks)
 Default (usable_libclearlooks)
@@ -21,3 +25,9 @@ Default (usable_libclearlooks)
 env.Alias('install',
           env.Install(os.path.join(install_prefix,'lib/ardour2/engines'),
                       libclearlooks))
+
+env.Alias('tarball', env.Distribute (env['DISTTREE'],
+                                     [ 'SConscript', 'bits.c'] +
+                                    libclearlooks_files +
+                                    glob.glob('*.h')
+                                    ))
index 7fa556530b1e083a53a84211d33ed5ef484bf117..874d70cf0693dd5f9de952bf4c016581224e91d5 100644 (file)
@@ -3,6 +3,7 @@
 import os
 import glob
 template_files = glob.glob('*.template.in')
+files = glob.glob('*.template')
 
 Import('env install_prefix subst_dict')
 
@@ -13,5 +14,5 @@ for template in template_files:
 
 Default(template_build)
 
-env.Alias('install', env.Install(os.path.join(install_prefix, 'share/ardour2/templates'), template_build))
+env.Alias('install', env.Install(os.path.join(install_prefix, 'share/ardour2/templates'), files))
 env.Alias('tarball', env.Distribute (env['DISTTREE'], [ 'SConscript' ] + template_build))