From 99904735e066804358f1d0bd138a84f1e9ecda91 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sun, 18 Mar 2007 06:07:08 +0000 Subject: Merged with trunk R1612. git-svn-id: svn://localhost/ardour2/branches/midi@1614 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/SConscript | 11 +- gtk2_ardour/about.cc | 6 +- gtk2_ardour/about.h | 1 - gtk2_ardour/actions.cc | 1 - gtk2_ardour/add_route_dialog.cc | 3 +- gtk2_ardour/analysis_window.cc | 1 - gtk2_ardour/ardbg | 1 + gtk2_ardour/ardev | 1 + gtk2_ardour/ardour.bindings | 315 --- gtk2_ardour/ardour.bindings.in | 317 +++ gtk2_ardour/ardour.colors | 3 + gtk2_ardour/ardour.menus | 10 +- gtk2_ardour/ardour2_ui.rc | 874 +++--- gtk2_ardour/ardour_image_compositor_socket.h | 1 - gtk2_ardour/ardour_message.cc | 64 - gtk2_ardour/ardour_message.h | 47 - gtk2_ardour/ardour_ui.cc | 515 +++- gtk2_ardour/ardour_ui.h | 109 +- gtk2_ardour/ardour_ui2.cc | 134 +- gtk2_ardour/ardour_ui_dependents.cc | 1 - gtk2_ardour/ardour_ui_dialogs.cc | 18 +- gtk2_ardour/ardour_ui_ed.cc | 77 +- gtk2_ardour/ardour_ui_mixer.cc | 4 +- gtk2_ardour/ardour_ui_options.cc | 107 +- gtk2_ardour/audio_clock.cc | 1 - gtk2_ardour/audio_clock.h | 1 - gtk2_ardour/audio_region_editor.cc | 1 - gtk2_ardour/audio_region_editor.h | 1 - gtk2_ardour/audio_region_view.cc | 38 +- gtk2_ardour/audio_region_view.h | 6 +- gtk2_ardour/audio_time_axis.cc | 25 +- gtk2_ardour/audio_time_axis.h | 2 +- gtk2_ardour/automation_gain_line.cc | 1 - gtk2_ardour/automation_line.cc | 2 +- gtk2_ardour/automation_line.h | 1 - gtk2_ardour/automation_pan_line.cc | 1 - gtk2_ardour/axis_view.cc | 1 - gtk2_ardour/axis_view.h | 1 - gtk2_ardour/canvas-imageframe.h | 8 + gtk2_ardour/canvas-simplerect.c | 87 +- gtk2_ardour/canvas-waveview.c | 5 +- gtk2_ardour/colors.h | 3 + gtk2_ardour/connection_editor.cc | 1 - gtk2_ardour/connection_editor.h | 1 - gtk2_ardour/crossfade_edit.cc | 35 +- gtk2_ardour/crossfade_edit.h | 5 +- gtk2_ardour/crossfade_view.cc | 1 - gtk2_ardour/crossfade_view.h | 1 - gtk2_ardour/editor.cc | 74 +- gtk2_ardour/editor.h | 25 +- gtk2_ardour/editor_actions.cc | 4 +- gtk2_ardour/editor_audio_import.cc | 27 +- gtk2_ardour/editor_audiotrack.cc | 2 - gtk2_ardour/editor_canvas.cc | 48 +- gtk2_ardour/editor_canvas_events.cc | 6 +- gtk2_ardour/editor_cursors.cc | 4 +- gtk2_ardour/editor_edit_groups.cc | 1 - gtk2_ardour/editor_export_audio.cc | 1 - gtk2_ardour/editor_hscroller.cc | 8 +- gtk2_ardour/editor_imageframe.cc | 1 - gtk2_ardour/editor_keyboard.cc | 1 - gtk2_ardour/editor_keys.cc | 12 +- gtk2_ardour/editor_markers.cc | 20 +- gtk2_ardour/editor_mixer.cc | 57 +- gtk2_ardour/editor_mouse.cc | 633 ++--- gtk2_ardour/editor_nudge.cc | 1 - gtk2_ardour/editor_ops.cc | 7 +- gtk2_ardour/editor_region_list.cc | 16 +- gtk2_ardour/editor_route_list.cc | 12 +- gtk2_ardour/editor_rulers.cc | 3 +- gtk2_ardour/editor_selection.cc | 6 +- gtk2_ardour/editor_selection_list.cc | 2 +- gtk2_ardour/editor_tempodisplay.cc | 28 +- gtk2_ardour/editor_timefx.cc | 1 - gtk2_ardour/export_dialog.cc | 20 +- gtk2_ardour/export_dialog.h | 7 +- gtk2_ardour/export_range_markers_dialog.cc | 39 +- gtk2_ardour/export_range_markers_dialog.h | 4 + gtk2_ardour/export_region_dialog.cc | 3 + gtk2_ardour/export_session_dialog.cc | 3 +- gtk2_ardour/gain_automation_time_axis.cc | 1 - gtk2_ardour/gain_meter.cc | 35 +- gtk2_ardour/gain_meter.h | 5 +- gtk2_ardour/ghostregion.h | 1 - gtk2_ardour/grouped_buttons.cc | 96 - gtk2_ardour/grouped_buttons.h | 49 - gtk2_ardour/icons/crossfade_in_constant.png | Bin 0 -> 693 bytes gtk2_ardour/icons/crossfade_in_dipped.png | Bin 0 -> 667 bytes gtk2_ardour/icons/crossfade_in_fast-cut.png | Bin 0 -> 686 bytes gtk2_ardour/icons/crossfade_in_slow-cut.png | Bin 0 -> 723 bytes gtk2_ardour/icons/crossfade_in_slow-fade.png | Bin 0 -> 730 bytes gtk2_ardour/icons/crossfade_in_transition.png | Bin 0 -> 692 bytes gtk2_ardour/icons/crossfade_out_constant.png | Bin 0 -> 720 bytes gtk2_ardour/icons/crossfade_out_dipped.png | Bin 0 -> 831 bytes gtk2_ardour/icons/crossfade_out_fast-cut.png | Bin 0 -> 737 bytes gtk2_ardour/icons/crossfade_out_slow-cut.png | Bin 0 -> 770 bytes gtk2_ardour/icons/crossfade_out_slow-fade.png | Bin 0 -> 798 bytes gtk2_ardour/icons/crossfade_out_transition.png | Bin 0 -> 737 bytes gtk2_ardour/imageframe.cc | 1 - gtk2_ardour/imageframe.h | 1 - gtk2_ardour/imageframe_socket_handler.cc | 1 - gtk2_ardour/imageframe_socket_handler.h | 1 - gtk2_ardour/imageframe_time_axis.cc | 1 - gtk2_ardour/imageframe_time_axis.h | 1 - gtk2_ardour/imageframe_time_axis_group.cc | 1 - gtk2_ardour/imageframe_time_axis_group.h | 1 - gtk2_ardour/imageframe_time_axis_view.cc | 1 - gtk2_ardour/imageframe_time_axis_view.h | 1 - gtk2_ardour/imageframe_view.cc | 1 - gtk2_ardour/imageframe_view.h | 1 - gtk2_ardour/io_selector.cc | 1 - gtk2_ardour/io_selector.h | 1 - gtk2_ardour/keyboard.cc | 514 +--- gtk2_ardour/keyboard.h | 24 - gtk2_ardour/keyboard_target.cc | 258 -- gtk2_ardour/keyboard_target.h | 83 - gtk2_ardour/ladspa_pluginui.cc | 19 +- gtk2_ardour/location_ui.cc | 1 - gtk2_ardour/location_ui.h | 2 - gtk2_ardour/main.cc | 198 +- gtk2_ardour/marker.cc | 1 - gtk2_ardour/marker.h | 1 - gtk2_ardour/marker_time_axis.cc | 1 - gtk2_ardour/marker_time_axis.h | 1 - gtk2_ardour/marker_time_axis_view.cc | 1 - gtk2_ardour/marker_time_axis_view.h | 1 - gtk2_ardour/marker_view.cc | 1 - gtk2_ardour/marker_view.h | 1 - gtk2_ardour/meter_bridge.cc | 260 -- gtk2_ardour/meter_bridge.h | 91 - gtk2_ardour/meter_bridge_strip.cc | 243 -- gtk2_ardour/meter_bridge_strip.h | 110 - gtk2_ardour/mixer_strip.cc | 76 +- gtk2_ardour/mixer_strip.h | 3 - gtk2_ardour/mixer_ui.cc | 31 +- gtk2_ardour/mixer_ui.h | 6 +- gtk2_ardour/new_session_dialog.cc | 1 - gtk2_ardour/new_session_dialog.h | 1 - gtk2_ardour/option_editor.cc | 43 +- gtk2_ardour/option_editor.h | 6 +- gtk2_ardour/opts.cc | 9 +- gtk2_ardour/opts.h | 1 - gtk2_ardour/pan_automation_time_axis.cc | 1 - gtk2_ardour/panner.cc | 10 +- gtk2_ardour/panner2d.cc | 5 +- gtk2_ardour/panner2d.h | 3 +- gtk2_ardour/panner_ui.cc | 56 +- gtk2_ardour/panner_ui.h | 1 - gtk2_ardour/playlist_selector.cc | 1 - gtk2_ardour/plugin_selector.cc | 10 +- gtk2_ardour/plugin_ui.cc | 4 +- gtk2_ardour/plugin_ui.h | 1 - gtk2_ardour/po/ru_RU.po | 3550 ++++++++++++------------ gtk2_ardour/prompter.cc | 1 - gtk2_ardour/prompter.h | 1 - gtk2_ardour/public_editor.h | 10 +- gtk2_ardour/redirect_automation_line.cc | 1 - gtk2_ardour/redirect_automation_line.h | 1 - gtk2_ardour/redirect_automation_time_axis.cc | 1 - gtk2_ardour/redirect_box.cc | 9 +- gtk2_ardour/redirect_box.h | 3 +- gtk2_ardour/region_editor.h | 1 - gtk2_ardour/region_view.cc | 29 +- gtk2_ardour/region_view.h | 8 +- gtk2_ardour/rgb_macros.h | 1 - gtk2_ardour/route_params_ui.cc | 6 +- gtk2_ardour/route_params_ui.h | 6 +- gtk2_ardour/route_redirect_selection.cc | 1 - gtk2_ardour/route_redirect_selection.h | 1 - gtk2_ardour/route_time_axis.cc | 35 +- gtk2_ardour/route_time_axis.h | 1 - gtk2_ardour/route_ui.cc | 123 +- gtk2_ardour/route_ui.h | 6 +- gtk2_ardour/selectable.h | 1 - gtk2_ardour/selection.cc | 1 - gtk2_ardour/selection.h | 1 - gtk2_ardour/selection_templates.h | 1 - gtk2_ardour/send_ui.cc | 1 - gtk2_ardour/send_ui.h | 1 - gtk2_ardour/sfdb_ui.cc | 13 + gtk2_ardour/sfdb_ui.h | 8 +- gtk2_ardour/simpleline.cc | 1 - gtk2_ardour/simpleline.h | 1 - gtk2_ardour/simplerect.cc | 1 - gtk2_ardour/simplerect.h | 1 - gtk2_ardour/tape_region_view.cc | 1 - gtk2_ardour/tape_region_view.h | 1 - gtk2_ardour/tempo_dialog.cc | 94 +- gtk2_ardour/tempo_dialog.h | 11 +- gtk2_ardour/time_axis_view.cc | 7 +- gtk2_ardour/time_axis_view.h | 1 - gtk2_ardour/time_axis_view_item.cc | 35 +- gtk2_ardour/time_axis_view_item.h | 5 +- gtk2_ardour/time_selection.cc | 1 - gtk2_ardour/utils.cc | 75 +- gtk2_ardour/utils.h | 2 +- gtk2_ardour/visual_time_axis.cc | 1 - gtk2_ardour/visual_time_axis.h | 1 - gtk2_ardour/vst_pluginui.cc | 1 - gtk2_ardour/waveview.cc | 1 - gtk2_ardour/waveview.h | 1 - 201 files changed, 4545 insertions(+), 5726 deletions(-) delete mode 100644 gtk2_ardour/ardour.bindings create mode 100644 gtk2_ardour/ardour.bindings.in delete mode 100644 gtk2_ardour/ardour_message.cc delete mode 100644 gtk2_ardour/ardour_message.h delete mode 100644 gtk2_ardour/grouped_buttons.cc delete mode 100644 gtk2_ardour/grouped_buttons.h create mode 100644 gtk2_ardour/icons/crossfade_in_constant.png create mode 100644 gtk2_ardour/icons/crossfade_in_dipped.png create mode 100644 gtk2_ardour/icons/crossfade_in_fast-cut.png create mode 100644 gtk2_ardour/icons/crossfade_in_slow-cut.png create mode 100644 gtk2_ardour/icons/crossfade_in_slow-fade.png create mode 100644 gtk2_ardour/icons/crossfade_in_transition.png create mode 100644 gtk2_ardour/icons/crossfade_out_constant.png create mode 100644 gtk2_ardour/icons/crossfade_out_dipped.png create mode 100644 gtk2_ardour/icons/crossfade_out_fast-cut.png create mode 100644 gtk2_ardour/icons/crossfade_out_slow-cut.png create mode 100644 gtk2_ardour/icons/crossfade_out_slow-fade.png create mode 100644 gtk2_ardour/icons/crossfade_out_transition.png delete mode 100644 gtk2_ardour/keyboard_target.cc delete mode 100644 gtk2_ardour/keyboard_target.h delete mode 100644 gtk2_ardour/meter_bridge.cc delete mode 100644 gtk2_ardour/meter_bridge.h delete mode 100644 gtk2_ardour/meter_bridge_strip.cc delete mode 100644 gtk2_ardour/meter_bridge_strip.h (limited to 'gtk2_ardour') diff --git a/gtk2_ardour/SConscript b/gtk2_ardour/SConscript index 4dfe0b7322..60e7bca331 100644 --- a/gtk2_ardour/SConscript +++ b/gtk2_ardour/SConscript @@ -147,7 +147,6 @@ export_range_markers_dialog.cc gain_automation_time_axis.cc gain_meter.cc ghostregion.cc -grouped_buttons.cc gtk-custom-hruler.c gtk-custom-ruler.c imageframe.cc @@ -276,6 +275,13 @@ rcu = gtkardour.Program(target = 'rcu', source = rcu_files) tt = gtkmmtests.Program(target = 'tt', source = tt_files) my_subst_dict = { } + +# +# null substitution just to avoid ardour.bindings being in svn +# + +ardourbindings = env.SubstInFile ('ardour.bindings', 'ardour.bindings.in', SUBST_DICT = my_subst_dict); + my_subst_dict['%INSTALL_PREFIX%'] = final_prefix my_subst_dict['%LIBDIR%'] = env['LIBDIR'] my_subst_dict['%VERSION%'] = ardour_version @@ -286,6 +292,7 @@ env.AddPostAction (ardoursh, Chmod ('$TARGET', 0755)) ardourdev = env.SubstInFile ('ardev_common.sh','ardev_common.sh.in', SUBST_DICT = my_subst_dict); env.AddPostAction (ardourdev, Chmod ('$TARGET', 0755)) +Default(ardourbindings) Default(ardourdev) Default(ardoursh) @@ -329,7 +336,7 @@ env.Alias ('tarball', env.Distribute (env['DISTTREE'], 'ardour.sh.in', 'ardev_common.sh.in', 'ardour2_ui.rc', 'splash.png', - 'ardour.menus', 'ardour.bindings', 'ardour.colors', + 'ardour.menus', 'ardour.bindings.in', 'ardour.colors', 'editor_xpms' ] + gtkardour_files + diff --git a/gtk2_ardour/about.cc b/gtk2_ardour/about.cc index 34bb98199c..b0ec4f1436 100644 --- a/gtk2_ardour/about.cc +++ b/gtk2_ardour/about.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -145,8 +144,13 @@ static const char* authors[] = { N_("Stefan Kersten"), N_("Christopher George"), N_("Robert Jordens"), + N_("Dave Robillard"), + N_("Hans Fugal"), N_("Brian Ahr"), N_("Nimal Ratnayake"), + N_("Mike Täht"), + N_("John Anderson"), + N_("Nedko Arnaudov"), 0 }; diff --git a/gtk2_ardour/about.h b/gtk2_ardour/about.h index 3468a31a19..2eb02dd223 100644 --- a/gtk2_ardour/about.h +++ b/gtk2_ardour/about.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_gtk_about_h__ diff --git a/gtk2_ardour/actions.cc b/gtk2_ardour/actions.cc index d382878582..6e4a525ba7 100644 --- a/gtk2_ardour/actions.cc +++ b/gtk2_ardour/actions.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/add_route_dialog.cc b/gtk2_ardour/add_route_dialog.cc index 591fe64244..ea8233ff52 100644 --- a/gtk2_ardour/add_route_dialog.cc +++ b/gtk2_ardour/add_route_dialog.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -149,7 +148,7 @@ AddRouteDialog::track_type_chosen () if (track_button.get_active()) { track_mode_combo.set_sensitive (true); } else { - track_mode_combo.set_sensitive (true); + track_mode_combo.set_sensitive (false); } } diff --git a/gtk2_ardour/analysis_window.cc b/gtk2_ardour/analysis_window.cc index dd749d2bb1..957dde3d1f 100644 --- a/gtk2_ardour/analysis_window.cc +++ b/gtk2_ardour/analysis_window.cc @@ -16,7 +16,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/ardbg b/gtk2_ardour/ardbg index 95466a42b8..ab99296f45 100755 --- a/gtk2_ardour/ardbg +++ b/gtk2_ardour/ardbg @@ -1,4 +1,5 @@ #!/bin/sh dir=`dirname "$0"` . $dir/ardev_common.sh +LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH exec gdb $EXECUTABLE $* diff --git a/gtk2_ardour/ardev b/gtk2_ardour/ardev index ff68e11fbe..5dd8fc9d13 100755 --- a/gtk2_ardour/ardev +++ b/gtk2_ardour/ardev @@ -1,3 +1,4 @@ #!/bin/sh . `dirname "$0"`/ardev_common.sh +LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH exec $EXECUTABLE $* diff --git a/gtk2_ardour/ardour.bindings b/gtk2_ardour/ardour.bindings deleted file mode 100644 index 3c7afcde6c..0000000000 --- a/gtk2_ardour/ardour.bindings +++ /dev/null @@ -1,315 +0,0 @@ -; ardour-2.0beta11.1 GtkAccelMap rc-file -*- scheme -*- -; this file is an automated accelerator map dump -; -; (gtk_accel_path "/RegionList/RegionListSort" "") -(gtk_accel_path "/Common/Quit" "q") -(gtk_accel_path "/Common/Save" "s") -; (gtk_accel_path "/Editor/Pullup" "") -; (gtk_accel_path "/Editor/zoom-to-session" "") -; (gtk_accel_path "/JACK/JACKReconnect" "") -; (gtk_accel_path "/Editor/Autoconnect" "") -; (gtk_accel_path "/Editor/Edit" "") -(gtk_accel_path "/Editor/playhead-to-previous-region-end" "grave") -; (gtk_accel_path "/redirectmenu/copy" "") -; (gtk_accel_path "/options/MeterFalloffFaster" "") -(gtk_accel_path "/Transport/ToggleRollForgetCapture" "space") -(gtk_accel_path "/Transport/Record" "r") -; (gtk_accel_path "/RegionList/SortByRegionLength" "") -; (gtk_accel_path "/options/MeterFalloffSlowest" "") -; (gtk_accel_path "/Editor/playhead-to-previous-region-sync" "") -; (gtk_accel_path "/redirectmenu/deactivate_all" "") -; (gtk_accel_path "/RegionList/SortByRegionPosition" "") -; (gtk_accel_path "/Editor/ZoomFocus" "") -; (gtk_accel_path "/options/MeterFalloffSlow" "") -; (gtk_accel_path "/RegionList/rlHide" "") -; (gtk_accel_path "/Main/Metering" "") -(gtk_accel_path "/Editor/playhead-to-next-region-end" "Tab") -; (gtk_accel_path "/Zoom/zoom-focus-playhead" "") -; (gtk_accel_path "/Editor/center-edit-cursor" "") -; (gtk_accel_path "/Editor/Monitoring" "") -; (gtk_accel_path "/redirectmenu/deactivate" "") -; (gtk_accel_path "/options/LatchedRecordEnable" "") -; (gtk_accel_path "/Transport/TogglePunchIn" "") -; (gtk_accel_path "/ShuttleActions/SetShuttleUnitsPercentage" "") -(gtk_accel_path "/Editor/edit-cursor-to-previous-region-start" "bracketleft") -; (gtk_accel_path "/Main/Close" "") -; (gtk_accel_path "/Main/New" "") -(gtk_accel_path "/Editor/nudge-next-backward" "KP_Subtract") -; (gtk_accel_path "/Editor/EditSelectRangeOptions" "") -; (gtk_accel_path "/Transport/ToggleTimeMaster" "") -; (gtk_accel_path "/Snap/snap-to-thirds" "") -(gtk_accel_path "/Editor/align-regions-start-relative" "a") -; (gtk_accel_path "/Main/Export" "") -(gtk_accel_path "/Editor/jump-forward-to-mark" "KP_Right") -; (gtk_accel_path "/Editor/Smpte30" "") -; (gtk_accel_path "/Editor/playhead-to-range-start" "") -; (gtk_accel_path "/Editor/Subframes" "") -; (gtk_accel_path "/Editor/Smpte2997drop" "") -; (gtk_accel_path "/Main/AddTrackBus" "") -(gtk_accel_path "/Editor/align-regions-end" "a") -; (gtk_accel_path "/JACK/JACKDisconnect" "") -; (gtk_accel_path "/options/MeterFalloffFast" "") -; (gtk_accel_path "/options/FileDataFormatFloat" "") -; (gtk_accel_path "/Snap/snap-to-region-end" "") -(gtk_accel_path "/Editor/edit-cursor-to-next-region-sync" "semicolon") -; (gtk_accel_path "/options/StopRecordingOnXrun" "") -; (gtk_accel_path "/Editor/addExternalAudioToRegionList" "") -; (gtk_accel_path "/RegionList/SortDescending" "") -; (gtk_accel_path "/options/DoNotRunPluginsWhileRecording" "") -; (gtk_accel_path "/Editor/PullupNone" "") -(gtk_accel_path "/MouseMode/set-mouse-mode-range" "r") -(gtk_accel_path "/Editor/jump-backward-to-mark" "KP_Left") -; (gtk_accel_path "/Main/AudioFileFormatData" "") -; (gtk_accel_path "/options/MeterFalloffFastest" "") -(gtk_accel_path "/Editor/audition-at-mouse" "period") -(gtk_accel_path "/Transport/Forward" "rightarrow") -; (gtk_accel_path "/Snap/snap-to-smpte-seconds" "") -; (gtk_accel_path "/Snap/snap-to-smpte-frame" "") -; (gtk_accel_path "/Main/ExportSelection" "") -; (gtk_accel_path "/options/StopPluginsWithTransport" "") -(gtk_accel_path "/Editor/editor-paste" "v") -(gtk_accel_path "/Editor/scroll-tracks-down" "Page_Down") -; (gtk_accel_path "/Snap/snap-to-smpte-minutes" "") -; (gtk_accel_path "/Main/FlushWastebasket" "") -(gtk_accel_path "/Editor/normalize-region" "n") -(gtk_accel_path "/Editor/nudge-forward" "KP_Add") -; (gtk_accel_path "/RegionList/SortByRegionEndinFile" "") -; (gtk_accel_path "/Editor/ToggleMeasureVisibility" "") -; (gtk_accel_path "/Zoom/zoom-focus-center" "") -(gtk_accel_path "/Editor/nudge-backward" "KP_Subtract") -; (gtk_accel_path "/options/LatchedSolo" "") -; (gtk_accel_path "/options/MeterHoldOff" "") -; (gtk_accel_path "/options/OutputAutoConnectMaster" "") -; (gtk_accel_path "/JACK/JACKLatency64" "") -(gtk_accel_path "/Editor/undo" "z") -(gtk_accel_path "/Editor/insert-region" "i") -; (gtk_accel_path "/Editor/center-playhead" "") -(gtk_accel_path "/Editor/edit-cursor-to-next-region-start" "bracketright") -; (gtk_accel_path "/Snap/snap-to-region-start" "") -; (gtk_accel_path "/Editor/View" "") -; (gtk_accel_path "/Editor/Layering" "") -; (gtk_accel_path "/JACK/JACKLatency4096" "") -(gtk_accel_path "/Editor/scroll-tracks-up" "Page_Up") -(gtk_accel_path "/Editor/set-edit-cursor" "e") -; (gtk_accel_path "/Editor/Smpte30drop" "") -; (gtk_accel_path "/Zoom/zoom-focus-edit" "") -(gtk_accel_path "/Editor/playhead-to-previous-region-start" "grave") -; (gtk_accel_path "/Editor/EditCursorMovementOptions" "") -; (gtk_accel_path "/redirectmenu/activate_all" "") -; (gtk_accel_path "/Editor/addExternalAudioAsTapeTrack" "") -; (gtk_accel_path "/redirectmenu/paste" "") -; (gtk_accel_path "/Editor/Smpte25" "") -; (gtk_accel_path "/options/RegionEquivalentsOverlap" "") -; (gtk_accel_path "/Main/MeteringFallOffRate" "") -; (gtk_accel_path "/options/UseHardwareMonitoring" "") -; (gtk_accel_path "/Editor/Smpte24" "") -; (gtk_accel_path "/Snap/snap-to-mark" "") -; (gtk_accel_path "/Editor/CrossfadesShort" "") -; (gtk_accel_path "/Editor/Smpte5994" "") -; (gtk_accel_path "/JACK/JACKLatency8192" "") -(gtk_accel_path "/Editor/step-tracks-down" "downarrow") -; (gtk_accel_path "/Editor/toggle-xfades-visible" "") -(gtk_accel_path "/Editor/extend-range-to-end-of-region" "rightanglebracket") -(gtk_accel_path "/Editor/scroll-backward" "leftarrow") -(gtk_accel_path "/Editor/start-range" "KP_Down") -; (gtk_accel_path "/Editor/ToggleTranzportSurface" "") -; (gtk_accel_path "/ShuttleActions/SetShuttleUnitsSemitones" "") -; (gtk_accel_path "/JACK/JACKLatency128" "") -; (gtk_accel_path "/Snap/snap-to-beat" "") -; (gtk_accel_path "/Editor/RegionEditOps" "") -; (gtk_accel_path "/Editor/snap-magnetic" "") -; (gtk_accel_path "/Editor/playhead-to-range-end" "") -(gtk_accel_path "/Editor/scroll-playhead-forward" "rightarrow") -(gtk_accel_path "/Editor/align-regions-sync-relative" "a") -; (gtk_accel_path "/Editor/EditSelectRegionOptions" "") -(gtk_accel_path "/Editor/crop" "c") -; (gtk_accel_path "/redirectmenu/newsend" "") -; (gtk_accel_path "/Editor/MeterFalloff" "") -; (gtk_accel_path "/RegionList/rlRemove" "") -(gtk_accel_path "/Transport/GotoStart" "Home") -(gtk_accel_path "/Editor/scroll-playhead-backward" "leftarrow") -(gtk_accel_path "/Editor/split-region" "s") -; (gtk_accel_path "/Transport/ToggleAutoInput" "") -; (gtk_accel_path "/Snap/snap-to-thirtyseconds" "") -; (gtk_accel_path "/Snap/snap-to-minutes" "") -(gtk_accel_path "/Editor/align-regions-sync" "a") -; (gtk_accel_path "/Main/Windows" "") -; (gtk_accel_path "/Main/CleanupUnused" "") -; (gtk_accel_path "/redirectmenu/deselectall" "") -; (gtk_accel_path "/options/SoloViaBus" "") -(gtk_accel_path "/MouseMode/set-mouse-mode-zoom" "z") -; (gtk_accel_path "/RegionList/rlAudition" "") -(gtk_accel_path "/Editor/set-region-sync-position" "v") -; (gtk_accel_path "/Editor/PullupPlus4Plus1" "") -; (gtk_accel_path "/Snap/snap-to-region-boundary" "") -; (gtk_accel_path "/JACK/JACK" "") -(gtk_accel_path "/Editor/editor-cut" "x") -; (gtk_accel_path "/RegionList/SortAscending" "") -; (gtk_accel_path "/Main/Help" "") -; (gtk_accel_path "/options/UseExternalMonitoring" "") -; (gtk_accel_path "/Editor/Smpte23976" "") -(gtk_accel_path "/Common/goto-editor" "e") -(gtk_accel_path "/Editor/select-all" "a") -(gtk_accel_path "/Editor/nudge-next-forward" "KP_Add") -; (gtk_accel_path "/Snap/snap-to-eighths" "") -(gtk_accel_path "/Editor/select-all-after-playhead" "p") -(gtk_accel_path "/Common/ToggleMaximalEditor" "F11") -; (gtk_accel_path "/RegionList/SortBySourceFileLength" "") -; (gtk_accel_path "/Editor/Timecode" "") -; (gtk_accel_path "/Transport/PlaySelection" "") -; (gtk_accel_path "/Editor/PullupMinus4Minus1" "") -(gtk_accel_path "/Editor/select-all-after-edit-cursor" "e") -; (gtk_accel_path "/RegionList/SortBySourceFileName" "") -(gtk_accel_path "/Editor/finish-range" "KP_Up") -(gtk_accel_path "/Transport/Loop" "l") -; (gtk_accel_path "/Editor/CrossfadesFull" "") -(gtk_accel_path "/Editor/finish-add-range" "KP_Up") -; (gtk_accel_path "/Transport/ToggleClick" "") -; (gtk_accel_path "/options/SendMTC" "") -; (gtk_accel_path "/Transport/TogglePunchOut" "") -(gtk_accel_path "/Editor/select-all-in-loop-range" "l") -(gtk_accel_path "/Editor/show-editor-mixer" "e") -; (gtk_accel_path "/options/SoloInPlace" "") -; (gtk_accel_path "/Main/Options" "") -; (gtk_accel_path "/options/MeterFalloffMedium" "") -(gtk_accel_path "/Editor/toggle-follow-playhead" "f") -; (gtk_accel_path "/Main/SaveTemplate" "") -(gtk_accel_path "/Transport/TransitionToRoll" "uparrow") -; (gtk_accel_path "/RegionList/SortByRegionStartinFile" "") -; (gtk_accel_path "/options/GainReduceFastTransport" "") -; (gtk_accel_path "/Common/ToggleInspector" "") -; (gtk_accel_path "/Transport/ToggleAutoPlay" "") -; (gtk_accel_path "/Editor/playhead-to-next-region-sync" "") -(gtk_accel_path "/Editor/edit-to-playhead" "Return") -; (gtk_accel_path "/Editor/LayerMoveAddHigher" "") -; (gtk_accel_path "/Editor/Smpte60" "") -; (gtk_accel_path "/Main/Open" "") -(gtk_accel_path "/Editor/scroll-forward" "rightarrow") -; (gtk_accel_path "/Zoom/zoom-focus-left" "") -; (gtk_accel_path "/Main/TransportOptions" "") -; (gtk_accel_path "/Main/ControlSurfaces" "") -; (gtk_accel_path "/options/FileHeaderFormatBWF" "") -; (gtk_accel_path "/Transport/ToggleAutoReturn" "") -; (gtk_accel_path "/Editor/Smpte2997" "") -; (gtk_accel_path "/Editor/ToggleWaveformVisibility" "") -(gtk_accel_path "/Editor/redo" "r") -; (gtk_accel_path "/Editor/addExternalAudioAsRegion" "") -; (gtk_accel_path "/Main/ExportSession" "") -; (gtk_accel_path "/options/InputAutoConnectPhysical" "") -; (gtk_accel_path "/Snap/snap-to-edit-cursor" "") -(gtk_accel_path "/Editor/temporal-zoom-in" "minus") -; (gtk_accel_path "/JACK/Latency" "") -(gtk_accel_path "/Editor/edit-cursor-to-range-end" "F2") -; (gtk_accel_path "/redirectmenu/rename" "") -; (gtk_accel_path "/RegionList/rlShowAuto" "") -(gtk_accel_path "/Editor/select-all-before-playhead" "p") -; (gtk_accel_path "/Editor/addExistingAudioFiles" "") -; (gtk_accel_path "/Main/Session" "") -(gtk_accel_path "/Editor/edit-cursor-to-range-start" "F1") -; (gtk_accel_path "/Main/AudioFileFormat" "") -; (gtk_accel_path "/Transport/Transport" "") -(gtk_accel_path "/MouseMode/set-mouse-mode-timefx" "t") -; (gtk_accel_path "/RegionList/SortByRegionName" "") -; (gtk_accel_path "/Main/KeyMouse Actions" "") -(gtk_accel_path "/MouseMode/set-mouse-mode-gain" "g") -; (gtk_accel_path "/Snap/snap-to-frame" "") -; (gtk_accel_path "/Editor/SnapTo" "") -(gtk_accel_path "/Transport/TransitionToReverse" "downarrow") -; (gtk_accel_path "/Editor/Crossfades" "") -; (gtk_accel_path "/Editor/PullupPlus4" "") -(gtk_accel_path "/Editor/add-location-from-playhead" "KP_Enter") -(gtk_accel_path "/Editor/edit-cursor-to-previous-region-end" "bracketleft") -; (gtk_accel_path "/Main/MeteringHoldTime" "") -; (gtk_accel_path "/Editor/PullupPlus1" "") -; (gtk_accel_path "/Editor/Smpte24976" "") -; (gtk_accel_path "/options/FileDataFormat24bit" "") -; (gtk_accel_path "/Editor/SnapMode" "") -(gtk_accel_path "/Common/ToggleOptionsEditor" "o") -; (gtk_accel_path "/Editor/PullupMinus4" "") -(gtk_accel_path "/Common/goto-mixer" "m") -; (gtk_accel_path "/Editor/addExternalAudioToTrack" "") -; (gtk_accel_path "/RegionList/SortBySourceFileCreationDate" "") -; (gtk_accel_path "/redirectmenu/activate" "") -(gtk_accel_path "/Editor/extend-range-to-start-of-region" "leftanglebracket") -; (gtk_accel_path "/Editor/PullupMinus1" "") -; (gtk_accel_path "/Editor/snap-normal" "") -; (gtk_accel_path "/Editor/addExternalAudioAsTrack" "") -(gtk_accel_path "/Common/ToggleBigClock" "b") -; (gtk_accel_path "/Snap/snap-to-asixteenthbeat" "") -(gtk_accel_path "/Editor/select-all-in-punch-range" "d") -; (gtk_accel_path "/redirectmenu/edit" "") -(gtk_accel_path "/Editor/duplicate-region" "d") -; (gtk_accel_path "/JACK/JACKLatency2048" "") -; (gtk_accel_path "/Editor/ToggleWaveformsWhileRecording" "") -; (gtk_accel_path "/Zoom/zoom-focus-right" "") -(gtk_accel_path "/Editor/remove-last-capture" "Delete") -; (gtk_accel_path "/options/FileHeaderFormatWAVE" "") -(gtk_accel_path "/Transport/GotoZero" "KP_Insert") -(gtk_accel_path "/Transport/GotoEnd" "End") -; (gtk_accel_path "/redirectmenu/cut" "") -; (gtk_accel_path "/redirectmenu/newinsert" "") -; (gtk_accel_path "/options/UseMMC" "") -; (gtk_accel_path "/options/MeterFalloffOff" "") -(gtk_accel_path "/MouseMode/set-mouse-mode-object" "o") -; (gtk_accel_path "/Editor/PullupMinus4Plus1" "") -; (gtk_accel_path "/Editor/MeterHold" "") -; (gtk_accel_path "/Snap/snap-to-cd-frame" "") -; (gtk_accel_path "/options/StopTransportAtEndOfSession" "") -; (gtk_accel_path "/Main/Cleanup" "") -; (gtk_accel_path "/Main/Snapshot" "") -; (gtk_accel_path "/Transport/ToggleVideoSync" "") -(gtk_accel_path "/Transport/ToggleRoll" "space") -; (gtk_accel_path "/RegionList/SortBySourceFilesystem" "") -(gtk_accel_path "/Common/ToggleColorManager" "c") -; (gtk_accel_path "/Common/About" "") -; (gtk_accel_path "/JACK/JACKLatency32" "") -(gtk_accel_path "/Editor/playhead-to-edit" "Return") -; (gtk_accel_path "/options/FileHeaderFormatWAVE64" "") -(gtk_accel_path "/Editor/brush-at-mouse" "b") -; (gtk_accel_path "/RegionList/rlShowAll" "") -(gtk_accel_path "/Transport/Rewind" "leftarrow") -; (gtk_accel_path "/RegionList/SortByRegionTimestamp" "") -; (gtk_accel_path "/options/VerifyRemoveLastCapture" "") -; (gtk_accel_path "/options/OutputAutoConnectPhysical" "") -(gtk_accel_path "/Editor/step-tracks-up" "uparrow") -(gtk_accel_path "/Editor/playhead-to-next-region-start" "Tab") -; (gtk_accel_path "/options/SendMMC" "") -; (gtk_accel_path "/Editor/toggle-auto-xfades" "") -; (gtk_accel_path "/Main/AudioFileFormatHeader" "") -; (gtk_accel_path "/options/MeterHoldShort" "") -; (gtk_accel_path "/options/MeterHoldMedium" "") -(gtk_accel_path "/Editor/select-all-before-edit-cursor" "e") -; (gtk_accel_path "/Editor/Subframes80" "") -; (gtk_accel_path "/options/FileHeaderFormatCAF" "") -(gtk_accel_path "/Common/ToggleLocations" "l") -; (gtk_accel_path "/Editor/ToggleGeneric MIDISurface" "") -(gtk_accel_path "/Editor/editor-delete" "Delete") -; (gtk_accel_path "/JACK/JACKLatency256" "") -(gtk_accel_path "/Editor/select-all-between-cursors" "u") -; (gtk_accel_path "/Editor/LayerAddHigher" "") -; (gtk_accel_path "/Editor/Solo" "") -; (gtk_accel_path "/JACK/JACKLatency1024" "") -; (gtk_accel_path "/Main/ExportRangeMarkers" "") -(gtk_accel_path "/Editor/set-playhead" "p") -; (gtk_accel_path "/Editor/toggle-xfades-active" "") -; (gtk_accel_path "/Snap/snap-to-bar" "") -; (gtk_accel_path "/Editor/LayerLaterHigher" "") -; (gtk_accel_path "/redirectmenu/selectall" "") -(gtk_accel_path "/Editor/editor-copy" "c") -; (gtk_accel_path "/Snap/snap-to-quarters" "") -(gtk_accel_path "/Editor/temporal-zoom-out" "equal") -; (gtk_accel_path "/options/UseSoftwareMonitoring" "") -; (gtk_accel_path "/Editor/Subframes100" "") -(gtk_accel_path "/Editor/mute-unmute-region" "m") -; (gtk_accel_path "/options/OutputAutoConnectManual" "") -; (gtk_accel_path "/Snap/snap-to-region-sync" "") -(gtk_accel_path "/Editor/edit-cursor-to-previous-region-sync" "apostrophe") -; (gtk_accel_path "/redirectmenu/clear" "") -; (gtk_accel_path "/Editor/PullupPlus4Minus1" "") -; (gtk_accel_path "/JACK/JACKLatency512" "") -(gtk_accel_path "/Editor/edit-cursor-to-next-region-end" "bracketright") -; (gtk_accel_path "/Main/Recent" "") -; (gtk_accel_path "/redirectmenu/newplugin" "") -; (gtk_accel_path "/options/InputAutoConnectManual" "") -; (gtk_accel_path "/options/MeterHoldLong" "") -; (gtk_accel_path "/Snap/snap-to-seconds" "") diff --git a/gtk2_ardour/ardour.bindings.in b/gtk2_ardour/ardour.bindings.in new file mode 100644 index 0000000000..d8316a0147 --- /dev/null +++ b/gtk2_ardour/ardour.bindings.in @@ -0,0 +1,317 @@ +; ardour-2.0beta11.1 GtkAccelMap rc-file -*- scheme -*- +; this file is an automated accelerator map dump +; +; (gtk_accel_path "/RegionList/RegionListSort" "") +(gtk_accel_path "/Common/Quit" "q") +(gtk_accel_path "/Common/Save" "s") +; (gtk_accel_path "/Editor/Pullup" "") +; (gtk_accel_path "/Editor/zoom-to-session" "") +; (gtk_accel_path "/JACK/JACKReconnect" "") +; (gtk_accel_path "/Editor/Autoconnect" "") +; (gtk_accel_path "/Editor/Edit" "") +(gtk_accel_path "/Editor/playhead-to-previous-region-end" "comma") +; (gtk_accel_path "/redirectmenu/copy" "") +; (gtk_accel_path "/options/MeterFalloffFaster" "") +(gtk_accel_path "/Transport/ToggleRollForgetCapture" "space") +(gtk_accel_path "/Transport/Record" "r") +; (gtk_accel_path "/RegionList/SortByRegionLength" "") +; (gtk_accel_path "/options/MeterFalloffSlowest" "") +; (gtk_accel_path "/Editor/playhead-to-previous-region-sync" "") +; (gtk_accel_path "/redirectmenu/deactivate_all" "") +; (gtk_accel_path "/RegionList/SortByRegionPosition" "") +; (gtk_accel_path "/Editor/ZoomFocus" "") +; (gtk_accel_path "/options/MeterFalloffSlow" "") +; (gtk_accel_path "/RegionList/rlHide" "") +; (gtk_accel_path "/Main/Metering" "") +(gtk_accel_path "/Editor/playhead-to-next-region-end" "period") +; (gtk_accel_path "/Zoom/zoom-focus-playhead" "") +; (gtk_accel_path "/Editor/center-edit-cursor" "") +; (gtk_accel_path "/Editor/Monitoring" "") +; (gtk_accel_path "/redirectmenu/deactivate" "") +; (gtk_accel_path "/options/LatchedRecordEnable" "") +; (gtk_accel_path "/Transport/TogglePunchIn" "") +; (gtk_accel_path "/ShuttleActions/SetShuttleUnitsPercentage" "") +(gtk_accel_path "/Editor/edit-cursor-to-previous-region-start" "bracketleft") +; (gtk_accel_path "/Main/Close" "") +; (gtk_accel_path "/Main/New" "") +(gtk_accel_path "/Editor/nudge-next-backward" "KP_Subtract") +; (gtk_accel_path "/Editor/EditSelectRangeOptions" "") +; (gtk_accel_path "/Transport/ToggleTimeMaster" "") +; (gtk_accel_path "/Snap/snap-to-thirds" "") +(gtk_accel_path "/Editor/align-regions-start-relative" "a") +; (gtk_accel_path "/Main/Export" "") +(gtk_accel_path "/Editor/jump-forward-to-mark" "KP_Right") +; (gtk_accel_path "/Editor/Smpte30" "") +; (gtk_accel_path "/Editor/playhead-to-range-start" "") +; (gtk_accel_path "/Editor/Subframes" "") +; (gtk_accel_path "/Editor/Smpte2997drop" "") +; (gtk_accel_path "/Main/AddTrackBus" "") +(gtk_accel_path "/Editor/align-regions-end" "a") +; (gtk_accel_path "/JACK/JACKDisconnect" "") +; (gtk_accel_path "/options/MeterFalloffFast" "") +; (gtk_accel_path "/options/FileDataFormatFloat" "") +; (gtk_accel_path "/Snap/snap-to-region-end" "") +(gtk_accel_path "/Editor/edit-cursor-to-next-region-sync" "semicolon") +; (gtk_accel_path "/options/StopRecordingOnXrun" "") +; (gtk_accel_path "/Editor/addExternalAudioToRegionList" "") +; (gtk_accel_path "/RegionList/SortDescending" "") +; (gtk_accel_path "/options/DoNotRunPluginsWhileRecording" "") +; (gtk_accel_path "/Editor/PullupNone" "") +(gtk_accel_path "/MouseMode/set-mouse-mode-range" "r") +(gtk_accel_path "/Editor/jump-backward-to-mark" "KP_Left") +; (gtk_accel_path "/Main/AudioFileFormatData" "") +; (gtk_accel_path "/options/MeterFalloffFastest" "") +; (gtk_accel_path "/Editor/audition-at-mouse" "") +(gtk_accel_path "/Transport/Forward" "rightarrow") +; (gtk_accel_path "/Snap/snap-to-smpte-seconds" "") +; (gtk_accel_path "/Snap/snap-to-smpte-frame" "") +; (gtk_accel_path "/Main/ExportSelection" "") +; (gtk_accel_path "/options/StopPluginsWithTransport" "") +(gtk_accel_path "/Editor/editor-paste" "v") +(gtk_accel_path "/Editor/scroll-tracks-down" "Page_Down") +; (gtk_accel_path "/Snap/snap-to-smpte-minutes" "") +; (gtk_accel_path "/Main/FlushWastebasket" "") +(gtk_accel_path "/Editor/normalize-region" "n") +(gtk_accel_path "/Editor/nudge-forward" "KP_Add") +; (gtk_accel_path "/RegionList/SortByRegionEndinFile" "") +; (gtk_accel_path "/Editor/ToggleMeasureVisibility" "") +; (gtk_accel_path "/Zoom/zoom-focus-center" "") +(gtk_accel_path "/Editor/nudge-backward" "KP_Subtract") +; (gtk_accel_path "/options/LatchedSolo" "") +; (gtk_accel_path "/options/MeterHoldOff" "") +; (gtk_accel_path "/options/OutputAutoConnectMaster" "") +; (gtk_accel_path "/JACK/JACKLatency64" "") +(gtk_accel_path "/Editor/undo" "z") +(gtk_accel_path "/Editor/insert-region" "i") +; (gtk_accel_path "/Editor/center-playhead" "") +(gtk_accel_path "/Editor/edit-cursor-to-next-region-start" "bracketright") +; (gtk_accel_path "/Snap/snap-to-region-start" "") +; (gtk_accel_path "/Editor/View" "") +; (gtk_accel_path "/Editor/Layering" "") +; (gtk_accel_path "/JACK/JACKLatency4096" "") +(gtk_accel_path "/Editor/scroll-tracks-up" "Page_Up") +(gtk_accel_path "/Editor/set-edit-cursor" "e") +; (gtk_accel_path "/Editor/Smpte30drop" "") +; (gtk_accel_path "/Zoom/zoom-focus-edit" "") +(gtk_accel_path "/Editor/playhead-to-previous-region-start" "comma") +; (gtk_accel_path "/Editor/EditCursorMovementOptions" "") +; (gtk_accel_path "/redirectmenu/activate_all" "") +; (gtk_accel_path "/Editor/addExternalAudioAsTapeTrack" "") +; (gtk_accel_path "/redirectmenu/paste" "") +; (gtk_accel_path "/Editor/Smpte25" "") +; (gtk_accel_path "/options/RegionEquivalentsOverlap" "") +; (gtk_accel_path "/Main/MeteringFallOffRate" "") +; (gtk_accel_path "/options/UseHardwareMonitoring" "") +; (gtk_accel_path "/Editor/Smpte24" "") +; (gtk_accel_path "/Snap/snap-to-mark" "") +; (gtk_accel_path "/Editor/CrossfadesShort" "") +; (gtk_accel_path "/Editor/Smpte5994" "") +; (gtk_accel_path "/JACK/JACKLatency8192" "") +(gtk_accel_path "/Editor/step-tracks-down" "downarrow") +; (gtk_accel_path "/Editor/toggle-xfades-visible" "") +(gtk_accel_path "/Editor/extend-range-to-end-of-region" "rightanglebracket") +(gtk_accel_path "/Editor/scroll-backward" "leftarrow") +(gtk_accel_path "/Editor/start-range" "KP_Down") +; (gtk_accel_path "/ShuttleActions/SetShuttleUnitsSemitones" "") +; (gtk_accel_path "/JACK/JACKLatency128" "") +; (gtk_accel_path "/Snap/snap-to-beat" "") +; (gtk_accel_path "/Editor/RegionEditOps" "") +; (gtk_accel_path "/Editor/snap-magnetic" "") +; (gtk_accel_path "/Editor/playhead-to-range-end" "") +(gtk_accel_path "/Editor/scroll-playhead-forward" "rightarrow") +(gtk_accel_path "/Editor/align-regions-sync-relative" "a") +; (gtk_accel_path "/Editor/EditSelectRegionOptions" "") +(gtk_accel_path "/Editor/crop" "c") +; (gtk_accel_path "/redirectmenu/newsend" "") +; (gtk_accel_path "/Editor/ToggleGeneric MIDISurfaceSubMenu" "") +; (gtk_accel_path "/Editor/MeterFalloff" "") +; (gtk_accel_path "/RegionList/rlRemove" "") +(gtk_accel_path "/Transport/GotoStart" "Home") +(gtk_accel_path "/Editor/scroll-playhead-backward" "leftarrow") +(gtk_accel_path "/Editor/split-region" "s") +; (gtk_accel_path "/Transport/ToggleAutoInput" "") +; (gtk_accel_path "/Snap/snap-to-thirtyseconds" "") +; (gtk_accel_path "/Snap/snap-to-minutes" "") +(gtk_accel_path "/Editor/align-regions-sync" "a") +; (gtk_accel_path "/Main/Windows" "") +; (gtk_accel_path "/Main/CleanupUnused" "") +; (gtk_accel_path "/redirectmenu/deselectall" "") +; (gtk_accel_path "/options/SoloViaBus" "") +(gtk_accel_path "/MouseMode/set-mouse-mode-zoom" "z") +; (gtk_accel_path "/RegionList/rlAudition" "") +(gtk_accel_path "/Editor/set-region-sync-position" "v") +; (gtk_accel_path "/Editor/PullupPlus4Plus1" "") +; (gtk_accel_path "/Snap/snap-to-region-boundary" "") +; (gtk_accel_path "/JACK/JACK" "") +(gtk_accel_path "/Editor/editor-cut" "x") +; (gtk_accel_path "/RegionList/SortAscending" "") +; (gtk_accel_path "/Main/Help" "") +; (gtk_accel_path "/options/UseExternalMonitoring" "") +; (gtk_accel_path "/Editor/Smpte23976" "") +(gtk_accel_path "/Common/goto-editor" "e") +(gtk_accel_path "/Editor/select-all" "a") +(gtk_accel_path "/Editor/nudge-next-forward" "KP_Add") +; (gtk_accel_path "/options/ShowSoloMutes" "") +; (gtk_accel_path "/Snap/snap-to-eighths" "") +(gtk_accel_path "/Editor/select-all-after-playhead" "p") +(gtk_accel_path "/Common/ToggleMaximalEditor" "F11") +; (gtk_accel_path "/RegionList/SortBySourceFileLength" "") +; (gtk_accel_path "/Editor/Timecode" "") +; (gtk_accel_path "/Transport/PlaySelection" "") +; (gtk_accel_path "/Editor/PullupMinus4Minus1" "") +(gtk_accel_path "/Editor/select-all-after-edit-cursor" "e") +; (gtk_accel_path "/RegionList/SortBySourceFileName" "") +(gtk_accel_path "/Editor/finish-range" "KP_Up") +(gtk_accel_path "/Transport/Loop" "l") +; (gtk_accel_path "/Editor/CrossfadesFull" "") +(gtk_accel_path "/Editor/finish-add-range" "KP_Up") +; (gtk_accel_path "/Transport/ToggleClick" "") +; (gtk_accel_path "/options/SendMTC" "") +; (gtk_accel_path "/Transport/TogglePunchOut" "") +(gtk_accel_path "/Editor/select-all-in-loop-range" "l") +(gtk_accel_path "/Editor/show-editor-mixer" "e") +; (gtk_accel_path "/options/SoloInPlace" "") +; (gtk_accel_path "/Main/Options" "") +; (gtk_accel_path "/options/MeterFalloffMedium" "") +(gtk_accel_path "/Editor/toggle-follow-playhead" "f") +; (gtk_accel_path "/Main/SaveTemplate" "") +(gtk_accel_path "/Transport/TransitionToRoll" "uparrow") +; (gtk_accel_path "/RegionList/SortByRegionStartinFile" "") +; (gtk_accel_path "/options/GainReduceFastTransport" "") +; (gtk_accel_path "/Common/ToggleInspector" "") +; (gtk_accel_path "/Transport/ToggleAutoPlay" "") +; (gtk_accel_path "/Editor/playhead-to-next-region-sync" "") +(gtk_accel_path "/Editor/edit-to-playhead" "Return") +; (gtk_accel_path "/Editor/LayerMoveAddHigher" "") +; (gtk_accel_path "/Editor/Smpte60" "") +; (gtk_accel_path "/Main/Open" "") +(gtk_accel_path "/Editor/scroll-forward" "rightarrow") +; (gtk_accel_path "/Zoom/zoom-focus-left" "") +; (gtk_accel_path "/Main/TransportOptions" "") +; (gtk_accel_path "/Main/ControlSurfaces" "") +; (gtk_accel_path "/options/FileHeaderFormatBWF" "") +; (gtk_accel_path "/Transport/ToggleAutoReturn" "") +; (gtk_accel_path "/Editor/Smpte2997" "") +; (gtk_accel_path "/Editor/ToggleWaveformVisibility" "") +(gtk_accel_path "/Editor/redo" "r") +; (gtk_accel_path "/Editor/addExternalAudioAsRegion" "") +; (gtk_accel_path "/Main/ExportSession" "") +; (gtk_accel_path "/options/InputAutoConnectPhysical" "") +; (gtk_accel_path "/Snap/snap-to-edit-cursor" "") +(gtk_accel_path "/Editor/temporal-zoom-in" "minus") +; (gtk_accel_path "/JACK/Latency" "") +(gtk_accel_path "/Editor/edit-cursor-to-range-end" "F2") +; (gtk_accel_path "/redirectmenu/rename" "") +; (gtk_accel_path "/RegionList/rlShowAuto" "") +(gtk_accel_path "/Editor/select-all-before-playhead" "p") +; (gtk_accel_path "/Editor/addExistingAudioFiles" "") +; (gtk_accel_path "/Main/Session" "") +(gtk_accel_path "/Editor/edit-cursor-to-range-start" "F1") +; (gtk_accel_path "/Main/AudioFileFormat" "") +; (gtk_accel_path "/Transport/Transport" "") +(gtk_accel_path "/MouseMode/set-mouse-mode-timefx" "t") +; (gtk_accel_path "/RegionList/SortByRegionName" "") +; (gtk_accel_path "/Main/KeyMouse Actions" "") +(gtk_accel_path "/MouseMode/set-mouse-mode-gain" "g") +; (gtk_accel_path "/Snap/snap-to-frame" "") +; (gtk_accel_path "/Editor/SnapTo" "") +(gtk_accel_path "/Transport/TransitionToReverse" "downarrow") +; (gtk_accel_path "/Editor/Crossfades" "") +; (gtk_accel_path "/Editor/PullupPlus4" "") +(gtk_accel_path "/Editor/add-location-from-playhead" "KP_Enter") +(gtk_accel_path "/Editor/edit-cursor-to-previous-region-end" "bracketleft") +; (gtk_accel_path "/Main/MeteringHoldTime" "") +; (gtk_accel_path "/Editor/PullupPlus1" "") +; (gtk_accel_path "/Editor/Smpte24976" "") +; (gtk_accel_path "/options/FileDataFormat24bit" "") +; (gtk_accel_path "/Editor/SnapMode" "") +(gtk_accel_path "/Common/ToggleOptionsEditor" "o") +; (gtk_accel_path "/Editor/PullupMinus4" "") +(gtk_accel_path "/Common/goto-mixer" "m") +; (gtk_accel_path "/Editor/addExternalAudioToTrack" "") +; (gtk_accel_path "/RegionList/SortBySourceFileCreationDate" "") +; (gtk_accel_path "/redirectmenu/activate" "") +(gtk_accel_path "/Editor/extend-range-to-start-of-region" "leftanglebracket") +; (gtk_accel_path "/Editor/PullupMinus1" "") +; (gtk_accel_path "/Editor/snap-normal" "") +; (gtk_accel_path "/Editor/addExternalAudioAsTrack" "") +(gtk_accel_path "/Common/ToggleBigClock" "b") +; (gtk_accel_path "/Snap/snap-to-asixteenthbeat" "") +(gtk_accel_path "/Editor/select-all-in-punch-range" "d") +; (gtk_accel_path "/redirectmenu/edit" "") +(gtk_accel_path "/Editor/duplicate-region" "d") +; (gtk_accel_path "/JACK/JACKLatency2048" "") +; (gtk_accel_path "/Editor/ToggleWaveformsWhileRecording" "") +; (gtk_accel_path "/Zoom/zoom-focus-right" "") +(gtk_accel_path "/Editor/remove-last-capture" "Delete") +; (gtk_accel_path "/options/FileHeaderFormatWAVE" "") +(gtk_accel_path "/Transport/GotoZero" "KP_Insert") +(gtk_accel_path "/Transport/GotoEnd" "End") +; (gtk_accel_path "/redirectmenu/cut" "") +; (gtk_accel_path "/redirectmenu/newinsert" "") +; (gtk_accel_path "/options/UseMMC" "") +; (gtk_accel_path "/options/MeterFalloffOff" "") +(gtk_accel_path "/MouseMode/set-mouse-mode-object" "o") +; (gtk_accel_path "/Editor/PullupMinus4Plus1" "") +; (gtk_accel_path "/Editor/MeterHold" "") +; (gtk_accel_path "/Snap/snap-to-cd-frame" "") +; (gtk_accel_path "/options/StopTransportAtEndOfSession" "") +; (gtk_accel_path "/Main/Cleanup" "") +; (gtk_accel_path "/Main/Snapshot" "") +; (gtk_accel_path "/Transport/ToggleVideoSync" "") +(gtk_accel_path "/Transport/ToggleRoll" "space") +; (gtk_accel_path "/RegionList/SortBySourceFilesystem" "") +(gtk_accel_path "/Common/ToggleColorManager" "c") +; (gtk_accel_path "/Common/About" "") +; (gtk_accel_path "/JACK/JACKLatency32" "") +(gtk_accel_path "/Editor/playhead-to-edit" "Return") +; (gtk_accel_path "/options/FileHeaderFormatWAVE64" "") +(gtk_accel_path "/Editor/brush-at-mouse" "b") +; (gtk_accel_path "/RegionList/rlShowAll" "") +(gtk_accel_path "/Transport/Rewind" "leftarrow") +; (gtk_accel_path "/RegionList/SortByRegionTimestamp" "") +; (gtk_accel_path "/options/VerifyRemoveLastCapture" "") +; (gtk_accel_path "/options/OutputAutoConnectPhysical" "") +(gtk_accel_path "/Editor/step-tracks-up" "uparrow") +(gtk_accel_path "/Editor/playhead-to-next-region-start" "period") +; (gtk_accel_path "/options/SendMMC" "") +; (gtk_accel_path "/Editor/toggle-auto-xfades" "") +; (gtk_accel_path "/Main/AudioFileFormatHeader" "") +; (gtk_accel_path "/options/MeterHoldShort" "") +; (gtk_accel_path "/options/MeterHoldMedium" "") +(gtk_accel_path "/Editor/select-all-before-edit-cursor" "e") +; (gtk_accel_path "/Editor/Subframes80" "") +; (gtk_accel_path "/options/FileHeaderFormatCAF" "") +(gtk_accel_path "/Common/ToggleLocations" "l") +; (gtk_accel_path "/Editor/ToggleGeneric MIDISurface" "") +(gtk_accel_path "/Editor/editor-delete" "Delete") +; (gtk_accel_path "/JACK/JACKLatency256" "") +(gtk_accel_path "/Editor/select-all-between-cursors" "u") +; (gtk_accel_path "/Editor/LayerAddHigher" "") +; (gtk_accel_path "/Editor/Solo" "") +; (gtk_accel_path "/JACK/JACKLatency1024" "") +; (gtk_accel_path "/Main/ExportRangeMarkers" "") +(gtk_accel_path "/Editor/set-playhead" "p") +; (gtk_accel_path "/Editor/toggle-xfades-active" "") +; (gtk_accel_path "/Snap/snap-to-bar" "") +; (gtk_accel_path "/Editor/LayerLaterHigher" "") +; (gtk_accel_path "/redirectmenu/selectall" "") +(gtk_accel_path "/Editor/editor-copy" "c") +; (gtk_accel_path "/Snap/snap-to-quarters" "") +(gtk_accel_path "/Editor/temporal-zoom-out" "equal") +; (gtk_accel_path "/options/UseSoftwareMonitoring" "") +; (gtk_accel_path "/Editor/Subframes100" "") +(gtk_accel_path "/Editor/mute-unmute-region" "m") +; (gtk_accel_path "/options/OutputAutoConnectManual" "") +; (gtk_accel_path "/Snap/snap-to-region-sync" "") +(gtk_accel_path "/Editor/edit-cursor-to-previous-region-sync" "apostrophe") +; (gtk_accel_path "/redirectmenu/clear" "") +; (gtk_accel_path "/Editor/ToggleGeneric MIDISurfaceFeedback" "") +; (gtk_accel_path "/Editor/PullupPlus4Minus1" "") +; (gtk_accel_path "/JACK/JACKLatency512" "") +(gtk_accel_path "/Editor/edit-cursor-to-next-region-end" "bracketright") +; (gtk_accel_path "/Main/Recent" "") +; (gtk_accel_path "/redirectmenu/newplugin" "") +; (gtk_accel_path "/options/InputAutoConnectManual" "") +; (gtk_accel_path "/options/MeterHoldLong" "") +; (gtk_accel_path "/Snap/snap-to-seconds" "") diff --git a/gtk2_ardour/ardour.colors b/gtk2_ardour/ardour.colors index 456859162f..9cf1ad359f 100644 --- a/gtk2_ardour/ardour.colors +++ b/gtk2_ardour/ardour.colors @@ -101,3 +101,6 @@ cTrimHandleLockedStart 0.92 0.06 0.06 0.16 cTrimHandleLockedEnd 0.92 0.06 0.06 0.16 cTrimHandleStart 0.10 0.00 1.00 0.27 cTrimHandleEnd 0.10 0.00 1.00 0.27 +cEditCursor 0.00 0.00 1.00 1.00 +cPlayHead 1.00 0.00 0.00 1.00 + diff --git a/gtk2_ardour/ardour.menus b/gtk2_ardour/ardour.menus index 040c6464c1..f24d5280ea 100644 --- a/gtk2_ardour/ardour.menus +++ b/gtk2_ardour/ardour.menus @@ -291,8 +291,12 @@ - - + + + + + + @@ -318,6 +322,7 @@ + @@ -337,6 +342,7 @@ + diff --git a/gtk2_ardour/ardour2_ui.rc b/gtk2_ardour/ardour2_ui.rc index 7d03368076..b008a4cd17 100644 --- a/gtk2_ardour/ardour2_ui.rc +++ b/gtk2_ardour/ardour2_ui.rc @@ -80,7 +80,7 @@ style "marker_text" style "time_axis_view_item_name" { - font_name = "sans 6" + font_name = "sans 9" } style "default_base" = "medium_text" @@ -185,24 +185,58 @@ style "small_red_active_and_selected_button" = "small_button" bg[SELECTED] = { 1.0, 0, 0} } +style "gain_fader" +{ + bg[NORMAL] = { 0.269, 0.269, 0.300} + bg[ACTIVE] = { 0.152, 0.152, 0.168 } +} + + style "track_rec_enable_button" = "small_button" +{ +} + +style "track_rec_enable_button_active" = "small_button" { fg[SELECTED] = { 0.0, 0.0, 0.0 } fg[ACTIVE] = { 0.0, 0.0, 0.0 } fg[PRELIGHT] = { 0.0, 0.0, 0.0 } + fg[NORMAL] = { 0.0, 0.0, 0.0 } + bg[NORMAL] = { 1.0, 0.0, 0.0 } + bg[ACTIVE] = { 1.0, 0.0, 0.0 } bg[SELECTED] = { 1.0, 0.0, 0.0 } - bg[ACTIVE] = { 0.91, 0.68, 0.68} bg[PRELIGHT] = { 1.0, 0.0, 0.0 } } -style "gain_fader" +style "track_rec_enable_button_alternate" = "small_button" { - bg[NORMAL] = { 0.269, 0.269, 0.300} - bg[ACTIVE] = { 0.152, 0.152, 0.168 } + fg[SELECTED] = { 0.0, 0.0, 0.0 } + fg[ACTIVE] = { 0.0, 0.0, 0.0 } + fg[PRELIGHT] = { 0.0, 0.0, 0.0 } + fg[NORMAL] = { 0.0, 0.0, 0.0 } + + bg[NORMAL] = { 0.91, 0.68, 0.68} + bg[ACTIVE] = { 0.91, 0.68, 0.68} + bg[SELECTED] = { 0.91, 0.68, 0.68} + bg[PRELIGHT] = { 0.91, 0.68, 0.68} +} + +style "mixer_track_rec_enable_button" = "track_rec_enable_button" +{ + font_name = "sans 7" + xthickness = 0 + ythickness = 0 } -style "mixer_rec_enable_button" = "track_rec_enable_button" +style "mixer_track_rec_enable_button_alternate" = "track_rec_enable_button_alternate" +{ + font_name = "sans 7" + xthickness = 0 + ythickness = 0 +} + +style "mixer_track_rec_enable_button_active" = "track_rec_enable_button_active" { font_name = "sans 7" xthickness = 0 @@ -211,20 +245,33 @@ style "mixer_rec_enable_button" = "track_rec_enable_button" style "solo_button" = "small_button" { - bg[PRELIGHT] = { 0, 1.0, 0 } - bg[ACTIVE] = { 0.66, 0.97, 0.19 } +} + +style "solo_button_alternate" = "small_button" +{ + bg[NORMAL] = { 0.19, 0.97, 0.69 } # solo-safe + bg[ACTIVE] = { 0.19, 0.97, 0.69 } # solo-safe + bg[SELECTED] = { 0.19, 0.97, 0.69 } # solo-safe + bg[PRELIGHT] = { 0.19, 0.97, 0.69 } # solo-safe - fg[PRELIGHT] = { 0, 0, 0 } fg[ACTIVE] = { 0, 0, 0 } + fg[SELECTED] = { 0, 0, 0 } + fg[NORMAL] = { 0, 0, 0 } + fg[PRELIGHT] = { 0, 0, 0 } } -style "safe_solo_button" = "small_button" + +style "solo_button_active" = "small_button" { - bg[PRELIGHT] = { 0, 1.0, 0 } - bg[ACTIVE] = { 0.19, 0.97, 0.69 } + bg[NORMAL] = { 0.66, 0.97, 0.19 } # solo + bg[ACTIVE] = { 0.66, 0.97, 0.19 } # solo + bg[SELECTED] = { 0.66, 0.97, 0.19 } # solo + bg[PRELIGHT] = { 0.66, 0.97, 0.19 } # solo - fg[PRELIGHT] = { 0, 0, 0 } fg[ACTIVE] = { 0, 0, 0 } + fg[SELECTED] = { 0, 0, 0 } + fg[NORMAL] = { 0, 0, 0 } + fg[PRELIGHT] = { 0, 0, 0 } } style "mixer_solo_button" = "solo_button" @@ -232,27 +279,72 @@ style "mixer_solo_button" = "solo_button" font_name = "sans 7" xthickness = 0 ythickness = 0 - } -style "mixer_safe_solo_button" = "safe_solo_button" +style "mixer_solo_button_alternate" = "solo_button_alternate" +{ + font_name = "sans 7" + xthickness = 0 + ythickness = 0 +} +style "mixer_solo_button_active" = "solo_button_active" { font_name = "sans 7" xthickness = 0 ythickness = 0 - } style "mute_button" = "small_button" { - bg[PRELIGHT] = { 1.0, 0.65, 0.13 } +} + +style "mute_button_alternate" = "small_button" +{ bg[ACTIVE] = { 1.0, 0.98, 0.53 } - + bg[NORMAL] = { 1.0, 0.98, 0.53 } + bg[SELECTED] = { 1.0, 0.98, 0.53 } + bg[PRELIGHT] = { 1.0, 0.98, 0.53 } + + fg[SELECTED] = { 0, 0, 0 } + fg[ACTIVE] = { 0, 0, 0 } + fg[NORMAL] = { 0, 0, 0 } fg[PRELIGHT] = { 0, 0, 0 } +} + +style "mute_button_active" = "small_button" +{ + bg[NORMAL] = { 0.90, 0.89, 0.73 } + bg[ACTIVE] = { 0.90, 0.89, 0.73 } + bg[PRELIGHT] = { 0.90, 0.89, 0.73 } + bg[SELECTED] = { 0.90, 0.89, 0.73 } + + fg[SELECTED] = { 0, 0, 0 } fg[ACTIVE] = { 0, 0, 0 } + fg[NORMAL] = { 0, 0, 0 } + fg[PRELIGHT] = { 0, 0, 0 } } +style "mixer_mute_button" = "mute_button" +{ + font_name = "sans 7" + xthickness = 0 + ythickness = 0 +} + +style "mixer_mute_button_alternate" = "mute_button_alternate" +{ + font_name = "sans 7" + xthickness = 0 + ythickness = 0 +} + +style "mixer_mute_button_active" = "mute_button_active" +{ + font_name = "sans 7" + xthickness = 0 + ythickness = 0 +} style "multiline_combo" = "small_button" { @@ -291,14 +383,39 @@ style "time_button" = "default_buttons_menus" style "transport_button" { +} + +style "transport_button_active" +{ + bg[NORMAL] = { 0.50, 1.0, 0.50 } bg[ACTIVE] = { 0.50, 1.0, 0.50 } + bg[SELECTED] = { 0.50, 1.0, 0.50 } + bg[PRELIGHT] = { 0.50, 1.0, 0.50 } + + fg[NORMAL] = { 0, 0, 0 } + fg[PRELIGHT] = { 0, 0, 0 } + fg[SELECTED] = { 0, 0, 0 } fg[ACTIVE] = { 0, 0, 0 } } style "transport_rec_button" +{ +} + +style "transport_rec_button_active" { bg[ACTIVE] = { 1.0, 0, 0 } - bg[PRELIGHT] = { 0.91, 0.68, 0.68 } #blinking rec button color + bg[NORMAL] = { 1.0, 0, 0 } + bg[SELECTED] = { 1.0, 0, 0 } + bg[PRELIGHT] = { 1.0, 0, 0 } +} + +style "transport_rec_button_alternate" +{ + bg[PRELIGHT] = { 0.91, 0.68, 0.68 } + bg[NORMAL] = { 0.91, 0.68, 0.68 } + bg[SELECTED] = { 0.91, 0.68, 0.68 } + bg[ACTIVE] = { 0.91, 0.68, 0.68 } } style "shuttle_control" = "very_small_text" @@ -1034,361 +1151,366 @@ style "ardour_button" ="default_buttons_menus" } #--------------------------------------------------------------- -widget "*FirstActionMessage" style "first_action_message" -widget "*VerboseCanvasCursor" style "verbose_canvas_cursor" -widget "*MarkerText" style "marker_text" -widget "*TimeAxisViewItemName*" style "time_axis_view_item_name" -#widget "*ExportProgress" style "default_buttons_menus" -widget "*ExportFileLabel" style "small_bold_text" -widget "*ExportFormatLabel" style "medium_bold_text" -widget "*ExportHeader" style "small_bold_text" -widget "*ExportFileDisplay" style "medium_entry" -widget "*ExportFormatDisplay" style "medium_entry" -widget "*ExportCheckbox" style "small_entry" -widget "*ExportTrackSelector*" style "medium_entry_noselection_bg" -widget "*ArdourContextMenu*" style "default_buttons_menus" -widget "*EditGroupTitleButton*" style "default_buttons_menus" -widget "*MixerGroupTitleButton*" style "default_buttons_menus" -widget "*ErrorLogCloseButton" style "default_buttons_menus" -widget "*EditorGTKButton*" style "default_buttons_menus" -widget "*ToolbarButton" style "default_buttons_menus" -widget "*ToolbarButton*" style "default_buttons_menus" -widget "*CrossfadeEditButton" style "default_buttons_menus" -widget "*CrossfadeEditButton*" style "default_buttons_menus" -widget "*TrackHistoryButton*" style "default_buttons_menus" -widget "*TrackSizeButton*" style "default_buttons_menus" -widget "*TrackPlaylistButton*" style "default_buttons_menus" -widget "*TrackAutomationButton*" style "default_buttons_menus" -widget "*TrackGroupButton*" style "default_buttons_menus" -widget "*TrackMixButton*" style "default_buttons_menus" -widget "*TrackVisualButton*" style "default_buttons_menus" -widget "*TrackRemoveButton*" style "default_buttons_menus" -widget "*BaseButton" style "default_buttons_menus" -widget "*TakeButtonLabel" style "default_buttons_menus" -widget "*MixerWidthButton" style "default_buttons_menus" -widget "*MixerHideButton" style "default_buttons_menus" -widget "*MixerSendButton" style "default_buttons_menus" -widget "*MixerSendButtonLabel" style "default_buttons_menus" -widget "*MixerSendSwitch" style "default_buttons_menus" -widget "*MixerInsertButton" style "default_buttons_menus" -widget "*MixerInsertButtonLabel" style "default_buttons_menus" -widget "*MixerInsertSwitch" style "default_buttons_menus" -widget "*MixerMonitorInputButton*" style "very_small_button" -widget "*MixerMonitorInputButton.*" style "very_small_button" -widget "*MixerIOButton" style "very_small_button" -widget "*MixerIOButtonLabel" style "very_small_button" -widget "*AddRouteDialogSpinner" style "ardour_adjusters" -widget "*AddRouteDialogRadioButton*" style "options_window" -widget "*OptionsNotebook" style "options_window" -widget "*OptionEditorToggleButton*" style "options_window" -widget "*OptionsLabel" style "options_window" -widget "*OptionEditorAuditionerLabel" style "options_window" -widget "*OptionsEntry" style "option_entry" -widget "*InspectorNotebook" style "options_window" -widget "*NewSessionDialog" style "options_window" -widget "*NewSessionDialogButton*" style "options_window" -widget "*MixerSendSwitch*" style "very_small_red_active_and_selected_button" -widget "*OptionEditorToggleButton" style "small_red_active_and_selected_button" -widget "*NewSessionDialogButton" style "small_red_active_and_selected_button" -widget "*MixerRecordEnableButton" style "mixer_rec_enable_button" -widget "*MixerRecordEnableButton*" style "mixer_rec_enable_button" -widget "*TrackRecordEnableButton" style "track_rec_enable_button" -widget "*TrackRecordEnableButton*" style "track_rec_enable_button" -widget "*TrackMuteButton*" style "mute_button" -widget "*TrackLoopButton*" style "track_loop_button" -widget "*PanAutomationLineSelector*" style "multiline_combo" -widget "*EditorTimeButton*" style "time_button" -widget "*EditorMixerButton*" style "default_buttons_menus" -widget "*SoloButton*" style "solo_button" -widget "*SoloButton.*" style "solo_button" -widget "*SafeSoloButton*" style "safe_solo_button" -widget "*SafeSoloButton.*" style "safe_solo_button" -widget "*MixerPhaseInvertButton*" style "very_small_button" -widget "*MixerPhaseInvertButton.*" style "very_small_button" -widget "*MixerAutomationRecordingButton*" style "very_small_button" -widget "*MixerAutomationRecordingButton.*" style "very_small_button" -widget "*MixerAutomationModeButton*" style "very_small_button" -widget "*MixerAutomationModeButton.*" style "very_small_button" -widget "*MixerAutomationPlaybackButton*" style "very_small_button" -widget "*MixerAutomationPlaybackButton.*" style "very_small_button" -widget "*MixerMuteButton*" style "mixer_mute_button" -widget "*MixerMuteButton.*" style "mixer_mute_button" -widget "*MixerSoloButton*" style "mixer_solo_button" -widget "*MixerSoloButton.*" style "mixer_solo_button" -widget "*MixerNameButton" style "very_small_button" -widget "*MixerNameButtonLabel" style "very_small_button" -widget "*MixerGroupButton" style "very_small_button" -widget "*MixerGroupButtonLabel" style "very_small_button" -widget "*MixerCommentButton" style "very_small_button" -widget "*MixerCommentButton*" style "very_small_button" -widget "*EditGroupButton" style "very_small_button" -widget "*EditGroupButtonLabel" style "very_small_button" -widget "*TransportButton" style "transport_button" -widget "*TransportButton*" style "transport_button" -widget "*ShuttleButton" style "transport_button" -widget "*ShuttleButton*" style "transport_button" -widget "*ShuttleDisplay" style "transport_button" -widget "*ShuttleDisplay*" style "transport_button" -widget "*ShuttleControl" style "shuttle_control" -widget "*TransportRecButton" style "transport_rec_button" -widget "*TransportRecButton*" style "transport_rec_button" -widget "*RecordingXrunWarningWindow" style "xrun_warn" -widget "*RecordingXrunWarningWindow*" style "xrun_warn" -/*widget "*MainMenuBar" style "menu_bar_base"*/ -widget "*ErrorMessage" style "error_message" -widget "*FatalMessage" style "fatal_message" -widget "*InfoMessage" style "info_message" -widget "*WarningMessage" style "warning_message" -widget "*BigClockNonRecording" style "non_recording_big_clock_display" -widget "*BigClockRecording" style "recording_big_clock_display" -widget "*TransportClockDisplay" style "transport_clock_display" -widget "*SecondaryClockDisplay" style "transport_clock_display" -widget "*AudioClockFramesUpperInfo" style "tempo_meter_clock_display" -widget "*AudioClockFramesLowerInfo" style "tempo_meter_clock_display" -widget "*AudioClockSMPTEUpperInfo" style "tempo_meter_clock_display" -widget "*AudioClockSMPTELowerInfo" style "tempo_meter_clock_display" -widget "*AudioClockBBTUpperInfo" style "tempo_meter_clock_display" -widget "*AudioClockBBTLowerInfo" style "tempo_meter_clock_display" -widget "*SelectionStartClock" style "default_clock_display" -widget "*SelectionEndClock" style "default_clock_display" -widget "*EditCursorClock" style "default_clock_display" -widget "*PreRollClock" style "default_clock_display" -widget "*PostRollClock" style "default_clock_display" -widget "*NudgeClock" style "default_clock_display" -widget "*ZoomRangeClock" style "default_clock_display" -widget "*SMPTEOffsetClock" style "default_clock_display" -widget "*TransportLabel" style "small_bold_text" -widget "*TakeLabel" style "small_bold_text" -widget "*LocationLabel" style "small_bold_text" -widget "*WipeLabel" style "small_bold_text" -widget "*TakeTagLabel" style "small_bold_text" -widget "*ToolBarLabel" style "small_bold_text" -widget "*EditorDisplayLabel" style "small_bold_text" -widget "*NewSessionLabel" style "large_text" -widget "*GlobalButtonLabel" style "default_buttons_menus" -widget "*ClickButton" style "medium_entry" -widget "*RegionNameDisplay" style "medium_entry" -widget "*PluginDisplay" style "medium_entry" -widget "*SelectionDisplay" style "medium_entry" -widget "*HistorySelector" style "medium_entry" -widget "*LocationSelector" style "medium_entry" -widget "*TakeSelector" style "medium_entry" -widget "*RegionSelector" style "medium_entry" -widget "*SMPTERuler" style "editor_time_ruler" -widget "*BBTRuler" style "editor_time_ruler" -widget "*FramesRuler" style "editor_time_ruler" -widget "*MinSecRuler" style "editor_time_ruler" -widget "*BaseFrame" style "base_frame" -widget "*AudioBusControlsBaseUnselected" style "audio_bus_base" -widget "*AudioBusControlsBaseInactiveUnselected" style "track_controls_inactive" -widget "*AudioBusControlsBaseInactiveSelected" style "track_controls_inactive" -widget "*AudioBusControlsBaseSelected" style "edit_controls_base_selected" -widget "*AudioTimeAxisViewControlsBaseUnselected" style "audio_track_base" -widget "*AudioTrackStripBase" style "audio_track_base" -widget "*AudioTrackControlsBaseUnselected" style "audio_track_base" -widget "*AudioTrackFader" style "gain_fader" -widget "*AudioBusStripBase" style "audio_bus_base" -widget "*AudioBusFader" style "gain_fader" -widget "*MidiBusControlsBaseUnselected" style "midi_bus_base" -widget "*MidiBusControlsBaseInactiveUnselected" style "track_controls_inactive" -widget "*MidiBusControlsBaseInactiveSelected" style "track_controls_inactive" -widget "*MidiBusControlsBaseSelected" style "edit_controls_base_selected" -widget "*MidiTimeAxisViewControlsBaseUnselected" style "midi_track_base" -widget "*MidiTrackStripBase" style "midi_track_base" -widget "*MidiTrackControlsBaseUnselected" style "midi_track_base" -widget "*MidiTrackFader" style "midi_track_base" -widget "*MidiBusStripBase" style "midi_bus_base" -widget "*MidiBusFader" style "midi_bus_base" -widget "*TrackSeparator" style "track_separator" -widget "*TrackEditIndicator0*" style "edit_group_0" -widget "*TrackEditIndicator1*" style "edit_group_1" -widget "*TrackEditIndicator2*" style "edit_group_2" -widget "*TrackEditIndicator3*" style "edit_group_3" -widget "*TrackEditIndicator4*" style "edit_group_3" -widget "*TrackEditIndicator5*" style "edit_group_3" -widget "*TrackEditIndicator6*" style "edit_group_3" -widget "*TrackEditIndicator7*" style "edit_group_3" -widget "*EditorTrackNameDisplay" style "track_name_display" -widget "*EditorTrackNameDisplay*" style "track_name_display" -widget "*EditorActiveTrackNameDisplay" style "active_track_name_display" -widget "*EditorActiveTrackNameDisplay*" style "active_track_name_display" -widget "*CrossfadeEditAuditionButton" style "red_when_active" -widget "*CrossfadeEditAuditionButton*" style "red_when_active" -widget "*CrossfadeEditCurveButton" style "red_when_active" -widget "*CrossfadeEditCurveButton*" style "red_when_active" -widget "*CrossfadeEditLabel" style "medium_text" -widget "*CrossfadeEditFrame" style "base_frame" -widget "*MouseModeButton" style "default_buttons_menus" -widget "*MouseModeButton*" style "default_buttons_menus" -widget "*EditorMainCanvas" style "main_canvas_area" -widget "*AudioTrackControlsBaseInactiveUnselected" style "track_controls_inactive" -widget "*AutomationTrackControlsBaseInactiveUnselected" style "track_controls_inactive" -widget "*AutomationTrackName" style "automation_track_name" -widget "*AudioTrackControlsBaseInactiveSelected" style "track_controls_inactive" -widget "*AutomationTrackControlsBaseInactiveSelected" style "track_controls_inactive" -widget "*AudioTrackStripBaseInactive" style "track_controls_inactive" -widget "*AudioBusStripBaseInactive" style "track_controls_inactive" -widget "*AudioTrackControlsBaseSelected" style "edit_controls_base_selected" -widget "*AutomationTrackControlsBase" style "automation_track_controls_base" -widget "*AutomationTrackControlsBaseSelected" style "edit_controls_base_selected" -/*widget "*EditorMenuBar*" style "black_mackie_menu_bar" -widget "*MainMenuBar*" style "black_mackie_menu_bar"*/ -widget "*ZoomClickBox" style "medium_bold_entry" -widget "*PluginParameterLabel" style "medium_text" -widget "*PluginNameInfo" style "plugin_name_text" -widget "*PluginMakerInfo" style "plugin_maker_text" -widget "*PluginParameterInfo" style "medium_text" -widget "*MotionControllerValue" style "medium_entry" -widget "*ParameterValueDisplay" style "medium_bold_entry" -widget "*PluginUIClickBox" style "medium_bold_entry" -widget "*PluginUIClickBox*" style "medium_bold_entry" -widget "*PluginSlider" style "plugin_slider" -widget "*RedirectSelector" style "redirect_list_display" -widget "*RedirectSelector.*" style "redirect_list_display" -widget "*EditGroupDisplay" style "treeview_display" -widget "*TrackListDisplay" style "treeview_display" -widget "*RegionListDisplay" style "treeview_display" -widget "*NamedSelectionDisplay" style "treeview_display" -widget "*SnapshotDisplay" style "treeview_display" -widget "*MixerTrackCommentArea" style "option_entry" -widget "*MixerPanZone" style "pan_zone" -widget "*MixerTrackDisplayList" style "treeview_display" -widget "*MixerSnapshotDisplayList" style "treeview_display" -widget "*MixerAuxDisplayList" style "treeview_display" -widget "*MixerGroupList" style "treeview_display" -widget "*RegionEditorLabel" style "medium_text" -widget "*RegionEditorSmallLabel" style "small_text" -widget "*RegionEditorEntry" style "medium_entry" -widget "*RegionEditorClock" style "default_clock_display" -widget "*RegionEditorToggleButton" style "paler_red_when_active" -widget "*RegionEditorToggleButton*" style "paler_red_when_active" -widget "*MixerStripSpeedBase" style "small_entry" -widget "*MixerStripSpeedBase*" style "small_entry" -widget "*MixerStripSpeedBaseNotOne" style "small_red_on_black_entry" -widget "*MixerStripSpeedBaseNotOne*" style "small_red_on_black_entry" -widget "*MixerStripGainDisplay" style "small_entry" -widget "*MixerStripGainDisplay*" style "small_entry" -widget "*MixerStripGainUnitButton" style "very_small_button" -widget "*MixerStripGainUnitButton*" style "very_small_button" -widget "*MixerStripMeterPreButton" style "very_small_button" -widget "*MixerStripMeterPreButton*" style "very_small_button" -widget "*MixerStripPeakDisplay*" style "red_active_small_entry" -widget "*MixerStripPeakDisplayPeak*" style "peak_display_peaked_entry" -widget "*MixerStripSelectedFrame" style "selected_strip_frame" -widget "*MixerStripFrame" style "base_frame" -widget "*HWMonitorButton" style "red_when_active" -widget "*HWMonitorButton*" style "red_when_active" -widget "*BypassButton" style "red_when_active" -widget "*BypassButton*" style "red_when_active" -widget "*TransportSoloAlert" style "flashing_alert" -widget "*TransportSoloAlert.*" style "flashing_alert" -widget "*TransportAuditioningAlert" style "flashing_alert" -widget "*TransportAuditioningAlert.*" style "flashing_alert" -widget "*FadeCurve" style "medium_bold_entry" -widget "*FadeCurve*" style "medium_bold_entry" -widget "*IOSelectorButton" style "default_buttons_menus" -widget "*IOSelectorButton*" style "default_buttons_menus" -widget "*IOSelectorList" style "medium_entry_noselection_fg" -widget "*IOSelectorPortList" style "io_selector_port_list" -widget "*IOSelectorPortList.*" style "io_selector_port_list" -widget "*IOSelectorPortListSelected" style "selected_io_selector_port_list" -widget "*IOSelectorPortListSelected.*" style "selected_io_selector_port_list" -widget "*IOSelectorNotebook" style "io_selector_notebook" -widget "*IOSelectorNotebookTab" style "io_selector_notebook" -widget "*IOSelectorFrame" style "base_frame" -widget "*ConnectionEditorButton" style "default_buttons_menus" -widget "*ConnectionEditorButton*" style "default_buttons_menus" -widget "*ConnectionEditorList" style "medium_entry_noselection_fg" -widget "*ConnectionEditorConnectionList" style "medium_entry" -widget "*ConnectionEditorPortList" style "io_selector_port_list" -widget "*ConnectionEditorPortListSelected" style "selected_io_selector_port_list" -widget "*ConnectionEditorNotebook" style "io_selector_notebook" -widget "*ConnectionEditorNotebookTab" style "io_selector_notebook" -widget "*ConnectionEditorFrame" style "base_frame" -widget "*RouteParamsListDisplay" style "inspector_track_list_display" -widget "*RouteParamsPreListDisplay" style "inspector_redirect_list_display" -widget "*RouteParamsPostListDisplay" style "inspector_redirect_list_display" -widget "*TearOffArrow" style "tearoff_arrow" -widget "*RouteParamsTitleButton" style "medium_text" -widget "*RouteParamsTitleLabel" style "medium_text" -widget "*PluginAutomateRecordButton" style "small_red_active_and_selected_button" -widget "*PluginAutomateRecordButton*" style "small_red_active_and_selected_button" -widget "*PluginAutomatePlayButton" style "small_red_active_and_selected_button" -widget "*PluginAutomatePlayButton*" style "small_red_active_and_selected_button" -widget "*PluginAutomateButton" style "small_button" -widget "*PluginAutomateButton*" style "small_button" -widget "*PluginSaveButton" style "small_button" -widget "*PluginSaveButton*" style "small_button" -widget "*PluginLoadButton" style "small_button" -widget "*PluginLoadButton*" style "small_button" -widget "*FaderMetricsStrip" style "meter_metrics_strip" -widget "*MeterMetricsStrip" style "meter_metrics_strip" -widget "*MetricDialogFrame" style "base_frame" -widget "*MetricEntry" style "medium_bold_entry" -widget "*MetricButton" style "default_buttons_menus" -widget "*MetricButton.*" style "default_buttons_menus" -widget "*MetricLabel" style "medium_text" -widget "*TimeStretchButton" style "default_buttons_menus" -widget "*TimeStretchButton.*" style "default_buttons_menus" -widget "*TimeStretchProgress" style "default_buttons_menus" -widget "*ChoiceWindow" style "default_buttons_menus" -widget "*ChoicePrompt" style "default_buttons_menus" -widget "*ChoiceButton" style "default_buttons_menus" -widget "*ChoiceButton*" style "default_buttons_menus" -widget "*SelectionModeButton" style "default_buttons_menus" -widget "*SelectionModeButton*" style "default_buttons_menus" -widget "*TrackLabel" style "medium_text" -widget "*TrackPlugName" style "medium_text" -widget "*TrackParameterName" style "small_text" -widget "*AddRouteDialog*" style "medium_text" -widget "*AddRouteDialog.GtkLabel" style "medium_text" -widget "*AddRouteDialogChannelChoice" style "medium_bold_entry" -widget "*AddRouteDialogSpinner" style "medium_bold_entry" -widget "*AddRouteDialogSpinner*" style "medium_bold_entry" -widget "*AddRouteDialogRadioButton" style "red_when_active" -widget "*AddRouteDialogButton" style "default_buttons_menus" -widget "*AddRouteDialogNameTemplateEntry" style "medium_bold_entry" -widget "*NewSessionIOLabel" style "larger_bold_text" -widget "*NewSessionSR1Label" style "red_medium_text" -widget "*NewSessionSR2Label" style "medium_text" -widget "*NewSessionChannelChoice" style "medium_bold_entry" -widget "*NewSessionMainButton" style "larger_bold_text" -widget "*NewSessionMainButton*" style "larger_bold_text" -widget "*NewSessionMainLabel" style "larger_bold_text" -widget "*LocationEditRowClock" style "location_rows_clock" -widget "*LocationEditNameLabel" style "medium_text" -widget "*LocationEditSetButton" style "location_row_button" -widget "*LocationEditSetButton*" style "location_row_button" -widget "*LocationEditGoButton" style "location_row_button" -widget "*LocationEditGoButton*" style "location_row_button" -widget "*LocationEditCdButton" style "small_red_active_and_selected_button" -widget "*LocationEditCdButton*" style "small_red_active_and_selected_button" -widget "*LocationEditHideButton" style "small_red_active_and_selected_button" -widget "*LocationEditHideButton*" style "small_red_active_and_selected_button" -widget "*LocationEditNumberLabel" style "small_text" -widget "*LocationLocEditorFrame" style "base_frame" -widget "*LocationRangeEditorFrame" style "base_frame" -widget "*LocationEditNameEntry" style "option_entry" -widget "*LocationAddLocationButton" style "default_buttons_menus" -widget "*LocationAddLocationButton*" style "default_buttons_menus" -widget "*LocationAddRangeButton" style "default_buttons_menus" -widget "*LocationAddRangeButton*" style "default_buttons_menus" -widget "*LocationEditRemoveButton" style "location_row_button" -widget "*LocationEditRemoveButton*" style "location_row_button" -widget "*PanSlider" style "pan_slider" -widget "*PanningLinkButton" style "mixer_red_active_button" -widget "*PanningLinkButton.*" style "mixer_red_active_button" -widget "*PanningLinkDirectionButton" style "very_small_button" -widget "*PanningLinkDirectionButton.*" style "very_small_button" -widget "*ChannelCountSelector" style "medium_bold_entry" -widget "*ChannelCountSelector.GtkArrow" style "default_buttons_menus" -widget "*RegionListWholeFile" style "treeview_parent_node" -widget "*EditorHScrollbar" style "editor_hscrollbar" - -class "GtkWidget" style "default_base" -class "GtkScrollbar" style "ardour_adjusters" -class "GtkLabel" style "default_buttons_menus" -class "GtkButton" style "ardour_button" -class "GtkArrow" style "tearoff_arrow" -class "GtkProgressBar" style "ardour_progressbars" + +class "GtkWidget" style:highest "default_base" +class "GtkScrollbar" style:highest "ardour_adjusters" +class "GtkLabel" style:highest "default_buttons_menus" +class "GtkButton" style:highest "ardour_button" +class "GtkArrow" style:highest "tearoff_arrow" +class "GtkProgressBar" style:highest "ardour_progressbars" + +widget "*FirstActionMessage" style:highest "first_action_message" +widget "*VerboseCanvasCursor" style:highest "verbose_canvas_cursor" +widget "*MarkerText" style:highest "marker_text" +widget "*TimeAxisViewItemName*" style:highest "time_axis_view_item_name" +#widget "*ExportProgress" style:highest "default_buttons_menus" +widget "*ExportFileLabel" style:highest "small_bold_text" +widget "*ExportFormatLabel" style:highest "medium_bold_text" +widget "*ExportHeader" style:highest "small_bold_text" +widget "*ExportFileDisplay" style:highest "medium_entry" +widget "*ExportFormatDisplay" style:highest "medium_entry" +widget "*ExportCheckbox" style:highest "small_entry" +widget "*ExportTrackSelector*" style:highest "medium_entry_noselection_bg" +widget "*EditModeSelector" style:highest "medium_bold_entry" +widget "*SnapTypeSelector" style:highest "medium_bold_entry" +widget "*SnapModeSelector" style:highest "medium_bold_entry" +widget "*ZoomFocusSelector" style:highest "medium_bold_entry" +widget "*ArdourContextMenu*" style:highest "default_buttons_menus" +widget "*EditGroupTitleButton*" style:highest "default_buttons_menus" +widget "*MixerGroupTitleButton*" style:highest "default_buttons_menus" +widget "*ErrorLogCloseButton" style:highest "default_buttons_menus" +widget "*EditorGTKButton*" style:highest "default_buttons_menus" +widget "*ToolbarButton" style:highest "default_buttons_menus" +widget "*ToolbarButton*" style:highest "default_buttons_menus" +widget "*CrossfadeEditButton" style:highest "default_buttons_menus" +widget "*CrossfadeEditButton*" style:highest "default_buttons_menus" +widget "*TrackHistoryButton*" style:highest "default_buttons_menus" +widget "*TrackSizeButton*" style:highest "default_buttons_menus" +widget "*TrackPlaylistButton*" style:highest "default_buttons_menus" +widget "*TrackAutomationButton*" style:highest "default_buttons_menus" +widget "*TrackGroupButton*" style:highest "default_buttons_menus" +widget "*TrackMixButton*" style:highest "default_buttons_menus" +widget "*TrackVisualButton*" style:highest "default_buttons_menus" +widget "*TrackRemoveButton*" style:highest "default_buttons_menus" +widget "*BaseButton" style:highest "default_buttons_menus" +widget "*TakeButtonLabel" style:highest "default_buttons_menus" +widget "*MixerWidthButton" style:highest "default_buttons_menus" +widget "*MixerHideButton" style:highest "default_buttons_menus" +widget "*MixerSendButton" style:highest "default_buttons_menus" +widget "*MixerSendButtonLabel" style:highest "default_buttons_menus" +widget "*MixerSendSwitch" style:highest "default_buttons_menus" +widget "*MixerInsertButton" style:highest "default_buttons_menus" +widget "*MixerInsertButtonLabel" style:highest "default_buttons_menus" +widget "*MixerInsertSwitch" style:highest "default_buttons_menus" +widget "*MixerMonitorInputButton*" style:highest "very_small_button" +widget "*MixerMonitorInputButton.*" style:highest "very_small_button" +widget "*MixerIOButton" style:highest "very_small_button" +widget "*MixerIOButtonLabel" style:highest "very_small_button" +widget "*AddRouteDialogSpinner" style:highest "ardour_adjusters" +widget "*AddRouteDialogRadioButton*" style:highest "options_window" +widget "*OptionsNotebook" style:highest "options_window" +widget "*OptionEditorToggleButton*" style:highest "options_window" +widget "*OptionsLabel" style:highest "options_window" +widget "*OptionEditorAuditionerLabel" style:highest "options_window" +widget "*OptionsEntry" style:highest "option_entry" +widget "*InspectorNotebook" style:highest "options_window" +widget "*NewSessionDialog" style:highest "options_window" +widget "*NewSessionDialogButton*" style:highest "options_window" +widget "*MixerSendSwitch*" style:highest "very_small_red_active_and_selected_button" +widget "*OptionEditorToggleButton" style:highest "small_red_active_and_selected_button" +widget "*NewSessionDialogButton" style:highest "small_red_active_and_selected_button" +widget "*RecordEnableButton" style:highest "track_rec_enable_button" +widget "*RecordEnableButton-active" style:highest "track_rec_enable_button_active" +widget "*RecordEnableButton-alternate" style:highest "track_rec_enable_button_alternate" +widget "*MixerRecordEnableButton" style:highest "mixer_track_rec_enable_button" +widget "*MixerRecordEnableButton-active" style:highest "mixer_track_rec_enable_button_active" +widget "*MixerRecordEnableButton-alternate" style:highest "mixer_track_rec_enable_button_alternate" +widget "*MuteButton" style:highest "mute_button" +widget "*MuteButton-alternate" style:highest "mute_button_alternate" +widget "*MuteButton-active" style:highest "mute_button_active" +widget "*MixerMuteButton" style:highest "mixer_mute_button" +widget "*MixerMuteButton-alternate" style:highest "mixer_mute_button_alternate" +widget "*MixerMuteButton-active" style:highest "mixer_mute_button_active" +widget "*SoloButton" style:highest "solo_button" +widget "*SoloButton-alternate" style:highest "solo_button_alternate" +widget "*SoloButton-active" style:highest "solo_button_active" +widget "*MixerSoloButton" style:highest "mixer_solo_button" +widget "*MixerSoloButton-alternate" style:highest "mixer_solo_button_alternate" +widget "*MixerSoloButton-active" style:highest "mixer_solo_button_active" +widget "*TrackLoopButton*" style:highest "track_loop_button" +widget "*PanAutomationLineSelector*" style:highest "multiline_combo" +widget "*EditorTimeButton*" style:highest "time_button" +widget "*MixerPhaseInvertButton*" style:highest "very_small_button" +widget "*MixerPhaseInvertButton.*" style:highest "very_small_button" +widget "*MixerAutomationRecordingButton*" style:highest "very_small_button" +widget "*MixerAutomationRecordingButton.*" style:highest "very_small_button" +widget "*MixerAutomationModeButton*" style:highest "very_small_button" +widget "*MixerAutomationModeButton.*" style:highest "very_small_button" +widget "*MixerAutomationPlaybackButton*" style:highest "very_small_button" +widget "*MixerAutomationPlaybackButton.*" style:highest "very_small_button" +widget "*MixerNameButton" style:highest "very_small_button" +widget "*MixerNameButtonLabel" style:highest "very_small_button" +widget "*MixerGroupButton" style:highest "very_small_button" +widget "*MixerGroupButtonLabel" style:highest "very_small_button" +widget "*MixerCommentButton" style:highest "very_small_button" +widget "*MixerCommentButton*" style:highest "very_small_button" +widget "*EditGroupButton" style:highest "very_small_button" +widget "*EditGroupButtonLabel" style:highest "very_small_button" +widget "*TransportButton" style:highest "transport_rec_button" +widget "*TransportButton-active" style:highest "transport_button_active" +widget "*ShuttleButton" style:highest "transport_button" +widget "*ShuttleButton*" style:highest "transport_button" +widget "*ShuttleDisplay" style:highest "transport_button" +widget "*ShuttleDisplay*" style:highest "transport_button" +widget "*ShuttleControl" style:highest "shuttle_control" +widget "*TransportRecButton" style:highest "transport_rec_button" +widget "*TransportRecButton*" style:highest "transport_rec_button" +widget "*TransportRecButton-active" style:highest "transport_rec_button_active" +widget "*TransportRecButton-active*" style:highest "transport_rec_button_active" +widget "*TransportRecButton-alternate" style:highest "transport_rec_button_alternate" +widget "*TransportRecButton-alternate*" style:highest "transport_rec_button_alternate" +widget "*TransportRecButton*" style:highest "transport_rec_button" +widget "*RecordingXrunWarningWindow" style:highest "xrun_warn" +widget "*RecordingXrunWarningWindow*" style:highest "xrun_warn" +/*widget "*MainMenuBar" style:highest "menu_bar_base"*/ +widget "*ErrorMessage" style:highest "error_message" +widget "*FatalMessage" style:highest "fatal_message" +widget "*InfoMessage" style:highest "info_message" +widget "*WarningMessage" style:highest "warning_message" +widget "*BigClockNonRecording" style:highest "non_recording_big_clock_display" +widget "*BigClockRecording" style:highest "recording_big_clock_display" +widget "*TransportClockDisplay" style:highest "transport_clock_display" +widget "*SecondaryClockDisplay" style:highest "transport_clock_display" +widget "*AudioClockFramesUpperInfo" style:highest "tempo_meter_clock_display" +widget "*AudioClockFramesLowerInfo" style:highest "tempo_meter_clock_display" +widget "*AudioClockSMPTEUpperInfo" style:highest "tempo_meter_clock_display" +widget "*AudioClockSMPTELowerInfo" style:highest "tempo_meter_clock_display" +widget "*AudioClockBBTUpperInfo" style:highest "tempo_meter_clock_display" +widget "*AudioClockBBTLowerInfo" style:highest "tempo_meter_clock_display" +widget "*SelectionStartClock" style:highest "default_clock_display" +widget "*SelectionEndClock" style:highest "default_clock_display" +widget "*EditCursorClock" style:highest "default_clock_display" +widget "*PreRollClock" style:highest "default_clock_display" +widget "*PostRollClock" style:highest "default_clock_display" +widget "*NudgeClock" style:highest "default_clock_display" +widget "*ZoomRangeClock" style:highest "default_clock_display" +widget "*SMPTEOffsetClock" style:highest "default_clock_display" +widget "*TransportLabel" style:highest "small_bold_text" +widget "*TakeLabel" style:highest "small_bold_text" +widget "*LocationLabel" style:highest "small_bold_text" +widget "*WipeLabel" style:highest "small_bold_text" +widget "*TakeTagLabel" style:highest "small_bold_text" +widget "*ToolBarLabel" style:highest "small_bold_text" +widget "*EditorDisplayLabel" style:highest "small_bold_text" +widget "*NewSessionLabel" style:highest "large_text" +widget "*GlobalButtonLabel" style:highest "default_buttons_menus" +widget "*ClickButton" style:highest "medium_entry" +widget "*RegionNameDisplay" style:highest "medium_entry" +widget "*PluginDisplay" style:highest "medium_entry" +widget "*SelectionDisplay" style:highest "medium_entry" +widget "*HistorySelector" style:highest "medium_entry" +widget "*LocationSelector" style:highest "medium_entry" +widget "*TakeSelector" style:highest "medium_entry" +widget "*RegionSelector" style:highest "medium_entry" +widget "*SMPTERuler" style:highest "editor_time_ruler" +widget "*BBTRuler" style:highest "editor_time_ruler" +widget "*FramesRuler" style:highest "editor_time_ruler" +widget "*MinSecRuler" style:highest "editor_time_ruler" +widget "*BaseFrame" style:highest "base_frame" +widget "*AudioTrackStripBase" style:highest "audio_track_base" +widget "*TimeAxisViewControlsBaseUnselected" style:highest "audio_track_base" +widget "*AudioTrackControlsBaseUnselected" style:highest "audio_track_base" +widget "*AudioTrackFader" style:highest "gain_fader" +widget "*AudioBusStripBase" style:highest "audio_bus_base" +widget "*BusControlsBaseUnselected" style:highest "audio_bus_base" +widget "*AudioBusFader" style:highest "gain_fader" +widget "*TrackSeparator" style:highest "track_separator" +widget "*TrackEditIndicator0*" style:highest "edit_group_0" +widget "*TrackEditIndicator1*" style:highest "edit_group_1" +widget "*TrackEditIndicator2*" style:highest "edit_group_2" +widget "*TrackEditIndicator3*" style:highest "edit_group_3" +widget "*TrackEditIndicator4*" style:highest "edit_group_3" +widget "*TrackEditIndicator5*" style:highest "edit_group_3" +widget "*TrackEditIndicator6*" style:highest "edit_group_3" +widget "*TrackEditIndicator7*" style:highest "edit_group_3" +widget "*EditorTrackNameDisplay" style:highest "track_name_display" +widget "*EditorTrackNameDisplay*" style:highest "track_name_display" +widget "*EditorActiveTrackNameDisplay" style:highest "active_track_name_display" +widget "*EditorActiveTrackNameDisplay*" style:highest "active_track_name_display" +widget "*CrossfadeEditAuditionButton" style:highest "red_when_active" +widget "*CrossfadeEditAuditionButton*" style:highest "red_when_active" +widget "*CrossfadeEditCurveButton" style:highest "red_when_active" +widget "*CrossfadeEditCurveButton*" style:highest "red_when_active" +widget "*CrossfadeEditLabel" style:highest "medium_text" +widget "*CrossfadeEditFrame" style:highest "base_frame" +widget "*MouseModeButton" style:highest "default_buttons_menus" +widget "*MouseModeButton*" style:highest "default_buttons_menus" +widget "*EditorMainCanvas" style:highest "main_canvas_area" +widget "*AudioTrackControlsBaseInactiveUnselected" style:highest "track_controls_inactive" +widget "*BusControlsBaseInactiveUnselected" style:highest "track_controls_inactive" +widget "*AutomationTrackControlsBaseInactiveUnselected" style:highest "track_controls_inactive" +widget "*AutomationTrackName" style:highest "automation_track_name" +widget "*AudioTrackControlsBaseInactiveSelected" style:highest "track_controls_inactive" +widget "*BusControlsBaseInactiveSelected" style:highest "track_controls_inactive" +widget "*AutomationTrackControlsBaseInactiveSelected" style:highest "track_controls_inactive" +widget "*AudioTrackStripBaseInactive" style:highest "track_controls_inactive" +widget "*AudioBusStripBaseInactive" style:highest "track_controls_inactive" +widget "*AudioTrackControlsBaseSelected" style:highest "edit_controls_base_selected" +widget "*BusControlsBaseSelected" style:highest "edit_controls_base_selected" +widget "*AutomationTrackControlsBase" style:highest "automation_track_controls_base" +widget "*AutomationTrackControlsBaseSelected" style:highest "edit_controls_base_selected" +/*widget "*EditorMenuBar*" style:highest "black_mackie_menu_bar" +widget "*MainMenuBar*" style:highest "black_mackie_menu_bar" +*/ +widget "*ZoomClickBox" style:highest "medium_bold_entry" +widget "*PluginParameterLabel" style:highest "medium_text" +widget "*PluginNameInfo" style:highest "plugin_name_text" +widget "*PluginMakerInfo" style:highest "plugin_maker_text" +widget "*PluginParameterInfo" style:highest "medium_text" +widget "*MotionControllerValue" style:highest "medium_entry" +widget "*ParameterValueDisplay" style:highest "medium_bold_entry" +widget "*PluginUIClickBox" style:highest "medium_bold_entry" +widget "*PluginUIClickBox*" style:highest "medium_bold_entry" +widget "*PluginSlider" style:highest "plugin_slider" +widget "*RedirectSelector" style:highest "redirect_list_display" +widget "*RedirectSelector.*" style:highest "redirect_list_display" +widget "*EditGroupDisplay" style:highest "treeview_display" +widget "*TrackListDisplay" style:highest "treeview_display" +widget "*RegionListDisplay" style:highest "treeview_display" +widget "*NamedSelectionDisplay" style:highest "treeview_display" +widget "*SnapshotDisplay" style:highest "treeview_display" +widget "*MixerTrackCommentArea" style:highest "option_entry" +widget "*MixerPanZone" style:highest "pan_zone" +widget "*MixerTrackDisplayList" style:highest "treeview_display" +widget "*MixerSnapshotDisplayList" style:highest "treeview_display" +widget "*MixerAuxDisplayList" style:highest "treeview_display" +widget "*MixerGroupList" style:highest "treeview_display" +widget "*RegionEditorLabel" style:highest "medium_text" +widget "*RegionEditorSmallLabel" style:highest "small_text" +widget "*RegionEditorEntry" style:highest "medium_entry" +widget "*RegionEditorClock" style:highest "default_clock_display" +widget "*RegionEditorToggleButton" style:highest "paler_red_when_active" +widget "*RegionEditorToggleButton*" style:highest "paler_red_when_active" +widget "*MixerStripSpeedBase" style:highest "small_entry" +widget "*MixerStripSpeedBase*" style:highest "small_entry" +widget "*MixerStripSpeedBaseNotOne" style:highest "small_red_on_black_entry" +widget "*MixerStripSpeedBaseNotOne*" style:highest "small_red_on_black_entry" +widget "*MixerStripGainDisplay" style:highest "small_entry" +widget "*MixerStripGainDisplay*" style:highest "small_entry" +widget "*MixerStripGainUnitButton" style:highest "very_small_button" +widget "*MixerStripGainUnitButton*" style:highest "very_small_button" +widget "*MixerStripMeterPreButton" style:highest "very_small_button" +widget "*MixerStripMeterPreButton*" style:highest "very_small_button" +widget "*MixerStripPeakDisplay*" style:highest "red_active_small_entry" +widget "*MixerStripPeakDisplayPeak*" style:highest "peak_display_peaked_entry" +widget "*MixerStripSelectedFrame" style:highest "selected_strip_frame" +widget "*MixerStripFrame" style:highest "base_frame" +widget "*HWMonitorButton" style:highest "red_when_active" +widget "*HWMonitorButton*" style:highest "red_when_active" +widget "*BypassButton" style:highest "red_when_active" +widget "*BypassButton*" style:highest "red_when_active" +widget "*TransportSoloAlert" style:highest "flashing_alert" +widget "*TransportSoloAlert.*" style:highest "flashing_alert" +widget "*TransportAuditioningAlert" style:highest "flashing_alert" +widget "*TransportAuditioningAlert.*" style:highest "flashing_alert" +widget "*FadeCurve" style:highest "medium_bold_entry" +widget "*FadeCurve*" style:highest "medium_bold_entry" +widget "*IOSelectorButton" style:highest "default_buttons_menus" +widget "*IOSelectorButton*" style:highest "default_buttons_menus" +widget "*IOSelectorList" style:highest "medium_entry_noselection_fg" +widget "*IOSelectorPortList" style:highest "io_selector_port_list" +widget "*IOSelectorPortList.*" style:highest "io_selector_port_list" +widget "*IOSelectorPortListSelected" style:highest "selected_io_selector_port_list" +widget "*IOSelectorPortListSelected.*" style:highest "selected_io_selector_port_list" +widget "*IOSelectorNotebook" style:highest "io_selector_notebook" +widget "*IOSelectorNotebookTab" style:highest "io_selector_notebook" +widget "*IOSelectorFrame" style:highest "base_frame" +widget "*ConnectionEditorButton" style:highest "default_buttons_menus" +widget "*ConnectionEditorButton*" style:highest "default_buttons_menus" +widget "*ConnectionEditorList" style:highest "medium_entry_noselection_fg" +widget "*ConnectionEditorConnectionList" style:highest "medium_entry" +widget "*ConnectionEditorPortList" style:highest "io_selector_port_list" +widget "*ConnectionEditorPortListSelected" style:highest "selected_io_selector_port_list" +widget "*ConnectionEditorNotebook" style:highest "io_selector_notebook" +widget "*ConnectionEditorNotebookTab" style:highest "io_selector_notebook" +widget "*ConnectionEditorFrame" style:highest "base_frame" +widget "*RouteParamsListDisplay" style:highest "inspector_track_list_display" +widget "*RouteParamsPreListDisplay" style:highest "inspector_redirect_list_display" +widget "*RouteParamsPostListDisplay" style:highest "inspector_redirect_list_display" +widget "*TearOffArrow" style:highest "tearoff_arrow" +widget "*RouteParamsTitleButton" style:highest "medium_text" +widget "*RouteParamsTitleLabel" style:highest "medium_text" +widget "*PluginAutomateRecordButton" style:highest "small_red_active_and_selected_button" +widget "*PluginAutomateRecordButton*" style:highest "small_red_active_and_selected_button" +widget "*PluginAutomatePlayButton" style:highest "small_red_active_and_selected_button" +widget "*PluginAutomatePlayButton*" style:highest "small_red_active_and_selected_button" +widget "*PluginAutomateButton" style:highest "small_button" +widget "*PluginAutomateButton*" style:highest "small_button" +widget "*PluginSaveButton" style:highest "small_button" +widget "*PluginSaveButton*" style:highest "small_button" +widget "*PluginLoadButton" style:highest "small_button" +widget "*PluginLoadButton*" style:highest "small_button" +widget "*FaderMetricsStrip" style:highest "meter_metrics_strip" +widget "*MeterMetricsStrip" style:highest "meter_metrics_strip" +widget "*MetricDialogFrame" style:highest "base_frame" +widget "*MetricEntry" style:highest "medium_bold_entry" +widget "*MetricButton" style:highest "default_buttons_menus" +widget "*MetricButton.*" style:highest "default_buttons_menus" +widget "*MetricLabel" style:highest "medium_text" +widget "*TimeStretchButton" style:highest "default_buttons_menus" +widget "*TimeStretchButton.*" style:highest "default_buttons_menus" +widget "*TimeStretchProgress" style:highest "default_buttons_menus" +widget "*ChoiceWindow" style:highest "default_buttons_menus" +widget "*ChoicePrompt" style:highest "default_buttons_menus" +widget "*ChoiceButton" style:highest "default_buttons_menus" +widget "*ChoiceButton*" style:highest "default_buttons_menus" +widget "*SelectionModeButton" style:highest "default_buttons_menus" +widget "*SelectionModeButton*" style:highest "default_buttons_menus" +widget "*TrackLabel" style:highest "medium_text" +widget "*TrackPlugName" style:highest "medium_text" +widget "*TrackParameterName" style:highest "small_text" +widget "*AddRouteDialog*" style:highest "medium_text" +widget "*AddRouteDialog.GtkLabel" style:highest "medium_text" +widget "*AddRouteDialogChannelChoice" style:highest "medium_bold_entry" +widget "*AddRouteDialogSpinner" style:highest "medium_bold_entry" +widget "*AddRouteDialogSpinner*" style:highest "medium_bold_entry" +widget "*AddRouteDialogRadioButton" style:highest "red_when_active" +widget "*AddRouteDialogButton" style:highest "default_buttons_menus" +widget "*AddRouteDialogNameTemplateEntry" style:highest "medium_bold_entry" +widget "*NewSessionIOLabel" style:highest "larger_bold_text" +widget "*NewSessionSR1Label" style:highest "red_medium_text" +widget "*NewSessionSR2Label" style:highest "medium_text" +widget "*NewSessionChannelChoice" style:highest "medium_bold_entry" +widget "*NewSessionMainButton" style:highest "larger_bold_text" +widget "*NewSessionMainButton*" style:highest "larger_bold_text" +widget "*NewSessionMainLabel" style:highest "larger_bold_text" +widget "*LocationEditRowClock" style:highest "location_rows_clock" +widget "*LocationEditNameLabel" style:highest "medium_text" +widget "*LocationEditSetButton" style:highest "location_row_button" +widget "*LocationEditSetButton*" style:highest "location_row_button" +widget "*LocationEditGoButton" style:highest "location_row_button" +widget "*LocationEditGoButton*" style:highest "location_row_button" +widget "*LocationEditCdButton" style:highest "small_red_active_and_selected_button" +widget "*LocationEditCdButton*" style:highest "small_red_active_and_selected_button" +widget "*LocationEditHideButton" style:highest "small_red_active_and_selected_button" +widget "*LocationEditHideButton*" style:highest "small_red_active_and_selected_button" +widget "*LocationEditNumberLabel" style:highest "small_text" +widget "*LocationLocEditorFrame" style:highest "base_frame" +widget "*LocationRangeEditorFrame" style:highest "base_frame" +widget "*LocationEditNameEntry" style:highest "option_entry" +widget "*LocationAddLocationButton" style:highest "default_buttons_menus" +widget "*LocationAddLocationButton*" style:highest "default_buttons_menus" +widget "*LocationAddRangeButton" style:highest "default_buttons_menus" +widget "*LocationAddRangeButton*" style:highest "default_buttons_menus" +widget "*LocationEditRemoveButton" style:highest "location_row_button" +widget "*LocationEditRemoveButton*" style:highest "location_row_button" +widget "*PanSlider" style:highest "pan_slider" +widget "*PanningLinkButton" style:highest "mixer_red_active_button" +widget "*PanningLinkButton.*" style:highest "mixer_red_active_button" +widget "*PanningLinkDirectionButton" style:highest "very_small_button" +widget "*PanningLinkDirectionButton.*" style:highest "very_small_button" +widget "*ChannelCountSelector" style:highest "medium_bold_entry" +widget "*ChannelCountSelector.GtkArrow" style:highest "default_buttons_menus" +widget "*RegionListWholeFile" style:highest "treeview_parent_node" +widget "*EditorHScrollbar" style:highest "editor_hscrollbar" diff --git a/gtk2_ardour/ardour_image_compositor_socket.h b/gtk2_ardour/ardour_image_compositor_socket.h index ad0a7b79c6..6ed92ef8ac 100644 --- a/gtk2_ardour/ardour_image_compositor_socket.h +++ b/gtk2_ardour/ardour_image_compositor_socket.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ diff --git a/gtk2_ardour/ardour_message.cc b/gtk2_ardour/ardour_message.cc deleted file mode 100644 index 2948559f14..0000000000 --- a/gtk2_ardour/ardour_message.cc +++ /dev/null @@ -1,64 +0,0 @@ -/* - Copyright (C) 2004 Paul Davis - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - $Id$ - -*/ - -#include - -#include "ardour_message.h" -#include "i18n.h" - -using namespace std; -using namespace Gtk; - -ArdourMessage::ArdourMessage (Gtk::Window* parent, - string name, string msg, - bool grab_focus, bool auto_run) - : ArdourDialog (name), - label (msg) -{ - label.set_name (X_("PrompterLabel")); - label.set_justify (JUSTIFY_CENTER); - label.show (); - - get_vbox()->pack_start (label); - - Button* ok_button = add_button (Stock::OK, RESPONSE_ACCEPT); - - set_name (X_("Prompter")); - set_position (Gtk::WIN_POS_MOUSE); - set_modal (true); - set_type_hint (Gdk::WINDOW_TYPE_HINT_MENU); - - if (grab_focus) { - ok_button->grab_focus (); - } - - if (parent) { - set_transient_for (*parent); - } - - if (auto_run) { - run (); - } -} - -ArdourMessage::~ArdourMessage() -{ -} diff --git a/gtk2_ardour/ardour_message.h b/gtk2_ardour/ardour_message.h deleted file mode 100644 index a9ac02a5bc..0000000000 --- a/gtk2_ardour/ardour_message.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - Copyright (C) 2004 Paul Davis - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - $Id$ - -*/ - -#ifndef __ardour_message_h__ -#define __ardour_message_h__ - -#include - -#include -#include -#include - -#include "ardour_dialog.h" - -class ArdourMessage : public ArdourDialog -{ - public: - ArdourMessage (Gtk::Window* parent, - std::string name, std::string msg, - bool grabfocus = true, - bool autorun = true); - ~ArdourMessage(); - - private: - Gtk::Label label; - -}; - -#endif // __ardour_message_h__ diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 3ecc618eba..275c7d7cdc 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 1999-2002 Paul Davis + Copyright (C) 1999-2007 Paul Davis This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #define __STDC_FORMAT_MACROS 1 @@ -31,6 +30,8 @@ #include +#include + #include #include @@ -71,7 +72,6 @@ #include "mixer_ui.h" #include "prompter.h" #include "opts.h" -#include "keyboard_target.h" #include "add_route_dialog.h" #include "new_session_dialog.h" #include "about.h" @@ -91,6 +91,7 @@ ARDOUR_UI *ARDOUR_UI::theArdourUI = 0; sigc::signal ARDOUR_UI::Blink; sigc::signal ARDOUR_UI::RapidScreenUpdate; +sigc::signal ARDOUR_UI::MidRapidScreenUpdate; sigc::signal ARDOUR_UI::SuperRapidScreenUpdate; sigc::signal ARDOUR_UI::Clock; @@ -118,16 +119,34 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], string rcfile) /* transport */ - time_master_button (_("time\nmaster")), - + roll_controllable ("transport roll", *this, TransportControllable::Roll), + stop_controllable ("transport stop", *this, TransportControllable::Stop), + goto_start_controllable ("transport goto start", *this, TransportControllable::GotoStart), + goto_end_controllable ("transport goto end", *this, TransportControllable::GotoEnd), + auto_loop_controllable ("transport auto loop", *this, TransportControllable::AutoLoop), + play_selection_controllable ("transport play selection", *this, TransportControllable::PlaySelection), + rec_controllable ("transport rec-enable", *this, TransportControllable::RecordEnable), + shuttle_controllable ("shuttle", *this, TransportControllable::ShuttleControl), + shuttle_controller_binding_proxy (shuttle_controllable), + + roll_button (roll_controllable), + stop_button (stop_controllable), + goto_start_button (goto_start_controllable), + goto_end_button (goto_end_controllable), + auto_loop_button (auto_loop_controllable), + play_selection_button (play_selection_controllable), + rec_button (rec_controllable), + shuttle_units_button (_("% ")), punch_in_button (_("Punch In")), punch_out_button (_("Punch Out")), auto_return_button (_("Auto Return")), - auto_play_button (_("Autuo Play")), + auto_play_button (_("Auto Play")), auto_input_button (_("Auto Input")), click_button (_("Click")), + time_master_button (_("time\nmaster")), + auditioning_alert_button (_("AUDITION")), solo_alert_button (_("SOLO")), shown_flag (false) @@ -164,8 +183,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], string rcfile) location_ui = 0; open_session_selector = 0; have_configure_timeout = false; - have_disk_overrun_displayed = false; - have_disk_underrun_displayed = false; + have_disk_speed_dialog_displayed = false; _will_create_new_session_automatically = false; session_loaded = false; last_speed_displayed = -1.0f; @@ -249,10 +267,6 @@ ARDOUR_UI::set_engine (AudioEngine& e) AudioFileSource::set_build_peakfiles (true); AudioFileSource::set_build_missing_peakfiles (true); - if (AudioSource::start_peak_thread ()) { - throw failed_constructor(); - } - /* set default clock modes */ primary_clock.set_mode (AudioClock::SMPTE); @@ -290,8 +304,6 @@ ARDOUR_UI::~ARDOUR_UI () if (add_route_dialog) { delete add_route_dialog; } - - AudioSource::stop_peak_thread (); } gint @@ -333,6 +345,63 @@ ARDOUR_UI::configure_handler (GdkEventConfigure* conf) return FALSE; } +void +ARDOUR_UI::set_transport_controllable_state (const XMLNode& node) +{ + const XMLProperty* prop; + + if ((prop = node.property ("roll")) != 0) { + roll_controllable.set_id (prop->value()); + } + if ((prop = node.property ("stop")) != 0) { + stop_controllable.set_id (prop->value()); + } + if ((prop = node.property ("goto_start")) != 0) { + goto_start_controllable.set_id (prop->value()); + } + if ((prop = node.property ("goto_end")) != 0) { + goto_end_controllable.set_id (prop->value()); + } + if ((prop = node.property ("auto_loop")) != 0) { + auto_loop_controllable.set_id (prop->value()); + } + if ((prop = node.property ("play_selection")) != 0) { + play_selection_controllable.set_id (prop->value()); + } + if ((prop = node.property ("rec")) != 0) { + rec_controllable.set_id (prop->value()); + } + if ((prop = node.property ("shuttle")) != 0) { + shuttle_controllable.set_id (prop->value()); + } +} + +XMLNode& +ARDOUR_UI::get_transport_controllable_state () +{ + XMLNode* node = new XMLNode(X_("TransportControllables")); + char buf[64]; + + roll_controllable.id().print (buf, sizeof (buf)); + node->add_property (X_("roll"), buf); + stop_controllable.id().print (buf, sizeof (buf)); + node->add_property (X_("stop"), buf); + goto_start_controllable.id().print (buf, sizeof (buf)); + node->add_property (X_("goto_start"), buf); + goto_end_controllable.id().print (buf, sizeof (buf)); + node->add_property (X_("goto_end"), buf); + auto_loop_controllable.id().print (buf, sizeof (buf)); + node->add_property (X_("auto_loop"), buf); + play_selection_controllable.id().print (buf, sizeof (buf)); + node->add_property (X_("play_selection"), buf); + rec_controllable.id().print (buf, sizeof (buf)); + node->add_property (X_("rec"), buf); + shuttle_controllable.id().print (buf, sizeof (buf)); + node->add_property (X_("shuttle"), buf); + + return *node; +} + void ARDOUR_UI::save_ardour_state () { @@ -346,6 +415,7 @@ ARDOUR_UI::save_ardour_state () XMLNode* node = new XMLNode (keyboard->get_state()); Config->add_extra_xml (*node); + Config->add_extra_xml (get_transport_controllable_state()); Config->save_state(); XMLNode enode(static_cast(editor)->get_state()); @@ -365,9 +435,72 @@ ARDOUR_UI::save_ardour_state () void ARDOUR_UI::startup () { - // relax + check_memory_locking(); +} + +void +ARDOUR_UI::no_memory_warning () +{ + XMLNode node (X_("no-memory-warning")); + Config->add_instant_xml (node, get_user_ardour_path()); +} + +void +ARDOUR_UI::check_memory_locking () +{ +#ifdef __APPLE__ + /* OS X doesn't support mlockall(2), and so testing for memory locking capability there is pointless */ + return; +#else // !__APPLE__ + + XMLNode* memory_warning_node = Config->instant_xml (X_("no-memory-warning"), get_user_ardour_path()); + + if (engine->is_realtime() && memory_warning_node == 0) { + + struct rlimit limits; + int64_t ram; + long pages, page_size; + + if ((page_size = sysconf (_SC_PAGESIZE)) < 0 ||(pages = sysconf (_SC_PHYS_PAGES)) < 0) { + ram = 0; + } else { + ram = (int64_t) pages * (int64_t) page_size; + } + + if (getrlimit (RLIMIT_MEMLOCK, &limits)) { + return; + } + + if (limits.rlim_cur != RLIM_INFINITY) { + + if (ram == 0 || ((double) limits.rlim_cur / ram) < 0.75) { + + + MessageDialog msg (_("WARNING: Your system has a limit for maximum amount of locked memory. " + "This might cause Ardour to run out of memory before your system " + "runs out of memory. \n\n" + "You can view the memory limit with 'ulimit -l', " + "and it is normally controlled by /etc/security/limits.conf")); + + VBox* vbox = msg.get_vbox(); + HBox hbox; + CheckButton cb (_("Do not show this window again")); + + cb.signal_toggled().connect (mem_fun (*this, &ARDOUR_UI::no_memory_warning)); + + hbox.pack_start (cb, true, false); + vbox->pack_start (hbox); + hbox.show_all (); + + editor->ensure_float (msg); + msg.run (); + } + } + } +#endif // !__APPLE__ } + void ARDOUR_UI::finish() { @@ -490,6 +623,13 @@ ARDOUR_UI::every_point_one_seconds () return TRUE; } +gint +ARDOUR_UI::every_point_oh_five_seconds () +{ + MidRapidScreenUpdate(); /* EMIT_SIGNAL */ + return true; +} + gint ARDOUR_UI::every_point_zero_one_seconds () { @@ -609,40 +749,6 @@ ARDOUR_UI::update_wall_clock () return TRUE; } -void -ARDOUR_UI::control_methods_adjusted () - -{ - int which_method; - - which_method = (int) online_control_button->adjustment.get_value(); - switch (which_method) { - case 0: - allow_mmc_and_local (); - break; - case 1: - allow_mmc_only (); - break; - case 2: - allow_local_only (); - break; - default: - fatal << _("programming error: impossible control method") << endmsg; - } -} - - -void -ARDOUR_UI::mmc_device_id_adjusted () - -{ -#if 0 - if (mmc) { - int dev_id = (int) mmc_id_button->adjustment.get_value(); - mmc->set_device_id (dev_id); - } -#endif -} gint ARDOUR_UI::session_menu (GdkEventButton *ev) @@ -923,7 +1029,8 @@ ARDOUR_UI::session_add_audio_route (bool track, int32_t input_channels, int32_t if (how_many == 1) { error << _("could not create a new audio track") << endmsg; } else { - error << string_compose (_("could not create %1 new audio tracks"), how_many) << endmsg; + error << string_compose (_("could only create %1 of %2 new audio %3"), + tracks.size(), how_many, (track ? _("tracks") : _("busses"))) << endmsg; } } @@ -954,6 +1061,7 @@ ARDOUR_UI::session_add_audio_route (bool track, int32_t input_channels, int32_t } catch (...) { + cerr << "About to complain about JACK\n"; MessageDialog msg (*editor, _("There are insufficient JACK ports available\n\ to create a new track or bus.\n\ @@ -1101,11 +1209,11 @@ ARDOUR_UI::transport_roll () if (session->get_play_loop()) { session->request_play_loop (false); - auto_loop_button.set_active (false); - roll_button.set_active (true); + auto_loop_button.set_visual_state (1); + roll_button.set_visual_state (1); } else if (session->get_play_range ()) { session->request_play_range (false); - play_selection_button.set_active (false); + play_selection_button.set_visual_state (0); } else if (rolling) { session->request_locate (session->last_transport_start(), true); } @@ -1243,24 +1351,6 @@ ARDOUR_UI::map_transport_state () } } -void -ARDOUR_UI::allow_local_only () -{ - -} - -void -ARDOUR_UI::allow_mmc_only () -{ - -} - -void -ARDOUR_UI::allow_mmc_and_local () -{ - -} - void ARDOUR_UI::GlobalClickBox::printer (char buf[32], Adjustment &adj, void *arg) { @@ -1282,6 +1372,49 @@ ARDOUR_UI::engine_running () ENSURE_GUI_THREAD (mem_fun(*this, &ARDOUR_UI::engine_running)); ActionManager::set_sensitive (ActionManager::jack_sensitive_actions, true); ActionManager::set_sensitive (ActionManager::jack_opposite_sensitive_actions, false); + + Glib::RefPtr action; + char* action_name = 0; + + switch (engine->frames_per_cycle()) { + case 32: + action_name = X_("JACKLatency32"); + break; + case 64: + action_name = X_("JACKLatency64"); + break; + case 128: + action_name = X_("JACKLatency128"); + break; + case 512: + action_name = X_("JACKLatency512"); + break; + case 1024: + action_name = X_("JACKLatency1024"); + break; + case 2048: + action_name = X_("JACKLatency2048"); + break; + case 4096: + action_name = X_("JACKLatency4096"); + break; + case 8192: + action_name = X_("JACKLatency8192"); + break; + default: + /* XXX can we do anything useful ? */ + break; + } + + if (action_name) { + + action = ActionManager::get_action (X_("JACK"), action_name); + + if (action) { + Glib::RefPtr ract = Glib::RefPtr::cast_dynamic (action); + ract->set_active (); + } + } } void @@ -1379,7 +1512,7 @@ ARDOUR_UI::_blink (void *arg) void ARDOUR_UI::blink () { - Blink (blink_on = !blink_on); /* EMIT_SIGNAL */ + Blink (blink_on = !blink_on); /* EMIT_SIGNAL */ } void @@ -1454,17 +1587,18 @@ ARDOUR_UI::snapshot_session () { ArdourPrompter prompter (true); string snapname; - string now; + char timebuf[128]; time_t n; + struct tm local_time; time (&n); - now = ctime (&n); - now = now.substr (20, 4) + now.substr (3, 16) + " (" + now.substr (0, 3) + ")"; + localtime_r (&n, &local_time); + strftime (timebuf, sizeof(timebuf), "%FT%T", &local_time); prompter.set_name ("Prompter"); prompter.add_button (Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT); prompter.set_prompt (_("Name of New Snapshot")); - prompter.set_initial_text (now); + prompter.set_initial_text (timebuf); switch (prompter.run()) { case RESPONSE_ACCEPT: @@ -1571,18 +1705,18 @@ ARDOUR_UI::transport_rec_enable_blink (bool onoff) switch (session->record_status()) { case Session::Enabled: if (onoff) { - rec_button.set_state (1); + rec_button.set_visual_state (2); } else { - rec_button.set_state (0); + rec_button.set_visual_state (0); } break; case Session::Recording: - rec_button.set_state (2); + rec_button.set_visual_state (1); break; default: - rec_button.set_state (0); + rec_button.set_visual_state (0); break; } } @@ -1595,12 +1729,6 @@ ARDOUR_UI::hide_and_quit (GdkEventAny *ev, ArdourDialog *window) return TRUE; } -void -ARDOUR_UI::start_keyboard_prefix () -{ - keyboard->start_prefix(); -} - void ARDOUR_UI::save_template () @@ -1627,12 +1755,18 @@ ARDOUR_UI::save_template () } } -void +bool ARDOUR_UI::new_session (std::string predetermined_path) { string session_name; string session_path; + if (!engine->connected()) { + MessageDialog msg (_("Ardour is not connected to JACK at this time. Creating new sessions is not possible.")); + msg.run (); + return false; + } + int response = Gtk::RESPONSE_NONE; new_session_dialog->set_modal(true); @@ -1642,6 +1776,13 @@ ARDOUR_UI::new_session (std::string predetermined_path) do { response = new_session_dialog->run (); + + if (!engine->connected()) { + new_session_dialog->hide (); + MessageDialog msg (_("Ardour is not connected to JACK at this time. Creating new sessions is not possible.")); + msg.run (); + return false; + } _session_is_new = false; @@ -1651,7 +1792,7 @@ ARDOUR_UI::new_session (std::string predetermined_path) quit(); } new_session_dialog->hide (); - return; + return false; } else if (response == Gtk::RESPONSE_NONE) { @@ -1802,15 +1943,20 @@ ARDOUR_UI::new_session (std::string predetermined_path) uint32_t nphysin = (uint32_t) new_session_dialog->input_limit_count(); uint32_t nphysout = (uint32_t) new_session_dialog->output_limit_count(); - build_session (session_path, - session_name, - cchns, - mchns, - iconnect, - oconnect, - nphysin, - nphysout, - engine->frame_rate() * 60 * 5); + if (build_session (session_path, + session_name, + cchns, + mchns, + iconnect, + oconnect, + nphysin, + nphysout, + engine->frame_rate() * 60 * 5)) { + + response = Gtk::RESPONSE_NONE; + new_session_dialog->reset (); + continue; + } } } } @@ -1821,6 +1967,7 @@ ARDOUR_UI::new_session (std::string predetermined_path) show(); new_session_dialog->get_window()->set_cursor(); new_session_dialog->hide(); + return true; } void @@ -1876,6 +2023,7 @@ ARDOUR_UI::load_session (const string & path, const string & snap_name, string* session->set_clean (); } + editor->edit_cursor_position (true); return 0; } @@ -1909,7 +2057,8 @@ ARDOUR_UI::build_session (const string & path, const string & snap_name, catch (...) { - error << string_compose(_("Session \"%1 (snapshot %2)\" did not load successfully"), path, snap_name) << endmsg; + MessageDialog msg (string_compose(_("Could not create session in \"%1\""), path)); + msg.run (); return -1; } @@ -2095,9 +2244,17 @@ After cleanup, unused audio files will be moved to a \ editor->prepare_for_cleanup (); + /* do not allow flush until a session is reloaded */ + + Glib::RefPtr act = ActionManager::get_action (X_("Main"), X_("FlushWastebasket")); + if (act) { + act->set_sensitive (false); + } + if (session->cleanup_sources (rep)) { return; } + checker.hide(); display_cleanup_results (rep, _("cleaned files"), @@ -2109,6 +2266,9 @@ Flushing the wastebasket will \n\ release an additional\n\ %4 %5bytes of disk space.\n" )); + + + } void @@ -2133,7 +2293,7 @@ releasing %4 %5bytes of disk space")); } void -ARDOUR_UI::add_route () +ARDOUR_UI::add_route (Gtk::Window* float_window) { int count; @@ -2143,7 +2303,9 @@ ARDOUR_UI::add_route () if (add_route_dialog == 0) { add_route_dialog = new AddRouteDialog; - editor->ensure_float (*add_route_dialog); + if (float_window) { + add_route_dialog->set_transient_for (*float_window); + } } if (add_route_dialog->is_visible()) { @@ -2261,18 +2423,18 @@ ARDOUR_UI::halt_on_xrun_message () void ARDOUR_UI::disk_overrun_handler () { - ENSURE_GUI_THREAD (mem_fun(*this, &ARDOUR_UI::disk_underrun_handler)); + ENSURE_GUI_THREAD (mem_fun(*this, &ARDOUR_UI::disk_overrun_handler)); - if (!have_disk_overrun_displayed) { - have_disk_overrun_displayed = true; - MessageDialog msg (*editor, X_("diskrate dialog"), _("\ + if (!have_disk_speed_dialog_displayed) { + have_disk_speed_dialog_displayed = true; + MessageDialog* msg = new MessageDialog (*editor, X_("diskrate dialog"), _("\ The disk system on your computer\n\ was not able to keep up with Ardour.\n\ \n\ Specifically, it failed to write data to disk\n\ quickly enough to keep up with recording.\n")); - msg.run (); - have_disk_overrun_displayed = false; + msg->signal_response().connect (bind (mem_fun (*this, &ARDOUR_UI::disk_speed_dialog_gone), msg)); + msg->show_all (); } } @@ -2281,29 +2443,24 @@ ARDOUR_UI::disk_underrun_handler () { ENSURE_GUI_THREAD (mem_fun(*this, &ARDOUR_UI::disk_underrun_handler)); - if (!have_disk_underrun_displayed) { - have_disk_underrun_displayed = true; - MessageDialog msg (*editor, - (_("The disk system on your computer\n\ + if (!have_disk_speed_dialog_displayed) { + have_disk_speed_dialog_displayed = true; + MessageDialog* msg = new MessageDialog (*editor, + _("The disk system on your computer\n\ was not able to keep up with Ardour.\n\ \n\ Specifically, it failed to read data from disk\n\ -quickly enough to keep up with playback.\n"))); - msg.run (); - have_disk_underrun_displayed = false; +quickly enough to keep up with playback.\n")); + msg->signal_response().connect (bind (mem_fun (*this, &ARDOUR_UI::disk_speed_dialog_gone), msg)); + msg->show_all (); } } void -ARDOUR_UI::disk_underrun_message_gone () +ARDOUR_UI::disk_speed_dialog_gone (int ignored_response, MessageDialog* msg) { - have_disk_underrun_displayed = false; -} - -void -ARDOUR_UI::disk_overrun_message_gone () -{ - have_disk_underrun_displayed = false; + have_disk_speed_dialog_displayed = false; + delete msg; } int @@ -2360,13 +2517,6 @@ ARDOUR_UI::reconnect_to_jack () } } -void -ARDOUR_UI::set_jack_buffer_size (nframes_t nframes) -{ - engine->request_buffer_size (nframes); - update_sample_rate (0); -} - int ARDOUR_UI::cmdline_new_session (string path) { @@ -2434,6 +2584,11 @@ ARDOUR_UI::use_config () Glib::RefPtr ract = Glib::RefPtr::cast_dynamic(act); ract->set_active (); } + + XMLNode* node = Config->extra_xml (X_("TransportControllables")); + if (node) { + set_transport_controllable_state (*node); + } } void @@ -2503,3 +2658,107 @@ ARDOUR_UI::store_clock_modes () +ARDOUR_UI::TransportControllable::TransportControllable (std::string name, ARDOUR_UI& u, ToggleType tp) + : Controllable (name), ui (u), type(tp) +{ + +} + +void +ARDOUR_UI::TransportControllable::set_value (float val) +{ + if (type == ShuttleControl) { + double fract; + + if (val == 0.5f) { + fract = 0.0; + } else { + if (val < 0.5f) { + fract = -((0.5f - val)/0.5f); + } else { + fract = ((val - 0.5f)/0.5f); + } + } + + ui.set_shuttle_fract (fract); + return; + } + + if (val < 0.5f) { + /* do nothing: these are radio-style actions */ + return; + } + + char *action = 0; + + switch (type) { + case Roll: + action = X_("Roll"); + break; + case Stop: + action = X_("Stop"); + break; + case GotoStart: + action = X_("Goto Start"); + break; + case GotoEnd: + action = X_("Goto End"); + break; + case AutoLoop: + action = X_("Loop"); + break; + case PlaySelection: + action = X_("Play Selection"); + break; + case RecordEnable: + action = X_("Record"); + break; + default: + break; + } + + if (action == 0) { + return; + } + + Glib::RefPtr act = ActionManager::get_action ("Transport", action); + + if (act) { + act->activate (); + } +} + +float +ARDOUR_UI::TransportControllable::get_value (void) const +{ + float val = 0.0f; + + switch (type) { + case Roll: + break; + case Stop: + break; + case GotoStart: + break; + case GotoEnd: + break; + case AutoLoop: + break; + case PlaySelection: + break; + case RecordEnable: + break; + case ShuttleControl: + break; + default: + break; + } + + return val; +} + +void +ARDOUR_UI::TransportControllable::set_id (const string& str) +{ + _id = str; +} diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 45a795dec3..171974deaa 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_gui_h__ @@ -55,6 +54,7 @@ #include #include #include +#include #include #include @@ -65,7 +65,6 @@ class AudioClock; class PublicEditor; class Keyboard; -class MeterBridge; class OptionEditor; class Mixer_UI; class ConnectionEditor; @@ -128,7 +127,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI _will_create_new_session_automatically = yn; } - void new_session(std::string path = string()); + bool new_session(std::string path = string()); gint cmdline_new_session (string path); int unload_session (); void close_session(); @@ -156,6 +155,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI static sigc::signal Blink; static sigc::signal RapidScreenUpdate; + static sigc::signal MidRapidScreenUpdate; static sigc::signal SuperRapidScreenUpdate; static sigc::signal Clock; @@ -187,7 +187,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI void store_clock_modes (); void restore_clock_modes (); - void add_route (); + void add_route (Gtk::Window* float_window); void session_add_audio_track (int input_channels, int32_t output_channels, ARDOUR::TrackMode mode, uint32_t how_many) { session_add_audio_route (true, input_channels, output_channels, mode, how_many); @@ -277,9 +277,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI GlobalClickBox *crossfade_time_button; vector crossfade_time_strings; - GlobalClickBox *mmc_id_button; - vector mmc_id_strings; - Gtk::ToggleButton preroll_button; Gtk::ToggleButton postroll_button; @@ -289,7 +286,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI int setup_windows (); void setup_transport (); void setup_clock (); - void setup_adjustables (); static ARDOUR_UI *theArdourUI; @@ -317,9 +313,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI void start_blinking (); void stop_blinking (); - void control_methods_adjusted (); - void mmc_device_id_adjusted (); - void about_signal_response(int response); private: @@ -360,18 +353,51 @@ class ARDOUR_UI : public Gtkmm2ext::UI Gtk::HBox primary_clock_hbox; Gtk::HBox secondary_clock_hbox; - Gtkmm2ext::StatefulButton roll_button; - Gtkmm2ext::StatefulButton stop_button; - Gtkmm2ext::StatefulButton rewind_button; - Gtkmm2ext::StatefulButton forward_button; - Gtkmm2ext::StatefulButton goto_start_button; - Gtkmm2ext::StatefulButton goto_end_button; - Gtkmm2ext::StatefulButton auto_loop_button; - Gtkmm2ext::StatefulButton play_selection_button; - Gtkmm2ext::StatefulButton rec_button; + struct TransportControllable : public PBD::Controllable { + enum ToggleType { + Roll = 0, + Stop, + RecordEnable, + GotoStart, + GotoEnd, + AutoLoop, + PlaySelection, + ShuttleControl + + }; + + TransportControllable (std::string name, ARDOUR_UI&, ToggleType); + void set_value (float); + float get_value (void) const; + + void set_id (const std::string&); + + ARDOUR_UI& ui; + ToggleType type; + }; + + TransportControllable roll_controllable; + TransportControllable stop_controllable; + TransportControllable goto_start_controllable; + TransportControllable goto_end_controllable; + TransportControllable auto_loop_controllable; + TransportControllable play_selection_controllable; + TransportControllable rec_controllable; + TransportControllable shuttle_controllable; + BindingProxy shuttle_controller_binding_proxy; + + void set_transport_controllable_state (const XMLNode&); + XMLNode& get_transport_controllable_state (); + + BindableButton roll_button; + BindableButton stop_button; + BindableButton goto_start_button; + BindableButton goto_end_button; + BindableButton auto_loop_button; + BindableButton play_selection_button; + BindableButton rec_button; - Gtk::ToggleButton time_master_button; Gtk::ComboBoxText sync_option_combo; void sync_option_changed (); @@ -403,16 +429,19 @@ class ARDOUR_UI : public Gtkmm2ext::UI gint shuttle_box_expose (GdkEventExpose*); gint mouse_shuttle (double x, bool force); void use_shuttle_fract (bool force); + void set_shuttle_fract (double); bool shuttle_grabbed; double shuttle_fract; - Gtk::ToggleButton punch_in_button; - Gtk::ToggleButton punch_out_button; - Gtk::ToggleButton auto_return_button; - Gtk::ToggleButton auto_play_button; - Gtk::ToggleButton auto_input_button; - Gtk::ToggleButton click_button; + Gtkmm2ext::StatefulToggleButton punch_in_button; + Gtkmm2ext::StatefulToggleButton punch_out_button; + Gtkmm2ext::StatefulToggleButton auto_return_button; + Gtkmm2ext::StatefulToggleButton auto_play_button; + Gtkmm2ext::StatefulToggleButton auto_input_button; + Gtkmm2ext::StatefulToggleButton click_button; + Gtkmm2ext::StatefulToggleButton time_master_button; + Gtk::ToggleButton auditioning_alert_button; Gtk::ToggleButton solo_alert_button; @@ -435,14 +464,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI void transport_rec_enable_blink (bool onoff); - /* These change where we accept control from: - MMC, X (local) or both. - */ - - void allow_mmc_only (); - void allow_mmc_and_local (); - void allow_local_only (); - Gtk::Menu* session_popup_menu; struct RecentSessionModelColumns : public Gtk::TreeModel::ColumnRecord { @@ -502,10 +523,12 @@ class ARDOUR_UI : public Gtkmm2ext::UI gint every_second (); gint every_point_one_seconds (); + gint every_point_oh_five_seconds (); gint every_point_zero_one_seconds (); sigc::connection second_connection; sigc::connection point_one_second_connection; + sigc::connection point_oh_five_second_connection; sigc::connection point_zero_one_second_connection; gint session_menu (GdkEventButton *); @@ -589,7 +612,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI /* Keymap handling */ void install_actions (); - void start_keyboard_prefix(); void toggle_record_enable (uint32_t); @@ -613,11 +635,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI struct timeval last_peak_grab; struct timeval last_shuttle_request; - bool have_disk_overrun_displayed; - bool have_disk_underrun_displayed; - - void disk_overrun_message_gone (); - void disk_underrun_message_gone (); + bool have_disk_speed_dialog_displayed; + void disk_speed_dialog_gone (int ignored_response, Gtk::MessageDialog*); void disk_overrun_handler (); void disk_underrun_handler (); @@ -646,10 +665,13 @@ class ARDOUR_UI : public Gtkmm2ext::UI void toggle_use_midi_control(); void toggle_send_mtc (); + void toggle_use_osc (); + void set_input_auto_connect (ARDOUR::AutoConnectOption); void set_output_auto_connect (ARDOUR::AutoConnectOption); void set_solo_model (ARDOUR::SoloModel); void set_monitor_model (ARDOUR::MonitorModel); + void set_remote_model (ARDOUR::RemoteModel); void toggle_StopPluginsWithTransport(); void toggle_DoNotRunPluginsWhileRecording(); @@ -658,12 +680,14 @@ class ARDOUR_UI : public Gtkmm2ext::UI void toggle_StopTransportAtEndOfSession(); void toggle_GainReduceFastTransport(); void toggle_LatchedSolo(); + void toggle_ShowSoloMutes(); void toggle_LatchedRecordEnable (); void toggle_RegionEquivalentsOverlap (); void mtc_port_changed (); void map_solo_model (); void map_monitor_model (); + void map_remote_model (); void map_file_header_format (); void map_file_data_format (); void map_input_auto_connect (); @@ -680,6 +704,9 @@ class ARDOUR_UI : public Gtkmm2ext::UI bool can_save_keybindings; bool first_idle (); + + void no_memory_warning (); + void check_memory_locking (); }; #endif /* __ardour_gui_h__ */ diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc index a39bcb124d..eec94b525f 100644 --- a/gtk2_ardour/ardour_ui2.cc +++ b/gtk2_ardour/ardour_ui2.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -38,10 +37,12 @@ #include #include "ardour_ui.h" +#include "keyboard.h" #include "public_editor.h" #include "audio_clock.h" #include "actions.h" #include "utils.h" +#include "color_manager.h" #include "i18n.h" @@ -72,9 +73,10 @@ ARDOUR_UI::setup_windows () setup_clock (); setup_transport(); - setup_adjustables (); build_menu_bar (); + color_manager->signal_unmap().connect (bind (sigc::ptr_fun(&ActionManager::uncheck_toggleaction), X_("/Common/ToggleColorManager"))); + top_packer.pack_start (menu_bar_base, false, false); top_packer.pack_start (transport_frame, false, false); @@ -83,46 +85,14 @@ ARDOUR_UI::setup_windows () return 0; } -void -ARDOUR_UI::setup_adjustables () -{ - adjuster_table.set_homogeneous (true); - - online_control_strings.push_back (_("MMC + Local")); - online_control_strings.push_back (_("MMC")); - online_control_strings.push_back (_("Local")); - - online_control_button = new GlobalClickBox ("CONTROL", - online_control_strings); - - online_control_button->adjustment.signal_value_changed().connect(mem_fun(*this,&ARDOUR_UI::control_methods_adjusted)); - - mmc_id_strings.push_back ("1"); - mmc_id_strings.push_back ("2"); - mmc_id_strings.push_back ("3"); - mmc_id_strings.push_back ("4"); - mmc_id_strings.push_back ("5"); - mmc_id_strings.push_back ("6"); - mmc_id_strings.push_back ("7"); - mmc_id_strings.push_back ("8"); - mmc_id_strings.push_back ("9"); - - mmc_id_button = new GlobalClickBox (_("MMC ID"), mmc_id_strings); - - mmc_id_button->adjustment.signal_value_changed().connect (mem_fun(*this,&ARDOUR_UI::mmc_device_id_adjusted)); - - adjuster_table.attach (*online_control_button, 0, 2, 1, 2, FILL|EXPAND, FILL, 5, 5); - adjuster_table.attach (*mmc_id_button, 2, 3, 1, 2, FILL, FILL, 5, 5); -} - void ARDOUR_UI::transport_stopped () { - stop_button.set_active (true); + stop_button.set_visual_state (1); - roll_button.set_active (false); - play_selection_button.set_active (false); - auto_loop_button.set_active (false); + roll_button.set_visual_state (0); + play_selection_button.set_visual_state (0); + auto_loop_button.set_visual_state (0); shuttle_fract = 0; shuttle_box.queue_draw (); @@ -133,22 +103,22 @@ ARDOUR_UI::transport_stopped () void ARDOUR_UI::transport_rolling () { - stop_button.set_active (false); + stop_button.set_visual_state (0); if (session->get_play_range()) { - play_selection_button.set_active (true); - roll_button.set_active (false); - auto_loop_button.set_active (false); + play_selection_button.set_visual_state (1); + roll_button.set_visual_state (0); + auto_loop_button.set_visual_state (0); } else if (session->get_play_loop ()) { - auto_loop_button.set_active (true); - play_selection_button.set_active (false); - roll_button.set_active (false); + auto_loop_button.set_visual_state (1); + play_selection_button.set_visual_state (0); + roll_button.set_visual_state (0); } else { - roll_button.set_active (true); - play_selection_button.set_active (false); - auto_loop_button.set_active (false); + roll_button.set_visual_state (1); + play_selection_button.set_visual_state (0); + auto_loop_button.set_visual_state (0); } /* reset shuttle controller */ @@ -160,19 +130,19 @@ ARDOUR_UI::transport_rolling () void ARDOUR_UI::transport_rewinding () { - stop_button.set_active(false); - roll_button.set_active (true); - play_selection_button.set_active (false); - auto_loop_button.set_active (false); + stop_button.set_visual_state (0); + roll_button.set_visual_state (1); + play_selection_button.set_visual_state (0); + auto_loop_button.set_visual_state (0); } void ARDOUR_UI::transport_forwarding () { - stop_button.set_active (false); - roll_button.set_active (true); - play_selection_button.set_active (false); - auto_loop_button.set_active (false); + stop_button.set_visual_state (0); + roll_button.set_visual_state (1); + play_selection_button.set_visual_state (0); + auto_loop_button.set_visual_state (0); } void @@ -207,6 +177,7 @@ ARDOUR_UI::setup_transport () play_selection_button.set_name ("TransportButton"); rec_button.set_name ("TransportRecButton"); auto_loop_button.set_name ("TransportButton"); + auto_return_button.set_name ("TransportButton"); auto_play_button.set_name ("TransportButton"); auto_input_button.set_name ("TransportButton"); @@ -215,30 +186,6 @@ ARDOUR_UI::setup_transport () click_button.set_name ("TransportButton"); time_master_button.set_name ("TransportButton"); - vector colors; - Gdk::Color c; - - /* record button has 3 color states, so we set 2 extra here */ - set_color(c, rgba_from_style ("TransportRecButton", 0xff, 0, 0, 0, "bg", Gtk::STATE_PRELIGHT, false )); - colors.push_back (c); - - set_color(c, rgba_from_style ("TransportRecButton", 0xff, 0, 0, 0, "bg", Gtk::STATE_ACTIVE, false )); - colors.push_back (c); - - rec_button.set_colors (colors); - colors.clear (); - - /* other buttons get 2 color states, so add one here */ - set_color(c, rgba_from_style ("TransportButton", 0x7f, 0xff, 0x7f, 0, "bg", Gtk::STATE_ACTIVE, false )); - colors.push_back (c); - - stop_button.set_colors (colors); - roll_button.set_colors (colors); - auto_loop_button.set_colors (colors); - play_selection_button.set_colors (colors); - goto_start_button.set_colors (colors); - goto_end_button.set_colors (colors); - stop_button.set_size_request(29, -1); roll_button.set_size_request(29, -1); auto_loop_button.set_size_request(29, -1); @@ -249,7 +196,7 @@ ARDOUR_UI::setup_transport () Widget* w; - stop_button.set_active (true); + stop_button.set_visual_state (1); w = manage (new Image (get_icon (X_("transport_start")))); w->show(); @@ -298,6 +245,7 @@ ARDOUR_UI::setup_transport () ARDOUR_UI::instance()->tooltips().set_tip (goto_start_button, _("Go to start of session")); ARDOUR_UI::instance()->tooltips().set_tip (goto_end_button, _("Go to end of session")); ARDOUR_UI::instance()->tooltips().set_tip (auto_loop_button, _("Play loop range")); + ARDOUR_UI::instance()->tooltips().set_tip (auto_return_button, _("Return to last playback start when stopped")); ARDOUR_UI::instance()->tooltips().set_tip (auto_play_button, _("Start playback after any locate")); ARDOUR_UI::instance()->tooltips().set_tip (auto_input_button, _("Be sensible about input monitoring")); @@ -338,12 +286,7 @@ ARDOUR_UI::setup_transport () ActionManager::get_action ("Transport", "TogglePunchIn")->connect_proxy (punch_in_button); ActionManager::get_action ("Transport", "TogglePunchOut")->connect_proxy (punch_out_button); - preroll_button.unset_flags (CAN_FOCUS); - preroll_button.set_events (preroll_button.get_events() & ~(Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK)); preroll_button.set_name ("TransportButton"); - - postroll_button.unset_flags (CAN_FOCUS); - postroll_button.set_events (postroll_button.get_events() & ~(Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK)); postroll_button.set_name ("TransportButton"); preroll_clock.set_mode (AudioClock::MinSec); @@ -622,6 +565,10 @@ ARDOUR_UI::shuttle_box_button_press (GdkEventButton* ev) return true; } + if (shuttle_controller_binding_proxy.button_press_handler (ev)) { + return true; + } + if (Keyboard::is_context_menu_event (ev)) { show_shuttle_context_menu (); return true; @@ -659,8 +606,8 @@ ARDOUR_UI::shuttle_box_button_release (GdkEventButton* ev) if (Config->get_auto_play() || roll_button.get_state()) { shuttle_fract = SHUTTLE_FRACT_SPEED1; session->request_transport_speed (1.0); - stop_button.set_active (false); - roll_button.set_active (true); + stop_button.set_visual_state (0); + roll_button.set_visual_state (1); } else { shuttle_fract = 0; session->request_transport_speed (0.0); @@ -673,8 +620,8 @@ ARDOUR_UI::shuttle_box_button_release (GdkEventButton* ev) if (session->transport_rolling()) { shuttle_fract = SHUTTLE_FRACT_SPEED1; session->request_transport_speed (1.0); - stop_button.set_active (false); - roll_button.set_active (true); + stop_button.set_visual_state (0); + roll_button.set_visual_state (1); } else { shuttle_fract = 0; } @@ -749,6 +696,13 @@ ARDOUR_UI::mouse_shuttle (double x, bool force) return true; } +void +ARDOUR_UI::set_shuttle_fract (double f) +{ + shuttle_fract = f; + use_shuttle_fract (false); +} + void ARDOUR_UI::use_shuttle_fract (bool force) { diff --git a/gtk2_ardour/ardour_ui_dependents.cc b/gtk2_ardour/ardour_ui_dependents.cc index 9c6daa8952..5617cdbc4f 100644 --- a/gtk2_ardour/ardour_ui_dependents.cc +++ b/gtk2_ardour/ardour_ui_dependents.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ /* this file exists solely to break compilation dependencies that diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc index 140ee649ea..765eb53282 100644 --- a/gtk2_ardour/ardour_ui_dialogs.cc +++ b/gtk2_ardour/ardour_ui_dialogs.cc @@ -62,6 +62,20 @@ ARDOUR_UI::connect_to_session (Session *s) ActionManager::set_sensitive (ActionManager::range_sensitive_actions, false); } + if (!session->control_out()) { + Glib::RefPtr act = ActionManager::get_action (X_("options"), X_("SoloViaBus")); + if (act) { + act->set_sensitive (false); + } + } + + /* allow wastebasket flush again */ + + Glib::RefPtr act = ActionManager::get_action (X_("Main"), X_("FlushWastebasket")); + if (act) { + act->set_sensitive (true); + } + /* there are never any selections on startup */ ActionManager::set_sensitive (ActionManager::region_selection_sensitive_actions, false); @@ -139,6 +153,7 @@ ARDOUR_UI::connect_to_session (Session *s) second_connection = Glib::signal_timeout().connect (mem_fun(*this, &ARDOUR_UI::every_second), 1000); point_one_second_connection = Glib::signal_timeout().connect (mem_fun(*this, &ARDOUR_UI::every_point_one_seconds), 100); + // point_oh_five_second_connection = Glib::signal_timeout().connect (mem_fun(*this, &ARDOUR_UI::every_point_oh_five_seconds), 50); point_zero_one_second_connection = Glib::signal_timeout().connect (mem_fun(*this, &ARDOUR_UI::every_point_zero_one_seconds), 40); } @@ -158,6 +173,7 @@ ARDOUR_UI::unload_session () editor->hide (); second_connection.disconnect (); point_one_second_connection.disconnect (); + point_oh_five_second_connection.disconnect (); point_zero_one_second_connection.disconnect(); ActionManager::set_sensitive (ActionManager::session_sensitive_actions, false); @@ -322,7 +338,7 @@ int ARDOUR_UI::create_route_params () { if (route_params == 0) { - route_params = new RouteParams_UI (*engine); + route_params = new RouteParams_UI (); route_params->set_session (session); route_params->signal_unmap().connect (sigc::bind(sigc::ptr_fun(&ActionManager::uncheck_toggleaction), X_("/Common/ToggleInspector"))); } diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc index b6e31d12d8..7f0ddeef78 100644 --- a/gtk2_ardour/ardour_ui_ed.cc +++ b/gtk2_ardour/ardour_ui_ed.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ /* This file contains any ARDOUR_UI methods that require knowledge of @@ -35,6 +34,7 @@ #include "actions.h" #include +#include #include #include @@ -54,7 +54,7 @@ ARDOUR_UI::create_editor () { try { - editor = new Editor (*engine); + editor = new Editor (); } catch (failed_constructor& err) { @@ -92,14 +92,15 @@ ARDOUR_UI::install_actions () /* the real actions */ - act = ActionManager::register_action (main_actions, X_("New"), _("New"), bind (mem_fun(*this, &ARDOUR_UI::new_session), string ())); + act = ActionManager::register_action (main_actions, X_("New"), _("New"), hide_return (bind (mem_fun(*this, &ARDOUR_UI::new_session), string ()))); ActionManager::register_action (main_actions, X_("Open"), _("Open"), mem_fun(*this, &ARDOUR_UI::open_session)); ActionManager::register_action (main_actions, X_("Recent"), _("Recent"), mem_fun(*this, &ARDOUR_UI::open_recent_session)); act = ActionManager::register_action (main_actions, X_("Close"), _("Close"), mem_fun(*this, &ARDOUR_UI::close_session)); ActionManager::session_sensitive_actions.push_back (act); - act = ActionManager::register_action (main_actions, X_("AddTrackBus"), _("Add Track/Bus"), mem_fun(*this, &ARDOUR_UI::add_route)); + act = ActionManager::register_action (main_actions, X_("AddTrackBus"), _("Add Track/Bus"), + bind (mem_fun(*this, &ARDOUR_UI::add_route), (Gtk::Window*) 0)); ActionManager::session_sensitive_actions.push_back (act); @@ -180,7 +181,6 @@ ARDOUR_UI::install_actions () common_actions = ActionGroup::create (X_("Common")); ActionManager::register_action (main_actions, X_("Windows"), _("Windows")); - ActionManager::register_action (common_actions, X_("Start-Prefix"), _("start prefix"), mem_fun(*this, &ARDOUR_UI::start_keyboard_prefix)); ActionManager::register_action (common_actions, X_("Quit"), _("Quit"), (mem_fun(*this, &ARDOUR_UI::finish))); /* windows visibility actions */ @@ -397,6 +397,11 @@ ARDOUR_UI::install_actions () act = ActionManager::register_toggle_action (option_actions, X_("UseMIDIcontrol"), _("Use MIDI control"), mem_fun (*this, &ARDOUR_UI::toggle_use_midi_control)); ActionManager::session_sensitive_actions.push_back (act); + act = ActionManager::register_toggle_action (option_actions, X_("UseOSC"), _("Use OSC"), mem_fun (*this, &ARDOUR_UI::toggle_use_osc)); +#ifndef HAVE_LIBLO + act->set_sensitive (false); +#endif + ActionManager::register_toggle_action (option_actions, X_("StopPluginsWithTransport"), _("Stop plugins with transport"), mem_fun (*this, &ARDOUR_UI::toggle_StopPluginsWithTransport)); ActionManager::register_toggle_action (option_actions, X_("VerifyRemoveLastCapture"), _("Verify remove last capture"), mem_fun (*this, &ARDOUR_UI::toggle_VerifyRemoveLastCapture)); ActionManager::register_toggle_action (option_actions, X_("StopRecordingOnXrun"), _("Stop recording on xrun"), mem_fun (*this, &ARDOUR_UI::toggle_StopRecordingOnXrun)); @@ -410,6 +415,8 @@ ARDOUR_UI::install_actions () act = ActionManager::register_toggle_action (option_actions, X_("LatchedSolo"), _("Latched solo"), mem_fun (*this, &ARDOUR_UI::toggle_LatchedSolo)); ActionManager::session_sensitive_actions.push_back (act); + act = ActionManager::register_toggle_action (option_actions, X_("ShowSoloMutes"), _("Show solo muting"), mem_fun (*this, &ARDOUR_UI::toggle_ShowSoloMutes)); + ActionManager::session_sensitive_actions.push_back (act); /* !!! REMEMBER THAT RADIO ACTIONS HAVE TO BE HANDLED WITH MORE FINESSE THAN SIMPLE TOGGLES !!! */ @@ -472,6 +479,15 @@ ARDOUR_UI::install_actions () act = ActionManager::register_radio_action (option_actions, output_auto_connect_group, X_("OutputAutoConnectManual"), _("Manually connect outputs"), hide_return (bind (mem_fun (*this, &ARDOUR_UI::set_output_auto_connect), (AutoConnectOption) 0))); ActionManager::session_sensitive_actions.push_back (act); + RadioAction::Group remote_group; + + act = ActionManager::register_radio_action (option_actions, remote_group, X_("RemoteUserDefined"), _("Remote ID assigned by User"), hide_return (bind (mem_fun (*this, &ARDOUR_UI::set_remote_model), UserOrdered))); + ActionManager::session_sensitive_actions.push_back (act); + act = ActionManager::register_radio_action (option_actions, remote_group, X_("RemoteMixerDefined"), _("Remote ID follows order of Mixer"), hide_return (bind (mem_fun (*this, &ARDOUR_UI::set_remote_model), MixerOrdered))); + ActionManager::session_sensitive_actions.push_back (act); + act = ActionManager::register_radio_action (option_actions, remote_group, X_("RemoteEditorDefined"), _("Remote ID follows order of Editor"), hide_return (bind (mem_fun (*this, &ARDOUR_UI::set_remote_model), EditorOrdered))); + ActionManager::session_sensitive_actions.push_back (act); + ActionManager::add_action_group (shuttle_actions); ActionManager::add_action_group (option_actions); ActionManager::add_action_group (jack_actions); @@ -526,6 +542,57 @@ ARDOUR_UI::toggle_control_protocol_feedback (ControlProtocolInfo* cpi, const cha } } +void +ARDOUR_UI::set_jack_buffer_size (nframes_t nframes) +{ + Glib::RefPtr action; + char* action_name = 0; + + switch (nframes) { + case 32: + action_name = X_("JACKLatency32"); + break; + case 64: + action_name = X_("JACKLatency64"); + break; + case 128: + action_name = X_("JACKLatency128"); + break; + case 512: + action_name = X_("JACKLatency512"); + break; + case 1024: + action_name = X_("JACKLatency1024"); + break; + case 2048: + action_name = X_("JACKLatency2048"); + break; + case 4096: + action_name = X_("JACKLatency4096"); + break; + case 8192: + action_name = X_("JACKLatency8192"); + break; + default: + /* XXX can we do anything useful ? */ + break; + } + + if (action_name) { + + action = ActionManager::get_action (X_("JACK"), action_name); + + if (action) { + Glib::RefPtr ract = Glib::RefPtr::cast_dynamic (action); + + if (ract && ract->get_active()) { + engine->request_buffer_size (nframes); + update_sample_rate (0); + } + } + } +} + void ARDOUR_UI::build_control_surface_menu () { diff --git a/gtk2_ardour/ardour_ui_mixer.cc b/gtk2_ardour/ardour_ui_mixer.cc index 991f37c3a7..dfc5d644b0 100644 --- a/gtk2_ardour/ardour_ui_mixer.cc +++ b/gtk2_ardour/ardour_ui_mixer.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ /* This file contains any ARDOUR_UI methods that require knowledge of @@ -35,7 +34,7 @@ ARDOUR_UI::create_mixer () { try { - mixer = new Mixer_UI (*engine); + mixer = new Mixer_UI (); } catch (failed_constructor& err) { @@ -44,3 +43,4 @@ ARDOUR_UI::create_mixer () return 0; } + diff --git a/gtk2_ardour/ardour_ui_options.cc b/gtk2_ardour/ardour_ui_options.cc index 5674d6dee1..c7db8f4ec6 100644 --- a/gtk2_ardour/ardour_ui_options.cc +++ b/gtk2_ardour/ardour_ui_options.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -25,6 +24,7 @@ #include #include +#include #include #include "ardour_ui.h" @@ -63,6 +63,12 @@ ARDOUR_UI::toggle_use_mmc () ActionManager::toggle_config_state ("options", "UseMMC", &Configuration::set_mmc_control, &Configuration::get_mmc_control); } +void +ARDOUR_UI::toggle_use_osc () +{ + ActionManager::toggle_config_state ("options", "UseOSC", &Configuration::set_use_osc, &Configuration::get_use_osc); +} + void ARDOUR_UI::toggle_use_midi_control () { @@ -78,7 +84,7 @@ ARDOUR_UI::toggle_send_midi_feedback () void ARDOUR_UI::set_native_file_header_format (HeaderFormat hf) { - const char *action; + const char *action = 0; switch (hf) { case BWF: @@ -120,7 +126,7 @@ ARDOUR_UI::set_native_file_header_format (HeaderFormat hf) void ARDOUR_UI::set_native_file_data_format (SampleFormat sf) { - const char* action; + const char* action = 0; switch (sf) { case FormatFloat: @@ -225,6 +231,39 @@ ARDOUR_UI::set_solo_model (SoloModel model) } +void +ARDOUR_UI::set_remote_model (RemoteModel model) +{ + const char* action = 0; + + switch (model) { + case UserOrdered: + action = X_("RemoteUserDefined"); + break; + case MixerOrdered: + action = X_("RemoteMixerDefined"); + break; + case EditorOrdered: + action = X_("RemoteEditorDefined"); + break; + + default: + fatal << string_compose (_("programming error: unknown remote model in ARDOUR_UI::set_remote_model: %1"), model) << endmsg; + /*NOTREACHED*/ + } + + Glib::RefPtr act = ActionManager::get_action ("options", action); + + if (act) { + Glib::RefPtr ract = Glib::RefPtr::cast_dynamic(act); + + if (ract && ract->get_active() && Config->get_remote_model() != model) { + Config->set_remote_model (model); + } + } + +} + void ARDOUR_UI::set_monitor_model (MonitorModel model) { @@ -389,6 +428,12 @@ ARDOUR_UI::toggle_LatchedSolo() ActionManager::toggle_config_state ("options", "LatchedSolo", &Configuration::set_solo_latched, &Configuration::get_solo_latched); } +void +ARDOUR_UI::toggle_ShowSoloMutes() +{ + ActionManager::toggle_config_state ("options", "ShowSoloMutes", &Configuration::set_show_solo_mutes, &Configuration::get_show_solo_mutes); +} + void ARDOUR_UI::mtc_port_changed () { @@ -471,6 +516,33 @@ ARDOUR_UI::map_monitor_model () } } +void +ARDOUR_UI::map_remote_model () +{ + const char* on = 0; + + switch (Config->get_remote_model()) { + case UserOrdered: + on = X_("RemoteUserDefined"); + break; + case MixerOrdered: + on = X_("RemoteMixerDefined"); + break; + case EditorOrdered: + on = X_("RemoteEditorDefined"); + break; + } + + Glib::RefPtr act = ActionManager::get_action ("options", on); + if (act) { + Glib::RefPtr tact = Glib::RefPtr::cast_dynamic(act); + + if (tact && !tact->get_active()) { + tact->set_active (true); + } + } +} + void ARDOUR_UI::map_file_header_format () { @@ -757,6 +829,19 @@ ARDOUR_UI::parameter_changed (const char* parameter_name) if (PARAM_IS ("slave-source")) { sync_option_combo.set_active_text (slave_source_to_string (Config->get_slave_source())); + + switch (Config->get_slave_source()) { + case None: + ActionManager::get_action ("Transport", "ToggleAutoPlay")->set_sensitive (true); + ActionManager::get_action ("Transport", "ToggleAutoReturn")->set_sensitive (true); + break; + + default: + /* XXX need to make auto-play is off as well as insensitive */ + ActionManager::get_action ("Transport", "ToggleAutoPlay")->set_sensitive (false); + ActionManager::get_action ("Transport", "ToggleAutoReturn")->set_sensitive (false); + break; + } } else if (PARAM_IS ("send-mtc")) { @@ -766,6 +851,18 @@ ARDOUR_UI::parameter_changed (const char* parameter_name) ActionManager::map_some_state ("options", "SendMMC", &Configuration::get_send_mmc); + } else if (PARAM_IS ("use-osc")) { + +#ifdef HAVE_LIBLO + if (Config->get_use_osc()) { + osc->start (); + } else { + osc->stop (); + } +#endif + + ActionManager::map_some_state ("options", "UseOSC", &Configuration::get_use_osc); + } else if (PARAM_IS ("mmc-control")) { ActionManager::map_some_state ("options", "UseMMC", &Configuration::get_mmc_control); } else if (PARAM_IS ("midi-feedback")) { @@ -778,6 +875,8 @@ ARDOUR_UI::parameter_changed (const char* parameter_name) ActionManager::map_some_state ("options", "LatchedRecordEnable", &Configuration::get_latched_record_enable); } else if (PARAM_IS ("solo-latched")) { ActionManager::map_some_state ("options", "LatchedSolo", &Configuration::get_solo_latched); + } else if (PARAM_IS ("show-solo-mutes")) { + ActionManager::map_some_state ("options", "ShowSoloMutes", &Configuration::get_show_solo_mutes); } else if (PARAM_IS ("solo-model")) { map_solo_model (); } else if (PARAM_IS ("auto-play")) { @@ -806,6 +905,8 @@ ARDOUR_UI::parameter_changed (const char* parameter_name) ActionManager::map_some_state ("options", "StopTransportAtEndOfSession", &Configuration::get_stop_at_session_end); } else if (PARAM_IS ("monitoring-model")) { map_monitor_model (); + } else if (PARAM_IS ("remote-model")) { + map_remote_model (); } else if (PARAM_IS ("use-video-sync")) { ActionManager::map_some_state ("Transport", "ToggleVideoSync", &Configuration::get_use_video_sync); } else if (PARAM_IS ("quieten-at-speed")) { diff --git a/gtk2_ardour/audio_clock.cc b/gtk2_ardour/audio_clock.cc index 481e91b09a..1334bfdc4b 100644 --- a/gtk2_ardour/audio_clock.cc +++ b/gtk2_ardour/audio_clock.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include // for sprintf diff --git a/gtk2_ardour/audio_clock.h b/gtk2_ardour/audio_clock.h index 662cb949e6..f0790dcbc8 100644 --- a/gtk2_ardour/audio_clock.h +++ b/gtk2_ardour/audio_clock.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __audio_clock_h__ diff --git a/gtk2_ardour/audio_region_editor.cc b/gtk2_ardour/audio_region_editor.cc index b7106a0796..4f1d0852bd 100644 --- a/gtk2_ardour/audio_region_editor.cc +++ b/gtk2_ardour/audio_region_editor.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/audio_region_editor.h b/gtk2_ardour/audio_region_editor.h index a84aec27c0..024f390d40 100644 --- a/gtk2_ardour/audio_region_editor.h +++ b/gtk2_ardour/audio_region_editor.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __gtk_ardour_audio_region_edit_h__ diff --git a/gtk2_ardour/audio_region_view.cc b/gtk2_ardour/audio_region_view.cc index 4bded299b4..ee2dd63b6c 100644 --- a/gtk2_ardour/audio_region_view.cc +++ b/gtk2_ardour/audio_region_view.cc @@ -88,14 +88,37 @@ AudioRegionView::AudioRegionView (ArdourCanvas::Group *parent, RouteTimeAxisView { } + +AudioRegionView::AudioRegionView (const AudioRegionView& other) + : RegionView (other) + , zero_line(0) + , fade_in_shape(0) + , fade_out_shape(0) + , fade_in_handle(0) + , fade_out_handle(0) + , gain_line(0) + , _amplitude_above_axis(1.0) + , _flags(0) + , fade_color(0) + +{ + Gdk::Color c; + int r,g,b,a; + + UINT_TO_RGBA (other.fill_color, &r, &g, &b, &a); + c.set_rgb_p (r/255.0, g/255.0, b/255.0); + + init (c, false); +} + void AudioRegionView::init (Gdk::Color& basic_color, bool wfd) { // FIXME: Some redundancy here with RegionView::init. Need to figure out // where order is important and where it isn't... - RegionView::init(basic_color, wfd); - + RegionView::init(basic_color, false); + XMLNode *node; _amplitude_above_axis = 1.0; @@ -629,13 +652,16 @@ AudioRegionView::set_samples_per_unit (gdouble spu) { RegionView::set_samples_per_unit (spu); - for (uint32_t n=0; n < waves.size(); ++n) { - waves[n]->property_samples_per_unit() = spu; + if (_flags & WaveformVisible) { + for (uint32_t n=0; n < waves.size(); ++n) { + waves[n]->property_samples_per_unit() = spu; + } } if (gain_line) { gain_line->reset (); } + reset_fade_shapes (); } @@ -698,6 +724,10 @@ AudioRegionView::set_waveform_visible (bool yn) if (((_flags & WaveformVisible) != yn)) { if (yn) { for (uint32_t n=0; n < waves.size(); ++n) { + /* make sure the zoom level is correct, since we don't update + this when waveforms are hidden. + */ + waves[n]->property_samples_per_unit() = samples_per_unit; waves[n]->show(); } _flags |= WaveformVisible; diff --git a/gtk2_ardour/audio_region_view.h b/gtk2_ardour/audio_region_view.h index a59972b807..233e1a7c9b 100644 --- a/gtk2_ardour/audio_region_view.h +++ b/gtk2_ardour/audio_region_view.h @@ -55,6 +55,8 @@ class AudioRegionView : public RegionView double initial_samples_per_unit, Gdk::Color& basic_color); + AudioRegionView (const AudioRegionView& other); + ~AudioRegionView (); virtual void init (Gdk::Color& base_color, bool wait_for_data = false); @@ -159,10 +161,10 @@ class AudioRegionView : public RegionView void compute_colors (Gdk::Color&); void reset_width_dependent_items (double pixel_width); void set_waveview_data_src(); - - vector wave_caches; void color_handler (ColorID, uint32_t); + + vector wave_caches; }; #endif /* __gtk_ardour_audio_region_view_h__ */ diff --git a/gtk2_ardour/audio_time_axis.cc b/gtk2_ardour/audio_time_axis.cc index 11d151fb91..5e0728b05a 100644 --- a/gtk2_ardour/audio_time_axis.cc +++ b/gtk2_ardour/audio_time_axis.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -116,21 +115,13 @@ AudioTimeAxisView::AudioTimeAxisView (PublicEditor& ed, Session& sess, boost::sh _route->panner().Changed.connect (mem_fun(*this, &AudioTimeAxisView::update_pans)); - if (is_track()) { + update_control_names (); - controls_ebox.set_name ("AudioTrackControlsBaseUnselected"); - controls_base_selected_name = "AudioTrackControlsBaseSelected"; - controls_base_unselected_name = "AudioTrackControlsBaseUnselected"; + if (is_audio_track()) { /* ask for notifications of any new RegionViews */ _view->RegionViewAdded.connect (mem_fun(*this, &AudioTimeAxisView::region_view_added)); _view->attach (); - - } else { /* bus */ - - controls_ebox.set_name ("AudioBusControlsBaseUnselected"); - controls_base_selected_name = "AudioBusControlsBaseSelected"; - controls_base_unselected_name = "AudioBusControlsBaseUnselected"; } post_construct (); @@ -630,7 +621,19 @@ void AudioTimeAxisView::route_active_changed () { RouteTimeAxisView::route_active_changed (); + update_control_names (); +} + +/** + * Set up the names of the controls so that they are coloured + * correctly depending on whether this route is inactive or + * selected. + */ + +void +AudioTimeAxisView::update_control_names () +{ if (is_audio_track()) { if (_route->active()) { controls_ebox.set_name ("AudioTrackControlsBaseUnselected"); diff --git a/gtk2_ardour/audio_time_axis.h b/gtk2_ardour/audio_time_axis.h index 95bd8c0955..d8c3f07cc1 100644 --- a/gtk2_ardour/audio_time_axis.h +++ b/gtk2_ardour/audio_time_axis.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_audio_time_axis_h__ @@ -115,6 +114,7 @@ class AudioTimeAxisView : public RouteTimeAxisView void pan_hidden (); void update_pans (); + void update_control_names (); AutomationTimeAxisView* gain_track; AutomationTimeAxisView* pan_track; diff --git a/gtk2_ardour/automation_gain_line.cc b/gtk2_ardour/automation_gain_line.cc index 74e4f64e3c..006543df18 100644 --- a/gtk2_ardour/automation_gain_line.cc +++ b/gtk2_ardour/automation_gain_line.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/automation_line.cc b/gtk2_ardour/automation_line.cc index 5598689855..4978a1ef68 100644 --- a/gtk2_ardour/automation_line.cc +++ b/gtk2_ardour/automation_line.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -25,6 +24,7 @@ #include #include +#include #include #include diff --git a/gtk2_ardour/automation_line.h b/gtk2_ardour/automation_line.h index 1349efac4b..4942643b65 100644 --- a/gtk2_ardour/automation_line.h +++ b/gtk2_ardour/automation_line.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_automation_line_h__ diff --git a/gtk2_ardour/automation_pan_line.cc b/gtk2_ardour/automation_pan_line.cc index aacfbdde75..04cfb0a311 100644 --- a/gtk2_ardour/automation_pan_line.cc +++ b/gtk2_ardour/automation_pan_line.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/axis_view.cc b/gtk2_ardour/axis_view.cc index e69fdf0540..0c57eebfca 100644 --- a/gtk2_ardour/axis_view.cc +++ b/gtk2_ardour/axis_view.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/axis_view.h b/gtk2_ardour/axis_view.h index 4ae8f8d46e..51f744c4e5 100644 --- a/gtk2_ardour/axis_view.h +++ b/gtk2_ardour/axis_view.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_gtk_axis_view_h__ diff --git a/gtk2_ardour/canvas-imageframe.h b/gtk2_ardour/canvas-imageframe.h index 6c2e5ab8b6..7c66c5e1db 100644 --- a/gtk2_ardour/canvas-imageframe.h +++ b/gtk2_ardour/canvas-imageframe.h @@ -16,7 +16,15 @@ #include #include + +#ifdef __cplusplus +extern "C" { +#endif #include +#ifdef __cplusplus +} +#endif + #include diff --git a/gtk2_ardour/canvas-simplerect.c b/gtk2_ardour/canvas-simplerect.c index d59096e68b..54339b9e3a 100644 --- a/gtk2_ardour/canvas-simplerect.c +++ b/gtk2_ardour/canvas-simplerect.c @@ -257,19 +257,20 @@ gnome_canvas_simplerect_bounds (GnomeCanvasItem *item, double *x1, double *y1, d } + static void gnome_canvas_simplerect_reset_bounds (GnomeCanvasItem *item) { GnomeCanvasSimpleRect* simplerect; double x1, x2, y1, y2; double old_x1, old_x2, old_y1, old_y2; - double a, b, c, d; - + ArtDRect unionrect, old, new; + old_x1 = item->x1; old_y1 = item->y1; old_x2 = item->x2; old_y2 = item->y2; - + gnome_canvas_simplerect_bounds (item, &x1, &y1, &x2, &y2); gnome_canvas_item_i2w (item, &x1, &y1); gnome_canvas_item_i2w (item, &x2, &y2); @@ -287,24 +288,74 @@ gnome_canvas_simplerect_reset_bounds (GnomeCanvasItem *item) gnome_canvas_w2c (GNOME_CANVAS(item->canvas), x2, y2, &simplerect->bbox_lrx, &simplerect->bbox_lry); /* now queue redraws for changed areas */ - - a = MIN(item->x1, old_x1); - b = MAX(item->x1, old_x1); - a = MIN(a, item->x2); - a = MIN(a, old_x2); - b = MAX(b, item->x2); - b = MAX(b, old_x2); + if (item->x1 == old_x1 && item->x2 == old_x2) { + + /* no change in x-axis position */ - c = MIN(item->y1, old_y1); - d = MAX(item->y1, old_y1); + if (item->y1 == old_y1) { + /* top didn't change, so just draw bottom */ - c = MIN(c,item->y2); - c = MIN(c, old_y2); - d = MAX(d,item->y2); - d = MAX(d, old_y2); + double start_y = MIN (item->y2, old_y2); + double end_y = MAX (item->y2, old_y2); - gnome_canvas_request_redraw (item->canvas, a, c, b + 0.5, d + 0.5); + gnome_canvas_request_redraw (item->canvas, item->x1, start_y - 0.5, item->x2 + 0.5, end_y + 0.5); + return; + + } else if (item->y2 == old_y2) { + + /* bottom didn't change, just draw top */ + + double start_y = MIN (item->y1, old_y1); + double end_y = MAX (item->y1, old_y1); + + gnome_canvas_request_redraw (item->canvas, item->x1, start_y - 0.5, item->x2 + 0.5, end_y + 0.5); + return; + + } + + } else if (item->y1 == old_y1 && item->y2 == old_y2) { + + /* no change in y-axis position */ + + if (item->x1 == old_x1) { + /* start didn't change, so just draw at the end */ + + double start_x = MIN (item->x2, old_x2); + double end_x = MAX (item->x2, old_x2); + + gnome_canvas_request_redraw (item->canvas, start_x - 0.5, item->y1, end_x + 0.5, item->y2 + 0.5); + return; + + } else if (item->x2 == old_x2) { + + /* end didn't change, so just draw at the start */ + + double start_x = MIN (item->x1, old_x1); + double end_x = MAX (item->x1, old_x1); + + gnome_canvas_request_redraw (item->canvas, start_x - 0.5, item->y1, end_x + 0.5, item->y2 + 0.5); + return; + + } + } + + new.x0 = x1; + new.y0 = y1; + new.x1 = x2; + new.y1 = y2; + + old.x0 = old_x1; + old.y0 = old_y1; + old.x1 = old_x2; + old.y1 = old_y2; + + art_drect_union (&unionrect, &old, &new); + gnome_canvas_request_redraw (item->canvas, + unionrect.x0, + unionrect.y0, + unionrect.x1 + 0.5, + unionrect.y1 + 0.5); } /* @@ -509,7 +560,7 @@ gnome_canvas_simplerect_render (GnomeCanvasItem *item, if (parent_class->render) { (*parent_class->render) (item, buf); } - + if (buf->is_bg) { #ifdef HARLEQUIN_DEBUGGING diff --git a/gtk2_ardour/canvas-waveview.c b/gtk2_ardour/canvas-waveview.c index 747761ea9a..c8e9f61332 100644 --- a/gtk2_ardour/canvas-waveview.c +++ b/gtk2_ardour/canvas-waveview.c @@ -369,7 +369,8 @@ gnome_canvas_waveview_ensure_cache (GnomeCanvasWaveView *waveview, gulong start_ end_sample = end_sample + waveview->region_start; #if DEBUG_CACHE // printf("waveview->region_start == %lu\n",waveview->region_start); - printf ("=> 0x%x cache @ 0x%x range: %lu - %lu request: %lu - %lu (%lu frames)\n", + // c_stacktrace (); + printf ("\n\n=> 0x%x cache @ 0x%x range: %lu - %lu request: %lu - %lu (%lu frames)\n", waveview, cache, cache->start, cache->end, start_sample, end_sample, end_sample - start_sample); @@ -413,7 +414,7 @@ gnome_canvas_waveview_ensure_cache (GnomeCanvasWaveView *waveview, gulong start_ } #if DEBUG_CACHE - fprintf (stderr, "\n\nAVAILABLE FRAMES = %lu of %lu, start = %lu, sstart = %lu, cstart = %lu\n", + fprintf (stderr, "AVAILABLE FRAMES = %lu of %lu, start = %lu, sstart = %lu, cstart = %lu\n", rf3, waveview->sourcefile_length_function (waveview->data_src, waveview->samples_per_unit), waveview->region_start, start_sample, new_cache_start); #endif diff --git a/gtk2_ardour/colors.h b/gtk2_ardour/colors.h index e6bdf1de4d..6997a61c70 100644 --- a/gtk2_ardour/colors.h +++ b/gtk2_ardour/colors.h @@ -104,3 +104,6 @@ COLORID(cTrimHandleLockedStart) COLORID(cTrimHandleLockedEnd) COLORID(cTrimHandleStart) COLORID(cTrimHandleEnd) +COLORID(cEditCursor) +COLORID(cPlayHead) + diff --git a/gtk2_ardour/connection_editor.cc b/gtk2_ardour/connection_editor.cc index a7c6e265ed..79d7605497 100644 --- a/gtk2_ardour/connection_editor.cc +++ b/gtk2_ardour/connection_editor.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/connection_editor.h b/gtk2_ardour/connection_editor.h index 71d201cd8d..aca85c7a83 100644 --- a/gtk2_ardour/connection_editor.h +++ b/gtk2_ardour/connection_editor.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_gtk_connection_editor_h__ diff --git a/gtk2_ardour/crossfade_edit.cc b/gtk2_ardour/crossfade_edit.cc index 208ef13aab..26d61035ba 100644 --- a/gtk2_ardour/crossfade_edit.cc +++ b/gtk2_ardour/crossfade_edit.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -194,7 +193,7 @@ CrossfadeEditor::CrossfadeEditor (Session& s, boost::shared_ptr xf, d for (list::iterator i = fade_in_presets->begin(); i != fade_in_presets->end(); ++i) { - pxmap = manage (new Image (get_xpm((*i)->xpm))); + pxmap = manage (new Image (::get_icon ((*i)->image_name))); pbutton = manage (new Button); pbutton->add (*pxmap); pbutton->set_name ("CrossfadeEditButton"); @@ -215,7 +214,7 @@ CrossfadeEditor::CrossfadeEditor (Session& s, boost::shared_ptr xf, d for (list::iterator i = fade_out_presets->begin(); i != fade_out_presets->end(); ++i) { - pxmap = manage (new Image (get_xpm((*i)->xpm))); + pxmap = manage (new Image (::get_icon ((*i)->image_name))); pbutton = manage (new Button); pbutton->add (*pxmap); pbutton->set_name ("CrossfadeEditButton"); @@ -832,7 +831,8 @@ CrossfadeEditor::build_presets () fade_out_presets = new Presets; /* FADE OUT */ - p = new Preset ("hiin.xpm"); + // p = new Preset ("hiin.xpm"); + p = new Preset ("crossfade_in_fast-cut"); p->push_back (PresetPoint (0, 0)); p->push_back (PresetPoint (0.0207373, 0.197222)); p->push_back (PresetPoint (0.0645161, 0.525)); @@ -843,7 +843,8 @@ CrossfadeEditor::build_presets () p->push_back (PresetPoint (1, 1)); fade_in_presets->push_back (p); - p = new Preset ("loin.xpm"); + // p = new Preset ("loin.xpm"); + p = new Preset ("crossfade_in_transition"); p->push_back (PresetPoint (0, 0)); p->push_back (PresetPoint (0.389401, 0.0333333)); p->push_back (PresetPoint (0.629032, 0.0861111)); @@ -853,7 +854,8 @@ CrossfadeEditor::build_presets () p->push_back (PresetPoint (1, 1)); fade_in_presets->push_back (p); - p = new Preset ("regin.xpm"); + // p = new Preset ("regin.xpm"); + p = new Preset ("crossfade_in_constant"); p->push_back (PresetPoint (0, 0)); p->push_back (PresetPoint (0.0737327, 0.308333)); p->push_back (PresetPoint (0.246544, 0.658333)); @@ -863,7 +865,8 @@ CrossfadeEditor::build_presets () p->push_back (PresetPoint (1, 1)); fade_in_presets->push_back (p); - p = new Preset ("regin2.xpm"); + // p = new Preset ("regin2.xpm"); + p = new Preset ("crossfade_in_slow-cut"); p->push_back (PresetPoint (0, 0)); p->push_back (PresetPoint (0.304147, 0.0694444)); p->push_back (PresetPoint (0.529954, 0.152778)); @@ -873,14 +876,16 @@ CrossfadeEditor::build_presets () p->push_back (PresetPoint (1, 1)); fade_in_presets->push_back (p); - p = new Preset ("linin.xpm"); + // p = new Preset ("linin.xpm"); + p = new Preset ("crossfade_in_dipped"); p->push_back (PresetPoint (0, 0)); p->push_back (PresetPoint (1, 1)); fade_in_presets->push_back (p); /* FADE OUT */ - p = new Preset ("hiout.xpm"); + // p = new Preset ("hiout.xpm"); + p = new Preset ("crossfade_out_fast-cut"); p->push_back (PresetPoint (0, 1)); p->push_back (PresetPoint (0.305556, 1)); p->push_back (PresetPoint (0.548611, 0.991736)); @@ -890,7 +895,8 @@ CrossfadeEditor::build_presets () p->push_back (PresetPoint (1, 0)); fade_out_presets->push_back (p); - p = new Preset ("regout.xpm"); + // p = new Preset ("regout.xpm"); + p = new Preset ("crossfade_out_constant"); p->push_back (PresetPoint (0, 1)); p->push_back (PresetPoint (0.228111, 0.988889)); p->push_back (PresetPoint (0.347926, 0.972222)); @@ -900,7 +906,8 @@ CrossfadeEditor::build_presets () p->push_back (PresetPoint (1, 0)); fade_out_presets->push_back (p); - p = new Preset ("loout.xpm"); + // p = new Preset ("loout.xpm"); + p = new Preset ("crossfade_out_transition"); p->push_back (PresetPoint (0, 1)); p->push_back (PresetPoint (0.023041, 0.697222)); p->push_back (PresetPoint (0.0553, 0.483333)); @@ -910,7 +917,8 @@ CrossfadeEditor::build_presets () p->push_back (PresetPoint (1, 0)); fade_out_presets->push_back (p); - p = new Preset ("regout2.xpm"); + // p = new Preset ("regout2.xpm"); + p = new Preset ("crossfade_out_slow-fade"); p->push_back (PresetPoint (0, 1)); p->push_back (PresetPoint (0.080645, 0.730556)); p->push_back (PresetPoint (0.277778, 0.289256)); @@ -919,7 +927,8 @@ CrossfadeEditor::build_presets () p->push_back (PresetPoint (1, 0)); fade_out_presets->push_back (p); - p = new Preset ("linout.xpm"); + // p = new Preset ("linout.xpm"); + p = new Preset ("crossfade_out_dipped"); p->push_back (PresetPoint (0, 1)); p->push_back (PresetPoint (1, 0)); fade_out_presets->push_back (p); diff --git a/gtk2_ardour/crossfade_edit.h b/gtk2_ardour/crossfade_edit.h index 3c9a6a13c1..4f2a617d92 100644 --- a/gtk2_ardour/crossfade_edit.h +++ b/gtk2_ardour/crossfade_edit.h @@ -43,10 +43,9 @@ class CrossfadeEditor : public ArdourDialog }; struct Preset : public list { - string xpm; + const char* image_name; - Preset (string x) - : xpm (x) {} + Preset (const char* x) : image_name (x) {} }; typedef list Presets; diff --git a/gtk2_ardour/crossfade_view.cc b/gtk2_ardour/crossfade_view.cc index 281a3251bc..ef43ee9873 100644 --- a/gtk2_ardour/crossfade_view.cc +++ b/gtk2_ardour/crossfade_view.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/crossfade_view.h b/gtk2_ardour/crossfade_view.h index 730813f78c..556d8c80c5 100644 --- a/gtk2_ardour/crossfade_view.h +++ b/gtk2_ardour/crossfade_view.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __gtk_ardour_crossfade_view_h__ diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 0f77f157f6..4df3b4ea11 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -35,6 +34,7 @@ #include #include +#include #include #include #include @@ -54,7 +54,6 @@ #include "ardour_ui.h" #include "editor.h" -#include "grouped_buttons.h" #include "keyboard.h" #include "marker.h" #include "playlist_selector.h" @@ -69,7 +68,6 @@ #include "editing.h" #include "public_editor.h" #include "crossfade_edit.h" -#include "audio_time_axis.h" #include "canvas_impl.h" #include "actions.h" #include "gui_thread.h" @@ -172,9 +170,8 @@ check_adjustment (Gtk::Adjustment* adj) } -Editor::Editor (AudioEngine& eng) - : engine (eng), - +Editor::Editor () + : /* time display buttons */ minsec_label (_("Mins:Secs")), @@ -311,6 +308,7 @@ Editor::Editor (AudioEngine& eng) button_release_can_deselect = true; canvas_idle_queued = false; _dragging_playhead = false; + _dragging_hscrollbar = false; location_marker_color = color_map[cLocationMarker]; location_range_color = color_map[cLocationRange]; @@ -356,8 +354,8 @@ Editor::Editor (AudioEngine& eng) edit_vscrollbar.set_adjustment (vertical_adjustment); edit_hscrollbar.set_adjustment (horizontal_adjustment); - edit_hscrollbar.signal_button_press_event().connect (mem_fun(*this, &Editor::hscrollbar_button_press)); - edit_hscrollbar.signal_button_release_event().connect (mem_fun(*this, &Editor::hscrollbar_button_release)); + edit_hscrollbar.signal_button_press_event().connect (mem_fun(*this, &Editor::hscrollbar_button_press), false); + edit_hscrollbar.signal_button_release_event().connect (mem_fun(*this, &Editor::hscrollbar_button_release), false); edit_hscrollbar.signal_size_allocate().connect (mem_fun(*this, &Editor::hscrollbar_allocate)); edit_hscrollbar.set_name ("EditorHScrollbar"); @@ -511,7 +509,7 @@ Editor::Editor (AudioEngine& eng) edit_group_display.set_name ("EditGroupList"); edit_group_display.get_selection()->set_mode (SELECTION_SINGLE); - edit_group_display.set_headers_visible (false); + edit_group_display.set_headers_visible (true); edit_group_display.set_reorderable (false); edit_group_display.set_rules_hint (true); edit_group_display.set_size_request (75, -1); @@ -986,6 +984,7 @@ Editor::handle_new_duration () if (new_end > last_canvas_frame) { last_canvas_frame = new_end; + horizontal_adjustment.set_upper (last_canvas_frame / frames_per_unit); reset_scrolling_region (); } @@ -1072,7 +1071,7 @@ Editor::connect_to_session (Session *t) session_connections.push_back (session->SMPTEOffsetChanged.connect (mem_fun(*this, &Editor::update_just_smpte))); - session_connections.push_back (session->tempo_map().StateChanged.connect (mem_fun(*this, &Editor::tempo_map_changed))); + session_connections.push_back (session->tempo_map().StateChanged.connect (bind (mem_fun(*this, &Editor::tempo_map_changed), false))); edit_groups_changed (); @@ -1094,8 +1093,7 @@ Editor::connect_to_session (Session *t) } session->locations()->add (loc, false); session->set_auto_loop_location (loc); - } - else { + } else { // force name loc->set_name (_("Loop")); } @@ -1108,8 +1106,7 @@ Editor::connect_to_session (Session *t) } session->locations()->add (loc, false); session->set_auto_punch_location (loc); - } - else { + } else { // force name loc->set_name (_("Punch")); } @@ -1241,8 +1238,8 @@ Editor::popup_fade_context_menu (int button, int32_t time, ArdourCanvas::Item* i items.push_back (SeparatorElem()); items.push_back (MenuElem (_("Linear"), bind (mem_fun (*this, &Editor::set_fade_in_shape), AudioRegion::Linear))); - items.push_back (MenuElem (_("Slowest"), bind (mem_fun (*this, &Editor::set_fade_in_shape), AudioRegion::LogB))); - items.push_back (MenuElem (_("Slow"), bind (mem_fun (*this, &Editor::set_fade_in_shape), AudioRegion::Fast))); + items.push_back (MenuElem (_("Slowest"), bind (mem_fun (*this, &Editor::set_fade_in_shape), AudioRegion::Fast))); + items.push_back (MenuElem (_("Slow"), bind (mem_fun (*this, &Editor::set_fade_in_shape), AudioRegion::LogB))); items.push_back (MenuElem (_("Fast"), bind (mem_fun (*this, &Editor::set_fade_in_shape), AudioRegion::LogA))); items.push_back (MenuElem (_("Fastest"), bind (mem_fun (*this, &Editor::set_fade_in_shape), AudioRegion::Slow))); break; @@ -1258,10 +1255,10 @@ Editor::popup_fade_context_menu (int button, int32_t time, ArdourCanvas::Item* i items.push_back (SeparatorElem()); items.push_back (MenuElem (_("Linear"), bind (mem_fun (*this, &Editor::set_fade_out_shape), AudioRegion::Linear))); - items.push_back (MenuElem (_("Slowest"), bind (mem_fun (*this, &Editor::set_fade_out_shape), AudioRegion::Fast))); - items.push_back (MenuElem (_("Slow"), bind (mem_fun (*this, &Editor::set_fade_out_shape), AudioRegion::LogB))); - items.push_back (MenuElem (_("Fast"), bind (mem_fun (*this, &Editor::set_fade_out_shape), AudioRegion::LogA))); - items.push_back (MenuElem (_("Fastest"), bind (mem_fun (*this, &Editor::set_fade_out_shape), AudioRegion::Slow))); + items.push_back (MenuElem (_("Slowest"), bind (mem_fun (*this, &Editor::set_fade_out_shape), AudioRegion::Slow))); + items.push_back (MenuElem (_("Slow"), bind (mem_fun (*this, &Editor::set_fade_out_shape), AudioRegion::LogA))); + items.push_back (MenuElem (_("Fast"), bind (mem_fun (*this, &Editor::set_fade_out_shape), AudioRegion::LogB))); + items.push_back (MenuElem (_("Fastest"), bind (mem_fun (*this, &Editor::set_fade_out_shape), AudioRegion::Fast))); break; @@ -3032,7 +3029,7 @@ gint Editor::edit_controls_button_release (GdkEventButton* ev) { if (Keyboard::is_context_menu_event (ev)) { - ARDOUR_UI::instance()->add_route (); + ARDOUR_UI::instance()->add_route (this); } return TRUE; } @@ -3181,7 +3178,6 @@ Editor::set_show_measures (bool yn) if ((_show_measures = yn) == true) { draw_measures (); } - DisplayControlChanged (ShowMeasures); instant_save (); } } @@ -3204,7 +3200,6 @@ Editor::set_follow_playhead (bool yn) /* catch up */ update_current_screen (); } - DisplayControlChanged (FollowPlayhead); instant_save (); } } @@ -3290,7 +3285,7 @@ Editor::playlist_deletion_dialog (boost::shared_ptr pl) label.show (); dialog.add_button (_("Delete playlist"), RESPONSE_ACCEPT); - dialog.add_button (_("Keep playlist"), RESPONSE_CANCEL); + dialog.add_button (_("Keep playlist"), RESPONSE_REJECT); dialog.add_button (_("Cancel"), RESPONSE_CANCEL); switch (dialog.run ()) { @@ -3621,26 +3616,6 @@ Editor::set_frames_per_unit (double fpu) instant_save (); } -void -Editor::canvas_horizontally_scrolled () -{ - /* this is the core function that controls horizontal scrolling of the canvas. it is called - whenever the horizontal_adjustment emits its "value_changed" signal. it executes in an - idle handler. - */ - - leftmost_frame = (nframes_t) floor (horizontal_adjustment.get_value() * frames_per_unit); - nframes_t rightmost_frame = leftmost_frame + current_page_frames (); - - if (rightmost_frame > last_canvas_frame) { - last_canvas_frame = rightmost_frame; - reset_scrolling_region (); - } - - update_fixed_rulers (); - tempo_map_changed (Change (0)); -} - void Editor::queue_visual_change (nframes_t where) { @@ -3687,7 +3662,7 @@ Editor::idle_visual_changer () /* the signal handler will do the rest */ } else { update_fixed_rulers(); - tempo_map_changed (Change (0)); + tempo_map_changed (Change (0), true); } } @@ -3707,3 +3682,12 @@ Editor::sort_track_selection () selection->tracks.sort (cmp); } +nframes_t +Editor::edit_cursor_position(bool sync) +{ + if (sync && edit_cursor->current_frame != edit_cursor_clock.current_time()) { + edit_cursor_clock.set(edit_cursor->current_frame, true); + } + + return edit_cursor->current_frame; +} diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index b0eaa83fd9..2e4b81208b 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_editor_h__ @@ -61,10 +60,6 @@ namespace Gtkmm2ext { class TearOff; } -namespace LinuxAudioSystems { - class AudioEngine; -} - namespace ARDOUR { class AudioDiskstream; class RouteGroup; @@ -122,7 +117,7 @@ class TimeAxisViewItem ; class Editor : public PublicEditor { public: - Editor (ARDOUR::AudioEngine&); + Editor (); ~Editor (); void connect_to_session (ARDOUR::Session *); @@ -147,11 +142,11 @@ class Editor : public PublicEditor void step_mouse_mode (bool next); Editing::MouseMode current_mouse_mode () { return mouse_mode; } - void add_imageframe_time_axis(const string & track_name, void*) ; - void add_imageframe_marker_time_axis(const string & track_name, TimeAxisView* marked_track, void*) ; + void add_imageframe_time_axis(const std::string & track_name, void*) ; + void add_imageframe_marker_time_axis(const std::string & track_name, TimeAxisView* marked_track, void*) ; void connect_to_image_compositor() ; void scroll_timeaxis_to_imageframe_item(const TimeAxisViewItem* item) ; - TimeAxisView* get_named_time_axis(const string & name) ; + TimeAxisView* get_named_time_axis(const std::string & name) ; void consider_auditioning (boost::shared_ptr); void hide_a_region (boost::shared_ptr); @@ -340,6 +335,8 @@ class Editor : public PublicEditor void reset_zoom (double); void reposition_and_zoom (nframes_t, double); + nframes_t edit_cursor_position(bool); + protected: void map_transport_state (); void map_position_change (nframes_t); @@ -349,7 +346,6 @@ class Editor : public PublicEditor private: ARDOUR::Session *session; - ARDOUR::AudioEngine& engine; bool constructed; PlaylistSelector* _playlist_selector; @@ -441,6 +437,7 @@ class Editor : public PublicEditor void catch_vanishing_regionview (RegionView *); bool set_selected_track (TimeAxisView&, Selection::Operation op = Selection::Set, bool no_remove=false); + void select_all_tracks (); bool set_selected_control_point_from_click (Selection::Operation op = Selection::Set, bool no_remove=false); bool set_selected_track_from_click (bool press, Selection::Operation op = Selection::Set, bool no_remove=false); @@ -608,7 +605,7 @@ class Editor : public PublicEditor nframes_t current_frame; double length; - Cursor (Editor&, const string& color, bool (Editor::*)(GdkEvent*,ArdourCanvas::Item*)); + Cursor (Editor&, bool (Editor::*)(GdkEvent*,ArdourCanvas::Item*)); ~Cursor (); void set_position (nframes_t); @@ -653,6 +650,7 @@ class Editor : public PublicEditor void controls_layout_size_request (Gtk::Requisition*); Gtk::HScrollbar edit_hscrollbar; + bool _dragging_hscrollbar; void reset_hscrollbar_stepping (); @@ -1174,7 +1172,7 @@ class Editor : public PublicEditor Gtk::Allocation canvas_allocation; bool canvas_idle_queued; void track_canvas_allocate (Gtk::Allocation alloc); - bool track_canvas_idle (); + bool track_canvas_size_allocated (); void set_edit_cursor (GdkEvent* event); void set_playhead_cursor (GdkEvent* event); @@ -1241,6 +1239,7 @@ class Editor : public PublicEditor void marker_menu_hide (); void marker_menu_loop_range (); void marker_menu_select_all_selectables_using_range (); + void marker_menu_select_using_range (); void marker_menu_separate_regions_using_location (); void marker_menu_play_from (); void marker_menu_play_range (); @@ -1275,7 +1274,7 @@ class Editor : public PublicEditor void remove_metric_marks (); void draw_metric_marks (const ARDOUR::Metrics& metrics); - void tempo_map_changed (ARDOUR::Change); + void tempo_map_changed (ARDOUR::Change, bool immediate_redraw); void redisplay_tempo (); void snap_to (nframes_t& first, int32_t direction = 0, bool for_mark = false); diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc index 138fa8510e..e04941b32b 100644 --- a/gtk2_ardour/editor_actions.cc +++ b/gtk2_ardour/editor_actions.cc @@ -126,7 +126,7 @@ Editor::register_actions () ActionManager::session_sensitive_actions.push_back (act); act = ActionManager::register_action (editor_actions, "jump-backward-to-mark", _("Jump Backward to Mark"), mem_fun(*this, &Editor::jump_backward_to_mark)); ActionManager::session_sensitive_actions.push_back (act); - act = ActionManager::register_action (editor_actions, "add-location-from-playhead", _("Add Location from Playhead"), mem_fun(*this, &Editor::add_location_from_playhead_cursor)); + act = ActionManager::register_action (editor_actions, "add-location-from-playhead", _("Add Mark from Playhead"), mem_fun(*this, &Editor::add_location_from_playhead_cursor)); ActionManager::session_sensitive_actions.push_back (act); act = ActionManager::register_action (editor_actions, "nudge-forward", _("Nudge Forward"), bind (mem_fun(*this, &Editor::nudge_forward), false)); @@ -430,7 +430,7 @@ Editor::toggle_waveform_visibility () void Editor::toggle_waveforms_while_recording () { - Glib::RefPtr act = ActionManager::get_action (X_("Editor"), X_("ToggleWaveformVisibility")); + Glib::RefPtr act = ActionManager::get_action (X_("Editor"), X_("ToggleWaveformsWhileRecording")); if (act) { Glib::RefPtr tact = Glib::RefPtr::cast_dynamic(act); set_show_waveforms_recording (tact->get_active()); diff --git a/gtk2_ardour/editor_audio_import.cc b/gtk2_ardour/editor_audio_import.cc index a7d7d0de96..2d7a7e2435 100644 --- a/gtk2_ardour/editor_audio_import.cc +++ b/gtk2_ardour/editor_audio_import.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -40,6 +39,7 @@ #include "sfdb_ui.h" #include "editing.h" #include "audio_time_axis.h" +#include "utils.h" #include "i18n.h" @@ -244,6 +244,8 @@ Editor::import_sndfile (vector paths, ImportMode mode, AudioTrack* trac while (!(import_status.done || import_status.cancel)) { gtk_main_iteration (); } + + interthread_progress_window->hide (); import_status.done = true; interthread_progress_connection.disconnect (); @@ -315,7 +317,8 @@ Editor::embed_sndfile (vector paths, bool split, bool multiple_fi choices.push_back (_("Embed all without questions")); Gtkmm2ext::Choice rate_choice ( - string_compose (_("%1\nThis audiofile's sample rate doesn't match the session sample rate!"), path), + string_compose (_("%1\nThis audiofile's sample rate doesn't match the session sample rate!"), + short_path (path, 40)), choices, false); int resx = rate_choice.run (); @@ -367,11 +370,21 @@ Editor::embed_sndfile (vector paths, bool split, bool multiple_fi for (int n = 0; n < finfo.channels; ++n) { try { - source = boost::dynamic_pointer_cast (SourceFactory::createReadable - (DataType::AUDIO, *session, path, n, - (mode == ImportAsTapeTrack ? - AudioFileSource::Destructive : - AudioFileSource::Flag (0)))); + + /* check if we have this thing embedded already */ + + boost::shared_ptr s; + + if ((s = session->source_by_path_and_channel (path, n)) == 0) { + cerr << "source doesn't exist yet\n"; + source = boost::dynamic_pointer_cast (SourceFactory::createReadable + (DataType::AUDIO, *session, path, n, + (mode == ImportAsTapeTrack ? + AudioFileSource::Destructive : + AudioFileSource::Flag (0)))); + } else { + source = boost::dynamic_pointer_cast (s); + } sources.push_back(source); } diff --git a/gtk2_ardour/editor_audiotrack.cc b/gtk2_ardour/editor_audiotrack.cc index f524dcdd40..31f382dbff 100644 --- a/gtk2_ardour/editor_audiotrack.cc +++ b/gtk2_ardour/editor_audiotrack.cc @@ -45,7 +45,6 @@ Editor::set_show_waveforms (bool yn) atv->set_show_waveforms (yn); } } - DisplayControlChanged (Editing::ShowWaveforms); } } @@ -61,6 +60,5 @@ Editor::set_show_waveforms_recording (bool yn) atv->set_show_waveforms_recording (yn); } } - DisplayControlChanged (Editing::ShowWaveformsRecording); } } diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc index 417d4ab0c4..617e3f4c8e 100644 --- a/gtk2_ardour/editor_canvas.cc +++ b/gtk2_ardour/editor_canvas.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -264,8 +263,20 @@ Editor::initialize_canvas () double time_width = FLT_MAX/frames_per_unit; time_canvas.set_scroll_region(0.0, 0.0, time_width, time_height); - edit_cursor = new Cursor (*this, "blue", &Editor::canvas_edit_cursor_event); - playhead_cursor = new Cursor (*this, "red", &Editor::canvas_playhead_cursor_event); + if (!color_map[cEditCursor]) { + warning << _("edit cursor color not defined, check your ardour.colors file!") << endmsg; + color_map[cEditCursor] = RGBA_TO_UINT (30,30,30,255); + } + + if (!color_map[cPlayHead]) { + warning << _("playhead color not defined, check your ardour.colors file!") << endmsg; + color_map[cPlayHead] = RGBA_TO_UINT (0,0,0,255); + } + + edit_cursor = new Cursor (*this, &Editor::canvas_edit_cursor_event); + edit_cursor->canvas_item.property_fill_color_rgba() = color_map[cEditCursor]; + playhead_cursor = new Cursor (*this, &Editor::canvas_playhead_cursor_event); + playhead_cursor->canvas_item.property_fill_color_rgba() = color_map[cPlayHead]; initial_ruler_update_required = true; track_canvas.signal_size_allocate().connect (mem_fun(*this, &Editor::track_canvas_allocate)); @@ -280,7 +291,7 @@ Editor::track_canvas_allocate (Gtk::Allocation alloc) if (!initial_ruler_update_required) { if (!canvas_idle_queued) { /* call this first so that we do stuff before any pending redraw */ - Glib::signal_idle().connect (mem_fun (*this, &Editor::track_canvas_idle), false); + Glib::signal_idle().connect (mem_fun (*this, &Editor::track_canvas_size_allocated), false); canvas_idle_queued = true; } return; @@ -288,11 +299,11 @@ Editor::track_canvas_allocate (Gtk::Allocation alloc) initial_ruler_update_required = false; - track_canvas_idle (); + track_canvas_size_allocated (); } bool -Editor::track_canvas_idle () +Editor::track_canvas_size_allocated () { if (canvas_idle_queued) { canvas_idle_queued = false; @@ -321,7 +332,6 @@ Editor::track_canvas_idle () full_canvas_height = height; } - zoom_range_clock.set ((nframes_t) floor ((canvas_width * frames_per_unit))); edit_cursor->set_position (edit_cursor->current_frame); playhead_cursor->set_position (playhead_cursor->current_frame); @@ -363,7 +373,7 @@ Editor::track_canvas_idle () } update_fixed_rulers(); - tempo_map_changed (Change (0)); + tempo_map_changed (Change (0), true); Resized (); /* EMIT_SIGNAL */ @@ -698,3 +708,25 @@ Editor::left_track_canvas (GdkEventCrossing *ev) } +void +Editor::canvas_horizontally_scrolled () +{ + /* this is the core function that controls horizontal scrolling of the canvas. it is called + whenever the horizontal_adjustment emits its "value_changed" signal. it typically executes in an + idle handler, which is important because tempo_map_changed() should issue redraws immediately + and not defer them to an idle handler. + */ + + leftmost_frame = (nframes_t) floor (horizontal_adjustment.get_value() * frames_per_unit); + nframes_t rightmost_frame = leftmost_frame + current_page_frames (); + + if (rightmost_frame > last_canvas_frame) { + last_canvas_frame = rightmost_frame; + reset_scrolling_region (); + } + + update_fixed_rulers (); + + tempo_map_changed (Change (0), !_dragging_hscrollbar); +} + diff --git a/gtk2_ardour/editor_canvas_events.cc b/gtk2_ardour/editor_canvas_events.cc index 4e0d6d5fe3..4a23e8b316 100644 --- a/gtk2_ardour/editor_canvas_events.cc +++ b/gtk2_ardour/editor_canvas_events.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -25,6 +24,7 @@ #include #include "editor.h" +#include "keyboard.h" #include "public_editor.h" #include "audio_region_view.h" #include "audio_streamview.h" @@ -71,7 +71,7 @@ Editor::track_canvas_scroll (GdkEventScroll* ev) event.button.y = wy; nframes_t where = event_frame (&event, 0, 0); - temporal_zoom_to_frame (true, where); + temporal_zoom_to_frame (false, where); return true; } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::Shift)) { if (!current_stepping_trackview) { @@ -102,7 +102,7 @@ Editor::track_canvas_scroll (GdkEventScroll* ev) event.button.y = wy; nframes_t where = event_frame (&event, 0, 0); - temporal_zoom_to_frame (false, where); + temporal_zoom_to_frame (true, where); return true; } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::Shift)) { if (!current_stepping_trackview) { diff --git a/gtk2_ardour/editor_cursors.cc b/gtk2_ardour/editor_cursors.cc index 7cd13cf686..239d27d4f9 100644 --- a/gtk2_ardour/editor_cursors.cc +++ b/gtk2_ardour/editor_cursors.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -31,7 +30,7 @@ using namespace ARDOUR; using namespace PBD; using namespace Gtk; -Editor::Cursor::Cursor (Editor& ed, const string& color, bool (Editor::*callbck)(GdkEvent*,ArdourCanvas::Item*)) +Editor::Cursor::Cursor (Editor& ed, bool (Editor::*callbck)(GdkEvent*,ArdourCanvas::Item*)) : editor (ed), canvas_item (*editor.cursor_group), length(1.0) @@ -43,7 +42,6 @@ Editor::Cursor::Cursor (Editor& ed, const string& color, bool (Editor::*callbck) points.push_back(Gnome::Art::Point(1.0, 0.0)); canvas_item.property_points() = points; - canvas_item.property_fill_color() = color; //.c_str()); canvas_item.property_width_pixels() = 1; canvas_item.property_first_arrowhead() = TRUE; canvas_item.property_last_arrowhead() = TRUE; diff --git a/gtk2_ardour/editor_edit_groups.cc b/gtk2_ardour/editor_edit_groups.cc index 2ee1773646..20179f84c6 100644 --- a/gtk2_ardour/editor_edit_groups.cc +++ b/gtk2_ardour/editor_edit_groups.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/editor_export_audio.cc b/gtk2_ardour/editor_export_audio.cc index ce7de29aa1..10438bfb02 100644 --- a/gtk2_ardour/editor_export_audio.cc +++ b/gtk2_ardour/editor_export_audio.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/editor_hscroller.cc b/gtk2_ardour/editor_hscroller.cc index c95d923092..f5f94c4163 100644 --- a/gtk2_ardour/editor_hscroller.cc +++ b/gtk2_ardour/editor_hscroller.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include "editor.h" @@ -34,17 +33,20 @@ Editor::hscrollbar_allocate (Gtk::Allocation &alloc) bool Editor::hscrollbar_button_press (GdkEventButton *ev) { - return true; + _dragging_hscrollbar = true; + return false; } bool Editor::hscrollbar_button_release (GdkEventButton *ev) { + _dragging_hscrollbar = false; + if (session) { } - return true; + return false; } void diff --git a/gtk2_ardour/editor_imageframe.cc b/gtk2_ardour/editor_imageframe.cc index 84419dbe7f..eb78fb5c7f 100644 --- a/gtk2_ardour/editor_imageframe.cc +++ b/gtk2_ardour/editor_imageframe.cc @@ -16,7 +16,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include "imageframe_view.h" diff --git a/gtk2_ardour/editor_keyboard.cc b/gtk2_ardour/editor_keyboard.cc index bfe61eae5c..e9082445c4 100644 --- a/gtk2_ardour/editor_keyboard.cc +++ b/gtk2_ardour/editor_keyboard.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/editor_keys.cc b/gtk2_ardour/editor_keys.cc index 1bcaafd279..b3081e8c8a 100644 --- a/gtk2_ardour/editor_keys.cc +++ b/gtk2_ardour/editor_keys.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -70,7 +69,7 @@ Editor::keyboard_duplicate_region () return; } - float prefix; + float prefix = 0; bool was_floating; if (get_prefix (prefix, was_floating) == 0) { @@ -83,7 +82,7 @@ Editor::keyboard_duplicate_region () void Editor::keyboard_duplicate_selection () { - float prefix; + float prefix = 0; bool was_floating; if (get_prefix (prefix, was_floating) == 0) { @@ -96,7 +95,7 @@ Editor::keyboard_duplicate_selection () void Editor::keyboard_paste () { - float prefix; + float prefix = 0; bool was_floating; if (get_prefix (prefix, was_floating) == 0) { @@ -109,7 +108,7 @@ Editor::keyboard_paste () void Editor::keyboard_insert_region_list_selection () { - float prefix; + float prefix = 0; bool was_floating; if (get_prefix (prefix, was_floating) == 0) { @@ -122,6 +121,7 @@ Editor::keyboard_insert_region_list_selection () int Editor::get_prefix (float& val, bool& was_floating) { - return Keyboard::the_keyboard().get_prefix (val, was_floating); + was_floating = false; + return 1; } diff --git a/gtk2_ardour/editor_markers.cc b/gtk2_ardour/editor_markers.cc index 238a45c4d1..06e99d0fbb 100644 --- a/gtk2_ardour/editor_markers.cc +++ b/gtk2_ardour/editor_markers.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -511,6 +510,7 @@ Editor::build_range_marker_menu (bool loop_or_punch) items.push_back (MenuElem (_("Separate Regions in Range"), mem_fun(*this, &Editor::marker_menu_separate_regions_using_location))); items.push_back (MenuElem (_("Select All in Range"), mem_fun(*this, &Editor::marker_menu_select_all_selectables_using_range))); + items.push_back (MenuElem (_("Select Range"), mem_fun(*this, &Editor::marker_menu_select_using_range))); } @@ -560,6 +560,24 @@ Editor::marker_menu_hide () } } +void +Editor::marker_menu_select_using_range () +{ + Marker* marker; + + if ((marker = reinterpret_cast (marker_menu_item->get_data ("marker"))) == 0) { + fatal << _("programming error: marker canvas item has no marker object pointer!") << endmsg; + /*NOTREACHED*/ + } + + Location* l; + bool is_start; + + if (((l = find_location_from_marker (marker, is_start)) != 0) && (l->end() > l->start())) { + set_selection_from_range (*l); + } +} + void Editor::marker_menu_select_all_selectables_using_range () { diff --git a/gtk2_ardour/editor_mixer.cc b/gtk2_ardour/editor_mixer.cc index 0e8901b881..cf0f831fa8 100644 --- a/gtk2_ardour/editor_mixer.cc +++ b/gtk2_ardour/editor_mixer.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -158,10 +157,13 @@ Editor::set_selected_mixer_strip (TimeAxisView& view) } } +double current = 0.0; +bool currentInitialized = 0; + void Editor::update_current_screen () { - if (session && engine.running()) { + if (session && session->engine().running()) { nframes_t frame; @@ -178,35 +180,52 @@ Editor::update_current_screen () playhead_cursor->canvas_item.show(); if (frame != last_update_frame) { - const jack_nframes_t page_width = current_page_frames(); - - // Percentage width of the visible range to use as a scroll interval - // Idea: snap this to the nearest bar/beat/tick/etc, would make scrolling much - // less jarring when zoomed in.. and it would be fun to watch :) - static const double scroll_pct = 3.0/4.0; - - const jack_nframes_t rightmost_frame = leftmost_frame + page_width; - const jack_nframes_t scroll_interval = (jack_nframes_t)(page_width * scroll_pct); - const jack_nframes_t padding = (jack_nframes_t)floor((page_width-scroll_interval) / 2.0); - if (frame < leftmost_frame + padding || frame > rightmost_frame - padding) { +#undef CONTINUOUS_SCROLL +#ifndef CONTINUOUS_SCROLL + if (frame < leftmost_frame || frame > leftmost_frame + current_page_frames()) { + if (session->transport_speed() < 0) { - if (frame > scroll_interval) { - center_screen (frame - scroll_interval/2); + if (frame > (current_page_frames()/2)) { + center_screen (frame-(current_page_frames()/2)); } else { - center_screen (scroll_interval); + center_screen (current_page_frames()/2); } } else { - center_screen(frame + scroll_interval/2); + center_screen (frame+(current_page_frames()/2)); } } playhead_cursor->set_position (frame); + +#else // CONTINUOUS_SCROLL + + /* don't do continuous scroll till the new position is in the rightmost quarter of the + editor canvas + */ + + if (session->transport_speed()) { + double target = ((double)frame - (double)current_page_frames()/2.0) / frames_per_unit; + if (target <= 0.0) target = 0.0; + if ( fabs(target - current) < current_page_frames()/frames_per_unit ) { + target = (target * 0.15) + (current * 0.85); + } else { + /* relax */ + } + //printf("frame: %d, cpf: %d, fpu: %6.6f, current: %6.6f, target : %6.6f\n", frame, current_page_frames(), frames_per_unit, current, target ); + current = target; + horizontal_adjustment.set_value ( current ); + } + + playhead_cursor->set_position (frame); + +#endif // CONTINUOUS_SCROLL + } } else { - + if (frame != last_update_frame) { if (frame < leftmost_frame || frame > leftmost_frame + current_page_frames()) { playhead_cursor->canvas_item.hide(); @@ -222,7 +241,7 @@ Editor::update_current_screen () if (current_mixer_strip) { current_mixer_strip->fast_update (); } - + } } diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index a7095d9e09..e007a225d8 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -35,6 +34,7 @@ #include "time_axis_view.h" #include "audio_time_axis.h" #include "audio_region_view.h" +#include "midi_region_view.h" #include "marker.h" #include "streamview.h" #include "region_gain_line.h" @@ -302,7 +302,9 @@ Editor::button_selection (ArdourCanvas::Item* item, GdkEvent* event, ItemType it if (((mouse_mode != MouseObject) && (mouse_mode != MouseAudition || item_type != RegionItem) && - (mouse_mode != MouseTimeFX || item_type != RegionItem)) || + (mouse_mode != MouseTimeFX || item_type != RegionItem) && + (mouse_mode != MouseRange)) || + (event->type != GDK_BUTTON_PRESS && event->type != GDK_BUTTON_RELEASE || event->button.button > 3)) { return; @@ -312,9 +314,11 @@ Editor::button_selection (ArdourCanvas::Item* item, GdkEvent* event, ItemType it if ((event->button.state & Keyboard::RelevantModifierKeyMask) && event->button.button != 1) { - /* no selection action on modified button-2 or button-3 events */ - - return; + /* almost no selection action on modified button-2 or button-3 events */ + + if (item_type != RegionItem && event->button.button != 2) { + return; + } } } @@ -325,29 +329,48 @@ Editor::button_selection (ArdourCanvas::Item* item, GdkEvent* event, ItemType it switch (item_type) { case RegionItem: - commit = set_selected_regionview_from_click (press, op, true); + if (mouse_mode != MouseRange) { + commit = set_selected_regionview_from_click (press, op, true); + } else if (event->type == GDK_BUTTON_PRESS) { + commit = set_selected_track_from_click (press, op, false); + } break; case RegionViewNameHighlight: case RegionViewName: - commit = set_selected_regionview_from_click (press, op, true); + if (mouse_mode != MouseRange) { + commit = set_selected_regionview_from_click (press, op, true); + } else if (event->type == GDK_BUTTON_PRESS) { + commit = set_selected_track_from_click (press, op, false); + } break; case FadeInHandleItem: case FadeInItem: case FadeOutHandleItem: case FadeOutItem: - commit = set_selected_regionview_from_click (press, op, true); + if (mouse_mode != MouseRange) { + commit = set_selected_regionview_from_click (press, op, true); + } else if (event->type == GDK_BUTTON_PRESS) { + commit = set_selected_track_from_click (press, op, false); + } break; case GainAutomationControlPointItem: case PanAutomationControlPointItem: case RedirectAutomationControlPointItem: - commit = set_selected_control_point_from_click (op, false); + if (mouse_mode != MouseRange) { + commit = set_selected_control_point_from_click (op, false); + } break; case StreamItem: - // commit = set_selected_track_from_click (press, op, true); + /* for context click or range selection, select track */ + if (event->button.button == 3) { + commit = set_selected_track_from_click (press, op, true); + } else if (event->type == GDK_BUTTON_PRESS && mouse_mode == MouseRange) { + commit = set_selected_track_from_click (press, op, false); + } break; case AutomationTrackItem: @@ -358,26 +381,6 @@ Editor::button_selection (ArdourCanvas::Item* item, GdkEvent* event, ItemType it break; } -#define SELECT_TRACK_FROM_CANVAS_IN_RANGE_MODE -#ifdef SELECT_TRACK_FROM_CANVAS_IN_RANGE_MODE - /* in range mode, button 1/2/3 press potentially selects a track */ - - if (mouse_mode == MouseRange && - event->type == GDK_BUTTON_PRESS && - event->button.button <= 3) { - - switch (item_type) { - case StreamItem: - case RegionItem: - case AutomationTrackItem: - commit = set_selected_track_from_click (true, op, true); - break; - - default: - break; - } - } -#endif if (commit) { commit_reversible_command (); } @@ -1174,23 +1177,25 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_ case GainAutomationControlPointItem: case PanAutomationControlPointItem: case RedirectAutomationControlPointItem: - cp = static_cast(item->get_data ("control_point")); - cp->set_visible (true); - - double at_x, at_y; - at_x = cp->get_x(); - at_y = cp->get_y (); - cp->item->i2w (at_x, at_y); - at_x += 20.0; - at_y += 20.0; - - fraction = 1.0 - (cp->get_y() / cp->line.height()); - - set_verbose_canvas_cursor (cp->line.get_verbose_cursor_string (fraction), at_x, at_y); - show_verbose_canvas_cursor (); - - if (is_drawable()) { - track_canvas.get_window()->set_cursor (*fader_cursor); + if (mouse_mode == MouseGain || mouse_mode == MouseObject) { + cp = static_cast(item->get_data ("control_point")); + cp->set_visible (true); + + double at_x, at_y; + at_x = cp->get_x(); + at_y = cp->get_y (); + cp->item->i2w (at_x, at_y); + at_x += 20.0; + at_y += 20.0; + + fraction = 1.0 - (cp->get_y() / cp->line.height()); + + set_verbose_canvas_cursor (cp->line.get_verbose_cursor_string (fraction), at_x, at_y); + show_verbose_canvas_cursor (); + + if (is_drawable()) { + track_canvas.get_window()->set_cursor (*fader_cursor); + } } break; @@ -1208,13 +1213,15 @@ Editor::enter_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_ case GainAutomationLineItem: case RedirectAutomationLineItem: case PanAutomationLineItem: - { - ArdourCanvas::Line *line = dynamic_cast (item); - if (line) - line->property_fill_color_rgba() = color_map[cEnteredAutomationLine]; - } - if (is_drawable()) { - track_canvas.get_window()->set_cursor (*fader_cursor); + if (mouse_mode == MouseGain || mouse_mode == MouseObject) { + { + ArdourCanvas::Line *line = dynamic_cast (item); + if (line) + line->property_fill_color_rgba() = color_map[cEnteredAutomationLine]; + } + if (is_drawable()) { + track_canvas.get_window()->set_cursor (*fader_cursor); + } } break; @@ -1515,7 +1522,10 @@ Editor::motion_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item */ if (!drag_info.move_threshold_passed) { - drag_info.move_threshold_passed = (abs ((int) (drag_info.current_pointer_x - drag_info.grab_x)) > 4); + bool x_threshold_passed = (abs ((int) (drag_info.current_pointer_x - drag_info.grab_x)) > 4); + bool y_threshold_passed = (abs ((int) (drag_info.current_pointer_y - drag_info.grab_y)) > 4); + + drag_info.move_threshold_passed = (x_threshold_passed || y_threshold_passed); // and change the initial grab loc/frame if this drag info wants us to @@ -2825,60 +2835,34 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event) drag_info.want_move_threshold = false; // don't copy again - /* this is committed in the grab finished callback. */ - - begin_reversible_command (_("Drag region copy")); - /* duplicate the region(s) */ vector new_regionviews; - set > affected_playlists; - pair >::iterator,bool> insert_result; - for (list::const_iterator i = selection->regions.by_layer().begin(); i != selection->regions.by_layer().end(); ++i) { RegionView* rv; - + RegionView* nrv; + AudioRegionView* arv = dynamic_cast(rv); + MidiRegionView* mrv = dynamic_cast(rv); + rv = (*i); - - boost::shared_ptr to_playlist = rv->region()->playlist(); - RouteTimeAxisView* rtv = dynamic_cast(&rv->get_time_axis_view()); - insert_result = affected_playlists.insert (to_playlist); - if (insert_result.second) { - session->add_command (new MementoCommand(*to_playlist, &to_playlist->get_state(), 0)); - } - - latest_regionview = 0; - - sigc::connection c = rtv->view()->RegionViewAdded.connect (mem_fun(*this, &Editor::collect_new_region_view)); - - /* create a new region with the same name. */ - - boost::shared_ptr newregion; + if (arv) + nrv = new AudioRegionView (*arv); + else if (mrv) + nrv = new MidiRegionView (*mrv); + else + continue; - newregion = RegionFactory::create (rv->region()); - assert(newregion != 0); + nrv->get_canvas_group()->show (); - /* if the original region was locked, we don't care */ - - newregion->set_locked (false); - - to_playlist->add_region (newregion, (nframes_t) (rv->region()->position() * rtv->get_diskstream()->speed())); - - c.disconnect (); - - if (latest_regionview) { - new_regionviews.push_back (latest_regionview); - } + new_regionviews.push_back (nrv); } - - if (new_regionviews.empty()) { return; } - + /* reset selection to new regionviews */ selection->set (new_regionviews); @@ -2886,6 +2870,7 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event) /* reset drag_info data to reflect the fact that we are dragging the copies */ drag_info.data = new_regionviews.front(); + swap_grab (new_regionviews.front()->get_canvas_group (), 0, event->motion.time); } @@ -3164,149 +3149,147 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event) MOTION ************************************************************/ - pair >::iterator,bool> insert_result; - const list& layered_regions = selection->regions.by_layer(); + bool do_move; - for (list::const_iterator i = layered_regions.begin(); i != layered_regions.end(); ++i) { + if (drag_info.first_move) { + if (drag_info.move_threshold_passed) { + do_move = true; + } else { + do_move = false; + } + } else { + do_move = true; + } + + if (do_move) { + + pair >::iterator,bool> insert_result; + const list& layered_regions = selection->regions.by_layer(); + + for (list::const_iterator i = layered_regions.begin(); i != layered_regions.end(); ++i) { - RegionView* rv = (*i); - double ix1, ix2, iy1, iy2; - int32_t temp_pointer_y_span = pointer_y_span; + RegionView* rv = (*i); + double ix1, ix2, iy1, iy2; + int32_t temp_pointer_y_span = pointer_y_span; - /* get item BBox, which will be relative to parent. so we have - to query on a child, then convert to world coordinates using - the parent. - */ + /* get item BBox, which will be relative to parent. so we have + to query on a child, then convert to world coordinates using + the parent. + */ - rv->get_canvas_frame()->get_bounds (ix1, iy1, ix2, iy2); - rv->get_canvas_group()->i2w (ix1, iy1); - TimeAxisView* tvp2 = trackview_by_y_position (iy1); - RouteTimeAxisView* canvas_rtv = dynamic_cast(tvp2); - RouteTimeAxisView* temp_rtv; - - if ((pointer_y_span != 0) && !clamp_y_axis) { - y_delta = 0; - int32_t x = 0; - for (j = height_list.begin(); j!= height_list.end(); j++) { - if (x == canvas_rtv->order) { - /* we found the track the region is on */ - if (x != original_pointer_order) { - /*this isn't from the same track we're dragging from */ - temp_pointer_y_span = canvas_pointer_y_span; - } - while (temp_pointer_y_span > 0) { - /* we're moving up canvas-wise, - so we need to find the next track height - */ - if (j != height_list.begin()) { - j--; - } - if (x != original_pointer_order) { - /* we're not from the dragged track, so ignore hidden tracks. */ - if ((*j) == 0) { - temp_pointer_y_span++; - } - } - y_delta -= (*j); - temp_pointer_y_span--; - } - while (temp_pointer_y_span < 0) { - y_delta += (*j); - if (x != original_pointer_order) { - if ((*j) == 0) { - temp_pointer_y_span--; + rv->get_canvas_frame()->get_bounds (ix1, iy1, ix2, iy2); + rv->get_canvas_group()->i2w (ix1, iy1); + TimeAxisView* tvp2 = trackview_by_y_position (iy1); + RouteTimeAxisView* canvas_rtv = dynamic_cast(tvp2); + RouteTimeAxisView* temp_rtv; + + if ((pointer_y_span != 0) && !clamp_y_axis) { + y_delta = 0; + int32_t x = 0; + for (j = height_list.begin(); j!= height_list.end(); j++) { + if (x == canvas_rtv->order) { + /* we found the track the region is on */ + if (x != original_pointer_order) { + /*this isn't from the same track we're dragging from */ + temp_pointer_y_span = canvas_pointer_y_span; + } + while (temp_pointer_y_span > 0) { + /* we're moving up canvas-wise, + so we need to find the next track height + */ + if (j != height_list.begin()) { + j--; } - } + if (x != original_pointer_order) { + /* we're not from the dragged track, so ignore hidden tracks. */ + if ((*j) == 0) { + temp_pointer_y_span++; + } + } + y_delta -= (*j); + temp_pointer_y_span--; + } + while (temp_pointer_y_span < 0) { + y_delta += (*j); + if (x != original_pointer_order) { + if ((*j) == 0) { + temp_pointer_y_span--; + } + } - if (j != height_list.end()) { - j++; + if (j != height_list.end()) { + j++; + } + temp_pointer_y_span++; } - temp_pointer_y_span++; - } - /* find out where we'll be when we move and set height accordingly */ + /* find out where we'll be when we move and set height accordingly */ - tvp2 = trackview_by_y_position (iy1 + y_delta); - temp_rtv = dynamic_cast(tvp2); - rv->set_height (temp_rtv->height); + tvp2 = trackview_by_y_position (iy1 + y_delta); + temp_rtv = dynamic_cast(tvp2); + rv->set_height (temp_rtv->height); - /* if you un-comment the following, the region colours will follow the track colours whilst dragging, - personally, i think this can confuse things, but never mind. - */ + /* if you un-comment the following, the region colours will follow the track colours whilst dragging, + personally, i think this can confuse things, but never mind. + */ - //const GdkColor& col (temp_rtv->view->get_region_color()); - //rv->set_color (const_cast(col)); - break; + //const GdkColor& col (temp_rtv->view->get_region_color()); + //rv->set_color (const_cast(col)); + break; + } + x++; } - x++; } - } - /* prevent the regionview from being moved to before - the zero position on the canvas. - */ - /* clamp */ + /* prevent the regionview from being moved to before + the zero position on the canvas. + */ + /* clamp */ - if (x_delta < 0) { - if (-x_delta > ix1) { - x_delta = -ix1; + if (x_delta < 0) { + if (-x_delta > ix1) { + x_delta = -ix1; + } + } else if ((x_delta > 0) &&(rv->region()->last_frame() > max_frames - x_delta)) { + x_delta = max_frames - rv->region()->last_frame(); } - } else if ((x_delta > 0) &&(rv->region()->last_frame() > max_frames - x_delta)) { - x_delta = max_frames - rv->region()->last_frame(); - } - - if (drag_info.first_move) { - - /* hide any dependent views */ - rv->get_time_axis_view().hide_dependent_views (*rv); - - /* this is subtle. raising the regionview itself won't help, - because raise_to_top() just puts the item on the top of - its parent's stack. so, we need to put the trackview canvas_display group - on the top, since its parent is the whole canvas. - */ + if (drag_info.first_move) { - rv->get_canvas_group()->raise_to_top(); - rv->get_time_axis_view().canvas_display->raise_to_top(); - cursor_group->raise_to_top(); + /* hide any dependent views */ + + rv->get_time_axis_view().hide_dependent_views (*rv); + + /* this is subtle. raising the regionview itself won't help, + because raise_to_top() just puts the item on the top of + its parent's stack. so, we need to put the trackview canvas_display group + on the top, since its parent is the whole canvas. + */ + + rv->get_canvas_group()->raise_to_top(); + rv->get_time_axis_view().canvas_display->raise_to_top(); + cursor_group->raise_to_top(); - /* freeze the playlists from notifying till - the motion is done. - */ + rv->fake_set_opaque (true); + } + + if (drag_info.brushing) { + mouse_brush_insert_region (rv, pending_region_position); + } else { + rv->move (x_delta, y_delta); + } - RouteTimeAxisView* rtv = dynamic_cast (&rv->get_time_axis_view()); - if (rtv && rtv->is_audio_track()) { - boost::shared_ptr pl = boost::dynamic_pointer_cast(rtv->get_diskstream()->playlist()); - if (pl) { - /* only freeze and capture state once */ + } /* foreach region */ - insert_result = motion_frozen_playlists.insert (pl); - if (insert_result.second) { - pl->freeze(); - session->add_command(new MementoCommand(*pl, &pl->get_state(), 0)); - } - } - } - rv->region()->set_opaque(false); - } + } /* if do_move */ - if (drag_info.brushing) { - mouse_brush_insert_region (rv, pending_region_position); - } else { - rv->move (x_delta, y_delta); - } - } - - if (drag_info.first_move) { + if (drag_info.first_move && drag_info.move_threshold_passed) { cursor_group->raise_to_top(); + drag_info.first_move = false; } - - drag_info.first_move = false; - + if (x_delta != 0 && !drag_info.brushing) { show_verbose_time_cursor (drag_info.last_frame_position, 10); } - } void @@ -3317,7 +3300,7 @@ Editor::region_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* event pair >::iterator,bool> insert_result; bool nocommit = true; double speed; - RouteTimeAxisView* atv; + RouteTimeAxisView* rtv; bool regionview_y_movement; bool regionview_x_movement; @@ -3346,9 +3329,9 @@ Editor::region_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* event /* adjust for track speed */ speed = 1.0; - atv = dynamic_cast (drag_info.last_trackview); - if (atv && atv->get_diskstream()) { - speed = atv->get_diskstream()->speed(); + rtv = dynamic_cast (drag_info.last_trackview); + if (rtv && rtv->get_diskstream()) { + speed = rtv->get_diskstream()->speed(); } regionview_x_movement = (drag_info.last_frame_position != (nframes_t) (rv->region()->position()/speed)); @@ -3357,106 +3340,94 @@ Editor::region_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* event //printf ("last_frame: %s position is %lu %g\n", rv->get_time_axis_view().name().c_str(), drag_info.last_frame_position, speed); //printf ("last_rackview: %s \n", drag_info.last_trackview->name().c_str()); + char* op_string; + + if (drag_info.copy) { + if (drag_info.x_constrained) { + op_string = _("fixed time region copy"); + } else { + op_string = _("region copy"); + } + } else { + if (drag_info.x_constrained) { + op_string = _("fixed time region drag"); + } else { + op_string = _("region drag"); + } + } + + begin_reversible_command (op_string); + if (regionview_y_movement) { - /* motion between tracks */ + /* moved to a different audio track. */ list new_selection; - - /* moved to a different audio track. */ + new_selection = selection->regions.by_layer(); + selection->clear_regions (); - for (list::const_iterator i = selection->regions.by_layer().begin(); i != selection->regions.by_layer().end(); ) { - - RegionView* rv2 = (*i); - - /* the region that used to be in the old playlist is not - moved to the new one - we make a copy of it. as a result, - any existing editor for the region should no longer be - visible. - */ + for (list::const_iterator i = new_selection.begin(); i != new_selection.end(); ++i) { - if (!drag_info.copy) { - rv2->hide_region_editor(); - } - new_selection.push_back (rv2); - i++; - } - - /* first, freeze the target tracks */ - - for (list::const_iterator i = new_selection.begin(); i != new_selection.end();i++ ) { + RegionView* rv = (*i); - boost::shared_ptr from_playlist; - boost::shared_ptr to_playlist; - double ix1, ix2, iy1, iy2; - - (*i)->get_canvas_frame()->get_bounds (ix1, iy1, ix2, iy2); - (*i)->get_canvas_group()->i2w (ix1, iy1); + + rv->get_canvas_frame()->get_bounds (ix1, iy1, ix2, iy2); + rv->get_canvas_group()->i2w (ix1, iy1); TimeAxisView* tvp2 = trackview_by_y_position (iy1); - RouteTimeAxisView* atv2 = dynamic_cast(tvp2); + RouteTimeAxisView* rtv2 = dynamic_cast(tvp2); - (*i)->region()->set_opaque (true); + boost::shared_ptr from_playlist = rv->region()->playlist(); + boost::shared_ptr to_playlist = rtv2->playlist(); - from_playlist = (*i)->region()->playlist(); - to_playlist = atv2->playlist(); - - /* the from_playlist was frozen in the "first_move" case - of the motion handler. the insert can fail, - but that doesn't matter. it just means - we already have the playlist in the list. - */ - - motion_frozen_playlists.insert (from_playlist); - - /* only freeze the to_playlist once */ - - insert_result = motion_frozen_playlists.insert(to_playlist); - if (insert_result.second) { - to_playlist->freeze(); - session->add_command(new MementoCommand(*to_playlist, &to_playlist->get_state(), 0)); - } - - } - - /* now do it again with the actual operations */ - - for (list::const_iterator i = new_selection.begin(); i != new_selection.end();i++ ) { + where = (nframes_t) (unit_to_frame (ix1) * speed); + boost::shared_ptr new_region (RegionFactory::create (rv->region())); - boost::shared_ptr from_playlist; - boost::shared_ptr to_playlist; + if (!drag_info.copy) { - double ix1, ix2, iy1, iy2; - - (*i)->get_canvas_frame()->get_bounds (ix1, iy1, ix2, iy2); - (*i)->get_canvas_group()->i2w (ix1, iy1); - TimeAxisView* tvp2 = trackview_by_y_position (iy1); - RouteTimeAxisView* atv2 = dynamic_cast(tvp2); + /* the region that used to be in the old playlist is not + moved to the new one - we make a copy of it. as a result, + any existing editor for the region should no longer be + visible. + */ - from_playlist = (*i)->region()->playlist(); - to_playlist = atv2->playlist(); + rv->hide_region_editor(); + rv->fake_set_opaque (false); - latest_regionview = 0; - - where = (nframes_t) (unit_to_frame (ix1) * speed); - boost::shared_ptr new_region (RegionFactory::create ((*i)->region())); + session->add_command (new MementoCommand(*from_playlist, &from_playlist->get_state(), 0)); + from_playlist->remove_region ((rv->region())); + session->add_command (new MementoCommand(*from_playlist, 0, &from_playlist->get_state())); + } - from_playlist->remove_region (((*i)->region())); + latest_regionview = 0; - sigc::connection c = atv2->view()->RegionViewAdded.connect (mem_fun(*this, &Editor::collect_new_region_view)); + sigc::connection c = rtv2->view()->RegionViewAdded.connect (mem_fun(*this, &Editor::collect_new_region_view)); + session->add_command (new MementoCommand(*to_playlist, &to_playlist->get_state(), 0)); to_playlist->add_region (new_region, where); + session->add_command (new MementoCommand(*to_playlist, 0, &to_playlist->get_state())); c.disconnect (); if (latest_regionview) { selection->add (latest_regionview); } + + if (drag_info.copy) { + // get rid of the copy + delete rv; + } } } else { /* motion within a single track */ + + list regions = selection->regions.by_layer(); + + if (drag_info.copy) { + selection->clear_regions(); + } - for (list::const_iterator i = selection->regions.by_layer().begin(); i != selection->regions.by_layer().end(); ++i) { + for (list::iterator i = regions.begin(); i != regions.end(); ++i) { rv = (*i); @@ -3464,12 +3435,13 @@ Editor::region_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* event continue; } + if (regionview_x_movement) { double ownspeed = 1.0; - RouteTimeAxisView* atv = dynamic_cast (&(rv->get_time_axis_view())); + rtv = dynamic_cast (&(rv->get_time_axis_view())); - if (atv && atv->get_diskstream()) { - ownspeed = atv->get_diskstream()->speed(); + if (rtv && rtv->get_diskstream()) { + ownspeed = rtv->get_diskstream()->speed(); } /* base the new region position on the current position of the regionview.*/ @@ -3485,23 +3457,62 @@ Editor::region_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* event where = rv->region()->position(); } - rv->get_time_axis_view().reveal_dependent_views (*rv); + boost::shared_ptr to_playlist = rv->region()->playlist(); - /* no need to add an undo here, we did that when we added this playlist to motion_frozen playlists */ - - rv->region()->set_position (where, (void *) this); - rv->region()->set_opaque (true); + /* add the undo */ + + session->add_command (new MementoCommand(*to_playlist, &to_playlist->get_state(), 0)); + + if (drag_info.copy) { + + boost::shared_ptr newregion; + boost::shared_ptr ar; + + if ((ar = boost::dynamic_pointer_cast(rv->region())) != 0) { + newregion = RegionFactory::create (ar); + } else { + /* XXX MIDI HERE drobilla */ + continue; + } + + /* add it */ + + latest_regionview = 0; + sigc::connection c = rtv->view()->RegionViewAdded.connect (mem_fun(*this, &Editor::collect_new_region_view)); + to_playlist->add_region (newregion, (nframes_t) (where * rtv->get_diskstream()->speed())); + c.disconnect (); + + if (latest_regionview) { + rtv->reveal_dependent_views (*latest_regionview); + selection->add (latest_regionview); + } + + /* if the original region was locked, we don't care for the new one */ + + newregion->set_locked (false); + + } else { + + /* just change the model */ + + rv->region()->set_position (where, (void*) this); + + } + + /* add the redo */ + + session->add_command (new MementoCommand(*to_playlist, 0, &to_playlist->get_state())); + + /* get rid of the copy */ + + if (drag_info.copy) { + delete rv; + } } } out: - for (set >::iterator p = motion_frozen_playlists.begin(); p != motion_frozen_playlists.end(); ++p) { - (*p)->thaw (); - session->add_command (new MementoCommand(*((*p).get()), 0, & (*p)->get_state())); - } - - motion_frozen_playlists.clear (); - + if (!nocommit) { commit_reversible_command (); } @@ -3516,10 +3527,10 @@ Editor::region_view_item_click (AudioRegionView& rv, GdkEventButton* event) if (Keyboard::modifier_state_contains (event->state, Keyboard::Control)) { TimeAxisView* tv = &rv.get_time_axis_view(); - RouteTimeAxisView* atv = dynamic_cast(tv); + RouteTimeAxisView* rtv = dynamic_cast(tv); double speed = 1.0; - if (atv && atv->is_track()) { - speed = atv->get_diskstream()->speed(); + if (rtv && rtv->is_track()) { + speed = rtv->get_diskstream()->speed(); } if (Keyboard::modifier_state_equals (event->state, Keyboard::ModifierMask (Keyboard::Control|Keyboard::Alt))) { @@ -3976,8 +3987,6 @@ Editor::start_trim (ArdourCanvas::Item* item, GdkEvent* event) nframes_t region_end = (nframes_t) (clicked_regionview->region()->last_frame() / speed); nframes_t region_length = (nframes_t) (clicked_regionview->region()->length() / speed); - motion_frozen_playlists.clear(); - //drag_info.item = clicked_regionview->get_name_highlight(); drag_info.item = item; drag_info.motion_callback = &Editor::trim_motion_callback; @@ -4066,7 +4075,7 @@ Editor::trim_motion_callback (ArdourCanvas::Item* item, GdkEvent* event) begin_reversible_command (trim_type); for (list::const_iterator i = selection->regions.by_layer().begin(); i != selection->regions.by_layer().end(); ++i) { - (*i)->region()->set_opaque(false); + (*i)->fake_set_opaque(false); (*i)->region()->freeze (); AudioRegionView* const arv = dynamic_cast(*i); @@ -4261,7 +4270,7 @@ Editor::trim_finished_callback (ArdourCanvas::Item* item, GdkEvent* event) i != selection->regions.by_layer().end(); ++i) { thaw_region_after_trim (**i); - (*i)->region()->set_opaque(true); + (*i)->fake_set_opaque (true); } } @@ -4887,14 +4896,14 @@ Editor::mouse_brush_insert_region (RegionView* rv, nframes_t pos) return; } - RouteTimeAxisView* atv = dynamic_cast(&arv->get_time_axis_view()); + RouteTimeAxisView* rtv = dynamic_cast(&arv->get_time_axis_view()); - if (atv == 0 || !atv->is_track()) { + if (rtv == 0 || !rtv->is_track()) { return; } - boost::shared_ptr playlist = atv->playlist(); - double speed = atv->get_diskstream()->speed(); + boost::shared_ptr playlist = rtv->playlist(); + double speed = rtv->get_diskstream()->speed(); XMLNode &before = playlist->get_state(); playlist->add_region (boost::dynamic_pointer_cast (RegionFactory::create (arv->audio_region())), (nframes_t) (pos * speed)); diff --git a/gtk2_ardour/editor_nudge.cc b/gtk2_ardour/editor_nudge.cc index c6f5eeeb48..1420fd6fc2 100644 --- a/gtk2_ardour/editor_nudge.cc +++ b/gtk2_ardour/editor_nudge.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 3a2658c204..fbf384ace9 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -2570,7 +2569,7 @@ Editor::bounce_range_selection () return; } - TrackViewList *views = get_valid_views (selection->time.track, selection->time.group); + TrackSelection views = selection->tracks; nframes_t start = selection->time[clicked_selection].start; nframes_t end = selection->time[clicked_selection].end; @@ -2578,7 +2577,7 @@ Editor::bounce_range_selection () begin_reversible_command (_("bounce range")); - for (TrackViewList::iterator i = views->begin(); i != views->end(); ++i) { + for (TrackViewList::iterator i = views.begin(); i != views.end(); ++i) { AudioTimeAxisView* atv; @@ -2605,8 +2604,6 @@ Editor::bounce_range_selection () } commit_reversible_command (); - - delete views; } void diff --git a/gtk2_ardour/editor_region_list.cc b/gtk2_ardour/editor_region_list.cc index 5bf704f649..5b1b9c63de 100644 --- a/gtk2_ardour/editor_region_list.cc +++ b/gtk2_ardour/editor_region_list.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -27,12 +26,14 @@ #include #include +#include #include #include #include "editor.h" #include "editing.h" +#include "keyboard.h" #include "ardour_ui.h" #include "gui_thread.h" #include "actions.h" @@ -85,6 +86,9 @@ Editor::add_region_to_region_display (boost::shared_ptr region) string str; TreeModel::Row row; Gdk::Color c; + bool missing_source; + + missing_source = boost::dynamic_pointer_cast(region->source()); if (!show_automatic_regions_in_region_list && region->automatic()) { return; @@ -124,7 +128,11 @@ Editor::add_region_to_region_display (boost::shared_ptr region) } else if (region->whole_file()) { row = *(region_list_model->append()); - set_color(c, rgba_from_style ("RegionListWholeFile", 0xff, 0, 0, 0, "fg", Gtk::STATE_NORMAL, false )); + if (missing_source) { + c.set_rgb(65535,0,0); // FIXME: error color from style + } else { + set_color(c, rgba_from_style ("RegionListWholeFile", 0xff, 0, 0, 0, "fg", Gtk::STATE_NORMAL, false )); + } row[region_list_columns.color_] = c; if (region->source()->name()[0] == '/') { // external file @@ -150,6 +158,10 @@ Editor::add_region_to_region_display (boost::shared_ptr region) } + if (missing_source) { + str += _(" (MISSING)"); + } + row[region_list_columns.name] = str; row[region_list_columns.region] = region; diff --git a/gtk2_ardour/editor_route_list.cc b/gtk2_ardour/editor_route_list.cc index 216e3a8e1b..5c97685ee8 100644 --- a/gtk2_ardour/editor_route_list.cc +++ b/gtk2_ardour/editor_route_list.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -24,11 +23,13 @@ #include #include "editor.h" +#include "keyboard.h" #include "ardour_ui.h" #include "audio_time_axis.h" #include "midi_time_axis.h" #include "mixer_strip.h" #include "gui_thread.h" +#include "actions.h" #include @@ -56,7 +57,7 @@ Editor::handle_new_route (Session::RouteList& routes) boost::shared_ptr route = (*x); if (route->hidden()) { - return; + continue; } if (route->default_type() == ARDOUR::DataType::AUDIO) @@ -157,9 +158,10 @@ Editor::remove_route (TimeAxisView *tv) } } /* since the editor mixer goes away when you remove a route, set the - * button to inacttive + * button to inactive and untick the menu option */ editor_mixer_button.set_active(false); + ActionManager::uncheck_toggleaction ("/Editor/show-editor-mixer"); /* and disable if all tracks and/or routes are gone */ @@ -275,6 +277,8 @@ Editor::redisplay_route_list () } + full_canvas_height = position; + /* make sure the cursors stay on top of every newly added track */ cursor_group->raise_to_top (); @@ -518,11 +522,13 @@ Editor::initial_route_list_display () void Editor::route_list_change (const Gtk::TreeModel::Path& path,const Gtk::TreeModel::iterator& iter) { + session->set_remote_control_ids(); redisplay_route_list (); } void Editor::route_list_delete (const Gtk::TreeModel::Path& path) { + session->set_remote_control_ids(); redisplay_route_list (); } diff --git a/gtk2_ardour/editor_rulers.cc b/gtk2_ardour/editor_rulers.cc index bc2328b524..9cf09d0ace 100644 --- a/gtk2_ardour/editor_rulers.cc +++ b/gtk2_ardour/editor_rulers.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include // for sprintf, grrr @@ -706,7 +705,7 @@ Editor::update_ruler_visibility () update_fixed_rulers(); //update_tempo_based_rulers(); - tempo_map_changed(Change (0)); + tempo_map_changed(Change (0), false); time_canvas_event_box.show_all(); time_button_event_box.show_all(); diff --git a/gtk2_ardour/editor_selection.cc b/gtk2_ardour/editor_selection.cc index c1f563658b..3052fb72fa 100644 --- a/gtk2_ardour/editor_selection.cc +++ b/gtk2_ardour/editor_selection.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: editor.cc 1353 2007-01-18 03:06:15Z paul $ */ #include @@ -154,6 +153,11 @@ Editor::extend_selection_to_track (TimeAxisView& view) return false; } +void +Editor::select_all_tracks () +{ + selection->set (track_views); +} bool Editor::set_selected_track (TimeAxisView& view, Selection::Operation op, bool no_remove) diff --git a/gtk2_ardour/editor_selection_list.cc b/gtk2_ardour/editor_selection_list.cc index 864e527b59..1d75bf5d13 100644 --- a/gtk2_ardour/editor_selection_list.cc +++ b/gtk2_ardour/editor_selection_list.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -31,6 +30,7 @@ #include #include "editor.h" +#include "keyboard.h" #include "selection.h" #include "time_axis_view.h" #include "ardour_ui.h" diff --git a/gtk2_ardour/editor_tempodisplay.cc b/gtk2_ardour/editor_tempodisplay.cc index 8aa978a79c..ae2bda903e 100644 --- a/gtk2_ardour/editor_tempodisplay.cc +++ b/gtk2_ardour/editor_tempodisplay.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include // for sprintf, grrr @@ -94,13 +93,13 @@ Editor::draw_metric_marks (const Metrics& metrics) } void -Editor::tempo_map_changed (Change ignored) +Editor::tempo_map_changed (Change ignored, bool immediate_redraw) { if (!session) { return; } - ENSURE_GUI_THREAD(bind (mem_fun(*this, &Editor::tempo_map_changed), ignored)); + ENSURE_GUI_THREAD(bind (mem_fun (*this, &Editor::tempo_map_changed), ignored, immediate_redraw)); BBT_Time previous_beat, next_beat; // the beats previous to the leftmost frame and after the rightmost frame @@ -135,18 +134,27 @@ Editor::tempo_map_changed (Change ignored) current_bbt_points = 0; } - redisplay_tempo (); + if (immediate_redraw) { + + hide_measures (); + + if (session && current_bbt_points) { + draw_measures (); + } + + } else { + + if (session && current_bbt_points) { + Glib::signal_idle().connect (mem_fun (*this, &Editor::lazy_hide_and_draw_measures)); + } else { + hide_measures (); + } + } } void Editor::redisplay_tempo () { - - if (session && current_bbt_points) { - Glib::signal_idle().connect (mem_fun (*this, &Editor::lazy_hide_and_draw_measures)); - } else { - hide_measures (); - } } void diff --git a/gtk2_ardour/editor_timefx.cc b/gtk2_ardour/editor_timefx.cc index bfc5ee85cd..45cc42b11c 100644 --- a/gtk2_ardour/editor_timefx.cc +++ b/gtk2_ardour/editor_timefx.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/export_dialog.cc b/gtk2_ardour/export_dialog.cc index 921e6776aa..bd5292032b 100644 --- a/gtk2_ardour/export_dialog.cc +++ b/gtk2_ardour/export_dialog.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ @@ -109,7 +108,6 @@ ExportDialog::ExportDialog(PublicEditor& e) src_quality_label (_("Conversion Quality"), 1.0, 0.5), dither_type_label (_("Dither Type"), 1.0, 0.5), cuefile_only_checkbox (_("Export CD Marker File Only")), - file_frame (_("Export to File")), file_browse_button (_("Browse")), track_selector_button (_("Specific tracks ...")) { @@ -571,7 +569,7 @@ ExportDialog::save_state() row = *ri; track->add_property(X_("channel1"), row[exp_cols.left] ? X_("on") : X_("off")); - track->add_property(X_("channel1"), row[exp_cols.right] ? X_("on") : X_("off")); + track->add_property(X_("channel2"), row[exp_cols.right] ? X_("on") : X_("off")); tracks->add_child_nocopy(*track); } @@ -917,11 +915,9 @@ ExportDialog::do_export () end_dialog (); } - void ExportDialog::end_dialog () { - if (spec.running) { spec.stop = true; @@ -934,7 +930,7 @@ ExportDialog::end_dialog () } } - session->engine().freewheel (false); + session->finalize_audio_export (); hide_all (); @@ -950,19 +946,21 @@ ExportDialog::start_export () } /* If the filename hasn't been set before, use the - directory above the current session as a default + current session's export directory as a default location for the export. */ if (file_entry.get_text().length() == 0) { - string dir = session->path(); + string dir = session->export_dir(); string::size_type last_slash; - if ((last_slash = dir.find_last_of ('/')) != string::npos) { + if ((last_slash = dir.find_last_of ('/')) != string::npos && last_slash != 0) { dir = dir.substr (0, last_slash+1); } - dir = dir + "export.wav"; + if (!wants_dir()) { + dir = dir + "export.wav"; + } file_entry.set_text (dir); } @@ -1307,7 +1305,7 @@ ExportDialog::window_closed (GdkEventAny *ignored) void ExportDialog::browse () { - FileChooserDialog dialog("Export to file", FILE_CHOOSER_ACTION_SAVE); + FileChooserDialog dialog("Export to file", browse_action()); dialog.set_transient_for(*this); dialog.set_filename (file_entry.get_text()); diff --git a/gtk2_ardour/export_dialog.h b/gtk2_ardour/export_dialog.h index 13b327fe50..2831384cd3 100644 --- a/gtk2_ardour/export_dialog.h +++ b/gtk2_ardour/export_dialog.h @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -56,8 +57,11 @@ class ExportDialog : public ArdourDialog virtual void set_range (nframes_t start, nframes_t end); void start_export (); + virtual Gtk::FileChooserAction browse_action() const { return Gtk::FILE_CHOOSER_ACTION_SAVE; } + protected: ARDOUR::AudioExportSpecification spec; + Gtk::Frame file_frame; struct ExportModelColumns : public Gtk::TreeModel::ColumnRecord { @@ -86,6 +90,8 @@ class ExportDialog : public ArdourDialog // audio data. spec has already been filled with user input before calling // this method. The dialog will be closed after this function exited. virtual void export_audio_data() = 0; + + virtual bool wants_dir() { return false; } // reads the user input and fills spec with the according values // filepath: complete path to the target file, including filename @@ -138,7 +144,6 @@ class ExportDialog : public ArdourDialog Gtk::CheckButton cuefile_only_checkbox; - Gtk::Frame file_frame; Gtk::Entry file_entry; Gtk::HBox file_hbox; Gtk::Button file_browse_button; diff --git a/gtk2_ardour/export_range_markers_dialog.cc b/gtk2_ardour/export_range_markers_dialog.cc index c91e1c101a..1184294a67 100644 --- a/gtk2_ardour/export_range_markers_dialog.cc +++ b/gtk2_ardour/export_range_markers_dialog.cc @@ -38,12 +38,20 @@ using namespace std; ExportRangeMarkersDialog::ExportRangeMarkersDialog (PublicEditor& editor) : ExportDialog(editor) { + set_title (_("ardour: export ranges")); + file_frame.set_label (_("Export to Directory")); + do_not_allow_export_cd_markers(); total_duration = 0; current_range_marker_index = 0; } - + +Gtk::FileChooserAction +ExportRangeMarkersDialog::browse_action () const +{ + return Gtk::FILE_CHOOSER_ACTION_CREATE_FOLDER; +} void ExportRangeMarkersDialog::export_audio_data () @@ -57,7 +65,7 @@ ExportRangeMarkersDialog::process_range_markers_export(Locations::LocationList& Locations::LocationList::iterator locationIter; current_range_marker_index = 0; init_progress_computing(locations); - + for (locationIter = locations.begin(); locationIter != locations.end(); ++locationIter) { Location *currentLocation = (*locationIter); @@ -82,7 +90,8 @@ ExportRangeMarkersDialog::process_range_markers_export(Locations::LocationList& // wait until export of this range finished gtk_main_iteration(); - while(spec.running){ + + while (spec.running){ if(gtk_events_pending()){ gtk_main_iteration(); }else { @@ -90,7 +99,6 @@ ExportRangeMarkersDialog::process_range_markers_export(Locations::LocationList& } } - getSession().engine().freewheel (false); current_range_marker_index++; } } @@ -140,8 +148,7 @@ ExportRangeMarkersDialog::is_filepath_valid(string &filepath) if ( (stat (filepath.c_str(), &statbuf) != 0) || (!S_ISDIR (statbuf.st_mode)) ) { - string txt = _("Please select an existing target directory. Files\n" - "are not allowed!"); + string txt = _("Please select an existing target directory. Files are not allowed!"); MessageDialog msg (*this, txt, false, MESSAGE_ERROR, BUTTONS_OK, true); msg.run(); return false; @@ -173,13 +180,11 @@ ExportRangeMarkersDialog::init_progress_computing(Locations::LocationList& locat Location *currentLocation = (*locationIter); if(currentLocation->is_range_marker()){ - range_markers_durations_aggregated.push_back( - duration_before_current_location); + range_markers_durations_aggregated.push_back (duration_before_current_location); - nframes_t duration = - currentLocation->end() - currentLocation->start(); + nframes_t duration = currentLocation->end() - currentLocation->start(); - range_markers_durations.push_back(duration); + range_markers_durations.push_back (duration); duration_before_current_location += duration; } } @@ -192,14 +197,12 @@ gint ExportRangeMarkersDialog::progress_timeout () { double progress = 0.0; - - if(current_range_marker_index >= range_markers_durations.size()){ + + if (current_range_marker_index >= range_markers_durations.size()){ progress = 1.0; - } - else{ - progress = - ((double) range_markers_durations_aggregated[current_range_marker_index] + - (spec.progress * (double) range_markers_durations[current_range_marker_index])) / + } else{ + progress = ((double) range_markers_durations_aggregated[current_range_marker_index] + + (spec.progress * (double) range_markers_durations[current_range_marker_index])) / (double) total_duration; } diff --git a/gtk2_ardour/export_range_markers_dialog.h b/gtk2_ardour/export_range_markers_dialog.h index 7aae9640bf..7d231c62d5 100644 --- a/gtk2_ardour/export_range_markers_dialog.h +++ b/gtk2_ardour/export_range_markers_dialog.h @@ -30,10 +30,14 @@ class ExportRangeMarkersDialog : public ExportDialog public: ExportRangeMarkersDialog (PublicEditor&); + Gtk::FileChooserAction browse_action() const; + protected: virtual bool is_filepath_valid(string &filepath); void export_audio_data(); + + bool wants_dir() { return true; } private: // keeps the duration of all range_markers before the current diff --git a/gtk2_ardour/export_region_dialog.cc b/gtk2_ardour/export_region_dialog.cc index 30ff05dc5c..cb3804c11b 100644 --- a/gtk2_ardour/export_region_dialog.cc +++ b/gtk2_ardour/export_region_dialog.cc @@ -31,6 +31,9 @@ ExportRegionDialog::ExportRegionDialog (PublicEditor& editor, boost::shared_ptr region) : ExportDialog(editor) { + set_title (_("ardour: export region")); + file_frame.set_label (_("Export to File")), + audio_region = boost::dynamic_pointer_cast(region); assert(audio_region); diff --git a/gtk2_ardour/export_session_dialog.cc b/gtk2_ardour/export_session_dialog.cc index 7cd7fdc06f..006f9675b3 100644 --- a/gtk2_ardour/export_session_dialog.cc +++ b/gtk2_ardour/export_session_dialog.cc @@ -21,13 +21,14 @@ #include "ardour_ui.h" #include "export_session_dialog.h" +#include "i18n.h" ExportSessionDialog::ExportSessionDialog (PublicEditor& editor) : ExportDialog(editor) { + file_frame.set_label (_("Export to File")); } - void ExportSessionDialog::export_audio_data () { diff --git a/gtk2_ardour/gain_automation_time_axis.cc b/gtk2_ardour/gain_automation_time_axis.cc index c1261fdf23..9890854d4b 100644 --- a/gtk2_ardour/gain_automation_time_axis.cc +++ b/gtk2_ardour/gain_automation_time_axis.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc index 2d7cd5883e..fa719bcca2 100644 --- a/gtk2_ardour/gain_meter.cc +++ b/gtk2_ardour/gain_meter.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -107,11 +106,11 @@ GainMeter::GainMeter (boost::shared_ptr io, Session& s) gain_display_box.pack_start (gain_display, true, true); peak_display.set_name ("MixerStripPeakDisplay"); - peak_display.set_has_frame (false); - peak_display.set_editable (false); +// peak_display.set_has_frame (false); +// peak_display.set_editable (false); set_size_request_to_display_given_text (peak_display, "-80.g", 2, 6); /* note the descender */ max_peak = minus_infinity(); - peak_display.set_text (_("-inf")); + peak_display.set_label (_("-inf")); peak_display.unset_flags (Gtk::CAN_FOCUS); meter_metric_area.set_name ("MeterMetricsStrip"); @@ -161,7 +160,7 @@ GainMeter::GainMeter (boost::shared_ptr io, Session& s) using namespace Menu_Helpers; - gain_astate_menu.items().push_back (MenuElem (_("Off"), + gain_astate_menu.items().push_back (MenuElem (_("Manual"), bind (mem_fun (*_io, &IO::set_gain_automation_state), (AutoState) Off))); gain_astate_menu.items().push_back (MenuElem (_("Play"), bind (mem_fun (*_io, &IO::set_gain_automation_state), (AutoState) Play))); @@ -231,11 +230,11 @@ GainMeter::render_metrics (Gtk::Widget& w) Glib::RefPtr win (w.get_window()); Glib::RefPtr fg_gc (w.get_style()->get_fg_gc (Gtk::STATE_NORMAL)); Glib::RefPtr bg_gc (w.get_style()->get_bg_gc (Gtk::STATE_NORMAL)); - gint x, y, width, height, depth; + gint width, height; int db_points[] = { -50, -40, -20, -30, -10, -3, 0, 4 }; char buf[32]; - win->get_geometry (x, y, width, height, depth); + win->get_size (width, height); Glib::RefPtr pixmap = Gdk::Pixmap::create (win, width, height); @@ -274,9 +273,9 @@ GainMeter::meter_metrics_expose (GdkEventExpose *ev) Glib::RefPtr bg_gc (meter_metric_area.get_style()->get_bg_gc (Gtk::STATE_NORMAL)); GdkRectangle base_rect; GdkRectangle draw_rect; - gint x, y, width, height, depth; + gint width, height; - win->get_geometry (x, y, width, height, depth); + win->get_size (width, height); base_rect.width = width; base_rect.height = height; @@ -332,10 +331,10 @@ GainMeter::update_meters () max_peak = mpeak; /* set peak display */ if (max_peak <= -200.0f) { - peak_display.set_text (_("-inf")); + peak_display.set_label (_("-inf")); } else { snprintf (buf, sizeof(buf), "%.1f", max_peak); - peak_display.set_text (buf); + peak_display.set_label (buf); } if (max_peak >= 0.0f) { @@ -452,6 +451,14 @@ GainMeter::setup_meters () } } +int +GainMeter::get_gm_width () +{ + Gtk::Requisition sz; + hbox.size_request (sz); + return sz.width; +} + bool GainMeter::gain_key_press (GdkEventKey* ev) { @@ -491,7 +498,7 @@ GainMeter::reset_peak_display () } max_peak = -INFINITY; - peak_display.set_text (_("-Inf")); + peak_display.set_label (_("-Inf")); peak_display.set_name ("MixerStripPeakDisplay"); } @@ -513,7 +520,7 @@ GainMeter::meter_button_release (GdkEventButton* ev, uint32_t which) case 1: meters[which].meter->clear(); max_peak = minus_infinity(); - peak_display.set_text (_("-inf")); + peak_display.set_label (_("-inf")); peak_display.set_name ("MixerStripPeakDisplay"); break; @@ -842,7 +849,7 @@ GainMeter::_astate_string (AutoState state, bool shrt) switch (state) { case Off: - sstr = (shrt ? "O" : _("O")); + sstr = (shrt ? "M" : _("M")); break; case Play: sstr = (shrt ? "P" : _("P")); diff --git a/gtk2_ardour/gain_meter.h b/gtk2_ardour/gain_meter.h index 88105ce846..a24b93c034 100644 --- a/gtk2_ardour/gain_meter.h +++ b/gtk2_ardour/gain_meter.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_gtk_gain_meter_h__ @@ -70,6 +69,8 @@ class GainMeter : public Gtk::VBox void set_width (Width); void setup_meters (); + int get_gm_width (); + void set_meter_strip_name (const char * name); void set_fader_name (const char * name); @@ -85,7 +86,7 @@ class GainMeter : public Gtk::VBox Gtkmm2ext::VSliderController *gain_slider; Gtk::Adjustment gain_adjustment; Gtkmm2ext::FocusEntry gain_display; - Gtk::Entry peak_display; + Gtk::Button peak_display; Gtk::HBox gain_display_box; Gtk::HBox fader_box; Gtk::DrawingArea meter_metric_area; diff --git a/gtk2_ardour/ghostregion.h b/gtk2_ardour/ghostregion.h index 0255035ea1..77b22f942c 100644 --- a/gtk2_ardour/ghostregion.h +++ b/gtk2_ardour/ghostregion.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_gtk_ghost_region_h__ diff --git a/gtk2_ardour/grouped_buttons.cc b/gtk2_ardour/grouped_buttons.cc deleted file mode 100644 index 64c58d8197..0000000000 --- a/gtk2_ardour/grouped_buttons.cc +++ /dev/null @@ -1,96 +0,0 @@ -/* - Copyright (C) 2001 Paul Davis - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - $Id$ -*/ - -#include - -#include "grouped_buttons.h" - -using namespace std; - -GroupedButtons::GroupedButtons (vector& buttonset) -{ - uint32_t n = 0; - - buttons = buttonset; - - for (vector::iterator i = buttons.begin(); i != buttons.end(); ++i, ++n) { - if ((*i)->get_active()) { - current_active = n; - } - (*i)->signal_clicked().connect (sigc::bind (mem_fun (*this, &GroupedButtons::one_clicked), n)); - } -} - -GroupedButtons::GroupedButtons (uint32_t nbuttons, uint32_t first_active) -{ - buttons.reserve (nbuttons); - current_active = first_active; - - for (uint32_t n = 0; n < nbuttons; ++n) { - - Gtk::ToggleButton *button; - - button = manage (new (Gtk::ToggleButton)); - - if (n == current_active) { - button->set_active (true); - } - - button->signal_clicked().connect (sigc::bind (mem_fun (*this, &GroupedButtons::one_clicked), n)); - buttons.push_back (button); - } -} - -static gint -reactivate_button (void *arg) -{ - Gtk::ToggleButton *b = (Gtk::ToggleButton *) arg; - b->set_active (true); - return FALSE; -} - -void -GroupedButtons::one_clicked (uint32_t which) -{ - if (buttons[which]->get_active()) { - - if (which != current_active) { - uint32_t old = current_active; - current_active = which; - buttons[old]->set_active (false); - } - - } else if (which == current_active) { - - /* Someobody tried to unset the current active - button by clicking on it. This caused - set_active (false) to be called. We don't - allow that, so just reactivate it. - - Don't try this right here, because of some - design glitches with GTK+ toggle buttons. - Setting the button back to active from - within the signal emission that marked - it as inactive causes a segfault ... - */ - - gtk_idle_add (reactivate_button, buttons[which]); - } -} diff --git a/gtk2_ardour/grouped_buttons.h b/gtk2_ardour/grouped_buttons.h deleted file mode 100644 index 2bb067fcd0..0000000000 --- a/gtk2_ardour/grouped_buttons.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - Copyright (C) 2001 Paul Davis - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - $Id$ -*/ - -#ifndef __gtkmm2ext_grouped_buttons_h__ -#define __gtkmm2ext_grouped_buttons_h__ - -#include - -#include -#include - -namespace Gtk { - class ToggleButton; -}; - -class GroupedButtons : public sigc::trackable -{ - public: - GroupedButtons (uint32_t nbuttons, uint32_t first_active); - GroupedButtons (std::vector&); - - Gtk::ToggleButton& button (uint32_t which) { - return *buttons[which]; - } - - private: - std::vector buttons; - uint32_t current_active; - void one_clicked (uint32_t which); -}; - -#endif /* __gtkmm2ext_grouped_buttons_h__ */ diff --git a/gtk2_ardour/icons/crossfade_in_constant.png b/gtk2_ardour/icons/crossfade_in_constant.png new file mode 100644 index 0000000000..ce7d48032e Binary files /dev/null and b/gtk2_ardour/icons/crossfade_in_constant.png differ diff --git a/gtk2_ardour/icons/crossfade_in_dipped.png b/gtk2_ardour/icons/crossfade_in_dipped.png new file mode 100644 index 0000000000..667e9d9c06 Binary files /dev/null and b/gtk2_ardour/icons/crossfade_in_dipped.png differ diff --git a/gtk2_ardour/icons/crossfade_in_fast-cut.png b/gtk2_ardour/icons/crossfade_in_fast-cut.png new file mode 100644 index 0000000000..a55dab560a Binary files /dev/null and b/gtk2_ardour/icons/crossfade_in_fast-cut.png differ diff --git a/gtk2_ardour/icons/crossfade_in_slow-cut.png b/gtk2_ardour/icons/crossfade_in_slow-cut.png new file mode 100644 index 0000000000..fe76c3bc89 Binary files /dev/null and b/gtk2_ardour/icons/crossfade_in_slow-cut.png differ diff --git a/gtk2_ardour/icons/crossfade_in_slow-fade.png b/gtk2_ardour/icons/crossfade_in_slow-fade.png new file mode 100644 index 0000000000..a105967da1 Binary files /dev/null and b/gtk2_ardour/icons/crossfade_in_slow-fade.png differ diff --git a/gtk2_ardour/icons/crossfade_in_transition.png b/gtk2_ardour/icons/crossfade_in_transition.png new file mode 100644 index 0000000000..482e8a63bd Binary files /dev/null and b/gtk2_ardour/icons/crossfade_in_transition.png differ diff --git a/gtk2_ardour/icons/crossfade_out_constant.png b/gtk2_ardour/icons/crossfade_out_constant.png new file mode 100644 index 0000000000..602ba806c5 Binary files /dev/null and b/gtk2_ardour/icons/crossfade_out_constant.png differ diff --git a/gtk2_ardour/icons/crossfade_out_dipped.png b/gtk2_ardour/icons/crossfade_out_dipped.png new file mode 100644 index 0000000000..3f1e84c485 Binary files /dev/null and b/gtk2_ardour/icons/crossfade_out_dipped.png differ diff --git a/gtk2_ardour/icons/crossfade_out_fast-cut.png b/gtk2_ardour/icons/crossfade_out_fast-cut.png new file mode 100644 index 0000000000..33eaafe7b3 Binary files /dev/null and b/gtk2_ardour/icons/crossfade_out_fast-cut.png differ diff --git a/gtk2_ardour/icons/crossfade_out_slow-cut.png b/gtk2_ardour/icons/crossfade_out_slow-cut.png new file mode 100644 index 0000000000..fd6260228e Binary files /dev/null and b/gtk2_ardour/icons/crossfade_out_slow-cut.png differ diff --git a/gtk2_ardour/icons/crossfade_out_slow-fade.png b/gtk2_ardour/icons/crossfade_out_slow-fade.png new file mode 100644 index 0000000000..d752879bec Binary files /dev/null and b/gtk2_ardour/icons/crossfade_out_slow-fade.png differ diff --git a/gtk2_ardour/icons/crossfade_out_transition.png b/gtk2_ardour/icons/crossfade_out_transition.png new file mode 100644 index 0000000000..a48e645fbd Binary files /dev/null and b/gtk2_ardour/icons/crossfade_out_transition.png differ diff --git a/gtk2_ardour/imageframe.cc b/gtk2_ardour/imageframe.cc index bc59fec2c0..7ff05ee9e9 100644 --- a/gtk2_ardour/imageframe.cc +++ b/gtk2_ardour/imageframe.cc @@ -4,7 +4,6 @@ #include "imageframe_p.h" #include -/* $Id$ */ /* rect.c * diff --git a/gtk2_ardour/imageframe.h b/gtk2_ardour/imageframe.h index b2ff25b408..76787f8b88 100644 --- a/gtk2_ardour/imageframe.h +++ b/gtk2_ardour/imageframe.h @@ -4,7 +4,6 @@ #include -/* $Id$ */ /* rect.h * diff --git a/gtk2_ardour/imageframe_socket_handler.cc b/gtk2_ardour/imageframe_socket_handler.cc index a7f4d603a7..96b61cafdd 100644 --- a/gtk2_ardour/imageframe_socket_handler.cc +++ b/gtk2_ardour/imageframe_socket_handler.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/imageframe_socket_handler.h b/gtk2_ardour/imageframe_socket_handler.h index 4dd8d69650..3a87f5bf71 100644 --- a/gtk2_ardour/imageframe_socket_handler.h +++ b/gtk2_ardour/imageframe_socket_handler.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_gtk_imageframe_socket_handler_h__ diff --git a/gtk2_ardour/imageframe_time_axis.cc b/gtk2_ardour/imageframe_time_axis.cc index ae288ec9ab..018fae6895 100644 --- a/gtk2_ardour/imageframe_time_axis.cc +++ b/gtk2_ardour/imageframe_time_axis.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/imageframe_time_axis.h b/gtk2_ardour/imageframe_time_axis.h index cefd0c5d09..4b3bf0c857 100644 --- a/gtk2_ardour/imageframe_time_axis.h +++ b/gtk2_ardour/imageframe_time_axis.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_imageframe_time_axis_h__ diff --git a/gtk2_ardour/imageframe_time_axis_group.cc b/gtk2_ardour/imageframe_time_axis_group.cc index 647d45b963..5dc76978b0 100644 --- a/gtk2_ardour/imageframe_time_axis_group.cc +++ b/gtk2_ardour/imageframe_time_axis_group.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/imageframe_time_axis_group.h b/gtk2_ardour/imageframe_time_axis_group.h index 4619ae448a..ba7790c04a 100644 --- a/gtk2_ardour/imageframe_time_axis_group.h +++ b/gtk2_ardour/imageframe_time_axis_group.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_imageframe_time_axis_group_h__ diff --git a/gtk2_ardour/imageframe_time_axis_view.cc b/gtk2_ardour/imageframe_time_axis_view.cc index 6e896ea5ec..91575f3cc5 100644 --- a/gtk2_ardour/imageframe_time_axis_view.cc +++ b/gtk2_ardour/imageframe_time_axis_view.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/imageframe_time_axis_view.h b/gtk2_ardour/imageframe_time_axis_view.h index d51901d4e0..45725038d1 100644 --- a/gtk2_ardour/imageframe_time_axis_view.h +++ b/gtk2_ardour/imageframe_time_axis_view.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_imageframe_time_axis_view_h__ diff --git a/gtk2_ardour/imageframe_view.cc b/gtk2_ardour/imageframe_view.cc index 2c943dcae4..f8bba3aa84 100644 --- a/gtk2_ardour/imageframe_view.cc +++ b/gtk2_ardour/imageframe_view.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/imageframe_view.h b/gtk2_ardour/imageframe_view.h index 71d9268fef..db83264e46 100644 --- a/gtk2_ardour/imageframe_view.h +++ b/gtk2_ardour/imageframe_view.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __gtk_ardour_imageframe_view_h__ diff --git a/gtk2_ardour/io_selector.cc b/gtk2_ardour/io_selector.cc index 00d24287ed..5ad04b929d 100644 --- a/gtk2_ardour/io_selector.cc +++ b/gtk2_ardour/io_selector.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/io_selector.h b/gtk2_ardour/io_selector.h index 288edd0be5..430926f761 100644 --- a/gtk2_ardour/io_selector.h +++ b/gtk2_ardour/io_selector.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_ui_io_selector_h__ diff --git a/gtk2_ardour/keyboard.cc b/gtk2_ardour/keyboard.cc index a6a14ad55b..83918da918 100644 --- a/gtk2_ardour/keyboard.cc +++ b/gtk2_ardour/keyboard.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include "ardour_ui.h" @@ -25,8 +24,6 @@ #include -#include -#include #include #include @@ -49,14 +46,13 @@ guint Keyboard::snap_mod = GDK_MOD3_MASK; uint32_t Keyboard::Control = GDK_CONTROL_MASK; uint32_t Keyboard::Shift = GDK_SHIFT_MASK; uint32_t Keyboard::Alt = GDK_MOD1_MASK; -uint32_t Keyboard::Meta = GDK_MOD2_MASK; +uint32_t Keyboard::Meta; Keyboard* Keyboard::_the_keyboard = 0; /* set this to initially contain the modifiers we care about, then track changes in ::set_edit_modifier() etc. */ -GdkModifierType Keyboard::RelevantModifierKeyMask = - GdkModifierType (GDK_SHIFT_MASK|GDK_CONTROL_MASK|GDK_MOD1_MASK|GDK_MOD3_MASK); +GdkModifierType Keyboard::RelevantModifierKeyMask; Keyboard::Keyboard () @@ -65,9 +61,19 @@ Keyboard::Keyboard () _the_keyboard = this; } - collecting_prefix = false; + RelevantModifierKeyMask = (GdkModifierType) gtk_accelerator_get_default_mod_mask (); - get_modifier_masks (); + /* figure out Meta */ + + uint32_t possible_meta[] = { GDK_MOD2_MASK, GDK_MOD3_MASK, GDK_MOD4_MASK, GDK_MOD5_MASK, 0}; + int i; + + for (i = 0; possible_meta[i]; ++i) { + if (!(RelevantModifierKeyMask & possible_meta[i])) { + break; + } + } + Meta = possible_meta[i]; snooper_id = gtk_key_snooper_install (_snooper, (gpointer) this); @@ -78,7 +84,6 @@ Keyboard::Keyboard () Keyboard::~Keyboard () { gtk_key_snooper_remove (snooper_id); - delete [] modifier_masks; } XMLNode& @@ -158,60 +163,6 @@ Keyboard::snooper (GtkWidget *widget, GdkEventKey *event) } if (event->type == GDK_KEY_PRESS) { - bool was_prefix = false; - - if (collecting_prefix) { - switch (keyval) { - case GDK_0: - current_prefix += '0'; - was_prefix = true; - break; - case GDK_1: - current_prefix += '1'; - was_prefix = true; - break; - case GDK_2: - current_prefix += '2'; - was_prefix = true; - break; - case GDK_3: - current_prefix += '3'; - was_prefix = true; - break; - case GDK_4: - current_prefix += '4'; - was_prefix = true; - break; - case GDK_5: - current_prefix += '5'; - was_prefix = true; - break; - case GDK_6: - current_prefix += '6'; - was_prefix = true; - break; - case GDK_7: - current_prefix += '7'; - was_prefix = true; - break; - case GDK_8: - current_prefix += '8'; - was_prefix = true; - break; - case GDK_9: - current_prefix += '9'; - was_prefix = true; - break; - case GDK_period: - current_prefix += '.'; - was_prefix = true; - break; - default: - was_prefix = false; - collecting_prefix = false; - break; - } - } if (find (state.begin(), state.end(), keyval) == state.end()) { state.push_back (keyval); @@ -238,441 +189,10 @@ Keyboard::key_is_down (uint32_t keyval) return find (state.begin(), state.end(), keyval) != state.end(); } -Keyboard::State -Keyboard::translate_key_name (const string& name) - -{ - string::size_type i; - string::size_type len; - bool at_end; - string::size_type hyphen; - string keyname; - string whatevers_left; - State result; - guint keycode; - - i = 0; - len = name.length(); - at_end = (len == 0); - - while (!at_end) { - - whatevers_left = name.substr (i); - - if ((hyphen = whatevers_left.find_first_of ('-')) == string::npos) { - - /* no hyphen, so use the whole thing */ - - keyname = whatevers_left; - at_end = true; - - } else { - - /* There is a hyphen. */ - - if (hyphen == 0 && whatevers_left.length() == 1) { - /* its the first and only character */ - - keyname = "-"; - at_end = true; - - } else { - - /* use the text before the hypen */ - - keyname = whatevers_left.substr (0, hyphen); - - if (hyphen == len - 1) { - at_end = true; - } else { - i += hyphen + 1; - at_end = (i >= len); - } - } - } - - if (keyname.length() == 1 && isupper (keyname[0])) { - result.push_back (GDK_Shift_L); - } - - if ((keycode = gdk_keyval_from_name(get_real_keyname (keyname).c_str())) == GDK_VoidSymbol) { - error << string_compose(_("KeyboardTarget: keyname \"%1\" is unknown."), keyname) << endmsg; - result.clear(); - return result; - } - - result.push_back (keycode); - } - - sort (result.begin(), result.end()); - - return result; -} - -string -Keyboard::get_real_keyname (const string& name) -{ - - if (name == "Control" || name == "Ctrl") { - return "Control_L"; - } - if (name == "Meta" || name == "MetaL") { - return "Meta_L"; - } - if (name == "MetaR") { - return "Meta_R"; - } - if (name == "Alt" || name == "AltL") { - return "Alt_L"; - } - if (name == "AltR") { - return "Alt_R"; - } - if (name == "Shift") { - return "Shift_L"; - } - if (name == "Shift_R") { - return "Shift_L"; - } - if (name == " ") { - return "space"; - } - if (name == "!") { - return "exclam"; - } - if (name == "\"") { - return "quotedbl"; - } - if (name == "#") { - return "numbersign"; - } - if (name == "$") { - return "dollar"; - } - if (name == "%") { - return "percent"; - } - if (name == "&") { - return "ampersand"; - } - if (name == "'") { - return "apostrophe"; - } - if (name == "'") { - return "quoteright"; - } - if (name == "(") { - return "parenleft"; - } - if (name == ")") { - return "parenright"; - } - if (name == "*") { - return "asterisk"; - } - if (name == "+") { - return "plus"; - } - if (name == ",") { - return "comma"; - } - if (name == "-") { - return "minus"; - } - if (name == ".") { - return "period"; - } - if (name == "/") { - return "slash"; - } - if (name == ":") { - return "colon"; - } - if (name == ";") { - return "semicolon"; - } - if (name == "<") { - return "less"; - } - if (name == "=") { - return "equal"; - } - if (name == ">") { - return "greater"; - } - if (name == "?") { - return "question"; - } - if (name == "@") { - return "at"; - } - if (name == "[") { - return "bracketleft"; - } - if (name == "\\") { - return "backslash"; - } - if (name == "]") { - return "bracketright"; - } - if (name == "^") { - return "asciicircum"; - } - if (name == "_") { - return "underscore"; - } - if (name == "`") { - return "grave"; - } - if (name == "`") { - return "quoteleft"; - } - if (name == "{") { - return "braceleft"; - } - if (name == "|") { - return "bar"; - } - if (name == "}") { - return "braceright"; - } - if (name == "~") { - return "asciitilde"; - } - - return name; -} - -int -Keyboard::get_prefix (float& val, bool& was_floating) -{ - if (current_prefix.length()) { - if (current_prefix.find ('.') != string::npos) { - was_floating = true; - } else { - was_floating = false; - } - if (sscanf (current_prefix.c_str(), "%f", &val) == 1) { - return 0; - } - current_prefix = ""; - } - return -1; -} - -void -Keyboard::start_prefix () -{ - collecting_prefix = true; - current_prefix = ""; -} - -void -Keyboard::clear_modifier_state () -{ - modifier_mask = 0; -} - -void -Keyboard::check_modifier_state () -{ - char keys[32]; - int i, j; - - clear_modifier_state (); - XQueryKeymap (GDK_DISPLAY(), keys); - - for (i = 0; i < 32; ++i) { - for (j = 0; j < 8; ++j) { - - if (keys[i] & (1<modifiermap; - - for (i = 0; i < modifiers->max_keypermod; ++i) { /* shift */ - if (*keycode) { - modifier_masks[*keycode] = GDK_SHIFT_MASK; - // cerr << "Shift = " << XKeysymToString (XKeycodeToKeysym (GDK_DISPLAY(), *keycode, 0)) << endl; - } - keycode++; - } - - for (i = 0; i < modifiers->max_keypermod; ++i) keycode++; /* skip lock */ - - for (i = 0; i < modifiers->max_keypermod; ++i) { /* control */ - if (*keycode) { - modifier_masks[*keycode] = GDK_CONTROL_MASK; - // cerr << "Control = " << XKeysymToString (XKeycodeToKeysym (GDK_DISPLAY(), *keycode, 0)) << endl; - } - keycode++; - } - - bound = 0; - for (i = 0; i < modifiers->max_keypermod; ++i) { /* mod 1 */ - if (*keycode) { - modifier_masks[*keycode] = GDK_MOD1_MASK; - // cerr << "Mod1 = " << XKeysymToString (XKeycodeToKeysym (GDK_DISPLAY(), *keycode, 0)) << endl; - bound++; - } - keycode++; - } -#ifdef WARN_ABOUT_DUPLICATE_MODIFIERS - if (bound > 1) { - warning << string_compose (_("You have %1 keys bound to \"mod1\""), bound) << endmsg; - } -#endif - bound = 0; - for (i = 0; i < modifiers->max_keypermod; ++i) { /* mod2 */ - if (*keycode) { - modifier_masks[*keycode] = GDK_MOD2_MASK; - check_meta_numlock (*keycode, GDK_MOD2_MASK, "Mod2"); - //cerr << "Mod2 = " << std::hex << (int) *keycode << std::dec << " = " << XKeysymToString (XKeycodeToKeysym (GDK_DISPLAY(), *keycode, 0)) << endl; - bound++; - } - keycode++; - } -#ifdef WARN_ABOUT_DUPLICATE_MODIFIERS - if (bound > 1) { - warning << string_compose (_("You have %1 keys bound to \"mod2\""), bound) << endmsg; - } -#endif - bound = 0; - for (i = 0; i < modifiers->max_keypermod; ++i) { /* mod3 */ - if (*keycode) { - modifier_masks[*keycode] = GDK_MOD3_MASK; - check_meta_numlock (*keycode, GDK_MOD3_MASK, "Mod3"); - // cerr << "Mod3 = " << XKeysymToString (XKeycodeToKeysym (GDK_DISPLAY(), *keycode, 0)) << endl; - bound++; - } - keycode++; - } -#ifdef WARN_ABOUT_DUPLICATE_MODIFIERS - if (bound > 1) { - warning << string_compose (_("You have %1 keys bound to \"mod3\""), bound) << endmsg; - } -#endif - bound = 0; - for (i = 0; i < modifiers->max_keypermod; ++i) { /* mod 4 */ - if (*keycode) { - modifier_masks[*keycode] = GDK_MOD4_MASK; - check_meta_numlock (*keycode, GDK_MOD4_MASK, "Mod4"); - // cerr << "Mod4 = " << XKeysymToString (XKeycodeToKeysym (GDK_DISPLAY(), *keycode, 0)) << endl; - bound++; - } - keycode++; - } -#ifdef WARN_ABOUT_DUPLICATE_MODIFIERS - if (bound > 1) { - warning << string_compose (_("You have %1 keys bound to \"mod4\""), bound) << endmsg; - } -#endif - bound = 0; - for (i = 0; i < modifiers->max_keypermod; ++i) { /* mod 5 */ - if (*keycode) { - modifier_masks[*keycode] = GDK_MOD5_MASK; - check_meta_numlock (*keycode, GDK_MOD5_MASK, "Mod5"); - // cerr << "Mod5 = " << XKeysymToString (XKeycodeToKeysym (GDK_DISPLAY(), *keycode, 0)) << endl; - bound++; - } - keycode++; - } -#ifdef WARN_ABOUT_DUPLICATE_MODIFIERS - if (bound > 1) { - warning << string_compose (_("You have %1 keys bound to \"mod5\""), bound) << endmsg; - } -#endif - - XFreeModifiermap (modifiers); -} - bool Keyboard::enter_window (GdkEventCrossing *ev, Gtk::Window* win) { - switch (ev->detail) { - case GDK_NOTIFY_INFERIOR: - break; - - case GDK_NOTIFY_VIRTUAL: - /* fallthru */ - - default: - check_modifier_state (); - } - - return FALSE; + return false; } bool @@ -697,10 +217,9 @@ Keyboard::leave_window (GdkEventCrossing *ev, Gtk::Window* win) cerr << "clearing current target\n"; } state.clear (); - clear_modifier_state (); } - return FALSE; + return false; } void @@ -754,6 +273,7 @@ Keyboard::set_snap_modifier (guint mod) bool Keyboard::is_edit_event (GdkEventButton *ev) { + return (ev->type == GDK_BUTTON_PRESS || ev->type == GDK_BUTTON_RELEASE) && (ev->button == Keyboard::edit_button()) && ((ev->state & RelevantModifierKeyMask) == Keyboard::edit_modifier()); diff --git a/gtk2_ardour/keyboard.h b/gtk2_ardour/keyboard.h index c13b06afe5..ec55dc54db 100644 --- a/gtk2_ardour/keyboard.h +++ b/gtk2_ardour/keyboard.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_keyboard_h__ @@ -45,13 +44,6 @@ class Keyboard : public sigc::trackable, Stateful int set_state (const XMLNode&); typedef vector State; - - int get_prefix(float&, bool& was_floating); - void start_prefix (); - - static State translate_key_name (const string&); - static string get_real_keyname (const string& name); - typedef uint32_t ModifierMask; static uint32_t Control; @@ -101,17 +93,8 @@ class Keyboard : public sigc::trackable, Stateful private: static Keyboard* _the_keyboard; - bool _queue_events; - bool _flush_queue; - guint snooper_id; State state; - bool collecting_prefix; - string current_prefix; - int* modifier_masks; - int modifier_mask; - int min_keycode; - int max_keycode; static guint edit_but; static guint edit_mod; @@ -121,13 +104,6 @@ class Keyboard : public sigc::trackable, Stateful static gint _snooper (GtkWidget*, GdkEventKey*, gpointer); gint snooper (GtkWidget*, GdkEventKey*); - - void queue_event (GdkEventKey*); - void get_modifier_masks (); - void check_modifier_state (); - void clear_modifier_state (); - - void check_meta_numlock (char keycode, guint mod, string modname); }; #endif /* __ardour_keyboard_h__ */ diff --git a/gtk2_ardour/keyboard_target.cc b/gtk2_ardour/keyboard_target.cc deleted file mode 100644 index 71e4e9652e..0000000000 --- a/gtk2_ardour/keyboard_target.cc +++ /dev/null @@ -1,258 +0,0 @@ -/* - Copyright (C) 2001-2002 Paul Davis - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - $Id$ -*/ - -#include -#include - -#include "keyboard.h" -#include "keyboard_target.h" - -#include "i18n.h" - -using std::pair; - -KeyboardTarget::ActionMap KeyboardTarget::actions; - -KeyboardTarget::KeyboardTarget (Gtk::Window& win, string name) - : _window (win) -{ - _name = name; - Keyboard::the_keyboard().register_target (this); -} - -KeyboardTarget::~KeyboardTarget () -{ - GoingAway (); -} - -void -KeyboardTarget::key_release_event (GdkEventKey *event, Keyboard::State& state) -{ - // relax -} - -void -KeyboardTarget::key_press_event (GdkEventKey *event, Keyboard::State& state, bool& handled) -{ - KeyMap::iterator result; - - if ((result = keymap.find (state)) != keymap.end()) { - (*result).second (); - handled = true; - } -} - -int -KeyboardTarget::add_binding (string keystring, string action) -{ - KeyMap::iterator existing; - Keyboard::State state; - KeyAction key_action; - - state = Keyboard::translate_key_name (keystring); - - if (keystring.length() == 0) { - error << _("KeyboardTarget: empty string passed to add_binding.") - << endmsg; - return -1; - } - - if (state.size() == 0) { - error << string_compose(_("KeyboardTarget: no translation found for \"%1\""), keystring) << endmsg; - return -1; - } - - if (find_action (action, key_action)) { - error << string_compose(_("KeyboardTarget: unknown action \"%1\""), action) << endmsg; - return -1; - } - - /* remove any existing binding */ - - if ((existing = keymap.find (state)) != keymap.end()) { - keymap.erase (existing); - } - - keymap.insert (pair (state, key_action)); - bindings.insert (pair (keystring, action)); - return 0; -} - -string -KeyboardTarget::get_binding (string name) -{ - BindingMap::iterator i; - - for (i = bindings.begin(); i != bindings.end(); ++i) { - - if (i->second == name) { - - /* convert keystring to GTK format */ - - string str = i->first; - string gtkstr; - string::size_type p; - - while (1) { - - if ((p = str.find ('-')) == string::npos || (p == str.length() - 1)) { - break; - } - - gtkstr += '<'; - gtkstr += str.substr (0, p); - gtkstr += '>'; - - str = str.substr (p+1); - - } - - gtkstr += str; - - if (gtkstr.length() == 0) { - return i->first; - } - - return gtkstr; - } - } - return string (); -} - -void -KeyboardTarget::show_all_actions () -{ - ActionMap::iterator i; - - for (i = actions.begin(); i != actions.end(); ++i) { - cout << i->first << endl; - } -} - -int -KeyboardTarget::add_action (string name, KeyAction action) -{ - pair newpair; - pair result; - newpair.first = name; - newpair.second = action; - - result = actions.insert (newpair); - return result.second ? 0 : -1; -} - -int -KeyboardTarget::find_action (string name, KeyAction& action) -{ - map::iterator i; - - if ((i = actions.find (name)) != actions.end()) { - action = i->second; - return 0; - } else { - return -1; - } -} - -int -KeyboardTarget::remove_action (string name) -{ - map::iterator i; - - if ((i = actions.find (name)) != actions.end()) { - actions.erase (i); - return 0; - } else { - return -1; - } -} - -XMLNode& -KeyboardTarget::get_binding_state () const -{ - XMLNode *node = new XMLNode ("context"); - BindingMap::const_iterator i; - - node->add_property ("name", _name); - - for (i = bindings.begin(); i != bindings.end(); ++i) { - XMLNode *child; - - child = new XMLNode ("binding"); - child->add_property ("keys", i->first); - child->add_property ("action", i->second); - node->add_child_nocopy (*child); - } - - return *node; -} - -int -KeyboardTarget::set_binding_state (const XMLNode& node) -{ - XMLNodeList nlist = node.children(); - XMLNodeConstIterator niter; - XMLNode *child_node; - - bindings.clear (); - keymap.clear (); - - for (niter = nlist.begin(); niter != nlist.end(); ++niter) { - child_node = *niter; - - if (child_node->name() == "context") { - XMLProperty *prop; - - if ((prop = child_node->property ("name")) != 0) { - if (prop->value() == _name) { - return load_bindings (*child_node); - } - } - } - } - - return 0; -} - -int -KeyboardTarget::load_bindings (const XMLNode& node) -{ - XMLNodeList nlist = node.children(); - XMLNodeConstIterator niter; - - for (niter = nlist.begin(); niter != nlist.end(); ++niter) { - XMLProperty *keys; - XMLProperty *action; - - keys = (*niter)->property ("keys"); - action = (*niter)->property ("action"); - - if (!keys || !action) { - error << _("misformed binding node - ignored") << endmsg; - continue; - } - - add_binding (keys->value(), action->value()); - - } - - return 0; -} - diff --git a/gtk2_ardour/keyboard_target.h b/gtk2_ardour/keyboard_target.h deleted file mode 100644 index f542261b54..0000000000 --- a/gtk2_ardour/keyboard_target.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - Copyright (C) 2001 Paul Davis - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - $Id$ -*/ - -#ifndef __ardour_keyboard_target_h__ -#define __ardour_keyboard_target_h__ - -#include -#include -#include -#include -#include -#include - -#include "keyboard.h" - -namespace Gtk { - class Window; -} - -class KeyboardTarget -{ - public: - KeyboardTarget(Gtk::Window& w, std::string name); - virtual ~KeyboardTarget(); - - sigc::signal Hiding; - sigc::signal GoingAway; - - typedef sigc::slot KeyAction; - - std::string name() const { return _name; } - - void key_press_event (GdkEventKey *, Keyboard::State&, bool& handled); - void key_release_event (GdkEventKey *, Keyboard::State&); - - int add_binding (std::string keys, std::string name); - std::string get_binding (std::string name); /* returns keys bound to name */ - - XMLNode& get_binding_state () const; - int set_binding_state (const XMLNode&); - - static int32_t add_action (std::string, KeyAction); - static int32_t find_action (std::string, KeyAction&); - static int32_t remove_action (std::string); - static void show_all_actions(); - - Gtk::Window& window() const { return _window; } - - protected: - typedef std::map KeyMap; - typedef std::map BindingMap; - - KeyMap keymap; - BindingMap bindings; - - private: - typedef map ActionMap; - static ActionMap actions; - std::string _name; - Gtk::Window& _window; - - int load_bindings (const XMLNode&); -}; - -#endif /* __ardour_keyboard_target_h__ */ - diff --git a/gtk2_ardour/ladspa_pluginui.cc b/gtk2_ardour/ladspa_pluginui.cc index 6aaea06a7e..1f7ba8d4c0 100644 --- a/gtk2_ardour/ladspa_pluginui.cc +++ b/gtk2_ardour/ladspa_pluginui.cc @@ -288,12 +288,14 @@ LadspaPluginUI::ControlUI::ControlUI () : automate_button (X_("")) // force creation of a label { automate_button.set_name ("PluginAutomateButton"); - ARDOUR_UI::instance()->tooltips().set_tip (automate_button, - _("Automation control")); + ARDOUR_UI::instance()->tooltips().set_tip (automate_button, _("Automation control")); - /* don't fix the height, it messes up the bar controllers */ + /* XXX translators: use a string here that will be at least as long + as the longest automation label (see ::automation_state_changed() + below). be sure to include a descender. + */ - set_size_request_to_display_given_text (automate_button, X_("lngnuf"), 2, 2); + set_size_request_to_display_given_text (*automate_button.get_child(), _("Mgnual"), 5, 5); ignore_change = 0; display = 0; @@ -323,7 +325,7 @@ LadspaPluginUI::automation_state_changed (ControlUI* cui) switch (insert->get_port_automation_state (cui->port_index) & (Off|Play|Touch|Write)) { case Off: - cui->automate_button.set_label (_("Off")); + cui->automate_button.set_label (_("Manual")); break; case Play: cui->automate_button.set_label (_("Play")); @@ -373,6 +375,8 @@ LadspaPluginUI::build_control_ui (guint32 port_index, PBD::Controllable* mcontro control_ui->set_spacing (5); + Gtk::Requisition req (control_ui->automate_button.size_request()); + if (plugin->parameter_is_input (port_index)) { boost::shared_ptr lp; @@ -451,8 +455,7 @@ LadspaPluginUI::build_control_ui (guint32 port_index, PBD::Controllable* mcontro sigc::slot pslot = sigc::bind (mem_fun(*this, &LadspaPluginUI::print_parameter), (uint32_t) port_index); control_ui->control = new BarController (*control_ui->adjustment, *mcontrol, pslot); - // should really match the height of the text in the automation button+label - control_ui->control->set_size_request (200, 22); + control_ui->control->set_size_request (200, req.height); control_ui->control->set_name (X_("PluginSlider")); control_ui->control->set_style (BarController::LeftToRight); control_ui->control->set_use_parent (true); @@ -566,7 +569,7 @@ LadspaPluginUI::astate_clicked (ControlUI* cui, uint32_t port) MenuList& items (automation_menu->items()); items.clear (); - items.push_back (MenuElem (_("Off"), + items.push_back (MenuElem (_("Manual"), bind (mem_fun(*this, &LadspaPluginUI::set_automation_state), (AutoState) Off, cui))); items.push_back (MenuElem (_("Play"), bind (mem_fun(*this, &LadspaPluginUI::set_automation_state), (AutoState) Play, cui))); diff --git a/gtk2_ardour/location_ui.cc b/gtk2_ardour/location_ui.cc index b77c3a5561..e13366fd12 100644 --- a/gtk2_ardour/location_ui.cc +++ b/gtk2_ardour/location_ui.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/location_ui.h b/gtk2_ardour/location_ui.h index 580d47ff5d..51daa6814d 100644 --- a/gtk2_ardour/location_ui.h +++ b/gtk2_ardour/location_ui.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_location_ui_h__ @@ -32,7 +31,6 @@ #include #include "ardour_dialog.h" -#include "keyboard_target.h" namespace ARDOUR { class LocationStack; diff --git a/gtk2_ardour/main.cc b/gtk2_ardour/main.cc index e7ede36b39..41a279f604 100644 --- a/gtk2_ardour/main.cc +++ b/gtk2_ardour/main.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2001-2006 Paul Davis + Copyright (C) 2001-2007 Paul Davis This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -15,16 +15,9 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ -#include -#include -#include -#include #include -#include -#include #include #include @@ -64,172 +57,6 @@ extern int curvetest (string); static ARDOUR_UI *ui = 0; -static void -shutdown (int status) -{ - char* msg; - - if (status) { - - msg = _("ardour is killing itself for a clean exit\n"); - write (1, msg, strlen (msg)); - /* drastic, but perhaps necessary */ - kill (-getpgrp(), SIGKILL); - /*NOTREACHED*/ - - } else { - - if (ui) { - ui->kill(); - } - - pthread_cancel_all (); - } - - exit (status); -} - - -static void -handler (int sig) -{ - char buf[64]; - int n; - - /* XXX its doubtful that snprintf() is async-safe */ - n = snprintf (buf, sizeof(buf), _("%d(%d): received signal %d\n"), getpid(), (int) pthread_self(), sig); - write (1, buf, n); - - shutdown (1); -} - -static void * -signal_thread (void *arg) -{ - int sig; - sigset_t blocked; - - PBD::ThreadCreated (pthread_self(), X_("Signal")); - - pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, 0); - - /* find out what's blocked right now */ - - //sigprocmask (SIG_SETMASK, 0, &blocked); - if (pthread_sigmask (SIG_SETMASK, 0, &blocked)) { - cerr << "getting blocked signals failed\n"; - } - - /* wait for any of the currently blocked signals. - - According to the man page found in linux 2.6 and 2.4, sigwait() - never returns an error. This is incorrect. Checking the man - pages for some other *nix systems makes it clear that - sigwait() can return several error codes, one of which - is EINTR. This happens if the thread receives a signal - which is not in the blocked set. - - We do not expect that to happen, and if it did we should generally - exit as planned. However, under 2.6, the ptrace facility used - by gdb seems to also cause sigwait() to return with EINTR - but with a signal that sigwait cannot understand. As a result, - "sig" is set to zero, an impossible signal number. - - Handling the EINTR code makes it possible to debug - ardour on a 2.6 kernel. - - */ - - int swerr; - - again: - if ((swerr = sigwait (&blocked, &sig))) { - if (swerr == EINTR) { - goto again; - } else { - cerr << "sigwait failed with " << swerr << endl; - } - } - - cerr << "Signal " << sig << " received\n"; - - if (sig != SIGSEGV) { - - /* unblock signals so we can see them during shutdown. - this will help prod developers not to lose sight - of bugs that cause segfaults etc. during shutdown. - */ - - sigprocmask (SIG_UNBLOCK, &blocked, 0); - } - - shutdown (1); - /*NOTREACHED*/ - return 0; -} - -int -catch_signals (void) -{ - struct sigaction action; - pthread_t signal_thread_id; - sigset_t signals; - -// if (setpgid (0,0)) { - if (setsid ()) { - warning << string_compose (_("cannot become new process group leader (%1)"), - strerror (errno)) - << endmsg; - } - - sigemptyset (&signals); - sigaddset(&signals, SIGHUP); - sigaddset(&signals, SIGINT); - sigaddset(&signals, SIGQUIT); - sigaddset(&signals, SIGPIPE); - sigaddset(&signals, SIGTERM); - sigaddset(&signals, SIGUSR1); - sigaddset(&signals, SIGUSR2); - - - /* install a handler because otherwise - pthreads behaviour is undefined when we enter - sigwait. - */ - - action.sa_handler = handler; - action.sa_mask = signals; - action.sa_flags = SA_RESTART|SA_RESETHAND; - - for (int i = 1; i < 32; i++) { - if (sigismember (&signals, i)) { - if (sigaction (i, &action, 0)) { - cerr << string_compose (_("cannot setup signal handling for %1"), i) << endl; - return -1; - } - } - } - - /* this sets the signal mask for this and all - subsequent threads that do not reset it. - */ - - if (pthread_sigmask (SIG_SETMASK, &signals, 0)) { - cerr << string_compose (_("cannot set default signal mask (%1)"), strerror (errno)) << endl; - return -1; - } - - /* start a thread to wait for signals */ - - if (pthread_create_and_store ("signal", &signal_thread_id, 0, signal_thread, 0)) { - cerr << "cannot create signal catching thread" << endl; - return -1; - } - - pthread_detach (signal_thread_id); - return 0; -} - string which_ui_rcfile () { @@ -300,7 +127,9 @@ maybe_load_session () if (!session_name.length()) { ui->hide_splash (); if (!Config->get_no_new_session_dialog()) { - ui->new_session (); + if (!ui->new_session ()) { + return false; + } } return true; @@ -341,7 +170,9 @@ maybe_load_session () /* Show the NSD */ ui->hide_splash (); if (!Config->get_no_new_session_dialog()) { - ui->new_session (); + if (!ui->new_session ()) { + return false; + } } } @@ -406,7 +237,7 @@ int main (int argc, char *argv[]) } if (no_splash) { - cerr << _("Copyright (C) 1999-2006 Paul Davis") << endl + cerr << _("Copyright (C) 1999-2007 Paul Davis") << endl << _("Some portions Copyright (C) Steve Harris, Ari Johnson, Brett Viren, Joel Baker") << endl << endl << _("Ardour comes with ABSOLUTELY NO WARRANTY") << endl @@ -416,6 +247,10 @@ int main (int argc, char *argv[]) << endl; } + /* some GUI objects need this */ + + PBD::ID::init (); + try { ui = new ARDOUR_UI (&argc, &argv, which_ui_rcfile()); } catch (failed_constructor& err) { @@ -463,7 +298,14 @@ int main (int argc, char *argv[]) delete engine; ARDOUR::cleanup (); - shutdown (0); + + if (ui) { + ui->kill(); + } + + pthread_cancel_all (); + + exit (0); return 0; } diff --git a/gtk2_ardour/marker.cc b/gtk2_ardour/marker.cc index d5517b4bce..918a2786c9 100644 --- a/gtk2_ardour/marker.cc +++ b/gtk2_ardour/marker.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/marker.h b/gtk2_ardour/marker.h index e2e4307782..7865004d54 100644 --- a/gtk2_ardour/marker.h +++ b/gtk2_ardour/marker.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __gtk_ardour_marker_h__ diff --git a/gtk2_ardour/marker_time_axis.cc b/gtk2_ardour/marker_time_axis.cc index 1c6e7af2c7..e10967d01a 100644 --- a/gtk2_ardour/marker_time_axis.cc +++ b/gtk2_ardour/marker_time_axis.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/marker_time_axis.h b/gtk2_ardour/marker_time_axis.h index e321fe4003..13288ce66f 100644 --- a/gtk2_ardour/marker_time_axis.h +++ b/gtk2_ardour/marker_time_axis.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_marker_time_axis_h__ diff --git a/gtk2_ardour/marker_time_axis_view.cc b/gtk2_ardour/marker_time_axis_view.cc index b6e87f8715..f33e0bbefc 100644 --- a/gtk2_ardour/marker_time_axis_view.cc +++ b/gtk2_ardour/marker_time_axis_view.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/marker_time_axis_view.h b/gtk2_ardour/marker_time_axis_view.h index 4853f29855..fd23c1de87 100644 --- a/gtk2_ardour/marker_time_axis_view.h +++ b/gtk2_ardour/marker_time_axis_view.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_marker_time_axis_view_h__ diff --git a/gtk2_ardour/marker_view.cc b/gtk2_ardour/marker_view.cc index f45a3ce971..d82554f891 100644 --- a/gtk2_ardour/marker_view.cc +++ b/gtk2_ardour/marker_view.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/marker_view.h b/gtk2_ardour/marker_view.h index 04b8587649..6c49a4dc0f 100644 --- a/gtk2_ardour/marker_view.h +++ b/gtk2_ardour/marker_view.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __gtk_ardour_marker_view_h__ diff --git a/gtk2_ardour/meter_bridge.cc b/gtk2_ardour/meter_bridge.cc deleted file mode 100644 index 0e88eff5e0..0000000000 --- a/gtk2_ardour/meter_bridge.cc +++ /dev/null @@ -1,260 +0,0 @@ -/* - Copyright (C) 2002 Paul Davis - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - $Id$ -*/ - -#include -#include -#include -#include - -#include "ardour_ui.h" -#include "meter_bridge.h" -#include "meter_bridge_strip.h" -#include "utils.h" -#include "gui_thread.h" - -#include "i18n.h" - -using namespace ARDOUR; -using namespace PBD; -using namespace Gtk; -using namespace sigc; - -#define FRAME_SHADOW_STYLE Gtk::SHADOW_IN -#define FRAME_NAME "BaseFrame" - -MeterBridge::MeterBridge () - : ArdourDialog ("meter bridge"), - hadjustment (0.0, 0.0, 0.0), - vadjustment (0.0, 0.0, 0.0), - meter_viewport (hadjustment, vadjustment) -{ - meter_base.set_name ("MeterBase"); - meter_frame.set_shadow_type (FRAME_SHADOW_STYLE); - meter_frame.set_name (FRAME_NAME); - meter_frame.add (meter_base); - - upper_metering_box.set_name ("AboveMeterZone"); - lower_metering_box.set_name ("BelowMeterZone"); - - metering_vbox.set_spacing (5); - metering_vbox.set_border_width (10); - metering_vbox.pack_start (upper_metering_box, false, false); - metering_vbox.pack_start (meter_frame, false, false); - metering_vbox.pack_start (lower_metering_box, false, false); - - metering_hbox.pack_start (metering_vbox, false, false); - - meter_scroll_base.set_name ("MeterScrollBase"); - meter_scroll_base.add (metering_hbox); - - meter_viewport.add (meter_scroll_base); - meter_viewport.set_shadow_type (Gtk::SHADOW_NONE); - - meter_scroller.add (meter_viewport); - meter_scroller.set_name ("MeterBridgeWindow"); - meter_scroller.set_policy (Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); - meter_scroller.set_border_width (5); - - add (meter_scroller); - add_events (Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK); - set_name ("MeterBridgeWindow"); - set_title (_("ardour: meter bridge")); - set_wmclass (X_("ardour_meter_bridge"), "Ardour"); - // set_policy (false, false, false); // no user resizing of any kind - - signal_delete_event().connect (bind (sigc::ptr_fun (just_hide_it), static_cast(this))); - - metering = false; - - /* don't show: this window doesn't come up by default */ -} - -MeterBridge::~MeterBridge () -{ - stop_metering (); -} - -void -MeterBridge::set_session (Session *s) -{ - ArdourDialog::set_session (s); - - if (session) { - // XXX this stuff has to be fixed if we ever use this code again - // (refs vs. ptrs) - // session->foreach_route (this, &MeterBridge::add_route); - session->RouteAdded.connect (mem_fun(*this, &MeterBridge::add_route)); - session->GoingAway.connect (mem_fun(*this, &MeterBridge::session_gone)); - start_metering (); - } -} - -void -MeterBridge::session_gone () -{ - ENSURE_GUI_THREAD(mem_fun(*this, &MeterBridge::session_gone)); - - stop_metering (); - hide_all (); - - list::iterator i; - - for (i = meters.begin(); i != meters.end(); ++i) { - - upper_metering_box.remove ((*i)->above_box()); - meter_base.remove ((*i)->meter_widget()); - lower_metering_box.remove ((*i)->below_box()); - -// delete (*i); - } - - meters.clear (); - - ArdourDialog::session_gone(); -} - -void -MeterBridge::add_route (ARDOUR::Route* route) -{ - ENSURE_GUI_THREAD(bind (mem_fun(*this, &MeterBridge::add_route), route)); - - uint32_t n; - char buf[32]; - - if (!session || route->hidden() || dynamic_cast(route) == 0) { - return; - } - - n = meters.size(); - snprintf (buf, sizeof (buf), "%u", n+1); - - MeterBridgeStrip *meter = new MeterBridgeStrip (session->engine(), - *session, - *route, - buf, - session->over_length_long, - session->over_length_short, - 200); - -#define packing_factor 30 - - upper_metering_box.put (meter->above_box(), n * packing_factor, 0); - - meter_base.put (meter->meter_widget(), (n * packing_factor) + (meter->meter_width()/2), 0); - lower_metering_box.put (meter->below_box(), n * packing_factor, 0); - - meter->above_box().show_all (); - meter->meter_widget().show (); - meter->below_box().show_all (); - - route->GoingAway.connect (bind (mem_fun(*this, &MeterBridge::remove_route), route)); - meters.insert (meters.begin(), meter); - - set_default_size (30 + ((n+1) * packing_factor), 315); - - meter->set_meter_on(true); - - session->GoingAway.connect (mem_fun(*this, &MeterBridge::session_gone)); -} - -void -MeterBridge::remove_route (Route* route) -{ - ENSURE_GUI_THREAD(bind (mem_fun(*this, &MeterBridge::remove_route), route)); - list::iterator i; - - for (i = meters.begin(); i != meters.end(); ++i) { - if (&((*i)->route()) == route) { - delete *i; - meters.erase (i); - return; - } - } -} - -void -MeterBridge::clear_all_meters () -{ - list::iterator i; - - for (i = meters.begin(); i != meters.end(); ++i) { - (*i)->clear_meter (); - } -} - -void -MeterBridge::update () -{ - list::iterator i; - - for (i = meters.begin(); i != meters.end(); ++i) { - (*i)->update (); - } -} - -void -MeterBridge::start_metering () -{ - list::iterator i; - - for (i = meters.begin(); i != meters.end(); ++i) { - (*i)->set_meter_on (true); - } - metering_connection = ARDOUR_UI::instance()->RapidScreenUpdate.connect - (mem_fun(*this, &MeterBridge::update)); - metering = true; -} - -void -MeterBridge::stop_metering () -{ - list::iterator i; - - for (i = meters.begin(); i != meters.end(); ++i) { - (*i)->set_meter_on (false); - } - metering_connection.disconnect(); - metering = false; -} - -void -MeterBridge::toggle_metering () -{ - if (!metering) { - start_metering (); - } else { - stop_metering (); - } -} - -void -MeterBridge::on_map () -{ - start_metering (); - return Window::on_map (); -} - -void -MeterBridge::on_unmap () -{ - stop_metering (); - return Window::on_unmap (); -} - diff --git a/gtk2_ardour/meter_bridge.h b/gtk2_ardour/meter_bridge.h deleted file mode 100644 index 6ceb7402fc..0000000000 --- a/gtk2_ardour/meter_bridge.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - Copyright (C) 1999-2002 Paul Davis - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - $Id$ -*/ - -#ifndef __ardour_meter_bridge_h__ -#define __ardour_meter_bridge_h__ - -#include - -#include -#include -#include -#include -#include -#include - -#include "keyboard_target.h" -#include "ardour_dialog.h" - -class MeterBridgeStrip; - -namespace ARDOUR { - class Session; - class Route; -} - -class MeterBridge : public ArdourDialog -{ - - public: - MeterBridge (); - ~MeterBridge (); - - void set_session (ARDOUR::Session*); - void clear_all_meters (); - void start_metering (); - void stop_metering (); - void toggle_metering (); - - protected: - void on_map (); - void on_unmap (); - - private: - /* diskstream/recorder display */ - Gtk::Adjustment hadjustment; - Gtk::Adjustment vadjustment; - Gtk::Viewport meter_viewport; - Gtk::ScrolledWindow meter_scroller; - Gtk::EventBox meter_scroll_base; - Gtk::HBox meter_scroller_hpacker; - Gtk::VBox meter_scroller_vpacker; - Gtk::VBox metering_vpacker; - Gtk::VBox metering_hpacker; - - Gtk::VBox metering_vbox; - Gtk::HBox metering_hbox; - Gtk::Fixed upper_metering_box; - Gtk::Fixed lower_metering_box; - Gtk::Fixed meter_base; - Gtk::Frame meter_frame; - - list meters; - - bool metering; - sigc::connection metering_connection; - - void update (); - - void add_route (ARDOUR::Route*); - void remove_route (ARDOUR::Route*); - void session_gone(); /* overrides ArdourDialog::session_gone() */ -}; - -#endif /* __ardour_meter_bridge_h__ (*/ diff --git a/gtk2_ardour/meter_bridge_strip.cc b/gtk2_ardour/meter_bridge_strip.cc deleted file mode 100644 index 8a91603748..0000000000 --- a/gtk2_ardour/meter_bridge_strip.cc +++ /dev/null @@ -1,243 +0,0 @@ -/* - Copyright (C) 1999 Paul Davis - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - $Id$ -*/ - -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include "meter_bridge_strip.h" -#include "ardour_ui.h" -#include "prompter.h" -#include "logmeter.h" - -#include "i18n.h" - -using namespace ARDOUR; -using namespace PBD; -using namespace Gtk; -using namespace Gtkmm2ext; - -MeterBridgeStrip::MeterBridgeStrip (AudioEngine &eng, - Session& s, - Route& r, - string name, - nframes_t long_over, - nframes_t short_over, - nframes_t meter_hold) - : engine (eng), - session (s), - _route (r), - meter (meter_hold, 5, FastMeter::Vertical) -{ - char buf[64]; - - label.set_text (name); - label.set_name ("ChannelMeterLabel"); - - label_ebox.set_name ("MeterBridgeWindow"); - label_ebox.set_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK); - label_ebox.add (label); - - label_ebox.signal_button_release_event().connect (mem_fun(*this, &MeterBridgeStrip::label_button_press_release)); - ARDOUR_UI::instance()->tooltips().set_tip (label_ebox, _route.name()); - - over_long_label.set_text ("0"); - over_long_label.set_name ("OverMeterLabel"); - over_long_button.add (over_long_label); - over_long_button.set_name ("OverMeter"); - over_long_frame.add (over_long_button); - over_long_frame.set_shadow_type (Gtk::SHADOW_IN); - over_long_frame.set_name ("BaseFrame"); - over_long_hbox.pack_start (over_long_frame, false, false); - - snprintf(buf, sizeof(buf)-1, _("# of %u-sample overs"), long_over); - ARDOUR_UI::instance()->tooltips().set_tip (over_long_button, buf); - - set_size_request_to_display_given_text (over_long_button, "88g", 2, 2); - - over_short_label.set_text ("0"); - over_short_label.set_name ("OverMeterLabel"); - over_short_button.add (over_short_label); - over_short_button.set_name ("OverMeter"); - over_short_frame.add (over_short_button); - over_short_frame.set_shadow_type (Gtk::SHADOW_IN); - over_short_frame.set_name ("BaseFrame"); - over_short_hbox.pack_start (over_short_frame, false, false); - - snprintf(buf, sizeof(buf)-1, _("# of %u-sample overs"), short_over); - ARDOUR_UI::instance()->tooltips().set_tip (over_short_button, buf); - - set_size_request_to_display_given_text (over_short_button, "88g", 2, 2); - above_meter_vbox.set_spacing (5); - below_meter_vbox.set_spacing (5); - - above_meter_vbox.pack_start (over_long_hbox, false, false); - above_meter_vbox.pack_start (over_short_hbox, false, false); - - below_meter_vbox.pack_start (label_ebox); - - over_short_button.signal_button_release_event().connect (mem_fun(*this,&MeterBridgeStrip::gui_clear_overs)); - over_long_button.signal_button_release_event().connect (mem_fun(*this,&MeterBridgeStrip::gui_clear_overs)); - - last_over_short = 0; - last_over_long = 0; - - meter_clear_pending = false; - over_clear_pending = false; - - meter_on = true; -} - -void -MeterBridgeStrip::update () -{ - string buf; - Port *port; - guint32 over_short = 0; - guint32 over_long = 0; - - if ((port = _route.input (0)) == 0) { - meter.set (0.0); - return; - } else { - over_short = port->short_overs (); - over_long = port->long_overs (); - } - - if (meter_on) { - float power = minus_infinity(); - - if ((power = _route.peak_input_power (0)) != minus_infinity()) { - meter.set (log_meter (power)); - - if (over_short != last_over_short) { - buf = string_compose("%1", over_short); - over_short_label.set_text (buf); - last_over_short = over_short; - } - - if (over_long != last_over_long) { - buf = string_compose("%1", over_long); - over_long_label.set_text (buf); - last_over_long = over_long; - } - - } else { - meter.set (0.0); - } - - } - - if (meter_clear_pending) { - meter_clear_pending = false; - meter.clear (); - } - - if (over_clear_pending) { - over_clear_pending = false; - port->reset_overs (); - over_long_label.set_text ("0"); - over_short_label.set_text ("0"); - last_over_short = 0; - last_over_long = 0; - } -} - -gint -MeterBridgeStrip::gui_clear_overs (GdkEventButton *ev) -{ - clear_overs (); - return FALSE; -} - -void -MeterBridgeStrip::clear_meter () - -{ - meter_clear_pending = true; -} - -void -MeterBridgeStrip::clear_overs () - -{ - over_clear_pending = true; -} - -void -MeterBridgeStrip::set_meter_on (bool yn) -{ - Port* port; - meter_on = yn; - - if (!meter_on) { - meter_clear_pending = true; - over_clear_pending = true; - } - - if (meter.is_visible()) { - if ((port = _route.input (0)) != 0) { - if (meter_on) { - port->enable_metering (); - } else { - port->disable_metering (); - } - } - } -} - -gint -MeterBridgeStrip::label_button_press_release (GdkEventButton *ev) -{ - string name; - ArdourPrompter prompter (true); - - prompter.set_prompt (_("New Name for Meter:")); - prompter.set_initial_text (label.get_text()); - prompter.add_button (_("Rename"), Gtk::RESPONSE_ACCEPT); - prompter.set_response_sensitive (Gtk::RESPONSE_ACCEPT, false); - prompter.show_all(); - - switch (prompter.run ()) { - case Gtk::RESPONSE_ACCEPT: - - prompter.get_result (name); - - if (name.length()) { - label.set_text(name); - } - - default: - break; - } - - return FALSE; -} - diff --git a/gtk2_ardour/meter_bridge_strip.h b/gtk2_ardour/meter_bridge_strip.h deleted file mode 100644 index bdce16f17c..0000000000 --- a/gtk2_ardour/meter_bridge_strip.h +++ /dev/null @@ -1,110 +0,0 @@ -/* - Copyright (C) 1999 Paul Davis - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - $Id$ -*/ - -#ifndef __ardour_meterbridgestrip_h__ -#define __ardour_meterbridgestrip_h__ - -#include - -#include -#include -#include -#include -#include - -#include - -namespace ARDOUR { - class AudioEngine; - class Session; - class Route; -} - -namespace Gtkmm2ext { - class Selector; - struct SelectionResult; -} - -class MeterBridgeStrip : public sigc::trackable - -{ - public: - MeterBridgeStrip (ARDOUR::AudioEngine &, - ARDOUR::Session&, - ARDOUR::Route&, - string label, - nframes_t long_over, - nframes_t short_over, - nframes_t meter_hold); - - void update (); /* called by meter timeout handler from ARDOUR_UI */ - - Gtk::Box &above_box() { return above_meter_vbox; } - Gtk::Box &below_box() { return below_meter_vbox; } - Gtk::Widget &meter_widget() { return meter; } - - guint32 meter_width() const { return 8; } - - void clear_meter (); - void clear_overs (); - - void set_meter_on (bool yn); - bool get_meter_on () const { return meter_on; } - - ARDOUR::Route& route() const { return _route; } - - private: - ARDOUR::AudioEngine& engine; - ARDOUR::Session& session; - ARDOUR::Route& _route; - - Gtk::EventBox label_ebox; - Gtk::Label label; - bool meter_clear_pending; - bool over_clear_pending; - - Gtkmm2ext::FastMeter meter; - bool meter_on; - - Gtk::VBox above_meter_vbox; - Gtk::VBox below_meter_vbox; - - Gtk::HBox over_long_hbox; - Gtk::HBox over_long_vbox; - Gtk::EventBox over_long_button; - Gtk::Frame over_long_frame; - Gtk::Label over_long_label; - - Gtk::HBox over_short_hbox; - Gtk::HBox over_short_vbox; - Gtk::EventBox over_short_button; - Gtk::Frame over_short_frame; - Gtk::Label over_short_label; - - guint32 last_over_short; - guint32 last_over_long; - - gint gui_clear_overs (GdkEventButton *); - gint label_button_press_release (GdkEventButton *); -}; - -#endif /* __ardour_meterbridgestrip_h__ */ - - diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index edc66c92bb..bef8ee787f 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -17,6 +17,7 @@ */ #include +#include #include @@ -61,6 +62,7 @@ using namespace ARDOUR; using namespace PBD; using namespace Gtk; using namespace Gtkmm2ext; +using namespace std; int MixerStrip::scrollbar_height = 0; @@ -153,17 +155,10 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session& sess, boost::shared_ptr rt /* XXX what is this meant to do? */ //meter_point_button.signal_button_release_event().connect (mem_fun (gpm, &GainMeter::meter_release), false); - solo_button->set_name ("MixerSoloButton"); - mute_button->set_name ("MixerMuteButton"); - hide_button.set_events (hide_button.get_events() & ~(Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK)); - width_button.unset_flags (Gtk::CAN_FOCUS); - hide_button.unset_flags (Gtk::CAN_FOCUS); - input_button.unset_flags (Gtk::CAN_FOCUS); - output_button.unset_flags (Gtk::CAN_FOCUS); - solo_button->unset_flags (Gtk::CAN_FOCUS); - mute_button->unset_flags (Gtk::CAN_FOCUS); + mute_button->set_name ("MixerMuteButton"); + solo_button->set_name ("MixerSoloButton"); button_table.set_homogeneous (true); button_table.set_spacings (0); @@ -182,9 +177,10 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session& sess, boost::shared_ptr rt if (is_audio_track()) { + rec_enable_button->signal_button_press_event().connect (mem_fun(*this, &RouteUI::rec_enable_press), false); + rec_enable_button->signal_button_release_event().connect (mem_fun(*this, &RouteUI::rec_enable_release)); + rec_enable_button->set_name ("MixerRecordEnableButton"); - rec_enable_button->unset_flags (Gtk::CAN_FOCUS); - rec_enable_button->signal_button_press_event().connect (mem_fun(*this, &RouteUI::rec_enable_press)); AudioTrack* at = audio_track(); @@ -266,8 +262,7 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session& sess, boost::shared_ptr rt if (scrollbar_height == 0) { HScrollbar scrollbar; - Gtk::Requisition requisition; - scrollbar.size_request (requisition); + Gtk::Requisition requisition(scrollbar.size_request ()); scrollbar_height = requisition.height; } @@ -395,8 +390,7 @@ MixerStrip::set_stuff_from_route () } else { _marked_for_display = true; } - } - else { + } else { /* backwards compatibility */ _marked_for_display = true; } @@ -418,56 +412,56 @@ MixerStrip::set_width (Width w) ensure_xml_node (); _width = w; - + switch (w) { case Wide: set_size_request (-1, -1); xml_node->add_property ("strip_width", "wide"); - - if (rec_enable_button) { - rec_enable_button->set_label (_("record")); + + if (rec_enable_button) { + ((Gtk::Label*)rec_enable_button->get_child())->set_text (_("record")); } - mute_button->set_label (_("Mute")); - solo_button->set_label (_("Solo")); + ((Gtk::Label*)mute_button->get_child())->set_text (_("Mute")); + ((Gtk::Label*)solo_button->get_child())->set_text (_("Solo")); if (_route->comment() == "") { comment_button.unset_bg (STATE_NORMAL); - comment_button.set_label (_("comments")); + ((Gtk::Label*)comment_button.get_child())->set_text (_("comments")); } else { comment_button.modify_bg (STATE_NORMAL, color()); - comment_button.set_label (_("*comments*")); + ((Gtk::Label*)comment_button.get_child())->set_text (_("*comments*")); } - gpm.gain_automation_style_button.set_label (gpm.astyle_string(_route->gain_automation_curve().automation_style())); - gpm.gain_automation_state_button.set_label (gpm.astate_string(_route->gain_automation_curve().automation_state())); - panners.pan_automation_style_button.set_label (panners.astyle_string(_route->panner().automation_style())); - panners.pan_automation_state_button.set_label (panners.astate_string(_route->panner().automation_state())); + ((Gtk::Label*)gpm.gain_automation_style_button.get_child())->set_text (gpm.astyle_string(_route->gain_automation_curve().automation_style())); + ((Gtk::Label*)gpm.gain_automation_state_button.get_child())->set_text (gpm.astate_string(_route->gain_automation_curve().automation_state())); + ((Gtk::Label*)panners.pan_automation_style_button.get_child())->set_text (panners.astyle_string(_route->panner().automation_style())); + ((Gtk::Label*)panners.pan_automation_state_button.get_child())->set_text (panners.astate_string(_route->panner().automation_state())); Gtkmm2ext::set_size_request_to_display_given_text (name_button, "long", 2, 2); break; case Narrow: - set_size_request (50, -1); xml_node->add_property ("strip_width", "narrow"); if (rec_enable_button) { - rec_enable_button->set_label (_("Rec")); + ((Gtk::Label*)rec_enable_button->get_child())->set_text (_("Rec")); } - mute_button->set_label (_("M")); - solo_button->set_label (_("S")); + ((Gtk::Label*)mute_button->get_child())->set_text (_("M")); + ((Gtk::Label*)solo_button->get_child())->set_text (_("S")); if (_route->comment() == "") { comment_button.unset_bg (STATE_NORMAL); - comment_button.set_label (_("Cmt")); + ((Gtk::Label*)comment_button.get_child())->set_text (_("Cmt")); } else { comment_button.modify_bg (STATE_NORMAL, color()); - comment_button.set_label (_("*Cmt*")); + ((Gtk::Label*)comment_button.get_child())->set_text (_("*Cmt*")); } - gpm.gain_automation_style_button.set_label (gpm.short_astyle_string(_route->gain_automation_curve().automation_style())); - gpm.gain_automation_state_button.set_label (gpm.short_astate_string(_route->gain_automation_curve().automation_state())); - panners.pan_automation_style_button.set_label (panners.short_astyle_string(_route->panner().automation_style())); - panners.pan_automation_state_button.set_label (panners.short_astate_string(_route->panner().automation_state())); + ((Gtk::Label*)gpm.gain_automation_style_button.get_child())->set_text (gpm.short_astyle_string(_route->gain_automation_curve().automation_style())); + ((Gtk::Label*)gpm.gain_automation_state_button.get_child())->set_text (gpm.short_astate_string(_route->gain_automation_curve().automation_state())); + ((Gtk::Label*)panners.pan_automation_style_button.get_child())->set_text (panners.short_astyle_string(_route->panner().automation_style())); + ((Gtk::Label*)panners.pan_automation_state_button.get_child())->set_text (panners.short_astate_string(_route->panner().automation_state())); Gtkmm2ext::set_size_request_to_display_given_text (name_button, "longest label", 2, 2); + set_size_request (max (50, gpm.get_gm_width()), -1); break; } @@ -788,20 +782,20 @@ MixerStrip::comment_editor_done_editing() { case Wide: if (! str.empty()) { comment_button.modify_bg (STATE_NORMAL, color()); - comment_button.set_label (_("*Comments*")); + ((Gtk::Label*)comment_button.get_child())->set_text (_("*Comments*")); } else { comment_button.unset_bg (STATE_NORMAL); - comment_button.set_label (_("Comments")); + ((Gtk::Label*)comment_button.get_child())->set_text (_("Comments")); } break; case Narrow: if (! str.empty()) { comment_button.modify_bg (STATE_NORMAL, color()); - comment_button.set_label (_("*Cmt*")); + ((Gtk::Label*)comment_button.get_child())->set_text (_("*Cmt*")); } else { comment_button.unset_bg (STATE_NORMAL); - comment_button.set_label (_("Cmt")); + ((Gtk::Label*)comment_button.get_child())->set_text (_("Cmt")); } break; } diff --git a/gtk2_ardour/mixer_strip.h b/gtk2_ardour/mixer_strip.h index 430f774eb6..ea2569b644 100644 --- a/gtk2_ardour/mixer_strip.h +++ b/gtk2_ardour/mixer_strip.h @@ -241,9 +241,6 @@ class MixerStrip : public RouteUI, public Gtk::EventBox bool ignore_speed_adjustment; - string solo_button_name () const { return "MixerSoloButton"; } - string safe_solo_button_name () const { return "MixerSafeSoloButton"; } - void engine_running(); void engine_stopped(); diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc index f20171f9fb..d1089e48e6 100644 --- a/gtk2_ardour/mixer_ui.cc +++ b/gtk2_ardour/mixer_ui.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -30,13 +29,13 @@ #include #include -#include #include #include #include #include #include +#include "keyboard.h" #include "mixer_ui.h" #include "mixer_strip.h" #include "plugin_selector.h" @@ -58,9 +57,8 @@ using namespace std; using PBD::atoi; -Mixer_UI::Mixer_UI (AudioEngine& eng) - : Window (Gtk::WINDOW_TOPLEVEL), - engine (eng) +Mixer_UI::Mixer_UI () + : Window (Gtk::WINDOW_TOPLEVEL) { _strip_width = Wide; track_menu = 0; @@ -279,7 +277,7 @@ Mixer_UI::add_strip (Session::RouteList& routes) TreeModel::Row row = *(track_model->append()); row[track_columns.text] = route->name(); - row[track_columns.visible] = true; + row[track_columns.visible] = strip->marked_for_display(); row[track_columns.route] = route; row[track_columns.strip] = strip; @@ -383,6 +381,7 @@ Mixer_UI::disconnect_from_session () ENSURE_GUI_THREAD(mem_fun(*this, &Mixer_UI::disconnect_from_session)); group_model->clear (); + _selection.clear (); set_title (_("ardour: mixer")); stop_updating (); } @@ -554,12 +553,14 @@ Mixer_UI::hide_all_audiotracks () void Mixer_UI::track_list_change (const Gtk::TreeModel::Path& path,const Gtk::TreeModel::iterator& iter) { + session->set_remote_control_ids(); redisplay_track_list (); } void Mixer_UI::track_list_delete (const Gtk::TreeModel::Path& path) { + session->set_remote_control_ids(); redisplay_track_list (); } @@ -612,8 +613,10 @@ Mixer_UI::redisplay_track_list () if (strip->route()->master() || strip->route()->control()) { /* do nothing, these cannot be hidden */ } else { - strip_packer.remove (*strip); - strip->set_packed (false); + if (strip->packed()) { + strip_packer.remove (*strip); + strip->set_packed (false); + } } } } @@ -892,6 +895,16 @@ Mixer_UI::group_flags_changed (void* src, RouteGroup* group) } ENSURE_GUI_THREAD(bind (mem_fun(*this, &Mixer_UI::group_flags_changed), src, group)); + + /* force an update of any mixer strips that are using this group, + otherwise mix group names don't change in mixer strips + */ + + for (list::iterator i = strips.begin(); i != strips.end(); ++i) { + if ((*i)->mix_group() == group) { + (*i)->mix_group_changed(0); + } + } TreeModel::iterator i; TreeModel::Children rows = group_model->children(); @@ -1003,7 +1016,7 @@ Mixer_UI::strip_scroller_button_release (GdkEventButton* ev) using namespace Menu_Helpers; if (Keyboard::is_context_menu_event (ev)) { - ARDOUR_UI::instance()->add_route(); + ARDOUR_UI::instance()->add_route (this); return true; } diff --git a/gtk2_ardour/mixer_ui.h b/gtk2_ardour/mixer_ui.h index 2a5b416ae0..bf9c9cbd18 100644 --- a/gtk2_ardour/mixer_ui.h +++ b/gtk2_ardour/mixer_ui.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_mixer_ui_h__ @@ -38,7 +37,6 @@ #include #include -#include "keyboard_target.h" #include "route_redirect_selection.h" #include "enums.h" @@ -47,7 +45,6 @@ namespace ARDOUR { class RouteGroup; class Session; class AudioDiskstream; - class AudioEngine; }; class MixerStrip; @@ -56,7 +53,7 @@ class PluginSelector; class Mixer_UI : public Gtk::Window { public: - Mixer_UI (ARDOUR::AudioEngine&); + Mixer_UI (); ~Mixer_UI(); void connect_to_session (ARDOUR::Session *); @@ -82,7 +79,6 @@ class Mixer_UI : public Gtk::Window RouteRedirectSelection& selection() { return _selection; } private: - ARDOUR::AudioEngine& engine; ARDOUR::Session *session; bool _visible; diff --git a/gtk2_ardour/new_session_dialog.cc b/gtk2_ardour/new_session_dialog.cc index 9e094c9ad0..4875ff835a 100644 --- a/gtk2_ardour/new_session_dialog.cc +++ b/gtk2_ardour/new_session_dialog.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include "i18n.h" diff --git a/gtk2_ardour/new_session_dialog.h b/gtk2_ardour/new_session_dialog.h index e0f488dc80..0d4124f8cc 100644 --- a/gtk2_ardour/new_session_dialog.h +++ b/gtk2_ardour/new_session_dialog.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ // -*- c++ -*- diff --git a/gtk2_ardour/option_editor.cc b/gtk2_ardour/option_editor.cc index 1c76f8079b..5dd9727193 100644 --- a/gtk2_ardour/option_editor.cc +++ b/gtk2_ardour/option_editor.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -24,13 +23,14 @@ #include #include #include -#include +#include #include #include #include #include #include "public_editor.h" +#include "keyboard.h" #include "mixer_ui.h" #include "ardour_ui.h" #include "io_selector.h" @@ -74,6 +74,9 @@ OptionEditor::OptionEditor (ARDOUR_UI& uip, PublicEditor& ed, Mixer_UI& mixui) /* MIDI */ + mmc_device_id_adjustment (0.0, 0.0, (double) 0x7f, 1.0, 16.0), + mmc_device_id_spinner (mmc_device_id_adjustment), + /* Click */ click_table (2, 3), @@ -367,23 +370,28 @@ OptionEditor::setup_midi_options () ToggleButton* tb; RadioButton* rb; - Gtk::Table* table = manage (new Table (ports.size() + 4, 9)); + Gtk::Table* table = manage (new Table (ports.size() + 4, 10)); table->set_row_spacings (6); table->set_col_spacings (10); - table->attach (*(manage (new Label (X_("Port")))), 0, 1, 0, 1); - table->attach (*(manage (new Label (X_("Offline")))), 1, 2, 0, 1); - table->attach (*(manage (new Label (X_("Trace\nInput")))), 2, 3, 0, 1); - table->attach (*(manage (new Label (X_("Trace\nOutput")))), 3, 4, 0, 1); - table->attach (*(manage (new Label (X_("MTC")))), 4, 5, 0, 1); - table->attach (*(manage (new Label (X_("MMC")))), 6, 7, 0, 1); - table->attach (*(manage (new Label (X_("MIDI Parameter\nControl")))), 8, 9, 0, 1); + table->attach (*(manage (new Label (_("Port")))), 0, 1, 0, 1); + table->attach (*(manage (new Label (_("Offline")))), 1, 2, 0, 1); + table->attach (*(manage (new Label (_("Trace\nInput")))), 2, 3, 0, 1); + table->attach (*(manage (new Label (_("Trace\nOutput")))), 3, 4, 0, 1); + table->attach (*(manage (new Label (_("MTC")))), 4, 5, 0, 1); + table->attach (*(manage (new Label (_("MMC")))), 6, 7, 0, 1); + table->attach (*(manage (new Label (_("MIDI Parameter\nControl")))), 8, 9, 0, 1); table->attach (*(manage (new HSeparator())), 0, 9, 1, 2); table->attach (*(manage (new VSeparator())), 5, 6, 0, 8); table->attach (*(manage (new VSeparator())), 7, 8, 0, 8); + table->attach (*(manage (new Label (_("MMC Device ID")))), 9, 10, 0, 1); + table->attach (mmc_device_id_spinner, 9, 10, 1, 2); + + mmc_device_id_adjustment.signal_value_changed().connect (mem_fun (*this, &OptionEditor::mmc_device_id_adjusted)); + for (n = 0, i = ports.begin(); i != ports.end(); ++n, ++i) { pair > newpair; @@ -483,7 +491,6 @@ OptionEditor::mtc_port_chosen (MIDI::Port *port, Gtk::RadioButton* rb) { if (session) { if (rb->get_active()) { - cerr << "Activating MTC port " << port->name() << endl; if (port) { session->set_mtc_port (port->name()); Config->set_mtc_port_name (port->name()); @@ -500,7 +507,6 @@ OptionEditor::mmc_port_chosen (MIDI::Port* port, Gtk::RadioButton* rb) { if (session) { if (rb->get_active()) { - cerr << "Activating MMC port " << port->name() << endl; if (port) { session->set_mmc_port (port->name()); Config->set_mtc_port_name (port->name()); @@ -517,7 +523,6 @@ OptionEditor::midi_port_chosen (MIDI::Port* port, Gtk::RadioButton* rb) { if (session) { if (rb->get_active()) { - cerr << "Activating MIDI port " << port->name() << endl; if (port) { session->set_midi_port (port->name()); Config->set_midi_port_name (port->name()); @@ -555,13 +560,23 @@ OptionEditor::map_port_online (MIDI::Port* port, ToggleButton* tb) } } +void +OptionEditor::mmc_device_id_adjusted () +{ + uint8_t id = (uint8_t) mmc_device_id_spinner.get_value(); + + if (id != Config->get_mmc_device_id()) { + Config->set_mmc_device_id (id); + } +} + void OptionEditor::port_trace_in_toggled (MIDI::Port* port, ToggleButton* tb) { bool trace = tb->get_active(); if (port->input()->tracing() != trace) { - port->output()->trace (trace, &cerr, string (port->name()) + string (" input: ")); + port->input()->trace (trace, &cerr, string (port->name()) + string (" input: ")); } } diff --git a/gtk2_ardour/option_editor.h b/gtk2_ardour/option_editor.h index cc28a74e60..7754b0555d 100644 --- a/gtk2_ardour/option_editor.h +++ b/gtk2_ardour/option_editor.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __gtk_ardour_option_editor_h__ @@ -111,6 +110,9 @@ class OptionEditor : public Gtk::Dialog Gtk::RadioButton::Group mmc_button_group; Gtk::RadioButton::Group midi_button_group; + Gtk::Adjustment mmc_device_id_adjustment; + Gtk::SpinButton mmc_device_id_spinner; + void port_online_toggled (MIDI::Port*,Gtk::ToggleButton*); void port_trace_in_toggled (MIDI::Port*,Gtk::ToggleButton*); void port_trace_out_toggled (MIDI::Port*,Gtk::ToggleButton*); @@ -119,6 +121,8 @@ class OptionEditor : public Gtk::Dialog void mtc_port_chosen (MIDI::Port*,Gtk::RadioButton*); void midi_port_chosen (MIDI::Port*,Gtk::RadioButton*); + void mmc_device_id_adjusted (); + void map_port_online (MIDI::Port*, Gtk::ToggleButton*); void setup_midi_options(); diff --git a/gtk2_ardour/opts.cc b/gtk2_ardour/opts.cc index 792fde3a10..608f684fc9 100644 --- a/gtk2_ardour/opts.cc +++ b/gtk2_ardour/opts.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -52,6 +51,7 @@ print_help (const char *execname) << _(" -c, --name name Use a specific jack client name, default is ardour\n") << _(" -N, --new session-name Create a new session from the command line\n") << _(" -O, --no-hw-optimizations Disable h/w specific optimizations\n") + << _(" -S, --sync Draw the gui synchronously \n") #ifdef VST_SUPPORT << _(" -V, --novst Do not use VST support\n") #endif @@ -67,7 +67,7 @@ int GTK_ARDOUR::parse_opts (int argc, char *argv[]) { - const char *optstring = "U:hbvVnOc:C:N:k:"; + const char *optstring = "U:hSbvVnOc:C:N:k:"; const char *execname = strrchr (argv[0], '/'); if (execname == 0) { @@ -85,6 +85,7 @@ GTK_ARDOUR::parse_opts (int argc, char *argv[]) { "novst", 0, 0, 'V' }, { "new", 1, 0, 'N' }, { "no-hw-optimizations", 0, 0, 'O' }, + { "sync", 0, 0, 'O' }, { "curvetest", 1, 0, 'C' }, { 0, 0, 0, 0 } }; @@ -118,6 +119,10 @@ GTK_ARDOUR::parse_opts (int argc, char *argv[]) case 'n': no_splash = false; break; + + case 'S': + // ; just pass this through to gtk it will figure it out + break; case 'N': new_session = true; diff --git a/gtk2_ardour/opts.h b/gtk2_ardour/opts.h index 710621ac65..fb780fc8aa 100644 --- a/gtk2_ardour/opts.h +++ b/gtk2_ardour/opts.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_opts_h__ diff --git a/gtk2_ardour/pan_automation_time_axis.cc b/gtk2_ardour/pan_automation_time_axis.cc index c484673c99..c008a10ff0 100644 --- a/gtk2_ardour/pan_automation_time_axis.cc +++ b/gtk2_ardour/pan_automation_time_axis.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/panner.cc b/gtk2_ardour/panner.cc index bb9b432184..d54d6b89ac 100644 --- a/gtk2_ardour/panner.cc +++ b/gtk2_ardour/panner.cc @@ -55,23 +55,23 @@ PannerBar::expose (GdkEventExpose* ev) points[0].x = (darea.get_width()/2 - triangle_size); points[0].y = 0; - points[1].x = (darea.get_width()/2 + triangle_size) - 1; + points[1].x = (darea.get_width()/2 + triangle_size); points[1].y = 0; - points[2].x = darea.get_width()/2 - 1; + points[2].x = darea.get_width()/2; points[2].y = triangle_size - 1; gdk_draw_polygon (win->gobj(), gc->gobj(), true, points, 3); // right - points[0].x = (darea.get_width() - triangle_size) - 1; + points[0].x = (darea.get_width() - triangle_size); points[0].y = 0; - points[1].x = darea.get_width() - 1; + points[1].x = darea.get_width(); points[1].y = 0; - points[2].x = darea.get_width() - 1; + points[2].x = darea.get_width(); points[2].y = triangle_size; gdk_draw_polygon (win->gobj(), gc->gobj(), true, points, 3); diff --git a/gtk2_ardour/panner2d.cc b/gtk2_ardour/panner2d.cc index 1e6e4c16c9..34f367b25b 100644 --- a/gtk2_ardour/panner2d.cc +++ b/gtk2_ardour/panner2d.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -58,8 +57,8 @@ Panner2d::Target::~Target () } } -Panner2d::Panner2d (Panner& p, int32_t w, int32_t h) - : panner (p), width (w), height (h) +Panner2d::Panner2d (Panner& p, int32_t h) + : panner (p), width (0), height (h) { context_menu = 0; bypass_menu_item = 0; diff --git a/gtk2_ardour/panner2d.h b/gtk2_ardour/panner2d.h index 1bf8879ba5..fb4929ad2d 100644 --- a/gtk2_ardour/panner2d.h +++ b/gtk2_ardour/panner2d.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_panner_2d_h__ @@ -47,7 +46,7 @@ namespace Pango { class Panner2d : public Gtk::DrawingArea { public: - Panner2d (ARDOUR::Panner&, int32_t width, int32_t height); + Panner2d (ARDOUR::Panner&, int32_t height); ~Panner2d (); int puck_position (int which_puck, float& x, float& y); diff --git a/gtk2_ardour/panner_ui.cc b/gtk2_ardour/panner_ui.cc index af5379b40f..8f9a1b1394 100644 --- a/gtk2_ardour/panner_ui.cc +++ b/gtk2_ardour/panner_ui.cc @@ -73,8 +73,7 @@ PannerUI::PannerUI (boost::shared_ptr io, Session& s) //set_size_request_to_display_given_text (pan_automation_style_button, X_("0"), 2, 2); pan_bar_packer.set_size_request (-1, 61); - panning_viewport.set_size_request (64, 61); - + panning_viewport.set_size_request (-1, 61); panning_viewport.set_name (X_("BaseFrame")); ARDOUR_UI::instance()->tooltips().set_tip (panning_link_button, @@ -86,7 +85,7 @@ PannerUI::PannerUI (boost::shared_ptr io, Session& s) pan_automation_state_button.unset_flags (Gtk::CAN_FOCUS); using namespace Menu_Helpers; - pan_astate_menu.items().push_back (MenuElem (_("Off"), + pan_astate_menu.items().push_back (MenuElem (_("Manual"), bind (mem_fun (_io->panner(), &Panner::set_automation_state), (AutoState) Off))); pan_astate_menu.items().push_back (MenuElem (_("Play"), bind (mem_fun (_io->panner(), &Panner::set_automation_state), (AutoState) Play))); @@ -137,7 +136,7 @@ PannerUI::PannerUI (boost::shared_ptr io, Session& s) pan_vbox.pack_start (panning_viewport, Gtk::PACK_SHRINK); pan_vbox.pack_start (panning_link_box, Gtk::PACK_SHRINK); - pack_start (pan_vbox, true, false); + pack_start (pan_vbox, true, true); panner = 0; @@ -215,23 +214,9 @@ PannerUI::set_width (Width w) { switch (w) { case Wide: - panning_viewport.set_size_request (64, 61); - if (panner) { - panner->set_size_request (63, 61); - } - for (vector::iterator i = pan_bars.begin(); i != pan_bars.end(); ++i) { - (*i)->set_size_request (63, pan_bar_height); - } panning_link_button.set_label (_("link")); break; case Narrow: - panning_viewport.set_size_request (34, 61); - if (panner) { - panner->set_size_request (33, 61); - } - for (vector::iterator i = pan_bars.begin(); i != pan_bars.end(); ++i) { - (*i)->set_size_request (33, pan_bar_height); - } panning_link_button.set_label (_("L")); break; } @@ -289,6 +274,13 @@ PannerUI::setup_pan () pan_adjustments.pop_back (); } + /* stick something into the panning viewport so that it redraws */ + + EventBox* eb = manage (new EventBox()); + panning_viewport.remove (); + panning_viewport.add (*eb); + panning_viewport.show_all (); + } else if (nouts == 2) { vector::size_type asz; @@ -344,16 +336,9 @@ PannerUI::setup_pan () bc->event_widget().signal_button_release_event().connect (bind (mem_fun(*this, &PannerUI::pan_button_event), (uint32_t) asz)); - pan_bars.push_back (bc); - switch (_width) { - case Wide: - bc->set_size_request (63, pan_bar_height); - break; - case Narrow: - bc->set_size_request (33, pan_bar_height); - break; - } + bc->set_size_request (-1, pan_bar_height); + pan_bars.push_back (bc); pan_bar_packer.pack_start (*bc, false, false); } @@ -370,26 +355,15 @@ PannerUI::setup_pan () } else { - int w = 0; - - switch (_width) { - case Wide: - w = 63; - break; - case Narrow: - w = 33; - break; - } - if (panner == 0) { - panner = new Panner2d (_io->panner(), w, 61); + panner = new Panner2d (_io->panner(), 61); panner->set_name ("MixerPanZone"); panner->show (); } update_pan_sensitive (); panner->reset (_io->n_inputs().get(ARDOUR::DataType::AUDIO)); - panner->set_size_request (w, 61); + panner->set_size_request (-1, 61); /* and finally, add it to the panner frame */ @@ -771,7 +745,7 @@ PannerUI::_astate_string (AutoState state, bool shrt) switch (state) { case Off: - sstr = (shrt ? "O" : _("O")); + sstr = (shrt ? "M" : _("M")); break; case Play: sstr = (shrt ? "P" : _("P")); diff --git a/gtk2_ardour/panner_ui.h b/gtk2_ardour/panner_ui.h index 79a8085488..d587359ecd 100644 --- a/gtk2_ardour/panner_ui.h +++ b/gtk2_ardour/panner_ui.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_gtk_panner_ui_h__ diff --git a/gtk2_ardour/playlist_selector.cc b/gtk2_ardour/playlist_selector.cc index ddb771bb18..0ee99d1413 100644 --- a/gtk2_ardour/playlist_selector.cc +++ b/gtk2_ardour/playlist_selector.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ diff --git a/gtk2_ardour/plugin_selector.cc b/gtk2_ardour/plugin_selector.cc index 8a52e8587f..1283837e0c 100644 --- a/gtk2_ardour/plugin_selector.cc +++ b/gtk2_ardour/plugin_selector.cc @@ -471,11 +471,11 @@ PluginSelector::ladspa_display_selection_changed() void PluginSelector::added_list_selection_changed() { - if (added_list.get_selection()->count_selected_rows() != 0) { - btn_remove->set_sensitive (true); - } else { - btn_remove->set_sensitive (false); - } + if (added_list.get_selection()->count_selected_rows() != 0) { + btn_remove->set_sensitive (true); + } else { + btn_remove->set_sensitive (false); + } } int diff --git a/gtk2_ardour/plugin_ui.cc b/gtk2_ardour/plugin_ui.cc index 26f38250a5..90d19d81b6 100644 --- a/gtk2_ardour/plugin_ui.cc +++ b/gtk2_ardour/plugin_ui.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -96,13 +95,14 @@ PluginUIWindow::PluginUIWindow (boost::shared_ptr insert, bool scr _pluginui = pu; get_vbox()->add (*pu); + set_wmclass (X_("ardour_plugin_editor"), "Ardour"); + signal_map_event().connect (mem_fun (*pu, &LadspaPluginUI::start_updating)); signal_unmap_event().connect (mem_fun (*pu, &LadspaPluginUI::stop_updating)); } set_position (Gtk::WIN_POS_MOUSE); set_name ("PluginEditor"); - set_wmclass (X_("ardour_plugin_editor"), "Ardour"); add_events (Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK); signal_delete_event().connect (bind (sigc::ptr_fun (just_hide_it), reinterpret_cast (this))); diff --git a/gtk2_ardour/plugin_ui.h b/gtk2_ardour/plugin_ui.h index c1d538b3d1..2f15356c61 100644 --- a/gtk2_ardour/plugin_ui.h +++ b/gtk2_ardour/plugin_ui.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_plugin_ui_h__ diff --git a/gtk2_ardour/po/ru_RU.po b/gtk2_ardour/po/ru_RU.po index 7a11f8bb1d..e5db030c2d 100644 --- a/gtk2_ardour/po/ru_RU.po +++ b/gtk2_ardour/po/ru_RU.po @@ -3,118 +3,148 @@ # This file is distributed under the same license as the gtk-ardour package. # # Igor Blinov pitstop@nm.ru, 2004. -# Alexandre Prokoudine , 2006. +# Alexandre Prokoudine , 2006, 2007. msgid "" msgstr "" "Project-Id-Version: ru_RU\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-09-21 04:11+0400\n" -"PO-Revision-Date: 2006-09-21 07:53+0400\n" +"POT-Creation-Date: 2007-01-05 08:01+0300\n" +"PO-Revision-Date: 2007-01-11 06:31+0300\n" "Last-Translator: Alexandre Prokoudine \n" -"Language-Team: Russian \n" +"Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: gtk2_ardour/about.cc:120 +#: gtk2_ardour/about.cc:121 msgid "Paul Davis" msgstr "Paul Davis" -#: gtk2_ardour/about.cc:121 +#: gtk2_ardour/about.cc:122 msgid "Jesse Chappell" msgstr "Jesse Chappell" -#: gtk2_ardour/about.cc:122 +#: gtk2_ardour/about.cc:123 msgid "Taybin Rutkin" msgstr "Taybin Rutkin" -#: gtk2_ardour/about.cc:123 +#: gtk2_ardour/about.cc:124 msgid "Marcus Andersson" msgstr "Marcus Andersson" -#: gtk2_ardour/about.cc:124 +#: gtk2_ardour/about.cc:125 msgid "Jeremy Hall" msgstr "Jeremy Hall" -#: gtk2_ardour/about.cc:125 +#: gtk2_ardour/about.cc:126 msgid "Steve Harris" msgstr "Steve Harris" -#: gtk2_ardour/about.cc:126 +#: gtk2_ardour/about.cc:127 msgid "Tim Mayberry" msgstr "Tim Mayberry" -#: gtk2_ardour/about.cc:127 +#: gtk2_ardour/about.cc:128 msgid "Mark Stewart" msgstr "Mark Stewart" -#: gtk2_ardour/about.cc:128 +#: gtk2_ardour/about.cc:129 msgid "Sam Chessman" msgstr "Sam Chessman" -#: gtk2_ardour/about.cc:129 +#: gtk2_ardour/about.cc:130 msgid "Jack O'Quin" msgstr "Jack O'Quin" -#: gtk2_ardour/about.cc:130 +#: gtk2_ardour/about.cc:131 msgid "Matt Krai" msgstr "Matt Krai" -#: gtk2_ardour/about.cc:131 +#: gtk2_ardour/about.cc:132 msgid "Ben Bell" msgstr "Ben Bell" -#: gtk2_ardour/about.cc:132 +#: gtk2_ardour/about.cc:133 msgid "Gerard van Dongen" msgstr "Gerard van Dongen" -#: gtk2_ardour/about.cc:133 +#: gtk2_ardour/about.cc:134 msgid "Thomas Charbonnel" msgstr "Thomas Charbonnel" -#: gtk2_ardour/about.cc:134 +#: gtk2_ardour/about.cc:135 msgid "Nick Mainsbridge" msgstr "Nick Mainsbridge" -#: gtk2_ardour/about.cc:135 +#: gtk2_ardour/about.cc:136 msgid "Colin Law" msgstr "Colin Law" -#: gtk2_ardour/about.cc:136 +#: gtk2_ardour/about.cc:137 msgid "Sampo Savolainen" msgstr "Sampo Savolainen" -#: gtk2_ardour/about.cc:137 +#: gtk2_ardour/about.cc:138 msgid "Joshua Leach" msgstr "Joshua Leach" -#: gtk2_ardour/about.cc:138 +#: gtk2_ardour/about.cc:139 msgid "Rob Holland" msgstr "Rob Holland" -#: gtk2_ardour/about.cc:139 +#: gtk2_ardour/about.cc:140 msgid "Per Sigmond" msgstr "Per Sigmond" -#: gtk2_ardour/about.cc:140 +#: gtk2_ardour/about.cc:141 msgid "Doug Mclain" msgstr "Doug Mclain" -#: gtk2_ardour/about.cc:141 +#: gtk2_ardour/about.cc:142 msgid "Petter Sundlöf" msgstr "Petter Sundlöf" +#: gtk2_ardour/about.cc:143 +msgid "Thorsten Wilms" +msgstr "Thorsten Wilms" + +#: gtk2_ardour/about.cc:144 +msgid "Ben Loftis" +msgstr "Ben Loftis" + +#: gtk2_ardour/about.cc:145 +msgid "Stefan Kersten" +msgstr "Stefan Kersten" + #: gtk2_ardour/about.cc:146 +msgid "Christopher George" +msgstr "Christopher George" + +#: gtk2_ardour/about.cc:147 +msgid "Robert Jordens" +msgstr "Robert Jordens" + +#: gtk2_ardour/about.cc:148 +msgid "Brian Ahr" +msgstr "Brian Ahr" + +#: gtk2_ardour/about.cc:149 +msgid "Nimal Ratnayake" +msgstr "Nimal Ratnayake" + +#: gtk2_ardour/about.cc:154 msgid "" "French:\n" "\tAlain Fréhel \n" +"\tChristophe Combelles \n" msgstr "" "Французский:\n" "\tAlain Fréhel \n" +"\tChristophe Combelles \n" -#: gtk2_ardour/about.cc:147 +#: gtk2_ardour/about.cc:155 msgid "" "German:\n" "\tKarsten Petersen \n" @@ -122,7 +152,7 @@ msgstr "" "Немецкий:\n" "\tKarsten Petersen \n" -#: gtk2_ardour/about.cc:148 +#: gtk2_ardour/about.cc:156 msgid "" "Italian:\n" "\tFilippo Pappalardo \n" @@ -130,7 +160,7 @@ msgstr "" "Итальянский:\n" "\tFilippo Pappalardo \n" -#: gtk2_ardour/about.cc:149 +#: gtk2_ardour/about.cc:157 msgid "" "Portuguese:\n" "\tRui Nuno Capela \n" @@ -138,7 +168,7 @@ msgstr "" "Португальский:\n" "\tRui Nuno Capela \n" -#: gtk2_ardour/about.cc:150 +#: gtk2_ardour/about.cc:158 msgid "" "Brazilian Portuguese:\n" "\tAlexander da Franca Fernandes \n" @@ -148,7 +178,7 @@ msgstr "" "\tAlexander da Franca Fernandes \n" "\tChris Ross \n" -#: gtk2_ardour/about.cc:152 +#: gtk2_ardour/about.cc:160 msgid "" "Spanish:\n" "\t Alex Krohn \n" @@ -156,7 +186,7 @@ msgstr "" "Испанский:\n" "\t Alex Krohn \n" -#: gtk2_ardour/about.cc:153 +#: gtk2_ardour/about.cc:161 msgid "" "Russian:\n" "\t Igor Blinov \n" @@ -165,47 +195,93 @@ msgstr "" "\t Igor Blinov \n" "\t Alexandre Prokoudine \n" -#: gtk2_ardour/about.cc:181 -msgid "Copyright (C) 1999-2005 Paul Davis\n" -msgstr "Авторские права 1999-2005 Paul Davis\n" +#: gtk2_ardour/about.cc:189 +#, fuzzy +msgid "Copyright (C) 1999-2006 Paul Davis\n" +msgstr "Авторские права © 1999-2006 Paul Davis" -#: gtk2_ardour/about.cc:182 +#: gtk2_ardour/about.cc:190 msgid "" "Ardour comes with ABSOLUTELY NO WARRANTY\n" "This is free software, and you are welcome to redistribute it\n" "under certain conditions; see the file COPYING for details.\n" msgstr "" -#: gtk2_ardour/about.cc:188 +#: gtk2_ardour/about.cc:195 +msgid "visit http://www.ardour.org/" +msgstr "Зайдите на http://www.ardour.org/" + +#: gtk2_ardour/about.cc:196 +#, fuzzy msgid "" "%1\n" -"(built with ardour/gtk %2.%3.%4 libardour: %5.%6.%7)" +"(built from revision %2)" msgstr "" +"%1\n" +"(собрано из ревизии %2)" -#: gtk2_ardour/actions.cc:76 +#: gtk2_ardour/actions.cc:77 msgid "badly formatted UI definition file" -msgstr "" +msgstr "некорректно отформатированный файл определения интерфейса" -#: gtk2_ardour/actions.cc:78 +#: gtk2_ardour/actions.cc:79 msgid "Ardour menu definition file not found" -msgstr "" +msgstr "Файл определения меню Ardour не найден" -#: gtk2_ardour/actions.cc:82 +#: gtk2_ardour/actions.cc:83 msgid "ardour will not work without a valid ardour.menus file" -msgstr "" +msgstr "Ardour не будет работать без корректного файла ardour.menus" -#: gtk2_ardour/actions.cc:261 +#: gtk2_ardour/actions.cc:235 #, fuzzy msgid "programmer error: %1 %2" msgstr "ошибка в программе: " -#: gtk2_ardour/actions.cc:280 +#: gtk2_ardour/actions.cc:254 msgid "Unknown action name: %1" +msgstr "Неизвестное имя действия: %1" + +#: gtk2_ardour/add_route_dialog.cc:41 gtk2_ardour/add_route_dialog.cc:196 +msgid "Mono" +msgstr "Моно" + +#: gtk2_ardour/add_route_dialog.cc:42 gtk2_ardour/add_route_dialog.cc:198 +msgid "Stereo" +msgstr "Стерео" + +#: gtk2_ardour/add_route_dialog.cc:43 +msgid "3 Channels" +msgstr "3 канала" + +#: gtk2_ardour/add_route_dialog.cc:44 +msgid "4 Channels" +msgstr "4 канала" + +#: gtk2_ardour/add_route_dialog.cc:45 +msgid "6 Channels" +msgstr "6 каналов" + +#: gtk2_ardour/add_route_dialog.cc:46 +msgid "8 Channels" +msgstr "8 каналов" + +#: gtk2_ardour/add_route_dialog.cc:47 +msgid "Manual Setup" +msgstr "Ручная настройка" + +#: gtk2_ardour/add_route_dialog.cc:52 gtk2_ardour/add_route_dialog.cc:177 +#: gtk2_ardour/editor.cc:126 gtk2_ardour/editor.cc:3616 +#: gtk2_ardour/editor_actions.cc:286 gtk2_ardour/time_axis_view.cc:586 +msgid "Normal" +msgstr "Норм." + +#: gtk2_ardour/add_route_dialog.cc:53 gtk2_ardour/add_route_dialog.cc:179 +msgid "Tape" msgstr "" #: gtk2_ardour/add_route_dialog.cc:62 msgid "ardour: add track/bus" -msgstr "ardour: добавить трек/шину" +msgstr "ardour: добавить дорожку/шину" #: gtk2_ardour/add_route_dialog.cc:63 gtk2_ardour/editor_route_list.cc:71 msgid "Tracks" @@ -215,7 +291,7 @@ msgstr "Дорожки" msgid "Busses" msgstr "Шины" -#: gtk2_ardour/add_route_dialog.cc:96 gtk2_ardour/plugin_ui.cc:145 +#: gtk2_ardour/add_route_dialog.cc:96 gtk2_ardour/plugin_ui.cc:151 msgid "Add" msgstr "Добавить" @@ -224,25 +300,8 @@ msgid "Name (template)" msgstr "Имя (шаблона)" #: gtk2_ardour/add_route_dialog.cc:120 -#, fuzzy msgid "Channel Configuration" -msgstr "Отменить импорт" - -#: gtk2_ardour/add_route_dialog.cc:177 gtk2_ardour/time_axis_view.cc:553 -msgid "Normal" -msgstr "Норм." - -#: gtk2_ardour/add_route_dialog.cc:179 -msgid "Tape" -msgstr "" - -#: gtk2_ardour/add_route_dialog.cc:196 -msgid "Mono" -msgstr "Моно" - -#: gtk2_ardour/add_route_dialog.cc:198 -msgid "Stereo" -msgstr "Стерео" +msgstr "Парометры каналов" #: gtk2_ardour/ardour_ui.cc:106 msgid "" @@ -266,15 +325,15 @@ msgstr "" msgid "% " msgstr "% " -#: gtk2_ardour/ardour_ui.cc:119 gtk2_ardour/ardour_ui_ed.cc:267 +#: gtk2_ardour/ardour_ui.cc:119 gtk2_ardour/ardour_ui_ed.cc:274 msgid "Punch In" msgstr "Начало врезки" -#: gtk2_ardour/ardour_ui.cc:120 gtk2_ardour/ardour_ui_ed.cc:270 +#: gtk2_ardour/ardour_ui.cc:120 gtk2_ardour/ardour_ui_ed.cc:277 msgid "Punch Out" msgstr "Конец врезки" -#: gtk2_ardour/ardour_ui.cc:121 gtk2_ardour/ardour_ui_ed.cc:282 +#: gtk2_ardour/ardour_ui.cc:121 gtk2_ardour/ardour_ui_ed.cc:289 msgid "Auto Return" msgstr "Автовозврат" @@ -282,12 +341,12 @@ msgstr "Автовозврат" msgid "Autuo Play" msgstr "Автовоспр." -#: gtk2_ardour/ardour_ui.cc:123 gtk2_ardour/ardour_ui_ed.cc:276 +#: gtk2_ardour/ardour_ui.cc:123 gtk2_ardour/ardour_ui_ed.cc:283 msgid "Auto Input" msgstr "Автовход" -#: gtk2_ardour/ardour_ui.cc:124 gtk2_ardour/ardour_ui_ed.cc:273 -#: gtk2_ardour/option_editor.cc:128 +#: gtk2_ardour/ardour_ui.cc:124 gtk2_ardour/ardour_ui_ed.cc:280 +#: gtk2_ardour/option_editor.cc:126 msgid "Click" msgstr "Метроном" @@ -299,11 +358,11 @@ msgstr "КОНТРОЛЬ" msgid "SOLO" msgstr "СОЛО" -#: gtk2_ardour/ardour_ui.cc:374 +#: gtk2_ardour/ardour_ui.cc:364 msgid "quit" msgstr "выйти" -#: gtk2_ardour/ardour_ui.cc:383 +#: gtk2_ardour/ardour_ui.cc:373 msgid "" "Ardour was unable to save your session.\n" "\n" @@ -312,34 +371,33 @@ msgid "" "\"Just quit\" option." msgstr "" -#: gtk2_ardour/ardour_ui.cc:402 +#: gtk2_ardour/ardour_ui.cc:397 msgid "ardour: save session?" msgstr "ardour: сохранить сессию?" -#: gtk2_ardour/ardour_ui.cc:409 +#: gtk2_ardour/ardour_ui.cc:404 msgid "Don't %1" msgstr "Отмена" -#: gtk2_ardour/ardour_ui.cc:411 +#: gtk2_ardour/ardour_ui.cc:406 msgid "Just %1" msgstr "Да, %1" -#: gtk2_ardour/ardour_ui.cc:413 +#: gtk2_ardour/ardour_ui.cc:408 msgid "Save and %1" msgstr "Сохранить и %1" -#: gtk2_ardour/ardour_ui.cc:425 +#: gtk2_ardour/ardour_ui.cc:420 #, fuzzy msgid "session" msgstr "Сессия" -#: gtk2_ardour/ardour_ui.cc:427 +#: gtk2_ardour/ardour_ui.cc:422 #, fuzzy msgid "snapshot" msgstr "Снимок" -#: gtk2_ardour/ardour_ui.cc:429 -#, fuzzy +#: gtk2_ardour/ardour_ui.cc:424 msgid "" "The %1\"%2\"\n" "has not been saved.\n" @@ -355,84 +413,84 @@ msgstr "" "Все сделанные изменения\n" "будут потеряны, если не сохранить их.\n" "\n" -"Что Вы хотите сделать?" +"Что вы хотите сделать?" -#: gtk2_ardour/ardour_ui.cc:443 +#: gtk2_ardour/ardour_ui.cc:438 msgid "Prompter" msgstr "" -#: gtk2_ardour/ardour_ui.cc:502 -#, fuzzy, c-format +#: gtk2_ardour/ardour_ui.cc:498 +#, c-format msgid "disconnected" -msgstr "Отсоединить" +msgstr "отсоединено" -#: gtk2_ardour/ardour_ui.cc:509 +#: gtk2_ardour/ardour_ui.cc:505 #, fuzzy, c-format msgid "%.1f kHz / %4.1f msecs" msgstr "SR: %.1f кГц" -#: gtk2_ardour/ardour_ui.cc:513 +#: gtk2_ardour/ardour_ui.cc:509 #, fuzzy, c-format msgid "%u kHz / %4.1f msecs" msgstr "SR: %.1f кГц" -#: gtk2_ardour/ardour_ui.cc:526 +#: gtk2_ardour/ardour_ui.cc:522 #, fuzzy, c-format msgid "DSP: %.1f%%" msgstr "Загрузка DSP: %.1f%%" -#: gtk2_ardour/ardour_ui.cc:536 +#: gtk2_ardour/ardour_ui.cc:532 #, fuzzy, c-format msgid "Buffers p:%%% c:%%%" msgstr "Буферы p:%5.0f%% c:%5.0f%%" -#: gtk2_ardour/ardour_ui.cc:564 +#: gtk2_ardour/ardour_ui.cc:560 #, fuzzy msgid "Disk: 24hrs+" msgstr "место на диске: 24 часа +" -#: gtk2_ardour/ardour_ui.cc:594 +#: gtk2_ardour/ardour_ui.cc:580 #, fuzzy, c-format msgid "Disk: %02dh:%02dm:%02ds" msgstr "свободное место: %02dч:%02dмин:%02dсек" -#: gtk2_ardour/ardour_ui.cc:633 +#: gtk2_ardour/ardour_ui.cc:619 msgid "programming error: impossible control method" msgstr "ошибка в программе: impossible control method" -#: gtk2_ardour/ardour_ui.cc:741 gtk2_ardour/new_session_dialog.cc:301 +#: gtk2_ardour/ardour_ui.cc:727 gtk2_ardour/new_session_dialog.cc:355 #, fuzzy msgid "Recent Sessions" msgstr "открыть сессию" -#: gtk2_ardour/ardour_ui.cc:834 +#: gtk2_ardour/ardour_ui.cc:820 msgid "open session" msgstr "открыть сессию" -#: gtk2_ardour/ardour_ui.cc:840 +#: gtk2_ardour/ardour_ui.cc:826 msgid "Ardour sessions" msgstr "Сессии Ardour" -#: gtk2_ardour/ardour_ui.cc:873 +#: gtk2_ardour/ardour_ui.cc:859 msgid "Patience is a virtue.\n" msgstr "По нитке дойдёшь и до клубка.\n" -#: gtk2_ardour/ardour_ui.cc:883 +#: gtk2_ardour/ardour_ui.cc:869 #, fuzzy msgid "You cannot add a track or bus without a session already loaded." msgstr "Вы не можете добавить трек пока сессия не загружена." -#: gtk2_ardour/ardour_ui.cc:893 gtk2_ardour/ardour_ui.cc:905 +#: gtk2_ardour/ardour_ui.cc:879 gtk2_ardour/ardour_ui.cc:891 #, fuzzy msgid "could not create a new audio track" msgstr "не удалось создать новый аудиотрек" -#: gtk2_ardour/ardour_ui.cc:895 gtk2_ardour/ardour_ui.cc:907 +#: gtk2_ardour/ardour_ui.cc:881 gtk2_ardour/ardour_ui.cc:893 #, fuzzy msgid "could not create %1 new audio tracks" msgstr "не удалось создать новый аудиотрек" -#: gtk2_ardour/ardour_ui.cc:927 +#: gtk2_ardour/ardour_ui.cc:913 msgid "" "There are insufficient JACK ports available\n" "to create a new track or bus.\n" @@ -440,14 +498,14 @@ msgid "" "restart JACK with more ports." msgstr "" -#: gtk2_ardour/ardour_ui.cc:1046 +#: gtk2_ardour/ardour_ui.cc:1033 msgid "" "Please create 1 or more track\n" "before trying to record.\n" "Check the Session menu." msgstr "" -#: gtk2_ardour/ardour_ui.cc:1268 +#: gtk2_ardour/ardour_ui.cc:1253 #, fuzzy msgid "" "JACK has either been shutdown or it\n" @@ -460,42 +518,47 @@ msgstr "" "Необходимо сохранить сессию и\n" "перезапустить JACK и Ardour." -#: gtk2_ardour/ardour_ui.cc:1285 -msgid "Unable to create all required ports" -msgstr "" - -#: gtk2_ardour/ardour_ui.cc:1293 +#: gtk2_ardour/ardour_ui.cc:1270 #, fuzzy msgid "Unable to start the session running" msgstr "В начало сессии" -#: gtk2_ardour/ardour_ui.cc:1399 gtk2_ardour/ardour_ui.cc:1418 +#: gtk2_ardour/ardour_ui.cc:1370 gtk2_ardour/ardour_ui.cc:1389 +#: gtk2_ardour/audio_clock.cc:451 msgid "none" msgstr "нет" -#: gtk2_ardour/ardour_ui.cc:1408 gtk2_ardour/ardour_ui.cc:1427 +#: gtk2_ardour/ardour_ui.cc:1379 gtk2_ardour/ardour_ui.cc:1398 msgid "off" -msgstr "выкл" +msgstr "выкл." -#: gtk2_ardour/ardour_ui.cc:1451 +#: gtk2_ardour/ardour_ui.cc:1421 msgid "Name of New Snapshot" msgstr "Имя нового снимка:" -#: gtk2_ardour/ardour_ui.cc:1597 +#: gtk2_ardour/ardour_ui.cc:1567 msgid "Name for mix template:" msgstr "Имя mix-шаблона:" -#: gtk2_ardour/ardour_ui.cc:1598 +#: gtk2_ardour/ardour_ui.cc:1568 msgid "-template" msgstr "-шаблон" -#: gtk2_ardour/ardour_ui.cc:1806 +#: gtk2_ardour/ardour_ui.cc:1689 +#, fuzzy +msgid "" +"This session\n" +"%1\n" +"already exists. Do you want to open it?" +msgstr "Файл с таким именем уже есть. Перезаписать его?" + +#: gtk2_ardour/ardour_ui.cc:1805 msgid "" "You do not have write access to this session.\n" "This prevents the session from being loaded." msgstr "" -#: gtk2_ardour/ardour_ui.cc:1819 gtk2_ardour/ardour_ui.cc:1871 +#: gtk2_ardour/ardour_ui.cc:1818 gtk2_ardour/ardour_ui.cc:1867 msgid "Session \"%1 (snapshot %2)\" did not load successfully" msgstr "Не удалось загрузить сессию \"%1 (снимок %2)\"" @@ -545,14 +608,9 @@ msgstr "Очистка" msgid "CleanupDialog" msgstr "Очистка" -#: gtk2_ardour/ardour_ui.cc:2039 -#, fuzzy -msgid "ardour_cleanup" -msgstr "ardour: очистка" - #: gtk2_ardour/ardour_ui.cc:2058 msgid "cleaned files" -msgstr "" +msgstr "очищенные файлы" #: gtk2_ardour/ardour_ui.cc:2059 #, fuzzy @@ -586,7 +644,7 @@ msgstr "Следующие %1 файлов были удалены, освобо msgid "Recording was stopped because your system could not keep up." msgstr "Запись остановлена из-за недостаточного быстродействия системы" -#: gtk2_ardour/ardour_ui.cc:2224 +#: gtk2_ardour/ardour_ui.cc:2212 msgid "" "The disk system on your computer\n" "was not able to keep up with Ardour.\n" @@ -595,7 +653,7 @@ msgid "" "quickly enough to keep up with recording.\n" msgstr "" -#: gtk2_ardour/ardour_ui.cc:2243 +#: gtk2_ardour/ardour_ui.cc:2231 msgid "" "The disk system on your computer\n" "was not able to keep up with Ardour.\n" @@ -604,7 +662,7 @@ msgid "" "quickly enough to keep up with playback.\n" msgstr "" -#: gtk2_ardour/ardour_ui.cc:2269 +#: gtk2_ardour/ardour_ui.cc:2257 msgid "" "This session appears to have been in\n" "middle of recording when ardour or\n" @@ -615,20 +673,20 @@ msgid "" "what you would like to do.\n" msgstr "" -#: gtk2_ardour/ardour_ui.cc:2279 +#: gtk2_ardour/ardour_ui.cc:2267 msgid "Recover from crash" msgstr "" -#: gtk2_ardour/ardour_ui.cc:2280 +#: gtk2_ardour/ardour_ui.cc:2268 msgid "Ignore crash data" msgstr "" -#: gtk2_ardour/ardour_ui.cc:2298 +#: gtk2_ardour/ardour_ui.cc:2286 #, fuzzy msgid "Could not disconnect from JACK" msgstr "Не удалось соединиться с сервером JACK как \"%1\"" -#: gtk2_ardour/ardour_ui.cc:2311 +#: gtk2_ardour/ardour_ui.cc:2299 #, fuzzy msgid "Could not reconnect to JACK" msgstr "Не удалось соединиться с сервером JACK как \"%1\"" @@ -657,977 +715,1056 @@ msgstr "" msgid "MMC ID" msgstr "MMC идентификатор" -#: gtk2_ardour/ardour_ui2.cc:291 +#: gtk2_ardour/ardour_ui2.cc:295 msgid "Play from playhead" msgstr "Воспроизвести от указателя" -#: gtk2_ardour/ardour_ui2.cc:292 +#: gtk2_ardour/ardour_ui2.cc:296 msgid "Stop playback" msgstr "Стоп" -#: gtk2_ardour/ardour_ui2.cc:293 -#, fuzzy +#: gtk2_ardour/ardour_ui2.cc:297 msgid "Play range/selection" -msgstr "Воспроизвести выделенное" +msgstr "Воспроизвести выделение" -#: gtk2_ardour/ardour_ui2.cc:294 +#: gtk2_ardour/ardour_ui2.cc:298 msgid "Go to start of session" msgstr "В начало сессии" -#: gtk2_ardour/ardour_ui2.cc:295 +#: gtk2_ardour/ardour_ui2.cc:299 msgid "Go to end of session" msgstr "В конец сессии" -#: gtk2_ardour/ardour_ui2.cc:296 +#: gtk2_ardour/ardour_ui2.cc:300 msgid "Play loop range" -msgstr "Воспроизвести \"кольцо\"" +msgstr "Закольцевать выделение" -#: gtk2_ardour/ardour_ui2.cc:297 +#: gtk2_ardour/ardour_ui2.cc:301 msgid "Return to last playback start when stopped" msgstr "Вернуться к точке начала воспроизведения" -#: gtk2_ardour/ardour_ui2.cc:298 +#: gtk2_ardour/ardour_ui2.cc:302 msgid "Start playback after any locate" msgstr "" -#: gtk2_ardour/ardour_ui2.cc:299 +#: gtk2_ardour/ardour_ui2.cc:303 msgid "Be sensible about input monitoring" msgstr "" -#: gtk2_ardour/ardour_ui2.cc:300 +#: gtk2_ardour/ardour_ui2.cc:304 msgid "Start recording at auto-punch start" msgstr "Начать запись с начала \"авто-врезки\"" -#: gtk2_ardour/ardour_ui2.cc:301 +#: gtk2_ardour/ardour_ui2.cc:305 msgid "Stop recording at auto-punch end" msgstr "Остановить запись в конце \"авто-врезки\"" -#: gtk2_ardour/ardour_ui2.cc:302 +#: gtk2_ardour/ardour_ui2.cc:306 msgid "Enable/Disable audio click" msgstr "Вкл./Выкл. метроном" -#: gtk2_ardour/ardour_ui2.cc:303 +#: gtk2_ardour/ardour_ui2.cc:307 msgid "Positional sync source" msgstr "" -#: gtk2_ardour/ardour_ui2.cc:304 +#: gtk2_ardour/ardour_ui2.cc:308 msgid "Does Ardour control the time?" msgstr "" -#: gtk2_ardour/ardour_ui2.cc:305 +#: gtk2_ardour/ardour_ui2.cc:309 msgid "Shuttle speed control" msgstr "" -#: gtk2_ardour/ardour_ui2.cc:306 +#: gtk2_ardour/ardour_ui2.cc:310 #, c-format msgid "Select semitones or %%-age for speed display" msgstr "" -#: gtk2_ardour/ardour_ui2.cc:307 +#: gtk2_ardour/ardour_ui2.cc:311 msgid "Current transport speed" msgstr "Текщаяя скорсть транспорта" -#: gtk2_ardour/ardour_ui2.cc:330 +#: gtk2_ardour/ardour_ui2.cc:334 msgid "Primary clock" msgstr "Основной счётчик" -#: gtk2_ardour/ardour_ui2.cc:331 +#: gtk2_ardour/ardour_ui2.cc:335 msgid "secondary clock" msgstr "дополнительный счётчик" -#: gtk2_ardour/ardour_ui2.cc:388 gtk2_ardour/ardour_ui2.cc:849 -#: gtk2_ardour/ardour_ui2.cc:862 gtk2_ardour/ardour_ui2.cc:925 -#: gtk2_ardour/ardour_ui2.cc:927 +#: gtk2_ardour/ardour_ui2.cc:366 +msgid "" +"When active, something is soloed.\n" +"Click to de-solo everything" +msgstr "" + +#: gtk2_ardour/ardour_ui2.cc:367 +msgid "" +"When active, auditioning is taking place\n" +"Click to stop the audition" +msgstr "" + +#: gtk2_ardour/ardour_ui2.cc:395 gtk2_ardour/ardour_ui2.cc:826 +#: gtk2_ardour/ardour_ui2.cc:882 gtk2_ardour/ardour_ui_options.cc:802 msgid "sprung" msgstr "" -#: gtk2_ardour/ardour_ui2.cc:389 gtk2_ardour/ardour_ui2.cc:851 -#: gtk2_ardour/ardour_ui2.cc:873 +#: gtk2_ardour/ardour_ui2.cc:396 gtk2_ardour/ardour_ui2.cc:828 +#: gtk2_ardour/ardour_ui_options.cc:813 msgid "wheel" msgstr "" -#: gtk2_ardour/ardour_ui2.cc:467 -msgid "ardour: clock" -msgstr "ardour: счётчик" - -#: gtk2_ardour/ardour_ui2.cc:612 +#: gtk2_ardour/ardour_ui2.cc:602 msgid "Maximum speed" msgstr "Макс. скорость" -#: gtk2_ardour/ardour_ui2.cc:839 -#, fuzzy -msgid "ST" -msgstr "УСТАНОВИТЬ" - -#: gtk2_ardour/ardour_ui2.cc:883 gtk2_ardour/ardour_ui2.cc:906 +#: gtk2_ardour/ardour_ui2.cc:838 gtk2_ardour/ardour_ui2.cc:861 #, fuzzy msgid "stop" msgstr "Стоп" -#: gtk2_ardour/ardour_ui2.cc:923 +#: gtk2_ardour/ardour_ui2.cc:880 msgid "-0.55" msgstr "-0.55" -#: gtk2_ardour/ardour_ui_dialogs.cc:145 gtk2_ardour/playlist_selector.cc:70 -#, fuzzy +#: gtk2_ardour/ardour_ui_dependents.cc:85 +msgid "Ardour key bindings file not found at \"%1\" or contains errors." +msgstr "Файл комбинаций клавиш для Ardour не найден в каталоге \"%1\" или содержит ошибки." + +#: gtk2_ardour/ardour_ui_dialogs.cc:142 gtk2_ardour/playlist_selector.cc:69 msgid "close" msgstr "Закрыть" -#: gtk2_ardour/ardour_ui_dialogs.cc:352 gtk2_ardour/ardour_ui_ed.cc:184 -msgid "Sound File Browser" -msgstr "Аудиобиблиотека" - -#: gtk2_ardour/ardour_ui_ed.cc:72 +#: gtk2_ardour/ardour_ui_ed.cc:77 msgid "Session" msgstr "Сессия" -#: gtk2_ardour/ardour_ui_ed.cc:73 gtk2_ardour/ardour_ui_ed.cc:130 -#: gtk2_ardour/editor.cc:1786 gtk2_ardour/export_dialog.cc:350 -#: gtk2_ardour/export_dialog.cc:1059 gtk2_ardour/export_dialog.cc:1063 +#: gtk2_ardour/ardour_ui_ed.cc:78 gtk2_ardour/ardour_ui_ed.cc:138 +#: gtk2_ardour/editor.cc:1736 gtk2_ardour/export_dialog.cc:348 +#: gtk2_ardour/export_dialog.cc:1057 gtk2_ardour/export_dialog.cc:1061 msgid "Export" msgstr "Экспортировать" -#: gtk2_ardour/ardour_ui_ed.cc:74 +#: gtk2_ardour/ardour_ui_ed.cc:79 msgid "Cleanup" msgstr "Очистить" -#: gtk2_ardour/ardour_ui_ed.cc:75 gtk2_ardour/option_editor.cc:125 +#: gtk2_ardour/ardour_ui_ed.cc:80 gtk2_ardour/option_editor.cc:123 msgid "Sync" -msgstr "Синхр." +msgstr "Синхронизация" -#: gtk2_ardour/ardour_ui_ed.cc:76 gtk2_ardour/ardour_ui_ed.cc:77 +#: gtk2_ardour/ardour_ui_ed.cc:81 gtk2_ardour/ardour_ui_ed.cc:82 msgid "Options" msgstr "Параметры" -#: gtk2_ardour/ardour_ui_ed.cc:78 +#: gtk2_ardour/ardour_ui_ed.cc:83 msgid "Help" msgstr "Справка" -#: gtk2_ardour/ardour_ui_ed.cc:79 +#: gtk2_ardour/ardour_ui_ed.cc:84 msgid "KeyMouse Actions" -msgstr "Горячие клавиши" +msgstr "Клавиатурные комбинации" -#: gtk2_ardour/ardour_ui_ed.cc:80 +#: gtk2_ardour/ardour_ui_ed.cc:85 msgid "Audio File Format" msgstr "Формат звуковых файлов" -#: gtk2_ardour/ardour_ui_ed.cc:81 +#: gtk2_ardour/ardour_ui_ed.cc:86 msgid "Header" msgstr "Заголовок" -#: gtk2_ardour/ardour_ui_ed.cc:82 +#: gtk2_ardour/ardour_ui_ed.cc:87 msgid "Data" msgstr "Данные" -#: gtk2_ardour/ardour_ui_ed.cc:83 +#: gtk2_ardour/ardour_ui_ed.cc:88 msgid "Control Surfaces" -msgstr "" +msgstr "Устройства управления" + +#: gtk2_ardour/ardour_ui_ed.cc:89 +msgid "Metering" +msgstr "Индикаторы" + +#: gtk2_ardour/ardour_ui_ed.cc:90 +msgid "Fall off rate" +msgstr "Частота спада" + +#: gtk2_ardour/ardour_ui_ed.cc:91 +msgid "Hold Time" +msgstr "Время задержки" -#: gtk2_ardour/ardour_ui_ed.cc:87 gtk2_ardour/route_time_axis.cc:1139 -#: gtk2_ardour/new_session_dialog.cc:546 +#: gtk2_ardour/ardour_ui_ed.cc:95 gtk2_ardour/route_time_axis.cc:1309 +#: gtk2_ardour/new_session_dialog.cc:612 msgid "New" msgstr "Новая" -#: gtk2_ardour/ardour_ui_ed.cc:89 gtk2_ardour/new_session_dialog.cc:533 +#: gtk2_ardour/ardour_ui_ed.cc:97 gtk2_ardour/new_session_dialog.cc:599 msgid "Open" msgstr "Открыть" -#: gtk2_ardour/ardour_ui_ed.cc:90 +#: gtk2_ardour/ardour_ui_ed.cc:98 msgid "Recent" msgstr "Последние" -#: gtk2_ardour/ardour_ui_ed.cc:91 gtk2_ardour/io_selector.cc:60 -#: gtk2_ardour/io_selector.cc:794 gtk2_ardour/connection_editor.cc:59 +#: gtk2_ardour/ardour_ui_ed.cc:99 gtk2_ardour/io_selector.cc:60 +#: gtk2_ardour/io_selector.cc:748 gtk2_ardour/connection_editor.cc:59 msgid "Close" msgstr "Закрыть" -#: gtk2_ardour/ardour_ui_ed.cc:94 gtk2_ardour/route_params_ui.cc:510 +#: gtk2_ardour/ardour_ui_ed.cc:102 gtk2_ardour/route_params_ui.cc:510 msgid "Add Track/Bus" -msgstr "Добавить Дорожку/Шину" +msgstr "Добавить дорожку/шину" -#: gtk2_ardour/ardour_ui_ed.cc:105 +#: gtk2_ardour/ardour_ui_ed.cc:113 msgid "Connect" msgstr "Соединить" -#: gtk2_ardour/ardour_ui_ed.cc:113 +#: gtk2_ardour/ardour_ui_ed.cc:121 msgid "Snapshot" msgstr "Снимок" -#: gtk2_ardour/ardour_ui_ed.cc:116 +#: gtk2_ardour/ardour_ui_ed.cc:124 msgid "Save Template..." msgstr "Сохранить шаблон..." -#: gtk2_ardour/ardour_ui_ed.cc:119 +#: gtk2_ardour/ardour_ui_ed.cc:127 msgid "Export session to audiofile..." -msgstr "Экспорт сессии в аудиофайл..." +msgstr "Сессию в аудиофайл..." -#: gtk2_ardour/ardour_ui_ed.cc:122 +#: gtk2_ardour/ardour_ui_ed.cc:130 msgid "Export selection to audiofile..." -msgstr "Экспорт выделение в аудиофайл..." +msgstr "Выделение в аудиофайл..." -#: gtk2_ardour/ardour_ui_ed.cc:126 +#: gtk2_ardour/ardour_ui_ed.cc:134 msgid "Export range markers to audiofile..." -msgstr "Экспортировать маркеры области в аудиофайл..." +msgstr "Маркеры области в аудиофайл..." -#: gtk2_ardour/ardour_ui_ed.cc:133 +#: gtk2_ardour/ardour_ui_ed.cc:141 msgid "Cleanup unused sources" msgstr "Очистить неиспользуемые источники" -#: gtk2_ardour/ardour_ui_ed.cc:135 +#: gtk2_ardour/ardour_ui_ed.cc:143 msgid "Flush wastebasket" msgstr "Очистить корзину" -#: gtk2_ardour/ardour_ui_ed.cc:141 gtk2_ardour/ardour_ui_options.cc:425 -#: gtk2_ardour/ardour_ui_options.cc:434 gtk2_ardour/ardour_ui_options.cc:507 +#: gtk2_ardour/ardour_ui_ed.cc:149 msgid "JACK" msgstr "JACK" -#: gtk2_ardour/ardour_ui_ed.cc:142 +#: gtk2_ardour/ardour_ui_ed.cc:150 msgid "Latency" msgstr "Задержка отклика" -#: gtk2_ardour/ardour_ui_ed.cc:144 +#: gtk2_ardour/ardour_ui_ed.cc:152 msgid "Reconnect" msgstr "Пересоединиться" -#: gtk2_ardour/ardour_ui_ed.cc:147 gtk2_ardour/mixer_strip.cc:498 -#: gtk2_ardour/mixer_strip.cc:561 +#: gtk2_ardour/ardour_ui_ed.cc:155 gtk2_ardour/mixer_strip.cc:517 +#: gtk2_ardour/mixer_strip.cc:579 msgid "Disconnect" msgstr "Отсоединиться" -#: gtk2_ardour/ardour_ui_ed.cc:174 +#: gtk2_ardour/ardour_ui_ed.cc:182 msgid "Windows" msgstr "Окна" -#: gtk2_ardour/ardour_ui_ed.cc:175 +#: gtk2_ardour/ardour_ui_ed.cc:183 msgid "start prefix" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:176 +#: gtk2_ardour/ardour_ui_ed.cc:184 msgid "Quit" msgstr "Выйти" -#: gtk2_ardour/ardour_ui_ed.cc:180 +#: gtk2_ardour/ardour_ui_ed.cc:188 msgid "Maximise Editor Space" msgstr "Редактор на полный экран" -#: gtk2_ardour/ardour_ui_ed.cc:182 +#: gtk2_ardour/ardour_ui_ed.cc:190 msgid "Show Editor" msgstr "Показать редактор" -#: gtk2_ardour/ardour_ui_ed.cc:183 +#: gtk2_ardour/ardour_ui_ed.cc:191 msgid "Show Mixer" msgstr "Показать микшер" -#: gtk2_ardour/ardour_ui_ed.cc:185 +#: gtk2_ardour/ardour_ui_ed.cc:192 msgid "Options Editor" -msgstr "Редактор параметров" +msgstr "Параметры программы" -#: gtk2_ardour/ardour_ui_ed.cc:186 +#: gtk2_ardour/ardour_ui_ed.cc:193 msgid "Track/Bus Inspector" msgstr "Инспектор дорожек/шин" -#: gtk2_ardour/ardour_ui_ed.cc:188 gtk2_ardour/connection_editor.cc:147 +#: gtk2_ardour/ardour_ui_ed.cc:195 gtk2_ardour/connection_editor.cc:147 #: gtk2_ardour/connection_editor.cc:148 msgid "Connections" msgstr "Соединения" -#: gtk2_ardour/ardour_ui_ed.cc:190 +#: gtk2_ardour/ardour_ui_ed.cc:197 msgid "Locations" msgstr "Интервалы" -#: gtk2_ardour/ardour_ui_ed.cc:192 +#: gtk2_ardour/ardour_ui_ed.cc:199 msgid "Big Clock" msgstr "Большой счётчик" -#: gtk2_ardour/ardour_ui_ed.cc:194 +#: gtk2_ardour/ardour_ui_ed.cc:201 msgid "About" msgstr "О программе" -#: gtk2_ardour/ardour_ui_ed.cc:195 +#: gtk2_ardour/ardour_ui_ed.cc:202 msgid "Colors" msgstr "Цвета" -#: gtk2_ardour/ardour_ui_ed.cc:197 +#: gtk2_ardour/ardour_ui_ed.cc:204 msgid "Add Audio Track" msgstr "Добавить звуковую дорожку" -#: gtk2_ardour/ardour_ui_ed.cc:199 +#: gtk2_ardour/ardour_ui_ed.cc:206 msgid "Add Audio Bus" msgstr "Добавить звуковую шину" -#: gtk2_ardour/ardour_ui_ed.cc:201 +#: gtk2_ardour/ardour_ui_ed.cc:208 msgid "Save" msgstr "Сохранить" -#: gtk2_ardour/ardour_ui_ed.cc:203 gtk2_ardour/editor_actions.cc:257 -#, fuzzy +#: gtk2_ardour/ardour_ui_ed.cc:210 gtk2_ardour/editor_actions.cc:256 msgid "Remove Last Capture" msgstr "Удалить последнюю запись" -#: gtk2_ardour/ardour_ui_ed.cc:210 +#: gtk2_ardour/ardour_ui_ed.cc:217 msgid "Transport" msgstr "Транспорт" -#: gtk2_ardour/ardour_ui_ed.cc:216 gtk2_ardour/sfdb_ui.cc:60 +#: gtk2_ardour/ardour_ui_ed.cc:223 gtk2_ardour/sfdb_ui.cc:59 msgid "Stop" msgstr "Стоп" -#: gtk2_ardour/ardour_ui_ed.cc:219 +#: gtk2_ardour/ardour_ui_ed.cc:226 msgid "Roll" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:223 +#: gtk2_ardour/ardour_ui_ed.cc:230 msgid "Start/Stop" msgstr "Старт/Стоп" -#: gtk2_ardour/ardour_ui_ed.cc:226 +#: gtk2_ardour/ardour_ui_ed.cc:233 msgid "Stop + Forget Capture" msgstr "Стоп+ Забыть захват" -#: gtk2_ardour/ardour_ui_ed.cc:229 +#: gtk2_ardour/ardour_ui_ed.cc:236 msgid "Play Loop Range" msgstr "Воспроизвести петлю" -#: gtk2_ardour/ardour_ui_ed.cc:232 +#: gtk2_ardour/ardour_ui_ed.cc:239 msgid "Play Selection" msgstr "Воспроизвести выделение" -#: gtk2_ardour/ardour_ui_ed.cc:236 +#: gtk2_ardour/ardour_ui_ed.cc:243 msgid "Enable Record" msgstr "Разрешить запись" -#: gtk2_ardour/ardour_ui_ed.cc:239 +#: gtk2_ardour/ardour_ui_ed.cc:246 msgid "Rewind" msgstr "Перемотать назад" -#: gtk2_ardour/ardour_ui_ed.cc:242 +#: gtk2_ardour/ardour_ui_ed.cc:249 msgid "Rewind (Slow)" msgstr "Перемотать назад (медленно)" -#: gtk2_ardour/ardour_ui_ed.cc:245 +#: gtk2_ardour/ardour_ui_ed.cc:252 msgid "Rewind (Fast)" msgstr "Перемотать назад (быстро)" -#: gtk2_ardour/ardour_ui_ed.cc:248 +#: gtk2_ardour/ardour_ui_ed.cc:255 msgid "Forward" msgstr "Перемотать вперёд" -#: gtk2_ardour/ardour_ui_ed.cc:251 +#: gtk2_ardour/ardour_ui_ed.cc:258 msgid "Forward (Slow)" msgstr "Перемотать вперёд (медленно)" -#: gtk2_ardour/ardour_ui_ed.cc:254 +#: gtk2_ardour/ardour_ui_ed.cc:261 msgid "Forward (Fast)" msgstr "Перемотать вперёд (быстро)" -#: gtk2_ardour/ardour_ui_ed.cc:257 +#: gtk2_ardour/ardour_ui_ed.cc:264 msgid "Goto Zero" msgstr "К нулевой отметке" -#: gtk2_ardour/ardour_ui_ed.cc:260 +#: gtk2_ardour/ardour_ui_ed.cc:267 msgid "Goto Start" msgstr "К началу" -#: gtk2_ardour/ardour_ui_ed.cc:263 +#: gtk2_ardour/ardour_ui_ed.cc:270 msgid "Goto End" msgstr "В конец" -#: gtk2_ardour/ardour_ui_ed.cc:279 +#: gtk2_ardour/ardour_ui_ed.cc:286 msgid "Auto Play" msgstr "Автовоспроизведение" -#: gtk2_ardour/ardour_ui_ed.cc:286 +#: gtk2_ardour/ardour_ui_ed.cc:293 msgid "Sync startup to video" msgstr "Синхронизировать начало с видео" -#: gtk2_ardour/ardour_ui_ed.cc:287 +#: gtk2_ardour/ardour_ui_ed.cc:294 #, fuzzy msgid "Time master" msgstr "JACK-счётчик - мастер" -#: gtk2_ardour/ardour_ui_ed.cc:290 +#: gtk2_ardour/ardour_ui_ed.cc:297 msgid "Toggle Record Enable Track1" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:292 +#: gtk2_ardour/ardour_ui_ed.cc:299 msgid "Toggle Record Enable Track2" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:294 +#: gtk2_ardour/ardour_ui_ed.cc:301 msgid "Toggle Record Enable Track3" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:296 +#: gtk2_ardour/ardour_ui_ed.cc:303 msgid "Toggle Record Enable Track4" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:298 +#: gtk2_ardour/ardour_ui_ed.cc:305 msgid "Toggle Record Enable Track5" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:300 +#: gtk2_ardour/ardour_ui_ed.cc:307 msgid "Toggle Record Enable Track6" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:302 +#: gtk2_ardour/ardour_ui_ed.cc:309 msgid "Toggle Record Enable Track7" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:304 +#: gtk2_ardour/ardour_ui_ed.cc:311 msgid "Toggle Record Enable Track8" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:306 +#: gtk2_ardour/ardour_ui_ed.cc:313 msgid "Toggle Record Enable Track9" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:308 +#: gtk2_ardour/ardour_ui_ed.cc:315 msgid "Toggle Record Enable Track10" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:310 +#: gtk2_ardour/ardour_ui_ed.cc:317 msgid "Toggle Record Enable Track11" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:312 +#: gtk2_ardour/ardour_ui_ed.cc:319 msgid "Toggle Record Enable Track12" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:314 +#: gtk2_ardour/ardour_ui_ed.cc:321 msgid "Toggle Record Enable Track13" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:316 +#: gtk2_ardour/ardour_ui_ed.cc:323 msgid "Toggle Record Enable Track14" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:318 +#: gtk2_ardour/ardour_ui_ed.cc:325 msgid "Toggle Record Enable Track15" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:320 +#: gtk2_ardour/ardour_ui_ed.cc:327 msgid "Toggle Record Enable Track16" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:322 +#: gtk2_ardour/ardour_ui_ed.cc:329 msgid "Toggle Record Enable Track17" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:324 +#: gtk2_ardour/ardour_ui_ed.cc:331 msgid "Toggle Record Enable Track18" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:326 +#: gtk2_ardour/ardour_ui_ed.cc:333 msgid "Toggle Record Enable Track19" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:328 +#: gtk2_ardour/ardour_ui_ed.cc:335 msgid "Toggle Record Enable Track20" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:330 +#: gtk2_ardour/ardour_ui_ed.cc:337 msgid "Toggle Record Enable Track21" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:332 +#: gtk2_ardour/ardour_ui_ed.cc:339 msgid "Toggle Record Enable Track22" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:334 +#: gtk2_ardour/ardour_ui_ed.cc:341 msgid "Toggle Record Enable Track23" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:336 +#: gtk2_ardour/ardour_ui_ed.cc:343 msgid "Toggle Record Enable Track24" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:338 +#: gtk2_ardour/ardour_ui_ed.cc:345 msgid "Toggle Record Enable Track25" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:340 +#: gtk2_ardour/ardour_ui_ed.cc:347 msgid "Toggle Record Enable Track26" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:342 +#: gtk2_ardour/ardour_ui_ed.cc:349 msgid "Toggle Record Enable Track27" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:344 +#: gtk2_ardour/ardour_ui_ed.cc:351 msgid "Toggle Record Enable Track28" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:346 +#: gtk2_ardour/ardour_ui_ed.cc:353 msgid "Toggle Record Enable Track29" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:348 +#: gtk2_ardour/ardour_ui_ed.cc:355 msgid "Toggle Record Enable Track30" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:350 +#: gtk2_ardour/ardour_ui_ed.cc:357 msgid "Toggle Record Enable Track31" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:352 +#: gtk2_ardour/ardour_ui_ed.cc:359 msgid "Toggle Record Enable Track32" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:357 +#: gtk2_ardour/ardour_ui_ed.cc:364 msgid "Percentage" msgstr "Процентов" -#: gtk2_ardour/ardour_ui_ed.cc:358 +#: gtk2_ardour/ardour_ui_ed.cc:365 msgid "Semitones" msgstr "Полутонов" -#: gtk2_ardour/ardour_ui_ed.cc:362 +#: gtk2_ardour/ardour_ui_ed.cc:369 msgid "Send MTC" msgstr "Передавать MTC" -#: gtk2_ardour/ardour_ui_ed.cc:364 +#: gtk2_ardour/ardour_ui_ed.cc:371 msgid "Send MMC" msgstr "Передавать MMC" -#: gtk2_ardour/ardour_ui_ed.cc:366 +#: gtk2_ardour/ardour_ui_ed.cc:373 msgid "Use MMC" msgstr "Использовать MMC" -#: gtk2_ardour/ardour_ui_ed.cc:368 +#: gtk2_ardour/ardour_ui_ed.cc:375 msgid "Send MIDI feedback" msgstr "Передавать отклик MIDI" -#: gtk2_ardour/ardour_ui_ed.cc:370 +#: gtk2_ardour/ardour_ui_ed.cc:377 msgid "Use MIDI control" msgstr "Использовать управление по MIDI" -#: gtk2_ardour/ardour_ui_ed.cc:373 -msgid "Connect new track inputs to hardware" -msgstr "Подключать входы новых дорожек к устройству" - -#: gtk2_ardour/ardour_ui_ed.cc:392 -msgid "Connect new track outputs to hardware" -msgstr "Подключать выходы новых дорожек к устройству" - -#: gtk2_ardour/ardour_ui_ed.cc:394 -msgid "Connect new track outputs to master" -msgstr "Подключать выходы новых дорожек к мастеру" - -#: gtk2_ardour/ardour_ui_ed.cc:396 -msgid "Manually connect new track outputs" -msgstr "Ручное подключение дорожек к выходам" - -#: gtk2_ardour/ardour_ui_ed.cc:401 -msgid "Hardware monitoring" -msgstr "Аппаратный контроль" - -#: gtk2_ardour/ardour_ui_ed.cc:402 -msgid "Software monitoring" -msgstr "Программный контроль" - -#: gtk2_ardour/ardour_ui_ed.cc:403 -msgid "External monitoring" -msgstr "Внешний контроль" - -#: gtk2_ardour/ardour_ui_ed.cc:407 +#: gtk2_ardour/ardour_ui_ed.cc:380 msgid "Stop plugins with transport" msgstr "Останавливать расширения с транспортом" -#: gtk2_ardour/ardour_ui_ed.cc:408 +#: gtk2_ardour/ardour_ui_ed.cc:381 msgid "Verify remove last capture" msgstr "Проверить удаление последней записи" -#: gtk2_ardour/ardour_ui_ed.cc:409 +#: gtk2_ardour/ardour_ui_ed.cc:382 msgid "Stop recording on xrun" msgstr "Остановить запись при потере отсчётов" -#: gtk2_ardour/ardour_ui_ed.cc:410 +#: gtk2_ardour/ardour_ui_ed.cc:383 msgid "Stop transport at session end" msgstr "Останавливать транспорт в конце сессии" -#: gtk2_ardour/ardour_ui_ed.cc:411 +#: gtk2_ardour/ardour_ui_ed.cc:384 msgid "-12dB gain reduce ffwd/rewind" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:412 +#: gtk2_ardour/ardour_ui_ed.cc:385 msgid "Rec-enable stays engaged at stop" msgstr "" -#: gtk2_ardour/ardour_ui_ed.cc:416 -#, fuzzy +#: gtk2_ardour/ardour_ui_ed.cc:387 msgid "Do not run plugins while recording" -msgstr "Использовать модули (plugins) во время записи" +msgstr "Не запускать расширения во время записи" -#: gtk2_ardour/ardour_ui_ed.cc:419 +#: gtk2_ardour/ardour_ui_ed.cc:390 msgid "Latched solo" -msgstr "" +msgstr "Запертое соло" -#: gtk2_ardour/ardour_ui_ed.cc:424 -#, fuzzy -msgid "Solo in-place" -msgstr "Соло" - -#: gtk2_ardour/ardour_ui_ed.cc:426 -msgid "Solo via bus" -msgstr "" +#: gtk2_ardour/ardour_ui_ed.cc:398 gtk2_ardour/ardour_ui_ed.cc:406 +#: gtk2_ardour/audio_clock.cc:1805 gtk2_ardour/gain_meter.cc:159 +#: gtk2_ardour/ladspa_pluginui.cc:330 gtk2_ardour/ladspa_pluginui.cc:573 +#: gtk2_ardour/panner_ui.cc:89 +msgid "Off" +msgstr "Выкл" -#: gtk2_ardour/ardour_ui_ed.cc:429 -#, fuzzy -msgid "Automatically create crossfades" -msgstr "Автоматический кроссфейд на перекрытии" +#: gtk2_ardour/ardour_ui_ed.cc:399 gtk2_ardour/editor.cc:1357 +#: gtk2_ardour/editor.cc:1374 +msgid "Slowest" +msgstr "Медленнее всего" -#: gtk2_ardour/ardour_ui_ed.cc:431 -msgid "Unmute new full crossfades" -msgstr "" +#: gtk2_ardour/ardour_ui_ed.cc:400 gtk2_ardour/editor.cc:1358 +#: gtk2_ardour/editor.cc:1375 +msgid "Slow" +msgstr "Медленно" -#: gtk2_ardour/ardour_ui_options.cc:423 gtk2_ardour/ardour_ui_options.cc:433 -#: gtk2_ardour/ardour_ui_options.cc:501 -#, fuzzy -msgid "Internal" -msgstr "внутренний" +#: gtk2_ardour/ardour_ui_ed.cc:401 gtk2_ardour/ardour_ui_ed.cc:408 +msgid "Medium" +msgstr "Средне" -#: gtk2_ardour/ardour_ui_options.cc:424 gtk2_ardour/ardour_ui_options.cc:504 -#, fuzzy -msgid "MTC" -msgstr "MMC" +#: gtk2_ardour/ardour_ui_ed.cc:402 gtk2_ardour/editor.cc:1359 +#: gtk2_ardour/editor.cc:1376 +msgid "Fast" +msgstr "Быстро" -#: gtk2_ardour/audio_clock.cc:1742 gtk2_ardour/editor.cc:189 -msgid "SMPTE" -msgstr "SMPTE" +#: gtk2_ardour/ardour_ui_ed.cc:403 +msgid "Faster" +msgstr "Быстрее" -#: gtk2_ardour/audio_clock.cc:1743 gtk2_ardour/editor.cc:188 -#: gtk2_ardour/editor_rulers.cc:359 -msgid "Bars:Beats" -msgstr "Такт:Доля" +#: gtk2_ardour/ardour_ui_ed.cc:404 gtk2_ardour/editor.cc:1360 +#: gtk2_ardour/editor.cc:1377 +msgid "Fastest" +msgstr "Быстрее всего" -#: gtk2_ardour/audio_clock.cc:1744 +#: gtk2_ardour/ardour_ui_ed.cc:407 gtk2_ardour/editor_actions.cc:58 +msgid "Short" +msgstr "Короткая" + +#: gtk2_ardour/ardour_ui_ed.cc:409 +msgid "Long" +msgstr "Долгая" + +#: gtk2_ardour/ardour_ui_ed.cc:427 +msgid "Hardware monitoring" +msgstr "Аппаратный контроль" + +#: gtk2_ardour/ardour_ui_ed.cc:428 +msgid "Software monitoring" +msgstr "Программный контроль" + +#: gtk2_ardour/ardour_ui_ed.cc:429 +msgid "External monitoring" +msgstr "Внешний контроль" + +#: gtk2_ardour/ardour_ui_ed.cc:433 +#, fuzzy +msgid "Solo in-place" +msgstr "Соло" + +#: gtk2_ardour/ardour_ui_ed.cc:435 +msgid "Solo via bus" +msgstr "" + +#: gtk2_ardour/ardour_ui_ed.cc:440 +msgid "Auto-connect inputs to physical inputs" +msgstr "Автосоединить входы с физическими входами" + +#: gtk2_ardour/ardour_ui_ed.cc:442 +msgid "Manually connect inputs" +msgstr "Вручную подключиться к входам" + +#: gtk2_ardour/ardour_ui_ed.cc:447 +msgid "Auto-connect outputs to physical outs" +msgstr "Автомат. соединить выходы с физическими выходами" + +#: gtk2_ardour/ardour_ui_ed.cc:449 +msgid "Auto-connect outputs to master bus" +msgstr "Автомат. соединить выходы с мастером" + +#: gtk2_ardour/ardour_ui_ed.cc:451 +msgid "Manually connect outputs" +msgstr "Вручную подключить выходы" + +#: gtk2_ardour/ardour_ui_ed.cc:549 gtk2_ardour/ladspa_pluginui.cc:168 +msgid "Controls" +msgstr "Управление" + +#: gtk2_ardour/ardour_ui_ed.cc:553 +msgid "Feedback" +msgstr "Отклик" + +#: gtk2_ardour/ardour_ui_ed.cc:633 +msgid "ardour: clock" +msgstr "ardour: счётчик" + +#: gtk2_ardour/ardour_ui_options.cc:205 +msgid "programming error: unknown solo model in ARDOUR_UI::set_solo_model: %1" +msgstr "" + +#: gtk2_ardour/ardour_ui_options.cc:239 +msgid "programming error: unknown monitor model in ARDOUR_UI::set_monitor_model: %1" +msgstr "" + +#: gtk2_ardour/ardour_ui_options.cc:492 +msgid "" +"programming error: unknown file header format passed to ARDOUR_UI::" +"map_file_data_format: %1" +msgstr "" + +#: gtk2_ardour/ardour_ui_options.cc:524 +msgid "" +"programming error: unknown file data format passed to ARDOUR_UI::" +"map_file_data_format: %1" +msgstr "" + +#: gtk2_ardour/ardour_ui_options.cc:824 +#, fuzzy +msgid "ST" +msgstr "УСТАНОВИТЬ" + +#: gtk2_ardour/audio_clock.cc:1801 gtk2_ardour/editor.cc:180 +msgid "Timecode" +msgstr "Тайм-код" + +#: gtk2_ardour/audio_clock.cc:1802 gtk2_ardour/editor.cc:179 +#: gtk2_ardour/editor_rulers.cc:386 +msgid "Bars:Beats" +msgstr "Такт:Доля" + +#: gtk2_ardour/audio_clock.cc:1803 msgid "Minutes:Seconds" msgstr "Минуты:Секунды" -#: gtk2_ardour/audio_clock.cc:1745 +#: gtk2_ardour/audio_clock.cc:1804 msgid "Audio Frames" msgstr "Аудио кадры" -#: gtk2_ardour/audio_clock.cc:1746 gtk2_ardour/editor_actions.cc:379 -#: gtk2_ardour/editor_actions.cc:387 gtk2_ardour/gain_meter.cc:167 -#: gtk2_ardour/ladspa_pluginui.cc:330 gtk2_ardour/ladspa_pluginui.cc:573 -#: gtk2_ardour/panner_ui.cc:87 -msgid "Off" -msgstr "Выкл" - -#: gtk2_ardour/audio_clock.cc:1748 +#: gtk2_ardour/audio_clock.cc:1807 msgid "Mode" msgstr "Режим" -#: gtk2_ardour/route_time_axis.cc:86 +#: gtk2_ardour/route_time_axis.cc:87 msgid "m" msgstr "т" -#: gtk2_ardour/route_time_axis.cc:86 +#: gtk2_ardour/route_time_axis.cc:87 msgid "s" msgstr "с" -#: gtk2_ardour/route_time_axis.cc:86 +#: gtk2_ardour/route_time_axis.cc:87 msgid "r" msgstr "з" -#: gtk2_ardour/route_time_axis.cc:90 +#: gtk2_ardour/route_time_axis.cc:91 msgid "g" msgstr "г" -#: gtk2_ardour/route_time_axis.cc:91 +#: gtk2_ardour/route_time_axis.cc:92 msgid "p" msgstr "сп" -#: gtk2_ardour/route_time_axis.cc:92 gtk2_ardour/automation_time_axis.cc:33 +#: gtk2_ardour/route_time_axis.cc:93 gtk2_ardour/automation_time_axis.cc:36 #: gtk2_ardour/visual_time_axis.cc:74 msgid "h" msgstr "в" -#: gtk2_ardour/route_time_axis.cc:93 +#: gtk2_ardour/route_time_axis.cc:94 msgid "a" msgstr "а" -#: gtk2_ardour/route_time_axis.cc:94 gtk2_ardour/visual_time_axis.cc:73 +#: gtk2_ardour/route_time_axis.cc:95 gtk2_ardour/visual_time_axis.cc:73 msgid "v" msgstr "п" -#: gtk2_ardour/route_time_axis.cc:138 gtk2_ardour/mixer_strip.cc:83 +#: gtk2_ardour/route_time_axis.cc:150 gtk2_ardour/mixer_strip.cc:85 msgid "Record" msgstr "Запись" -#: gtk2_ardour/route_time_axis.cc:146 gtk2_ardour/editor_actions.cc:37 -#: gtk2_ardour/mixer_strip.cc:83 +#: gtk2_ardour/route_time_axis.cc:158 gtk2_ardour/editor_actions.cc:38 +#: gtk2_ardour/mixer_strip.cc:85 gtk2_ardour/mixer_strip.cc:433 msgid "Solo" msgstr "Соло" -#: gtk2_ardour/route_time_axis.cc:147 gtk2_ardour/editor.cc:1710 -#: gtk2_ardour/editor.cc:1809 gtk2_ardour/mixer_strip.cc:83 -#: gtk2_ardour/panner_ui.cc:417 +#: gtk2_ardour/route_time_axis.cc:159 gtk2_ardour/editor.cc:1660 +#: gtk2_ardour/editor.cc:1750 gtk2_ardour/mixer_strip.cc:85 +#: gtk2_ardour/mixer_strip.cc:432 gtk2_ardour/panner_ui.cc:430 msgid "Mute" msgstr "Тихо" -#: gtk2_ardour/route_time_axis.cc:148 +#: gtk2_ardour/route_time_axis.cc:160 msgid "Edit Group" msgstr "Группы" -#: gtk2_ardour/route_time_axis.cc:149 gtk2_ardour/visual_time_axis.cc:92 +#: gtk2_ardour/route_time_axis.cc:161 gtk2_ardour/visual_time_axis.cc:92 msgid "Display Height" msgstr "Высота дорожки" -#: gtk2_ardour/route_time_axis.cc:150 +#: gtk2_ardour/route_time_axis.cc:162 msgid "Playlist" msgstr "Список" -#: gtk2_ardour/route_time_axis.cc:151 gtk2_ardour/route_time_axis.cc:428 +#: gtk2_ardour/route_time_axis.cc:163 gtk2_ardour/route_time_axis.cc:425 msgid "Automation" msgstr "Автомат" -#: gtk2_ardour/route_time_axis.cc:152 gtk2_ardour/visual_time_axis.cc:93 +#: gtk2_ardour/route_time_axis.cc:164 gtk2_ardour/visual_time_axis.cc:93 msgid "Visual options" msgstr "Параметры отображения" -#: gtk2_ardour/route_time_axis.cc:153 gtk2_ardour/visual_time_axis.cc:94 +#: gtk2_ardour/route_time_axis.cc:165 gtk2_ardour/visual_time_axis.cc:94 msgid "Hide this track" -msgstr "Скрыть трек" +msgstr "Скрыть дорожку" -#: gtk2_ardour/route_time_axis.cc:272 gtk2_ardour/mixer_strip.cc:887 +#: gtk2_ardour/route_time_axis.cc:276 gtk2_ardour/mixer_strip.cc:917 msgid "No group" msgstr "Нет группы" -#: gtk2_ardour/route_time_axis.cc:389 -#, fuzzy +#: gtk2_ardour/route_time_axis.cc:386 msgid "Show all automation" -msgstr "автомат" +msgstr "Показать всю автоматизацию" -#: gtk2_ardour/route_time_axis.cc:392 -#, fuzzy +#: gtk2_ardour/route_time_axis.cc:389 msgid "Show existing automation" -msgstr "использовать имеющийся шаблон" +msgstr "Показать существующую автоматизацию" -#: gtk2_ardour/route_time_axis.cc:395 -#, fuzzy +#: gtk2_ardour/route_time_axis.cc:392 msgid "Hide all automation" -msgstr "очистить интервалы" +msgstr "Спрятать всю автоматизацию" -#: gtk2_ardour/route_time_axis.cc:398 +#: gtk2_ardour/route_time_axis.cc:395 msgid "Plugins" -msgstr "Модули (плагины)" +msgstr "Расширения" -#: gtk2_ardour/route_time_axis.cc:419 gtk2_ardour/automation_time_axis.cc:426 +#: gtk2_ardour/route_time_axis.cc:416 gtk2_ardour/automation_time_axis.cc:430 #: gtk2_ardour/imageframe_time_axis.cc:255 gtk2_ardour/marker_time_axis.cc:211 msgid "Height" msgstr "Высота" -#: gtk2_ardour/route_time_axis.cc:420 gtk2_ardour/color_manager.cc:41 +#: gtk2_ardour/route_time_axis.cc:417 gtk2_ardour/color_manager.cc:41 #: gtk2_ardour/imageframe_time_axis.cc:256 gtk2_ardour/marker_time_axis.cc:212 msgid "Color" msgstr "Цвет" -#: gtk2_ardour/route_time_axis.cc:425 gtk2_ardour/mixer_strip.cc:971 -#, fuzzy +#: gtk2_ardour/route_time_axis.cc:422 gtk2_ardour/mixer_strip.cc:1002 msgid "Remote Control ID" -msgstr "использовать контрольные выходы" +msgstr "" -#: gtk2_ardour/route_time_axis.cc:443 +#: gtk2_ardour/route_time_axis.cc:440 #, fuzzy msgid "Align with existing material" msgstr "Существующий материал" -#: gtk2_ardour/route_time_axis.cc:449 +#: gtk2_ardour/route_time_axis.cc:446 #, fuzzy msgid "Align with capture time" msgstr "Время записи" -#: gtk2_ardour/route_time_axis.cc:455 +#: gtk2_ardour/route_time_axis.cc:452 #, fuzzy msgid "Alignment" msgstr "Выровнять" -#: gtk2_ardour/route_time_axis.cc:462 gtk2_ardour/editor.cc:480 -#: gtk2_ardour/editor_actions.cc:62 gtk2_ardour/mixer_strip.cc:960 +#: gtk2_ardour/route_time_axis.cc:458 +#, fuzzy +msgid "Normal mode" +msgstr "Норм." + +#: gtk2_ardour/route_time_axis.cc:461 +msgid "Tape mode" +msgstr "" + +#: gtk2_ardour/route_time_axis.cc:477 gtk2_ardour/editor.cc:480 +#: gtk2_ardour/editor_actions.cc:61 gtk2_ardour/mixer_strip.cc:991 #: gtk2_ardour/mixer_ui.cc:109 msgid "Active" msgstr "Активны" -#: gtk2_ardour/route_time_axis.cc:467 gtk2_ardour/editor.cc:1872 -#: gtk2_ardour/editor_actions.cc:322 gtk2_ardour/editor_markers.cc:511 +#: gtk2_ardour/route_time_axis.cc:482 gtk2_ardour/editor.cc:1840 +#: gtk2_ardour/editor_actions.cc:326 gtk2_ardour/editor_markers.cc:512 #: gtk2_ardour/imageframe_time_axis.cc:259 gtk2_ardour/location_ui.cc:58 -#: gtk2_ardour/marker_time_axis.cc:215 gtk2_ardour/mixer_strip.cc:974 +#: gtk2_ardour/marker_time_axis.cc:215 gtk2_ardour/mixer_strip.cc:1005 msgid "Remove" msgstr "Удалить" -#: gtk2_ardour/route_time_axis.cc:733 -#, fuzzy +#: gtk2_ardour/route_time_axis.cc:508 gtk2_ardour/route_time_axis.cc:563 +#: gtk2_ardour/route_time_axis.cc:828 gtk2_ardour/editor_actions.cc:1015 +msgid "programming error: %1 %2" +msgstr "ошибка в программе: %1 %2" + +#: gtk2_ardour/route_time_axis.cc:852 msgid "Name for playlist" -msgstr "Имя снимка" +msgstr "Имя списка воспроизведения" -#: gtk2_ardour/route_time_axis.cc:735 gtk2_ardour/route_time_axis.cc:1136 -#: gtk2_ardour/editor_markers.cc:830 gtk2_ardour/editor_mouse.cc:4723 +#: gtk2_ardour/route_time_axis.cc:854 gtk2_ardour/route_time_axis.cc:1306 +#: gtk2_ardour/editor_markers.cc:857 gtk2_ardour/editor_mouse.cc:4757 #: gtk2_ardour/imageframe_time_axis.cc:248 gtk2_ardour/marker_time_axis.cc:208 -#: gtk2_ardour/mixer_strip.cc:958 gtk2_ardour/redirect_box.cc:752 -#: gtk2_ardour/redirect_box.cc:1080 gtk2_ardour/route_ui.cc:746 -#: gtk2_ardour/visual_time_axis.cc:326 +#: gtk2_ardour/mixer_strip.cc:989 gtk2_ardour/redirect_box.cc:823 +#: gtk2_ardour/redirect_box.cc:1149 gtk2_ardour/route_ui.cc:760 +#: gtk2_ardour/visual_time_axis.cc:331 msgid "Rename" msgstr "Переименовать" -#: gtk2_ardour/route_time_axis.cc:770 gtk2_ardour/route_time_axis.cc:811 -#, fuzzy +#: gtk2_ardour/route_time_axis.cc:896 gtk2_ardour/route_time_axis.cc:942 msgid "Name for Playlist" -msgstr "Имя снимка" +msgstr "Имя списка воспроизведения" -#: gtk2_ardour/route_time_axis.cc:990 gtk2_ardour/visual_time_axis.cc:383 -msgid "a track already exists with that name" +#: gtk2_ardour/route_time_axis.cc:1134 gtk2_ardour/visual_time_axis.cc:341 +#: gtk2_ardour/visual_time_axis.cc:388 +msgid "A track already exists with that name" msgstr "Дорожка с таким именем уже существует" -#: gtk2_ardour/route_time_axis.cc:1133 -msgid "Current: %1" -msgstr "" - -#: gtk2_ardour/route_time_axis.cc:1140 +#: gtk2_ardour/route_time_axis.cc:1310 msgid "New Copy" msgstr "Новая копия" -#: gtk2_ardour/route_time_axis.cc:1142 +#: gtk2_ardour/route_time_axis.cc:1312 msgid "Clear Current" msgstr "Очистить текущий" -#: gtk2_ardour/route_time_axis.cc:1144 gtk2_ardour/editor.cc:1974 -#: gtk2_ardour/editor.cc:2050 -msgid "Select" -msgstr "Выделить" +#: gtk2_ardour/route_time_axis.cc:1315 +msgid "Select from all ..." +msgstr "Выбрать из всех..." -#: gtk2_ardour/route_time_axis.cc:1333 gtk2_ardour/editor.cc:1432 +#: gtk2_ardour/route_time_axis.cc:1521 gtk2_ardour/editor.cc:1382 #: gtk2_ardour/selection.cc:642 msgid "programming error: " msgstr "Ошибка в программе: " -#: gtk2_ardour/audio_time_axis.cc:229 +#: gtk2_ardour/audio_time_axis.cc:222 msgid "Fader" msgstr "Фейдер" -#: gtk2_ardour/audio_time_axis.cc:234 +#: gtk2_ardour/audio_time_axis.cc:227 msgid "Pan" msgstr "Пан." -#: gtk2_ardour/audio_time_axis.cc:249 +#: gtk2_ardour/audio_time_axis.cc:242 msgid "Hide all crossfades" msgstr "Скрыть все кроссфейды" -#: gtk2_ardour/audio_time_axis.cc:250 +#: gtk2_ardour/audio_time_axis.cc:243 msgid "Show all crossfades" msgstr "Показать все кроссфейды" -#: gtk2_ardour/audio_time_axis.cc:257 +#: gtk2_ardour/audio_time_axis.cc:250 msgid "Show waveforms" -msgstr "Показывать форму сигнала" +msgstr "Показать форму сигнала" -#: gtk2_ardour/audio_time_axis.cc:265 +#: gtk2_ardour/audio_time_axis.cc:260 msgid "Traditional" msgstr "Обычная" -#: gtk2_ardour/audio_time_axis.cc:268 +#: gtk2_ardour/audio_time_axis.cc:263 msgid "Rectified" msgstr "Увеличенная" -#: gtk2_ardour/audio_time_axis.cc:271 +#: gtk2_ardour/audio_time_axis.cc:270 gtk2_ardour/editor.cc:1356 +#: gtk2_ardour/editor.cc:1373 +msgid "Linear" +msgstr "Линейная" + +#: gtk2_ardour/audio_time_axis.cc:273 +msgid "Logarithmic" +msgstr "Логарифмическая" + +#: gtk2_ardour/audio_time_axis.cc:290 msgid "Waveform" msgstr "Форма сигнала" -#: gtk2_ardour/audio_time_axis.cc:331 +#: gtk2_ardour/audio_time_axis.cc:362 msgid "gain" msgstr "усил." -#: gtk2_ardour/audio_time_axis.cc:371 +#: gtk2_ardour/audio_time_axis.cc:402 msgid "pan" msgstr "пан." -#: gtk2_ardour/automation_line.cc:888 +#: gtk2_ardour/automation_line.cc:795 #, fuzzy msgid "automation event move" msgstr "автомат" -#: gtk2_ardour/automation_line.cc:890 +#: gtk2_ardour/automation_line.cc:797 #, fuzzy msgid "automation range drag" msgstr "автомат" -#: gtk2_ardour/automation_line.cc:1019 gtk2_ardour/region_gain_line.cc:64 +#: gtk2_ardour/automation_line.cc:1022 gtk2_ardour/region_gain_line.cc:64 #, fuzzy msgid "remove control point" msgstr "использовать контрольные выходы" -#: gtk2_ardour/automation_time_axis.cc:34 gtk2_ardour/editor_ops.cc:2922 +#: gtk2_ardour/automation_time_axis.cc:37 gtk2_ardour/editor_ops.cc:2840 msgid "clear" msgstr "очистить" -#: gtk2_ardour/automation_time_axis.cc:79 +#: gtk2_ardour/automation_time_axis.cc:78 msgid "track height" msgstr "Высота дорожки" -#: gtk2_ardour/automation_time_axis.cc:80 +#: gtk2_ardour/automation_time_axis.cc:79 msgid "automation state" msgstr "Состояние автоматизации" -#: gtk2_ardour/automation_time_axis.cc:81 +#: gtk2_ardour/automation_time_axis.cc:80 msgid "clear track" msgstr "Очистить дорожку" -#: gtk2_ardour/automation_time_axis.cc:82 +#: gtk2_ardour/automation_time_axis.cc:81 msgid "hide track" msgstr "Скрыть дорожку" -#: gtk2_ardour/automation_time_axis.cc:188 -#: gtk2_ardour/automation_time_axis.cc:217 -#: gtk2_ardour/automation_time_axis.cc:437 +#: gtk2_ardour/automation_time_axis.cc:187 +#: gtk2_ardour/automation_time_axis.cc:216 +#: gtk2_ardour/automation_time_axis.cc:441 msgid "Manual" msgstr "" -#: gtk2_ardour/automation_time_axis.cc:190 -#: gtk2_ardour/automation_time_axis.cc:228 -#: gtk2_ardour/automation_time_axis.cc:441 gtk2_ardour/editor.cc:1951 -#: gtk2_ardour/editor.cc:2032 gtk2_ardour/gain_meter.cc:169 +#: gtk2_ardour/automation_time_axis.cc:189 +#: gtk2_ardour/automation_time_axis.cc:227 +#: gtk2_ardour/automation_time_axis.cc:445 gtk2_ardour/editor.cc:1918 +#: gtk2_ardour/editor.cc:1999 gtk2_ardour/gain_meter.cc:161 #: gtk2_ardour/ladspa_pluginui.cc:333 gtk2_ardour/ladspa_pluginui.cc:575 -#: gtk2_ardour/panner_ui.cc:89 gtk2_ardour/sfdb_ui.cc:59 +#: gtk2_ardour/panner_ui.cc:91 gtk2_ardour/sfdb_ui.cc:58 msgid "Play" msgstr "Воспроизвести" -#: gtk2_ardour/automation_time_axis.cc:192 -#: gtk2_ardour/automation_time_axis.cc:239 -#: gtk2_ardour/automation_time_axis.cc:445 gtk2_ardour/gain_meter.cc:171 +#: gtk2_ardour/automation_time_axis.cc:191 +#: gtk2_ardour/automation_time_axis.cc:238 +#: gtk2_ardour/automation_time_axis.cc:449 gtk2_ardour/gain_meter.cc:163 #: gtk2_ardour/ladspa_pluginui.cc:336 gtk2_ardour/ladspa_pluginui.cc:577 -#: gtk2_ardour/panner_ui.cc:91 +#: gtk2_ardour/panner_ui.cc:93 msgid "Write" msgstr "Записать" -#: gtk2_ardour/automation_time_axis.cc:194 -#: gtk2_ardour/automation_time_axis.cc:250 -#: gtk2_ardour/automation_time_axis.cc:449 gtk2_ardour/gain_meter.cc:173 +#: gtk2_ardour/automation_time_axis.cc:193 +#: gtk2_ardour/automation_time_axis.cc:249 +#: gtk2_ardour/automation_time_axis.cc:453 gtk2_ardour/gain_meter.cc:165 #: gtk2_ardour/ladspa_pluginui.cc:339 gtk2_ardour/ladspa_pluginui.cc:579 -#: gtk2_ardour/panner_ui.cc:93 +#: gtk2_ardour/panner_ui.cc:95 #, fuzzy msgid "Touch" msgstr "Врезка" -#: gtk2_ardour/automation_time_axis.cc:261 gtk2_ardour/ladspa_pluginui.cc:342 +#: gtk2_ardour/automation_time_axis.cc:260 gtk2_ardour/ladspa_pluginui.cc:342 msgid "???" msgstr "???" -#: gtk2_ardour/automation_time_axis.cc:275 +#: gtk2_ardour/automation_time_axis.cc:274 msgid "clear automation" msgstr "Очистить автоматизацию" -#: gtk2_ardour/automation_time_axis.cc:428 gtk2_ardour/editor_actions.cc:320 +#: gtk2_ardour/automation_time_axis.cc:432 gtk2_ardour/editor_actions.cc:324 msgid "Hide" msgstr "Скрыть" -#: gtk2_ardour/automation_time_axis.cc:430 gtk2_ardour/crossfade_edit.cc:79 -#: gtk2_ardour/redirect_box.cc:1072 gtk2_ardour/connection_editor.cc:57 +#: gtk2_ardour/automation_time_axis.cc:434 gtk2_ardour/crossfade_edit.cc:79 +#: gtk2_ardour/redirect_box.cc:1141 gtk2_ardour/connection_editor.cc:57 msgid "Clear" msgstr "Очистить" -#: gtk2_ardour/automation_time_axis.cc:453 +#: gtk2_ardour/automation_time_axis.cc:457 msgid "State" msgstr "Состояние" @@ -1650,7 +1787,7 @@ msgstr "" #: gtk2_ardour/canvas-imageframe.c:120 msgid "y" -msgstr "" +msgstr "y" #: gtk2_ardour/canvas-imageframe.c:121 gtk2_ardour/canvas-simpleline.c:121 #: gtk2_ardour/canvas-simplerect.c:117 @@ -1658,9 +1795,8 @@ msgid "y coordinate of upper left corner of rect " msgstr "" #: gtk2_ardour/canvas-imageframe.c:129 -#, fuzzy msgid "width" -msgstr "запись" +msgstr "Ширина" #: gtk2_ardour/canvas-imageframe.c:130 msgid "the width" @@ -1768,7 +1904,7 @@ msgstr "" #: gtk2_ardour/canvas-simplerect.c:199 msgid "fill color rgba" -msgstr "" +msgstr "Цвет заливки в RGBA" #: gtk2_ardour/canvas-simplerect.c:200 msgid "color of fill" @@ -1787,7 +1923,7 @@ msgstr "не удалось отобразить заставку (файл \"%1 msgid "ardour: x-fade edit" msgstr "ardour: редактор кроссфейдов" -#: gtk2_ardour/crossfade_edit.cc:80 gtk2_ardour/panner_ui.cc:433 +#: gtk2_ardour/crossfade_edit.cc:80 gtk2_ardour/panner_ui.cc:446 msgid "Reset" msgstr "Сбросить" @@ -1829,1528 +1965,1463 @@ msgstr "Нарастание" msgid "Fade Out" msgstr "Затухание" -#: gtk2_ardour/crossfade_edit.cc:173 gtk2_ardour/editor.cc:1785 -#: gtk2_ardour/editor_actions.cc:318 gtk2_ardour/option_editor.cc:129 +#: gtk2_ardour/crossfade_edit.cc:173 gtk2_ardour/editor.cc:1735 +#: gtk2_ardour/editor_actions.cc:322 gtk2_ardour/option_editor.cc:127 msgid "Audition" msgstr "Контроль" -#: gtk2_ardour/editor.cc:105 gtk2_ardour/editor.cc:3521 -#, fuzzy -msgid "Slide Edit" -msgstr "Скольжение" - -#: gtk2_ardour/editor.cc:106 gtk2_ardour/editor.cc:3519 -#, fuzzy -msgid "Splice Edit" -msgstr "Стыковка" - -#: gtk2_ardour/editor.cc:111 gtk2_ardour/editor.cc:3576 -#: gtk2_ardour/editor_actions.cc:417 gtk2_ardour/export_dialog.cc:78 -#: gtk2_ardour/export_dialog.cc:92 gtk2_ardour/export_dialog.cc:893 -#: gtk2_ardour/export_dialog.cc:1225 gtk2_ardour/route_ui.cc:438 +#: gtk2_ardour/editor.cc:102 gtk2_ardour/editor.cc:3600 +#: gtk2_ardour/editor_actions.cc:400 gtk2_ardour/export_dialog.cc:76 +#: gtk2_ardour/export_dialog.cc:90 gtk2_ardour/export_dialog.cc:891 +#: gtk2_ardour/export_dialog.cc:1223 gtk2_ardour/route_ui.cc:459 msgid "None" msgstr "Нет" -#: gtk2_ardour/editor.cc:112 gtk2_ardour/editor.cc:3564 +#: gtk2_ardour/editor.cc:103 gtk2_ardour/editor.cc:3588 msgid "CD Frames" msgstr "Выборка CD" -#: gtk2_ardour/editor.cc:113 gtk2_ardour/editor.cc:3566 +#: gtk2_ardour/editor.cc:104 gtk2_ardour/editor.cc:3590 msgid "SMPTE Frames" msgstr "SMPTE кадры" -#: gtk2_ardour/editor.cc:114 gtk2_ardour/editor.cc:3568 +#: gtk2_ardour/editor.cc:105 gtk2_ardour/editor.cc:3592 msgid "SMPTE Seconds" msgstr "SMPTE секунды" -#: gtk2_ardour/editor.cc:115 gtk2_ardour/editor.cc:3570 +#: gtk2_ardour/editor.cc:106 gtk2_ardour/editor.cc:3594 msgid "SMPTE Minutes" msgstr "SMPTE минуты" -#: gtk2_ardour/editor.cc:116 gtk2_ardour/editor.cc:3572 +#: gtk2_ardour/editor.cc:107 gtk2_ardour/editor.cc:3596 msgid "Seconds" msgstr "Секунд" -#: gtk2_ardour/editor.cc:117 gtk2_ardour/editor.cc:3574 +#: gtk2_ardour/editor.cc:108 gtk2_ardour/editor.cc:3598 msgid "Minutes" msgstr "Минут" -#: gtk2_ardour/editor.cc:118 gtk2_ardour/editor.cc:3546 +#: gtk2_ardour/editor.cc:109 gtk2_ardour/editor.cc:3570 msgid "Beats/32" msgstr "долям/32" -#: gtk2_ardour/editor.cc:119 gtk2_ardour/editor.cc:3544 +#: gtk2_ardour/editor.cc:110 gtk2_ardour/editor.cc:3568 msgid "Beats/16" msgstr "долям/16" -#: gtk2_ardour/editor.cc:120 gtk2_ardour/editor.cc:3542 +#: gtk2_ardour/editor.cc:111 gtk2_ardour/editor.cc:3566 msgid "Beats/8" msgstr "долям/8" -#: gtk2_ardour/editor.cc:121 gtk2_ardour/editor.cc:3540 +#: gtk2_ardour/editor.cc:112 gtk2_ardour/editor.cc:3564 msgid "Beats/4" msgstr "долям/4" -#: gtk2_ardour/editor.cc:122 gtk2_ardour/editor.cc:3538 +#: gtk2_ardour/editor.cc:113 gtk2_ardour/editor.cc:3562 msgid "Beats/3" msgstr "долям/3" -#: gtk2_ardour/editor.cc:123 gtk2_ardour/editor.cc:3548 +#: gtk2_ardour/editor.cc:114 gtk2_ardour/editor.cc:3572 msgid "Beats" msgstr "долям" -#: gtk2_ardour/editor.cc:124 gtk2_ardour/editor.cc:3550 +#: gtk2_ardour/editor.cc:115 gtk2_ardour/editor.cc:3574 msgid "Bars" msgstr "тактам" -#: gtk2_ardour/editor.cc:125 gtk2_ardour/editor.cc:3552 +#: gtk2_ardour/editor.cc:116 gtk2_ardour/editor.cc:3576 msgid "Marks" msgstr "маркерам" -#: gtk2_ardour/editor.cc:126 gtk2_ardour/editor.cc:3554 +#: gtk2_ardour/editor.cc:117 gtk2_ardour/editor.cc:136 +#: gtk2_ardour/editor.cc:3578 gtk2_ardour/editor.cc:3643 msgid "Edit Cursor" msgstr "курсору" -#: gtk2_ardour/editor.cc:127 gtk2_ardour/editor.cc:3556 +#: gtk2_ardour/editor.cc:118 gtk2_ardour/editor.cc:3580 msgid "Region starts" msgstr "нач. областей" -#: gtk2_ardour/editor.cc:128 gtk2_ardour/editor.cc:3558 +#: gtk2_ardour/editor.cc:119 gtk2_ardour/editor.cc:3582 msgid "Region ends" msgstr "оконч. областей" -#: gtk2_ardour/editor.cc:129 gtk2_ardour/editor.cc:3562 +#: gtk2_ardour/editor.cc:120 gtk2_ardour/editor.cc:3586 msgid "Region syncs" msgstr "" -#: gtk2_ardour/editor.cc:130 gtk2_ardour/editor.cc:3560 +#: gtk2_ardour/editor.cc:121 gtk2_ardour/editor.cc:3584 msgid "Region bounds" msgstr "" -#: gtk2_ardour/editor.cc:135 gtk2_ardour/editor.cc:3593 -#, fuzzy -msgid "Normal Snap" -msgstr "Норм." +#: gtk2_ardour/editor.cc:127 gtk2_ardour/editor.cc:3618 +#: gtk2_ardour/editor_actions.cc:287 +msgid "Magnetic" +msgstr "Магнитное" -#: gtk2_ardour/editor.cc:136 gtk2_ardour/editor.cc:3595 -#, fuzzy -msgid "Magnetic Snap" -msgstr "Магн." - -#: gtk2_ardour/editor.cc:141 gtk2_ardour/editor.cc:3612 -#, fuzzy -msgid "Focus Left" -msgstr "Масштабировать к" - -#: gtk2_ardour/editor.cc:142 gtk2_ardour/editor.cc:3614 -#, fuzzy -msgid "Focus Right" -msgstr "Масштабировать к" +#: gtk2_ardour/editor.cc:132 gtk2_ardour/editor.cc:3635 +#: gtk2_ardour/export_dialog.cc:138 gtk2_ardour/export_dialog.cc:154 +#: gtk2_ardour/export_dialog.cc:1066 gtk2_ardour/export_dialog.cc:1070 +msgid "Left" +msgstr "Левый" -#: gtk2_ardour/editor.cc:143 gtk2_ardour/editor.cc:3616 -#, fuzzy -msgid "Focus Center" -msgstr "Масштабировать к" +#: gtk2_ardour/editor.cc:133 gtk2_ardour/editor.cc:3637 +#: gtk2_ardour/export_dialog.cc:139 gtk2_ardour/export_dialog.cc:155 +msgid "Right" +msgstr "Правый" -#: gtk2_ardour/editor.cc:144 +#: gtk2_ardour/editor.cc:134 gtk2_ardour/editor.cc:3639 #, fuzzy -msgid "Focus Play" -msgstr "Масштабировать к" +msgid "Center" +msgstr "Размер" -#: gtk2_ardour/editor.cc:145 +#: gtk2_ardour/editor.cc:135 gtk2_ardour/editor.cc:3641 #, fuzzy -msgid "Focus Edit" -msgstr "Масштабировать к" +msgid "Playhead" +msgstr "Установить указатель" -#: gtk2_ardour/editor.cc:187 +#: gtk2_ardour/editor.cc:178 msgid "Mins:Secs" msgstr "Мин:Сек" -#: gtk2_ardour/editor.cc:190 gtk2_ardour/editor_rulers.cc:353 +#: gtk2_ardour/editor.cc:181 gtk2_ardour/editor_rulers.cc:380 msgid "Frames" msgstr "Кадры" -#: gtk2_ardour/editor.cc:191 gtk2_ardour/editor_rulers.cc:373 +#: gtk2_ardour/editor.cc:182 gtk2_ardour/editor_rulers.cc:400 msgid "Tempo" msgstr "Темп" -#: gtk2_ardour/editor.cc:192 gtk2_ardour/editor_rulers.cc:367 +#: gtk2_ardour/editor.cc:183 gtk2_ardour/editor_rulers.cc:394 msgid "Meter" msgstr "Размер" -#: gtk2_ardour/editor.cc:193 gtk2_ardour/editor_rulers.cc:379 +#: gtk2_ardour/editor.cc:184 gtk2_ardour/editor_rulers.cc:406 msgid "Location Markers" msgstr "Маркеры интервалов" -#: gtk2_ardour/editor.cc:194 gtk2_ardour/editor_rulers.cc:385 +#: gtk2_ardour/editor.cc:185 gtk2_ardour/editor_rulers.cc:412 msgid "Range Markers" msgstr "Маркеры областей" -#: gtk2_ardour/editor.cc:195 gtk2_ardour/editor_rulers.cc:391 +#: gtk2_ardour/editor.cc:186 gtk2_ardour/editor_rulers.cc:418 msgid "Loop/Punch Ranges" msgstr "Области колец/врезок" -#: gtk2_ardour/editor.cc:213 +#: gtk2_ardour/editor.cc:204 msgid "mode" msgstr "режим" -#: gtk2_ardour/editor.cc:214 +#: gtk2_ardour/editor.cc:205 msgid "automation" msgstr "автомат" #: gtk2_ardour/editor.cc:455 gtk2_ardour/editor.cc:481 -#: gtk2_ardour/editor_actions.cc:64 gtk2_ardour/mixer_ui.cc:84 +#: gtk2_ardour/editor_actions.cc:63 gtk2_ardour/mixer_ui.cc:84 #: gtk2_ardour/mixer_ui.cc:110 gtk2_ardour/analysis_window.cc:64 -msgid "Visible" -msgstr "Видимы" +msgid "Show" +msgstr "Показать" #: gtk2_ardour/editor.cc:456 gtk2_ardour/editor.cc:479 msgid "Name" msgstr "Имя" -#: gtk2_ardour/editor.cc:555 gtk2_ardour/editor.cc:622 +#: gtk2_ardour/editor.cc:555 gtk2_ardour/editor.cc:621 msgid "Regions" msgstr "Области" -#: gtk2_ardour/editor.cc:595 gtk2_ardour/editor.cc:634 +#: gtk2_ardour/editor.cc:594 gtk2_ardour/editor.cc:633 msgid "Chunks" msgstr "Фрагменты" -#: gtk2_ardour/editor.cc:625 +#: gtk2_ardour/editor.cc:624 msgid "Tracks/Busses" msgstr "Дорожки/Шины" -#: gtk2_ardour/editor.cc:628 +#: gtk2_ardour/editor.cc:627 msgid "Snapshots" msgstr "Снимки" -#: gtk2_ardour/editor.cc:631 +#: gtk2_ardour/editor.cc:630 +#, fuzzy msgid "Edit Groups" -msgstr "" -"Ред.\n" -"группы" +msgstr "Ред. группы" -#: gtk2_ardour/editor.cc:680 +#: gtk2_ardour/editor.cc:681 msgid "Nudge Region/Selection Forwards" -msgstr "" +msgstr "Подвинуть область выделение вперёд" -#: gtk2_ardour/editor.cc:681 -#, fuzzy +#: gtk2_ardour/editor.cc:682 msgid "Nudge Region/Selection Backwards" -msgstr "Скрыть трек" +msgstr "Подвинуть область выделение назад" -#: gtk2_ardour/editor.cc:688 gtk2_ardour/editor_mixer.cc:296 +#: gtk2_ardour/editor.cc:710 gtk2_ardour/editor_mixer.cc:305 msgid "ardour: editor" msgstr "ardour: редактор" -#: gtk2_ardour/editor.cc:689 -msgid "ardour_editor" -msgstr "ardour_редактор" - -#: gtk2_ardour/editor.cc:1122 +#: gtk2_ardour/editor.cc:1116 msgid "ardour: editor: " msgstr "ardour: редактор: " -#: gtk2_ardour/editor.cc:1208 gtk2_ardour/editor.cc:1217 -#: gtk2_ardour/editor_markers.cc:874 +#: gtk2_ardour/editor.cc:1189 gtk2_ardour/editor.cc:1198 +#: gtk2_ardour/editor_markers.cc:901 msgid "Loop" msgstr "Кольцо" -#: gtk2_ardour/editor.cc:1222 gtk2_ardour/editor.cc:1231 -#: gtk2_ardour/editor_markers.cc:902 +#: gtk2_ardour/editor.cc:1203 gtk2_ardour/editor.cc:1212 +#: gtk2_ardour/editor_markers.cc:929 msgid "Punch" msgstr "Врезка" -#: gtk2_ardour/editor.cc:1387 gtk2_ardour/editor_mouse.cc:1748 +#: gtk2_ardour/editor.cc:1337 gtk2_ardour/editor_mouse.cc:1751 #, fuzzy msgid "programming error: fade in canvas item has no regionview data pointer!" msgstr "ошибка в программе: line canvas item has no line pointer!" -#: gtk2_ardour/editor.cc:1400 gtk2_ardour/editor.cc:1417 -#: gtk2_ardour/redirect_box.cc:1088 +#: gtk2_ardour/editor.cc:1349 gtk2_ardour/editor.cc:1366 +#: gtk2_ardour/redirect_box.cc:1157 msgid "Deactivate" msgstr "Деактивировать" -#: gtk2_ardour/editor.cc:1402 gtk2_ardour/editor.cc:1419 -#: gtk2_ardour/redirect_box.cc:1086 +#: gtk2_ardour/editor.cc:1351 gtk2_ardour/editor.cc:1368 +#: gtk2_ardour/redirect_box.cc:1155 msgid "Activate" msgstr "Активировать" -#: gtk2_ardour/editor.cc:1407 gtk2_ardour/editor.cc:1424 -#, fuzzy -msgid "Linear" -msgstr "линейное" - -#: gtk2_ardour/editor.cc:1408 gtk2_ardour/editor.cc:1425 -#: gtk2_ardour/editor_actions.cc:380 -msgid "Slowest" -msgstr "Медленнее всего" - -#: gtk2_ardour/editor.cc:1409 gtk2_ardour/editor.cc:1426 -#: gtk2_ardour/editor_actions.cc:381 -msgid "Slow" -msgstr "Медленно" - -#: gtk2_ardour/editor.cc:1410 gtk2_ardour/editor.cc:1427 -#: gtk2_ardour/editor_actions.cc:383 -msgid "Fast" -msgstr "Быстро" - -#: gtk2_ardour/editor.cc:1411 gtk2_ardour/editor.cc:1428 -#: gtk2_ardour/editor_actions.cc:385 -msgid "Fastest" -msgstr "Быстрее всего" - -#: gtk2_ardour/editor.cc:1539 gtk2_ardour/editor.cc:1547 +#: gtk2_ardour/editor.cc:1489 gtk2_ardour/editor.cc:1497 msgid "Freeze" msgstr "Заморозить" -#: gtk2_ardour/editor.cc:1543 +#: gtk2_ardour/editor.cc:1493 msgid "Unfreeze" msgstr "Разморозить" -#: gtk2_ardour/editor.cc:1712 gtk2_ardour/editor.cc:1807 +#: gtk2_ardour/editor.cc:1662 msgid "Unmute" msgstr "Снять глушение" -#: gtk2_ardour/editor.cc:1716 gtk2_ardour/editor.cc:1996 -#: gtk2_ardour/editor_actions.cc:27 gtk2_ardour/editor_markers.cc:510 -#: gtk2_ardour/mixer_strip.cc:496 gtk2_ardour/mixer_strip.cc:559 -#: gtk2_ardour/redirect_box.cc:1094 +#: gtk2_ardour/editor.cc:1666 gtk2_ardour/editor.cc:1963 +#: gtk2_ardour/editor_actions.cc:28 gtk2_ardour/editor_markers.cc:511 +#: gtk2_ardour/mixer_strip.cc:515 gtk2_ardour/mixer_strip.cc:577 +#: gtk2_ardour/redirect_box.cc:1163 msgid "Edit" msgstr "Правка" -#: gtk2_ardour/editor.cc:1721 +#: gtk2_ardour/editor.cc:1671 msgid "Convert to short" msgstr "" -#: gtk2_ardour/editor.cc:1723 +#: gtk2_ardour/editor.cc:1673 msgid "Convert to full" msgstr "" -#: gtk2_ardour/editor.cc:1734 +#: gtk2_ardour/editor.cc:1684 msgid "Crossfade" msgstr "Кроссфейд" -#: gtk2_ardour/editor.cc:1777 +#: gtk2_ardour/editor.cc:1727 msgid "Popup region editor" msgstr "Открыть редактор области" -#: gtk2_ardour/editor.cc:1778 -#, fuzzy +#: gtk2_ardour/editor.cc:1728 msgid "Raise to top layer" -msgstr "Поднять область в верхний слой" +msgstr "Поднять в верхний слой" -#: gtk2_ardour/editor.cc:1779 -#, fuzzy +#: gtk2_ardour/editor.cc:1729 msgid "Lower to bottom layer" -msgstr "Опустить область в нижний слой" +msgstr "Опустить в нижний слой" -#: gtk2_ardour/editor.cc:1781 +#: gtk2_ardour/editor.cc:1731 msgid "Define sync point" -msgstr "" +msgstr "Определить точку синхронизации" -#: gtk2_ardour/editor.cc:1782 +#: gtk2_ardour/editor.cc:1732 msgid "Remove sync point" -msgstr "" +msgstr "Удалить точку синхронизации" -#: gtk2_ardour/editor.cc:1787 +#: gtk2_ardour/editor.cc:1737 #, fuzzy msgid "Bounce" msgstr "Свести выделенное" -#: gtk2_ardour/editor.cc:1790 +#: gtk2_ardour/editor.cc:1740 #, fuzzy msgid "Analyze region" msgstr "Воспроизвести область" -#: gtk2_ardour/editor.cc:1802 +#: gtk2_ardour/editor.cc:1745 msgid "Lock" msgstr "Запереть" -#: gtk2_ardour/editor.cc:1803 -msgid "Unlock" -msgstr "Отпереть" +#: gtk2_ardour/editor.cc:1755 +#, fuzzy +msgid "Opaque" +msgstr "затенить" -#: gtk2_ardour/editor.cc:1813 +#: gtk2_ardour/editor.cc:1761 msgid "Original position" msgstr "Исходное положение" -#: gtk2_ardour/editor.cc:1819 -msgid "Toggle envelope visibility" -msgstr "" +#: gtk2_ardour/editor.cc:1773 +msgid "Reset Envelope" +msgstr "Сбросить огибающую" -#: gtk2_ardour/editor.cc:1820 -msgid "Toggle envelope active" -msgstr "" +#: gtk2_ardour/editor.cc:1775 +msgid "Envelope Visible" +msgstr "Огибающая видима" + +#: gtk2_ardour/editor.cc:1782 +msgid "Envelope Active" +msgstr "Огибающая активна" -#: gtk2_ardour/editor.cc:1824 +#: gtk2_ardour/editor.cc:1792 msgid "DeNormalize" msgstr "Денормализовать" -#: gtk2_ardour/editor.cc:1826 +#: gtk2_ardour/editor.cc:1794 msgid "Normalize" msgstr "Нормализовать" -#: gtk2_ardour/editor.cc:1829 +#: gtk2_ardour/editor.cc:1797 msgid "Reverse" -msgstr "" +msgstr "Развернуть" -#: gtk2_ardour/editor.cc:1835 +#: gtk2_ardour/editor.cc:1803 gtk2_ardour/editor.cc:1885 msgid "Add Range Markers" msgstr "Добавить маркеры областей" -#: gtk2_ardour/editor.cc:1836 +#: gtk2_ardour/editor.cc:1804 #, fuzzy -msgid "Set Range" -msgstr "Разделить область" +msgid "Set Range Selection" +msgstr "Воспроизвести выделенное" -#: gtk2_ardour/editor.cc:1845 +#: gtk2_ardour/editor.cc:1813 msgid "Nudge fwd" msgstr "Подвинуть вперёд" -#: gtk2_ardour/editor.cc:1846 +#: gtk2_ardour/editor.cc:1814 msgid "Nudge bwd" msgstr "Подвинуть назад" -#: gtk2_ardour/editor.cc:1847 +#: gtk2_ardour/editor.cc:1815 msgid "Nudge fwd by capture offset" msgstr "" -#: gtk2_ardour/editor.cc:1848 +#: gtk2_ardour/editor.cc:1816 msgid "Nudge bwd by capture offset" msgstr "" -#: gtk2_ardour/editor.cc:1850 gtk2_ardour/editor.cc:2016 -#: gtk2_ardour/editor.cc:2072 +#: gtk2_ardour/editor.cc:1818 gtk2_ardour/editor.cc:1983 +#: gtk2_ardour/editor.cc:2039 msgid "Nudge" msgstr "Подвинуть" -#: gtk2_ardour/editor.cc:1857 +#: gtk2_ardour/editor.cc:1825 msgid "Start to edit cursor" msgstr "От начала до курсора" -#: gtk2_ardour/editor.cc:1858 +#: gtk2_ardour/editor.cc:1826 msgid "Edit cursor to end" msgstr "От курсора до конца" -#: gtk2_ardour/editor.cc:1860 gtk2_ardour/gain_meter.cc:176 -#: gtk2_ardour/gain_meter.cc:808 gtk2_ardour/panner_ui.cc:96 -#: gtk2_ardour/panner_ui.cc:793 +#: gtk2_ardour/editor.cc:1828 gtk2_ardour/gain_meter.cc:168 +#: gtk2_ardour/gain_meter.cc:868 gtk2_ardour/panner_ui.cc:98 +#: gtk2_ardour/panner_ui.cc:806 msgid "Trim" -msgstr "" +msgstr "Обрезать" -#: gtk2_ardour/editor.cc:1863 +#: gtk2_ardour/editor.cc:1831 msgid "Split" -msgstr "Склеить" +msgstr "Разделить" -#: gtk2_ardour/editor.cc:1866 +#: gtk2_ardour/editor.cc:1834 msgid "Make mono regions" msgstr "Создать моно-области" -#: gtk2_ardour/editor.cc:1869 +#: gtk2_ardour/editor.cc:1837 msgid "Duplicate" msgstr "Размножить" -#: gtk2_ardour/editor.cc:1870 +#: gtk2_ardour/editor.cc:1838 msgid "Fill Track" msgstr "Заполнить трек" -#: gtk2_ardour/editor.cc:1874 -msgid "Destroy" -msgstr "" - -#: gtk2_ardour/editor.cc:1904 -#, fuzzy +#: gtk2_ardour/editor.cc:1870 msgid "Play range" -msgstr "Воспроизвести \"кольцо\"" +msgstr "Воспроизвести «кольцо»" -#: gtk2_ardour/editor.cc:1905 +#: gtk2_ardour/editor.cc:1871 msgid "Loop range" msgstr "" -#: gtk2_ardour/editor.cc:1909 -#, fuzzy +#: gtk2_ardour/editor.cc:1875 msgid "Analyze range" -msgstr "Воспроизвести \"кольцо\"" +msgstr "Проанализировать «кольцо»" -#: gtk2_ardour/editor.cc:1913 +#: gtk2_ardour/editor.cc:1879 #, fuzzy msgid "Separate range to track" msgstr "Разделить область" -#: gtk2_ardour/editor.cc:1914 +#: gtk2_ardour/editor.cc:1880 #, fuzzy msgid "Separate range to region list" msgstr "Воспроизвести выделенную область" -#: gtk2_ardour/editor.cc:1917 -#, fuzzy +#: gtk2_ardour/editor.cc:1883 msgid "Select all in range" -msgstr "Выделить всё" +msgstr "Выделить всё выделении" -#: gtk2_ardour/editor.cc:1919 gtk2_ardour/editor.cc:1964 +#: gtk2_ardour/editor.cc:1886 gtk2_ardour/editor.cc:1931 #, fuzzy msgid "Set range to loop range" msgstr "выбрать окно просмотра" -#: gtk2_ardour/editor.cc:1920 gtk2_ardour/editor.cc:1965 +#: gtk2_ardour/editor.cc:1887 gtk2_ardour/editor.cc:1932 #, fuzzy msgid "Set range to punch range" msgstr "Выбрать текущий интервал" -#: gtk2_ardour/editor.cc:1922 -#, fuzzy +#: gtk2_ardour/editor.cc:1889 msgid "Crop region to range" -msgstr "Обрезать область по выделенному" +msgstr "Обрезать область по выделению" -#: gtk2_ardour/editor.cc:1923 -#, fuzzy +#: gtk2_ardour/editor.cc:1890 msgid "Fill range with region" -msgstr "Создать область" +msgstr "Заполнить выделение областью" -#: gtk2_ardour/editor.cc:1924 -#, fuzzy +#: gtk2_ardour/editor.cc:1891 msgid "Duplicate range" -msgstr "Размножить" +msgstr "Продублировать выделение" -#: gtk2_ardour/editor.cc:1925 -#, fuzzy +#: gtk2_ardour/editor.cc:1892 msgid "Create chunk from range" -msgstr "Создать фрагмент из выделенного" +msgstr "Создать фрагмент из выделения" -#: gtk2_ardour/editor.cc:1927 +#: gtk2_ardour/editor.cc:1894 msgid "Bounce range" -msgstr "" +msgstr "Свести выделение" -#: gtk2_ardour/editor.cc:1928 -#, fuzzy +#: gtk2_ardour/editor.cc:1895 msgid "Export range" -msgstr "Экспорт области" +msgstr "Экспортировать выделение" -#: gtk2_ardour/editor.cc:1930 -#, fuzzy +#: gtk2_ardour/editor.cc:1897 msgid "Range" -msgstr "выделять" +msgstr "Выделение" -#: gtk2_ardour/editor.cc:1945 gtk2_ardour/editor.cc:2030 +#: gtk2_ardour/editor.cc:1912 gtk2_ardour/editor.cc:1997 msgid "Play from edit cursor" msgstr "Воспроизвести от курсора" -#: gtk2_ardour/editor.cc:1946 gtk2_ardour/editor.cc:2031 +#: gtk2_ardour/editor.cc:1913 gtk2_ardour/editor.cc:1998 msgid "Play from start" msgstr "Воспроизвести сначала" -#: gtk2_ardour/editor.cc:1947 +#: gtk2_ardour/editor.cc:1914 msgid "Play region" msgstr "Воспроизвести область" -#: gtk2_ardour/editor.cc:1949 +#: gtk2_ardour/editor.cc:1916 msgid "Loop Region" msgstr "«Закольцевать» область" -#: gtk2_ardour/editor.cc:1959 gtk2_ardour/editor.cc:2040 +#: gtk2_ardour/editor.cc:1926 gtk2_ardour/editor.cc:2007 msgid "Select All in track" msgstr "Выделить всё в дорожке" -#: gtk2_ardour/editor.cc:1960 gtk2_ardour/editor.cc:2041 -#: gtk2_ardour/redirect_box.cc:1082 +#: gtk2_ardour/editor.cc:1927 gtk2_ardour/editor.cc:2008 +#: gtk2_ardour/redirect_box.cc:1151 msgid "Select All" msgstr "Выделить всё" -#: gtk2_ardour/editor.cc:1961 gtk2_ardour/editor.cc:2042 +#: gtk2_ardour/editor.cc:1928 gtk2_ardour/editor.cc:2009 msgid "Invert selection in track" msgstr "Обратить выделение в дорожке" -#: gtk2_ardour/editor.cc:1962 gtk2_ardour/editor.cc:2043 +#: gtk2_ardour/editor.cc:1929 gtk2_ardour/editor.cc:2010 msgid "Invert selection" msgstr "Обратить выделение" -#: gtk2_ardour/editor.cc:1967 gtk2_ardour/editor.cc:2045 +#: gtk2_ardour/editor.cc:1934 gtk2_ardour/editor.cc:2012 msgid "Select all after edit cursor" msgstr "Выделить всё после курсора" -#: gtk2_ardour/editor.cc:1968 gtk2_ardour/editor.cc:2046 +#: gtk2_ardour/editor.cc:1935 gtk2_ardour/editor.cc:2013 msgid "Select all before edit cursor" msgstr "Выделить всё до курсора" -#: gtk2_ardour/editor.cc:1969 gtk2_ardour/editor.cc:2047 +#: gtk2_ardour/editor.cc:1936 gtk2_ardour/editor.cc:2014 msgid "Select all after playhead" msgstr "Выделить всё после указателя" -#: gtk2_ardour/editor.cc:1970 gtk2_ardour/editor.cc:2048 +#: gtk2_ardour/editor.cc:1937 gtk2_ardour/editor.cc:2015 msgid "Select all before playhead" msgstr "Выделить всё до указателя" -#: gtk2_ardour/editor.cc:1971 +#: gtk2_ardour/editor.cc:1938 msgid "Select all between cursors" msgstr "Выделить всё между курсорами" -#: gtk2_ardour/editor.cc:1982 gtk2_ardour/editor.cc:2058 -#: gtk2_ardour/editor.cc:3388 gtk2_ardour/editor_actions.cc:216 -#: gtk2_ardour/redirect_box.cc:1075 +#: gtk2_ardour/editor.cc:1941 gtk2_ardour/editor.cc:2017 +msgid "Select" +msgstr "Выделить" + +#: gtk2_ardour/editor.cc:1949 gtk2_ardour/editor.cc:2025 +#: gtk2_ardour/editor_actions.cc:215 gtk2_ardour/redirect_box.cc:1144 msgid "Cut" msgstr "Вырезать" -#: gtk2_ardour/editor.cc:1983 gtk2_ardour/editor.cc:2059 -#: gtk2_ardour/editor.cc:3390 gtk2_ardour/editor_actions.cc:221 -#: gtk2_ardour/redirect_box.cc:1077 +#: gtk2_ardour/editor.cc:1950 gtk2_ardour/editor.cc:2026 +#: gtk2_ardour/editor_actions.cc:220 gtk2_ardour/redirect_box.cc:1146 msgid "Copy" msgstr "Копировать" -#: gtk2_ardour/editor.cc:1984 +#: gtk2_ardour/editor.cc:1951 msgid "Paste at edit cursor" msgstr "Вставить под курсор редактора" -#: gtk2_ardour/editor.cc:1985 +#: gtk2_ardour/editor.cc:1952 msgid "Paste at mouse" msgstr "Вставить под курсор мыши" -#: gtk2_ardour/editor.cc:1989 gtk2_ardour/editor.cc:3395 +#: gtk2_ardour/editor.cc:1956 msgid "Align" msgstr "Выровнять" -#: gtk2_ardour/editor.cc:1990 gtk2_ardour/editor.cc:3397 +#: gtk2_ardour/editor.cc:1957 msgid "Align Relative" msgstr "Выровнять относительно" -#: gtk2_ardour/editor.cc:1994 +#: gtk2_ardour/editor.cc:1961 msgid "Insert chunk" msgstr "Вставить фрагмент" -#: gtk2_ardour/editor.cc:2001 -#, fuzzy +#: gtk2_ardour/editor.cc:1968 msgid "Insert Selected Region" -msgstr "Воспроизвести выделенную область" +msgstr "Вставить выделенную область" -#: gtk2_ardour/editor.cc:2002 +#: gtk2_ardour/editor.cc:1969 msgid "Insert Existing Audio" -msgstr "" +msgstr "Вставить звуковой файл" -#: gtk2_ardour/editor.cc:2011 gtk2_ardour/editor.cc:2067 +#: gtk2_ardour/editor.cc:1978 gtk2_ardour/editor.cc:2034 msgid "Nudge entire track fwd" -msgstr "" +msgstr "Подвинуть всю дорожку вперёд" -#: gtk2_ardour/editor.cc:2012 gtk2_ardour/editor.cc:2068 +#: gtk2_ardour/editor.cc:1979 gtk2_ardour/editor.cc:2035 msgid "Nudge track after edit cursor fwd" -msgstr "" +msgstr "Подвинуть всю дорожку после курсора правки вперёд" -#: gtk2_ardour/editor.cc:2013 gtk2_ardour/editor.cc:2069 +#: gtk2_ardour/editor.cc:1980 gtk2_ardour/editor.cc:2036 msgid "Nudge entire track bwd" -msgstr "" +msgstr "Подвинуть всю дорожку назад" -#: gtk2_ardour/editor.cc:2014 gtk2_ardour/editor.cc:2070 +#: gtk2_ardour/editor.cc:1981 gtk2_ardour/editor.cc:2037 msgid "Nudge track after edit cursor bwd" -msgstr "" +msgstr "Подвинуть всю дорожку после курсора правки назад" -#: gtk2_ardour/editor.cc:2060 gtk2_ardour/editor.cc:3392 -#: gtk2_ardour/editor_actions.cc:223 gtk2_ardour/redirect_box.cc:1079 +#: gtk2_ardour/editor.cc:2027 gtk2_ardour/editor_actions.cc:222 +#: gtk2_ardour/redirect_box.cc:1148 msgid "Paste" msgstr "Вставить" -#: gtk2_ardour/editor.cc:2612 -#, fuzzy +#: gtk2_ardour/editor.cc:2585 msgid "Select/Move Objects" -msgstr "выбирать/двигать объекты" +msgstr "Выбирать/двигать объекты" -#: gtk2_ardour/editor.cc:2613 -#, fuzzy +#: gtk2_ardour/editor.cc:2586 msgid "Select/Move Ranges" -msgstr "выбирать/двигать диапазоны" +msgstr "Выбирать/двигать области" -#: gtk2_ardour/editor.cc:2614 -#, fuzzy +#: gtk2_ardour/editor.cc:2587 msgid "Draw Gain Automation" -msgstr "автомат" +msgstr "Рисовать автоматизацию усиления" -#: gtk2_ardour/editor.cc:2615 -#, fuzzy +#: gtk2_ardour/editor.cc:2588 msgid "Select Zoom Range" -msgstr "выбрать окно просмотра" +msgstr "Отмасштабировать вид в выделенную область" -#: gtk2_ardour/editor.cc:2616 -#, fuzzy +#: gtk2_ardour/editor.cc:2589 msgid "Stretch/Shrink Regions" -msgstr "растянуть/сжать области" +msgstr "Растянуть/сжать области" -#: gtk2_ardour/editor.cc:2617 -#, fuzzy +#: gtk2_ardour/editor.cc:2590 msgid "Listen to Specific Regions" msgstr "Воспроизвести выделенную область" -#: gtk2_ardour/editor.cc:2646 gtk2_ardour/editor_actions.cc:144 +#: gtk2_ardour/editor.cc:2620 gtk2_ardour/editor_actions.cc:143 msgid "Zoom In" msgstr "Увеличить" -#: gtk2_ardour/editor.cc:2651 gtk2_ardour/editor_actions.cc:142 +#: gtk2_ardour/editor.cc:2626 gtk2_ardour/editor_actions.cc:141 msgid "Zoom Out" msgstr "Уменьшить" -#: gtk2_ardour/editor.cc:2656 gtk2_ardour/editor_actions.cc:146 +#: gtk2_ardour/editor.cc:2632 gtk2_ardour/editor_actions.cc:145 msgid "Zoom to Session" msgstr "Показать всё" -#: gtk2_ardour/editor.cc:2663 -msgid "" -"Current Zoom Range\n" -"(Width of visible area)" -msgstr "" +#: gtk2_ardour/editor.cc:2638 +#, fuzzy +msgid "Zoom focus" +msgstr "Фокус при масштабировании" -#: gtk2_ardour/editor.cc:2682 +#: gtk2_ardour/editor.cc:2654 msgid "Unit to snap cursors and ranges to" msgstr "" -#: gtk2_ardour/editor.cc:3267 gtk2_ardour/editor.cc:3307 +#: gtk2_ardour/editor.cc:3348 gtk2_ardour/editor.cc:3397 #, fuzzy msgid "set selected regions" msgstr "Воспроизвести выделенную область" -#: gtk2_ardour/editor.cc:3363 gtk2_ardour/editor_actions.cc:206 +#: gtk2_ardour/editor.cc:3437 gtk2_ardour/editor_actions.cc:205 msgid "Undo" msgstr "Отменить" -#: gtk2_ardour/editor.cc:3365 +#: gtk2_ardour/editor.cc:3439 msgid "Undo (%1)" msgstr "Отменить (%1)" -#: gtk2_ardour/editor.cc:3375 gtk2_ardour/editor_actions.cc:208 +#: gtk2_ardour/editor.cc:3446 gtk2_ardour/editor_actions.cc:207 msgid "Redo" msgstr "Повторить" -#: gtk2_ardour/editor.cc:3377 +#: gtk2_ardour/editor.cc:3448 msgid "Redo (%1)" msgstr "Повторить (%1)" -#: gtk2_ardour/editor.cc:3411 -msgid "... as new track" -msgstr "... как новую дорожку" - -#: gtk2_ardour/editor.cc:3412 -msgid "... as new region" -msgstr "... как новую область" - -#: gtk2_ardour/editor.cc:3414 -msgid "Import audio (copy)" -msgstr "Импортировать аудио (копией)" - -#: gtk2_ardour/editor.cc:3417 -msgid "Remove last capture" -msgstr "Удалить последнюю запись" - -#: gtk2_ardour/editor.cc:3441 +#: gtk2_ardour/editor.cc:3469 msgid "Duplicate how many times?" msgstr "Количество повторов?" -#: gtk2_ardour/editor.cc:3618 +#: gtk2_ardour/editor.cc:3547 #, fuzzy -msgid "Focus Playhead" -msgstr "Масштабировать к" +msgid "Splice Edit" +msgstr "Стыковка" -#: gtk2_ardour/editor.cc:3620 +#: gtk2_ardour/editor.cc:3549 #, fuzzy -msgid "Focus Edit Cursor" -msgstr "курсору" +msgid "Slide Edit" +msgstr "Скольжение" -#: gtk2_ardour/editor.cc:3929 +#: gtk2_ardour/editor.cc:3959 msgid "" "Playlist %1 is currently unused.\n" "If left alone, no audio files used by it will be cleaned.\n" "If deleted, audio files used by it alone by will cleaned." msgstr "" -#: gtk2_ardour/editor.cc:3937 +#: gtk2_ardour/editor.cc:3969 msgid "Delete playlist" msgstr "Удалить список воспроизведения" -#: gtk2_ardour/editor.cc:3938 +#: gtk2_ardour/editor.cc:3970 msgid "Keep playlist" msgstr "Сохранить список воспроизведения" -#: gtk2_ardour/editor.cc:3939 gtk2_ardour/editor_audio_import.cc:239 -#: gtk2_ardour/editor_ops.cc:2061 gtk2_ardour/editor_timefx.cc:72 -#: gtk2_ardour/export_dialog.cc:971 gtk2_ardour/io_selector.cc:61 -#: gtk2_ardour/io_selector.cc:795 gtk2_ardour/redirect_box.cc:901 +#: gtk2_ardour/editor.cc:3971 gtk2_ardour/editor_audio_import.cc:315 +#: gtk2_ardour/editor_ops.cc:1979 gtk2_ardour/editor_timefx.cc:72 +#: gtk2_ardour/export_dialog.cc:969 gtk2_ardour/io_selector.cc:61 +#: gtk2_ardour/io_selector.cc:749 gtk2_ardour/redirect_box.cc:975 #: gtk2_ardour/tempo_dialog.cc:20 gtk2_ardour/tempo_dialog.cc:37 #: gtk2_ardour/tempo_dialog.cc:202 gtk2_ardour/tempo_dialog.cc:220 #: gtk2_ardour/connection_editor.cc:60 msgid "Cancel" msgstr "Отмена" -#: gtk2_ardour/editor.cc:4107 +#: gtk2_ardour/editor.cc:4174 msgid "new playlists" msgstr "Создать списки воспроизведения" -#: gtk2_ardour/editor.cc:4115 +#: gtk2_ardour/editor.cc:4182 msgid "copy playlists" msgstr "Скопировать списки воспроизведения" -#: gtk2_ardour/editor.cc:4123 +#: gtk2_ardour/editor.cc:4190 msgid "clear playlists" msgstr "Очистить списки воспроизведения" -#: gtk2_ardour/editor_actions.cc:28 +#: gtk2_ardour/editor_actions.cc:29 msgid "Select regions" msgstr "Выделение областей" -#: gtk2_ardour/editor_actions.cc:29 +#: gtk2_ardour/editor_actions.cc:30 msgid "Select range operations" msgstr "Действия с выделенной областью" -#: gtk2_ardour/editor_actions.cc:30 +#: gtk2_ardour/editor_actions.cc:31 msgid "Move edit cursor" msgstr "Переместить курсор редактора" -#: gtk2_ardour/editor_actions.cc:31 +#: gtk2_ardour/editor_actions.cc:32 msgid "Region operations" msgstr "Действия с областями" -#: gtk2_ardour/editor_actions.cc:32 +#: gtk2_ardour/editor_actions.cc:33 msgid "Tools" msgstr "Инструменты" -#: gtk2_ardour/editor_actions.cc:33 +#: gtk2_ardour/editor_actions.cc:34 msgid "View" msgstr "Вид" -#: gtk2_ardour/editor_actions.cc:34 +#: gtk2_ardour/editor_actions.cc:35 msgid "ZoomFocus" msgstr "Фокус при масштабировании" -#: gtk2_ardour/editor_actions.cc:35 +#: gtk2_ardour/editor_actions.cc:36 msgid "Meter hold" msgstr "Задержка индикатора" -#: gtk2_ardour/editor_actions.cc:36 +#: gtk2_ardour/editor_actions.cc:37 msgid "Meter falloff" -msgstr "Спадание индикатора" +msgstr "Спад индикатора" -#: gtk2_ardour/editor_actions.cc:38 +#: gtk2_ardour/editor_actions.cc:39 msgid "Crossfades" msgstr "Кроссфейды" -#: gtk2_ardour/editor_actions.cc:39 +#: gtk2_ardour/editor_actions.cc:40 msgid "Monitoring" msgstr "Контроль" -#: gtk2_ardour/editor_actions.cc:40 +#: gtk2_ardour/editor_actions.cc:41 msgid "Autoconnect" msgstr "Автосоединение" -#: gtk2_ardour/editor_actions.cc:41 +#: gtk2_ardour/editor_actions.cc:42 msgid "Layering" msgstr "Слои" -#: gtk2_ardour/editor_actions.cc:42 -msgid "SMPTE fps" -msgstr "Кадров в секунду SMPTE" - #: gtk2_ardour/editor_actions.cc:43 -msgid "Pullup / Pulldown" -msgstr "" +msgid "Timecode fps" +msgstr "Скорость (FPS) тайм-кода" #: gtk2_ardour/editor_actions.cc:44 -msgid "Metering" -msgstr "Индикаторы" +msgid "Pullup / Pulldown" +msgstr "" #: gtk2_ardour/editor_actions.cc:45 -msgid "Fall off rate" -msgstr "Частота спада" +msgid "Subframes" +msgstr "Подвыборки" #: gtk2_ardour/editor_actions.cc:46 -msgid "Hold Time" -msgstr "Время задержки" - -#: gtk2_ardour/editor_actions.cc:47 msgid "Add Existing Audio" msgstr "Добавить существующий файл" -#: gtk2_ardour/editor_actions.cc:52 +#: gtk2_ardour/editor_actions.cc:51 msgid "Show Editor Mixer" msgstr "Показать микшер редактора" -#: gtk2_ardour/editor_actions.cc:57 +#: gtk2_ardour/editor_actions.cc:56 #, fuzzy msgid "Span Entire Overlap" msgstr "Поднять область на один слой" -#: gtk2_ardour/editor_actions.cc:59 gtk2_ardour/editor_actions.cc:388 -msgid "Short" -msgstr "Короткая" - -#: gtk2_ardour/editor_actions.cc:66 +#: gtk2_ardour/editor_actions.cc:65 msgid "Created Automatically" msgstr "Создано автоматически" -#: gtk2_ardour/editor_actions.cc:69 +#: gtk2_ardour/editor_actions.cc:68 msgid "Playhead to Next Region Start" msgstr "Указатель к началу следующей области" -#: gtk2_ardour/editor_actions.cc:71 +#: gtk2_ardour/editor_actions.cc:70 msgid "Playhead to Next Region End" msgstr "Указатель к концу следующей области" -#: gtk2_ardour/editor_actions.cc:73 +#: gtk2_ardour/editor_actions.cc:72 msgid "Playhead to Next Region Sync" msgstr "" -#: gtk2_ardour/editor_actions.cc:76 +#: gtk2_ardour/editor_actions.cc:75 msgid "Playhead to Previous Region Start" msgstr "Указатель к началу предыдущей области" -#: gtk2_ardour/editor_actions.cc:78 +#: gtk2_ardour/editor_actions.cc:77 msgid "Playhead to Previous Region End" msgstr "Указатель к концу предыдущей области" -#: gtk2_ardour/editor_actions.cc:80 +#: gtk2_ardour/editor_actions.cc:79 msgid "Playhead to Previous Region Sync" msgstr "" -#: gtk2_ardour/editor_actions.cc:83 +#: gtk2_ardour/editor_actions.cc:82 msgid "Edit Cursor to Next Region Start" msgstr "Курсор редактора к началу следующей области" -#: gtk2_ardour/editor_actions.cc:85 +#: gtk2_ardour/editor_actions.cc:84 msgid "Edit Cursor to Next Region End" msgstr "Курсор редактора к концу следующей области" -#: gtk2_ardour/editor_actions.cc:87 +#: gtk2_ardour/editor_actions.cc:86 #, fuzzy msgid "Edit Cursor to Next Region Sync" msgstr "От курсора до конца" -#: gtk2_ardour/editor_actions.cc:90 +#: gtk2_ardour/editor_actions.cc:89 msgid "Edit Cursor to Previous Region Start" msgstr "Курсор редактора к началу предыдущей области" -#: gtk2_ardour/editor_actions.cc:92 +#: gtk2_ardour/editor_actions.cc:91 msgid "Edit Cursor to Previous Region End" msgstr "Курсор редактора к концу предыдущей области" -#: gtk2_ardour/editor_actions.cc:94 +#: gtk2_ardour/editor_actions.cc:93 msgid "Edit Cursor to Previous Region Sync" msgstr "" -#: gtk2_ardour/editor_actions.cc:97 +#: gtk2_ardour/editor_actions.cc:96 msgid "Playhead to Range Start" msgstr "Указатель к началу области" -#: gtk2_ardour/editor_actions.cc:99 +#: gtk2_ardour/editor_actions.cc:98 msgid "Playhead to Range End" msgstr "Указатель к концу области" -#: gtk2_ardour/editor_actions.cc:102 +#: gtk2_ardour/editor_actions.cc:101 msgid "Edit Cursor to Range Start" msgstr "Курсор редактора к началу области" -#: gtk2_ardour/editor_actions.cc:104 +#: gtk2_ardour/editor_actions.cc:103 msgid "Edit Cursor to Range End" msgstr "Курсор редактора к концу области" -#: gtk2_ardour/editor_actions.cc:107 gtk2_ardour/editor_ops.cc:1373 +#: gtk2_ardour/editor_actions.cc:106 gtk2_ardour/editor_ops.cc:1292 msgid "select all" msgstr "Выделить всё" -#: gtk2_ardour/editor_actions.cc:109 +#: gtk2_ardour/editor_actions.cc:108 msgid "Select All After Edit Cursor" msgstr "Выделить всё после курсора редактора" -#: gtk2_ardour/editor_actions.cc:111 +#: gtk2_ardour/editor_actions.cc:110 msgid "Select All Before Edit Cursor" msgstr "Выделить всё перед курсором редактора" -#: gtk2_ardour/editor_actions.cc:114 +#: gtk2_ardour/editor_actions.cc:113 msgid "Select All After Playhead" msgstr "Выделить всё после указателя" -#: gtk2_ardour/editor_actions.cc:116 +#: gtk2_ardour/editor_actions.cc:115 msgid "Select All Before Playhead" msgstr "Выделить всё до указателя" -#: gtk2_ardour/editor_actions.cc:118 +#: gtk2_ardour/editor_actions.cc:117 #, fuzzy msgid "Select All Between Cursors" msgstr "Воспроизвести от курсора" -#: gtk2_ardour/editor_actions.cc:121 +#: gtk2_ardour/editor_actions.cc:120 #, fuzzy msgid "Select All in Punch Range" msgstr "Выбрать текущий интервал" -#: gtk2_ardour/editor_actions.cc:123 +#: gtk2_ardour/editor_actions.cc:122 msgid "Select All in Loop Range" msgstr "Выделить всё в закольцованной области" -#: gtk2_ardour/editor_actions.cc:126 +#: gtk2_ardour/editor_actions.cc:125 msgid "Jump Forward to Mark" msgstr "К следующей метке" -#: gtk2_ardour/editor_actions.cc:128 +#: gtk2_ardour/editor_actions.cc:127 msgid "Jump Backward to Mark" msgstr "К предыдущей метке" -#: gtk2_ardour/editor_actions.cc:130 +#: gtk2_ardour/editor_actions.cc:129 #, fuzzy msgid "Add Location from Playhead" msgstr "Воспроизвести от указателя" -#: gtk2_ardour/editor_actions.cc:133 +#: gtk2_ardour/editor_actions.cc:132 msgid "Nudge Forward" msgstr "Подвинуть вперёд" -#: gtk2_ardour/editor_actions.cc:135 +#: gtk2_ardour/editor_actions.cc:134 msgid "Nudge Next Forward" -msgstr "" +msgstr "Подвинуть следующую вперёд" -#: gtk2_ardour/editor_actions.cc:137 +#: gtk2_ardour/editor_actions.cc:136 msgid "Nudge Backward" msgstr "Подвинуть назад" -#: gtk2_ardour/editor_actions.cc:139 -#, fuzzy +#: gtk2_ardour/editor_actions.cc:138 msgid "Nudge Next Backward" -msgstr "Скрыть трек" +msgstr "Подвинуть следующую назад" -#: gtk2_ardour/editor_actions.cc:149 +#: gtk2_ardour/editor_actions.cc:148 msgid "Scroll Tracks Up" msgstr "Прокрутить дорожки вверх" -#: gtk2_ardour/editor_actions.cc:151 +#: gtk2_ardour/editor_actions.cc:150 msgid "Scroll Tracks Down" msgstr "Прокрутить дорожки вниз" -#: gtk2_ardour/editor_actions.cc:153 +#: gtk2_ardour/editor_actions.cc:152 #, fuzzy msgid "Step Tracks Up" msgstr "Скрыть трек" -#: gtk2_ardour/editor_actions.cc:155 +#: gtk2_ardour/editor_actions.cc:154 msgid "Step Tracks Down" msgstr "" -#: gtk2_ardour/editor_actions.cc:158 +#: gtk2_ardour/editor_actions.cc:157 msgid "Scroll Backward" msgstr "Прокрутить назад" -#: gtk2_ardour/editor_actions.cc:160 +#: gtk2_ardour/editor_actions.cc:159 msgid "Scroll Forward" msgstr "Прокрутить вперёд" -#: gtk2_ardour/editor_actions.cc:162 +#: gtk2_ardour/editor_actions.cc:161 msgid "goto" msgstr "Перейти" -#: gtk2_ardour/editor_actions.cc:164 +#: gtk2_ardour/editor_actions.cc:163 msgid "Center Playhead" msgstr "Указатель по центру" -#: gtk2_ardour/editor_actions.cc:166 +#: gtk2_ardour/editor_actions.cc:165 msgid "Center Edit Cursor" msgstr "Курсор редактора по центру" -#: gtk2_ardour/editor_actions.cc:168 +#: gtk2_ardour/editor_actions.cc:167 msgid "Playhead Forward" msgstr "Указатель вперёд" -#: gtk2_ardour/editor_actions.cc:170 +#: gtk2_ardour/editor_actions.cc:169 msgid "Playhead Backward" msgstr "Указатель назад" -#: gtk2_ardour/editor_actions.cc:172 +#: gtk2_ardour/editor_actions.cc:171 msgid "Playhead to Edit" msgstr "Указатель к курсору редактора" -#: gtk2_ardour/editor_actions.cc:174 +#: gtk2_ardour/editor_actions.cc:173 msgid "Edit to Playhead" msgstr "Курсор редактора к указателю" -#: gtk2_ardour/editor_actions.cc:177 +#: gtk2_ardour/editor_actions.cc:176 msgid "Align Regions Start" msgstr "Выровнять начало областей" -#: gtk2_ardour/editor_actions.cc:179 +#: gtk2_ardour/editor_actions.cc:178 #, fuzzy msgid "Align Regions Start Relative" msgstr "Выровнять относительно" -#: gtk2_ardour/editor_actions.cc:181 +#: gtk2_ardour/editor_actions.cc:180 msgid "Align Regions End" msgstr "Выровнять конец областей" -#: gtk2_ardour/editor_actions.cc:183 +#: gtk2_ardour/editor_actions.cc:182 #, fuzzy msgid "Align Regions End Relative" msgstr "Выровнять относительно" -#: gtk2_ardour/editor_actions.cc:186 +#: gtk2_ardour/editor_actions.cc:185 #, fuzzy msgid "Align Regions Sync" msgstr "прослушать область" -#: gtk2_ardour/editor_actions.cc:188 +#: gtk2_ardour/editor_actions.cc:187 #, fuzzy msgid "Align Regions Sync Relative" msgstr "Выровнять относительно" -#: gtk2_ardour/editor_actions.cc:191 +#: gtk2_ardour/editor_actions.cc:190 msgid "Audition at Mouse" msgstr "Контроль по курсору мыши" -#: gtk2_ardour/editor_actions.cc:193 +#: gtk2_ardour/editor_actions.cc:192 msgid "Brush at Mouse" msgstr "Кисточка по курсору" -#: gtk2_ardour/editor_actions.cc:195 +#: gtk2_ardour/editor_actions.cc:194 msgid "Set Edit Cursor" msgstr "Установить курсор редактора" -#: gtk2_ardour/editor_actions.cc:197 +#: gtk2_ardour/editor_actions.cc:196 msgid "Mute/Unmute Region" msgstr "Приглушить /вернуть звук области" -#: gtk2_ardour/editor_actions.cc:199 +#: gtk2_ardour/editor_actions.cc:198 msgid "Set Playhead" msgstr "Установить указатель" -#: gtk2_ardour/editor_actions.cc:201 +#: gtk2_ardour/editor_actions.cc:200 msgid "Split Region" msgstr "Разделить область" -#: gtk2_ardour/editor_actions.cc:203 +#: gtk2_ardour/editor_actions.cc:202 #, fuzzy msgid "Set Region Sync Position" msgstr "по расположению области" -#: gtk2_ardour/editor_actions.cc:211 +#: gtk2_ardour/editor_actions.cc:210 msgid "Export Session" msgstr "Экспортировать сессию" -#: gtk2_ardour/editor_actions.cc:213 +#: gtk2_ardour/editor_actions.cc:212 msgid "Export Range" msgstr "Экспортировать область" -#: gtk2_ardour/editor_actions.cc:219 gtk2_ardour/connection_editor.cc:56 +#: gtk2_ardour/editor_actions.cc:218 gtk2_ardour/connection_editor.cc:56 msgid "Delete" msgstr "Удалить" -#: gtk2_ardour/editor_actions.cc:225 +#: gtk2_ardour/editor_actions.cc:224 msgid "Duplicate Region" msgstr "Продублировать область" -#: gtk2_ardour/editor_actions.cc:227 +#: gtk2_ardour/editor_actions.cc:226 msgid "Duplicate Range" msgstr "Продублировать область" -#: gtk2_ardour/editor_actions.cc:229 +#: gtk2_ardour/editor_actions.cc:228 msgid "Insert Region" msgstr "Вставить область" -#: gtk2_ardour/editor_actions.cc:231 +#: gtk2_ardour/editor_actions.cc:230 msgid "Reverse Region" msgstr "Развернуть область" -#: gtk2_ardour/editor_actions.cc:233 +#: gtk2_ardour/editor_actions.cc:232 msgid "Normalize Region" msgstr "Нормализовать область" -#: gtk2_ardour/editor_actions.cc:235 +#: gtk2_ardour/editor_actions.cc:234 msgid "crop" msgstr "Обрезать" -#: gtk2_ardour/editor_actions.cc:237 +#: gtk2_ardour/editor_actions.cc:236 msgid "Insert Chunk" msgstr "Вставить фрагмент" -#: gtk2_ardour/editor_actions.cc:240 +#: gtk2_ardour/editor_actions.cc:239 msgid "Split at edit cursor" msgstr "Разделить по курсору редактора" -#: gtk2_ardour/editor_actions.cc:243 +#: gtk2_ardour/editor_actions.cc:242 msgid "Start Range" -msgstr "" +msgstr "Начать выделение" -#: gtk2_ardour/editor_actions.cc:245 +#: gtk2_ardour/editor_actions.cc:244 msgid "Finish Range" -msgstr "" +msgstr "Закончить выделение" -#: gtk2_ardour/editor_actions.cc:247 +#: gtk2_ardour/editor_actions.cc:246 msgid "Finish add Range" -msgstr "" +msgstr "Закончить добавку выделения" -#: gtk2_ardour/editor_actions.cc:250 +#: gtk2_ardour/editor_actions.cc:249 msgid "Extend Range to End of Region" -msgstr "" +msgstr "Расширить выделение до конца области" -#: gtk2_ardour/editor_actions.cc:252 -#, fuzzy +#: gtk2_ardour/editor_actions.cc:251 msgid "Extend Range to Start of Region" -msgstr "В начало сессии" +msgstr "Расширить выделение до начала области" -#: gtk2_ardour/editor_actions.cc:255 +#: gtk2_ardour/editor_actions.cc:254 msgid "Follow Playhead" msgstr "Следовать за указателем" -#: gtk2_ardour/editor_actions.cc:263 +#: gtk2_ardour/editor_actions.cc:262 msgid "Zoom Focus Left" msgstr "Фокус влево" -#: gtk2_ardour/editor_actions.cc:265 +#: gtk2_ardour/editor_actions.cc:264 msgid "Zoom Focus Right" msgstr "Фокус вправо" -#: gtk2_ardour/editor_actions.cc:267 +#: gtk2_ardour/editor_actions.cc:266 msgid "Zoom Focus Center" msgstr "Фокус по центру" -#: gtk2_ardour/editor_actions.cc:269 +#: gtk2_ardour/editor_actions.cc:268 msgid "Zoom Focus Playhead" msgstr "Фокус по указателю" -#: gtk2_ardour/editor_actions.cc:271 +#: gtk2_ardour/editor_actions.cc:270 msgid "Zoom Focus Edit" msgstr "Фокус по курсору" -#: gtk2_ardour/editor_actions.cc:277 +#: gtk2_ardour/editor_actions.cc:276 msgid "Object Tool" msgstr "Объект" -#: gtk2_ardour/editor_actions.cc:278 +#: gtk2_ardour/editor_actions.cc:277 msgid "Range Tool" -msgstr "Область" +msgstr "Выделение" -#: gtk2_ardour/editor_actions.cc:279 +#: gtk2_ardour/editor_actions.cc:278 msgid "Gain Tool" msgstr "Усиление" -#: gtk2_ardour/editor_actions.cc:280 +#: gtk2_ardour/editor_actions.cc:279 msgid "Zoom Tool" msgstr "Лупа" -#: gtk2_ardour/editor_actions.cc:281 +#: gtk2_ardour/editor_actions.cc:280 msgid "Timefx Tool" msgstr "Время" -#: gtk2_ardour/editor_actions.cc:286 +#: gtk2_ardour/editor_actions.cc:282 msgid "Snap To" -msgstr "Привязка" +msgstr "Прилипание" -#: gtk2_ardour/editor_actions.cc:288 +#: gtk2_ardour/editor_actions.cc:283 +msgid "Snap Mode" +msgstr "Режим привязки" + +#: gtk2_ardour/editor_actions.cc:292 msgid "Snap to frame" -msgstr "Привязка к выборке" +msgstr "Прилипание к выборке" -#: gtk2_ardour/editor_actions.cc:289 +#: gtk2_ardour/editor_actions.cc:293 msgid "Snap to cd frame" -msgstr "Привязка к выборке CD" +msgstr "Прилипание к выборке CD" -#: gtk2_ardour/editor_actions.cc:290 +#: gtk2_ardour/editor_actions.cc:294 msgid "Snap to SMPTE frame" -msgstr "Привязка к кадру SMPTE" +msgstr "Прилипание к кадру SMPTE" -#: gtk2_ardour/editor_actions.cc:291 +#: gtk2_ardour/editor_actions.cc:295 msgid "Snap to SMPTE seconds" -msgstr "Привязка к секундам SMPTE" +msgstr "Прилипание к секундам SMPTE" -#: gtk2_ardour/editor_actions.cc:292 +#: gtk2_ardour/editor_actions.cc:296 msgid "Snap to SMPTE minutes" -msgstr "Привязка к минутам SMPTE" +msgstr "Прилипание к минутам SMPTE" -#: gtk2_ardour/editor_actions.cc:293 +#: gtk2_ardour/editor_actions.cc:297 msgid "Snap to seconds" -msgstr "Привязка к секундам" +msgstr "Прилипание к секундам" -#: gtk2_ardour/editor_actions.cc:294 +#: gtk2_ardour/editor_actions.cc:298 msgid "Snap to minutes" -msgstr "Привязка к минутам" +msgstr "Прилипание к минутам" -#: gtk2_ardour/editor_actions.cc:295 +#: gtk2_ardour/editor_actions.cc:299 msgid "Snap to thirtyseconds" -msgstr "Привязка по 30 секундам" +msgstr "Прилипание по 30 секундам" -#: gtk2_ardour/editor_actions.cc:296 +#: gtk2_ardour/editor_actions.cc:300 msgid "Snap to asixteenthbeat" -msgstr "Привязка к 1/16" +msgstr "Прилипание к 1/16" -#: gtk2_ardour/editor_actions.cc:297 +#: gtk2_ardour/editor_actions.cc:301 msgid "Snap to eighths" -msgstr "Привязка к 1/8" +msgstr "Прилипание к 1/8" -#: gtk2_ardour/editor_actions.cc:298 +#: gtk2_ardour/editor_actions.cc:302 msgid "Snap to quarters" -msgstr "Привязка к 1/4" +msgstr "Прилипание к 1/4" -#: gtk2_ardour/editor_actions.cc:299 +#: gtk2_ardour/editor_actions.cc:303 msgid "Snap to thirds" -msgstr "Привязка к 1/3" +msgstr "Прилипание к 1/3" -#: gtk2_ardour/editor_actions.cc:300 +#: gtk2_ardour/editor_actions.cc:304 msgid "Snap to beat" -msgstr "Привязка к доле" +msgstr "Прилипание к доле" -#: gtk2_ardour/editor_actions.cc:301 +#: gtk2_ardour/editor_actions.cc:305 msgid "Snap to bar" -msgstr "Привязка к такту" +msgstr "Прилипание к такту" -#: gtk2_ardour/editor_actions.cc:302 +#: gtk2_ardour/editor_actions.cc:306 msgid "Snap to mark" -msgstr "Привязка к маркеру" +msgstr "Прилипание к маркеру" -#: gtk2_ardour/editor_actions.cc:303 +#: gtk2_ardour/editor_actions.cc:307 msgid "Snap to edit cursor" -msgstr "Привязка к курсору редактора" +msgstr "Прилипание к курсору редактора" -#: gtk2_ardour/editor_actions.cc:304 +#: gtk2_ardour/editor_actions.cc:308 msgid "Snap to region start" -msgstr "Привязка к началу области" +msgstr "Прилипание к началу области" -#: gtk2_ardour/editor_actions.cc:305 +#: gtk2_ardour/editor_actions.cc:309 msgid "Snap to region end" -msgstr "Привязка к концу области" +msgstr "Прилипание к концу области" -#: gtk2_ardour/editor_actions.cc:306 +#: gtk2_ardour/editor_actions.cc:310 msgid "Snap to region sync" msgstr "" -#: gtk2_ardour/editor_actions.cc:307 +#: gtk2_ardour/editor_actions.cc:311 msgid "Snap to region boundary" -msgstr "Привязка к границам области" +msgstr "Прилипание к границам области" -#: gtk2_ardour/editor_actions.cc:316 +#: gtk2_ardour/editor_actions.cc:320 msgid "Sort" msgstr "" -#: gtk2_ardour/editor_actions.cc:324 +#: gtk2_ardour/editor_actions.cc:328 msgid "Show all" msgstr "Показать всё" -#: gtk2_ardour/editor_actions.cc:325 +#: gtk2_ardour/editor_actions.cc:329 msgid "Show automatic regions" msgstr "Показать автомат. области" -#: gtk2_ardour/editor_actions.cc:327 +#: gtk2_ardour/editor_actions.cc:331 msgid "Ascending" msgstr "По возрастанию" -#: gtk2_ardour/editor_actions.cc:329 +#: gtk2_ardour/editor_actions.cc:333 msgid "Descending" msgstr "По убыванию" -#: gtk2_ardour/editor_actions.cc:332 +#: gtk2_ardour/editor_actions.cc:336 msgid "By Region Name" msgstr "По имени области" -#: gtk2_ardour/editor_actions.cc:334 +#: gtk2_ardour/editor_actions.cc:338 msgid "By Region Length" msgstr "По длительности области" -#: gtk2_ardour/editor_actions.cc:336 +#: gtk2_ardour/editor_actions.cc:340 msgid "By Region Position" msgstr "По расположению области" -#: gtk2_ardour/editor_actions.cc:338 +#: gtk2_ardour/editor_actions.cc:342 msgid "By Region Timestamp" msgstr "По времени создания области" -#: gtk2_ardour/editor_actions.cc:340 +#: gtk2_ardour/editor_actions.cc:344 msgid "By Region Start in File" msgstr "По началу области в файле" -#: gtk2_ardour/editor_actions.cc:342 +#: gtk2_ardour/editor_actions.cc:346 msgid "By Region End in File" msgstr "По концу области в файле" -#: gtk2_ardour/editor_actions.cc:344 +#: gtk2_ardour/editor_actions.cc:348 msgid "By Source File Name" msgstr "По имени исходного файла" -#: gtk2_ardour/editor_actions.cc:346 +#: gtk2_ardour/editor_actions.cc:350 msgid "By Source File Length" msgstr "По длительности исходного файла" -#: gtk2_ardour/editor_actions.cc:348 +#: gtk2_ardour/editor_actions.cc:352 msgid "By Source File Creation Date" msgstr "По дате создания исходного файла" -#: gtk2_ardour/editor_actions.cc:350 +#: gtk2_ardour/editor_actions.cc:354 msgid "By Source Filesystem" msgstr "По исходной файловой системе" -#: gtk2_ardour/editor_actions.cc:356 +#: gtk2_ardour/editor_actions.cc:360 msgid "Add External Audio" msgstr "Добавить внешний звуковой файл" -#: gtk2_ardour/editor_actions.cc:358 +#: gtk2_ardour/editor_actions.cc:362 msgid "as Region(s)" msgstr "как область(-и)" -#: gtk2_ardour/editor_actions.cc:360 +#: gtk2_ardour/editor_actions.cc:364 msgid "as Tracks" msgstr "как дорожки" -#: gtk2_ardour/editor_actions.cc:362 +#: gtk2_ardour/editor_actions.cc:366 msgid "as Tape Tracks" msgstr "" -#: gtk2_ardour/editor_actions.cc:364 +#: gtk2_ardour/editor_actions.cc:368 msgid "to Tracks" msgstr "в дорожки" -#: gtk2_ardour/editor_actions.cc:367 +#: gtk2_ardour/editor_actions.cc:371 msgid "Show Waveforms" msgstr "Показывать форму сигнала" -#: gtk2_ardour/editor_actions.cc:368 +#: gtk2_ardour/editor_actions.cc:372 msgid "Show Waveforms While Recording" msgstr "Показывать форму сигнала при записи" -#: gtk2_ardour/editor_actions.cc:369 +#: gtk2_ardour/editor_actions.cc:373 msgid "Show Measures" msgstr "Показывать линии тактов" -#: gtk2_ardour/editor_actions.cc:382 gtk2_ardour/editor_actions.cc:389 -msgid "Medium" -msgstr "Средне" - -#: gtk2_ardour/editor_actions.cc:384 -msgid "Faster" -msgstr "Быстрее" - -#: gtk2_ardour/editor_actions.cc:390 -msgid "Long" -msgstr "Долгая" - -#: gtk2_ardour/editor_actions.cc:394 -#, fuzzy +#: gtk2_ardour/editor_actions.cc:377 msgid "Later is Higher" -msgstr "Опустить область на один слой" +msgstr "Более поздние выше" -#: gtk2_ardour/editor_actions.cc:395 -#, fuzzy +#: gtk2_ardour/editor_actions.cc:378 msgid "Most Recently Moved/Added is Higher" -msgstr "Опустить область на один слой" +msgstr "Недавно смещённые/добавленные выше" -#: gtk2_ardour/editor_actions.cc:396 -#, fuzzy +#: gtk2_ardour/editor_actions.cc:379 msgid "Most Recently Added is Higher" -msgstr "Опустить область на один слой" +msgstr "Недавно добавленные выше" -#: gtk2_ardour/editor_actions.cc:400 +#: gtk2_ardour/editor_actions.cc:383 msgid "23.976" -msgstr "" +msgstr "23.976" -#: gtk2_ardour/editor_actions.cc:401 +#: gtk2_ardour/editor_actions.cc:384 msgid "24" -msgstr "" +msgstr "24" -#: gtk2_ardour/editor_actions.cc:402 +#: gtk2_ardour/editor_actions.cc:385 msgid "24.976" -msgstr "" +msgstr "24.976" -#: gtk2_ardour/editor_actions.cc:403 +#: gtk2_ardour/editor_actions.cc:386 msgid "25" -msgstr "" +msgstr "25" -#: gtk2_ardour/editor_actions.cc:404 +#: gtk2_ardour/editor_actions.cc:387 msgid "29.97" -msgstr "" +msgstr "29.97" -#: gtk2_ardour/editor_actions.cc:405 +#: gtk2_ardour/editor_actions.cc:388 msgid "29.97 drop" msgstr "" -#: gtk2_ardour/editor_actions.cc:406 +#: gtk2_ardour/editor_actions.cc:389 msgid "30" -msgstr "" +msgstr "30" -#: gtk2_ardour/editor_actions.cc:407 +#: gtk2_ardour/editor_actions.cc:390 msgid "30 drop" msgstr "" -#: gtk2_ardour/editor_actions.cc:408 +#: gtk2_ardour/editor_actions.cc:391 msgid "59.94" -msgstr "" +msgstr "59.94" -#: gtk2_ardour/editor_actions.cc:409 +#: gtk2_ardour/editor_actions.cc:392 msgid "60" -msgstr "" +msgstr "60" -#: gtk2_ardour/editor_actions.cc:413 -#, c-format +#: gtk2_ardour/editor_actions.cc:396 msgid "+4.1667% + 0.1%" -msgstr "" +msgstr "+4.1667% + 0.1%" -#: gtk2_ardour/editor_actions.cc:414 +#: gtk2_ardour/editor_actions.cc:397 msgid "+4.1667%" -msgstr "" +msgstr "+4.1667%" -#: gtk2_ardour/editor_actions.cc:415 -#, c-format +#: gtk2_ardour/editor_actions.cc:398 msgid "+4.1667% - 0.1%" -msgstr "" +msgstr "+4.1667% - 0.1%" -#: gtk2_ardour/editor_actions.cc:416 +#: gtk2_ardour/editor_actions.cc:399 msgid "+ 0.1%" -msgstr "" +msgstr "+ 0.1%" -#: gtk2_ardour/editor_actions.cc:418 +#: gtk2_ardour/editor_actions.cc:401 msgid "- 0.1%" -msgstr "" +msgstr "- 0.1%" -#: gtk2_ardour/editor_actions.cc:419 -#, c-format +#: gtk2_ardour/editor_actions.cc:402 msgid "-4.1667% + 0.1%" -msgstr "" +msgstr "-4.1667% + 0.1%" -#: gtk2_ardour/editor_actions.cc:420 +#: gtk2_ardour/editor_actions.cc:403 msgid "-4.1667%" -msgstr "" +msgstr "-4.1667%" -#: gtk2_ardour/editor_actions.cc:421 -#, c-format +#: gtk2_ardour/editor_actions.cc:404 msgid "-4.1667% - 0.1%" +msgstr "-4.1667% - 0.1%" + +#: gtk2_ardour/editor_actions.cc:408 +msgid "80 per frame" +msgstr "800 на выборку" + +#: gtk2_ardour/editor_actions.cc:409 +msgid "100 per frame" +msgstr "100 на выборку" + +#: gtk2_ardour/editor_actions.cc:712 gtk2_ardour/editor_actions.cc:757 +#: gtk2_ardour/editor_actions.cc:768 gtk2_ardour/editor_actions.cc:812 +#: gtk2_ardour/editor_actions.cc:822 +#, fuzzy +msgid "programming error: %1: %2" +msgstr "ошибка в программе: " + +#: gtk2_ardour/editor_actions.cc:723 gtk2_ardour/editor_actions.cc:951 +#: gtk2_ardour/editor_actions.cc:964 gtk2_ardour/editor_actions.cc:1028 +#: gtk2_ardour/sfdb_ui.cc:395 +#, fuzzy +msgid "programming error: %1" +msgstr "ошибка в программе: " + +#: gtk2_ardour/editor_actions.cc:983 +msgid "Configuraton is using unhandled subframes per frame value: %1" msgstr "" -#: gtk2_ardour/editor_audio_import.cc:75 +#: gtk2_ardour/editor_audio_import.cc:76 #, fuzzy msgid "You can't import or embed an audiofile until you have a session loaded." msgstr "Вы не можете импортировать аудиофайл пока сессия не загружена." -#: gtk2_ardour/editor_audio_import.cc:80 -#, fuzzy +#: gtk2_ardour/editor_audio_import.cc:81 msgid "Add existing audio to session" -msgstr "использовать имеющийся шаблон" +msgstr "Добавить существующий файл в сессию" + +#: gtk2_ardour/editor_audio_import.cc:166 +msgid "Import as a %1 region" +msgstr "Импортировать как %1 область" + +#: gtk2_ardour/editor_audio_import.cc:167 +#, fuzzy +msgid "multichannel" +msgstr "отмена" + +#: gtk2_ardour/editor_audio_import.cc:167 gtk2_ardour/export_dialog.cc:84 +msgid "stereo" +msgstr "стерео" + +#: gtk2_ardour/editor_audio_import.cc:168 +msgid "Import as multiple regions" +msgstr "Импортировать как несколько областей" + +#: gtk2_ardour/editor_audio_import.cc:170 +msgid "" +"Paired files detected (%1, %2 ...).\n" +"Do you want to:" +msgstr "" -#: gtk2_ardour/editor_audio_import.cc:145 -#, fuzzy +#: gtk2_ardour/editor_audio_import.cc:216 msgid "ardour: importing %1" -msgstr "ardour: экспорт" +msgstr "ardour: экспортируется %1" -#: gtk2_ardour/editor_audio_import.cc:149 +#: gtk2_ardour/editor_audio_import.cc:220 msgid "Cancel Import" msgstr "Отменить импорт" -#: gtk2_ardour/editor_audio_import.cc:227 +#: gtk2_ardour/editor_audio_import.cc:303 #, fuzzy msgid "Editor: cannot open file \"%1\", (%2)" msgstr "Редактор: не удалось открыть файл \"%1\" (%2)" -#: gtk2_ardour/editor_audio_import.cc:235 -#, fuzzy +#: gtk2_ardour/editor_audio_import.cc:311 msgid "Cancel entire import" -msgstr "Отменить импорт" +msgstr "Отменить весь импорт" -#: gtk2_ardour/editor_audio_import.cc:236 -#, fuzzy +#: gtk2_ardour/editor_audio_import.cc:312 msgid "Don't embed it" -msgstr "Отмена" +msgstr "Не встраивать" -#: gtk2_ardour/editor_audio_import.cc:237 +#: gtk2_ardour/editor_audio_import.cc:313 msgid "Embed all without questions" -msgstr "" +msgstr "Встроить без лишних вопросов" -#: gtk2_ardour/editor_audio_import.cc:242 +#: gtk2_ardour/editor_audio_import.cc:318 msgid "Embed it anyway" -msgstr "" +msgstr "Всё равно встроить" -#: gtk2_ardour/editor_audio_import.cc:245 +#: gtk2_ardour/editor_audio_import.cc:321 #, fuzzy msgid "" "%1\n" @@ -3359,11 +3430,11 @@ msgstr "" "Выбранный аудиофайл имеет частоту дискретизации данных\n" "отличную от текущей сессии!" -#: gtk2_ardour/editor_audio_import.cc:278 +#: gtk2_ardour/editor_audio_import.cc:360 msgid "could not open %1" msgstr "не удалось открыть %1" -#: gtk2_ardour/editor_audio_import.cc:323 +#: gtk2_ardour/editor_audio_import.cc:407 #, fuzzy msgid "insert sndfile" msgstr "Вставить внешний аудиофайл" @@ -3372,27 +3443,26 @@ msgstr "Вставить внешний аудиофайл" msgid "VerboseCanvasCursor" msgstr "" -#: gtk2_ardour/editor_edit_groups.cc:53 gtk2_ardour/mixer_ui.cc:754 +#: gtk2_ardour/editor_edit_groups.cc:53 gtk2_ardour/mixer_ui.cc:751 #, fuzzy msgid "Activate All" msgstr "Активировать" -#: gtk2_ardour/editor_edit_groups.cc:54 gtk2_ardour/mixer_ui.cc:755 +#: gtk2_ardour/editor_edit_groups.cc:54 gtk2_ardour/mixer_ui.cc:752 #, fuzzy msgid "Disable All" msgstr "Отсоединить" -#: gtk2_ardour/editor_edit_groups.cc:56 gtk2_ardour/mixer_ui.cc:757 +#: gtk2_ardour/editor_edit_groups.cc:56 gtk2_ardour/mixer_ui.cc:754 #, fuzzy msgid "Add group" msgstr "Нет группы" -#: gtk2_ardour/editor_edit_groups.cc:229 gtk2_ardour/mixer_ui.cc:988 -#, fuzzy +#: gtk2_ardour/editor_edit_groups.cc:229 gtk2_ardour/mixer_ui.cc:985 msgid "unnamed" -msgstr "Переименовать" +msgstr "безымянный" -#: gtk2_ardour/editor_edit_groups.cc:258 gtk2_ardour/mixer_ui.cc:852 +#: gtk2_ardour/editor_edit_groups.cc:258 gtk2_ardour/mixer_ui.cc:849 msgid "-all-" msgstr "-все-" @@ -3410,11 +3480,11 @@ msgid "" "Create 1 or more ranges by dragging the mouse in the range bar" msgstr "" -#: gtk2_ardour/editor_imageframe.cc:625 gtk2_ardour/editor_imageframe.cc:655 +#: gtk2_ardour/editor_imageframe.cc:623 gtk2_ardour/editor_imageframe.cc:653 msgid "programming error: no ImageFrameView selected" msgstr "ошибка в программе: no ImageFrameView selected" -#: gtk2_ardour/editor_imageframe.cc:848 gtk2_ardour/editor_imageframe.cc:870 +#: gtk2_ardour/editor_imageframe.cc:846 gtk2_ardour/editor_imageframe.cc:868 msgid "programming error: no MarkerView selected" msgstr "ошибка в программе: no MarkerView selected" @@ -3428,20 +3498,20 @@ msgstr "отключить воспроизведение этой област msgid "keyboard selection" msgstr "Выделить по интервалу" -#: gtk2_ardour/editor_markers.cc:293 gtk2_ardour/editor_ops.cc:1297 -#: gtk2_ardour/editor_ops.cc:1311 gtk2_ardour/editor_ops.cc:1330 +#: gtk2_ardour/editor_markers.cc:293 gtk2_ardour/editor_ops.cc:1213 +#: gtk2_ardour/editor_ops.cc:1227 gtk2_ardour/editor_ops.cc:1246 #: gtk2_ardour/location_ui.cc:776 msgid "add marker" msgstr "добавить маркер" #: gtk2_ardour/editor_markers.cc:309 gtk2_ardour/editor_markers.cc:383 -#: gtk2_ardour/editor_markers.cc:555 gtk2_ardour/editor_markers.cc:573 -#: gtk2_ardour/editor_markers.cc:592 gtk2_ardour/editor_markers.cc:611 -#: gtk2_ardour/editor_markers.cc:641 gtk2_ardour/editor_markers.cc:669 -#: gtk2_ardour/editor_markers.cc:697 gtk2_ardour/editor_markers.cc:735 -#: gtk2_ardour/editor_markers.cc:762 gtk2_ardour/editor_markers.cc:785 -#: gtk2_ardour/editor_markers.cc:804 gtk2_ardour/editor_mouse.cc:2027 -#: gtk2_ardour/editor_mouse.cc:4322 +#: gtk2_ardour/editor_markers.cc:556 gtk2_ardour/editor_markers.cc:574 +#: gtk2_ardour/editor_markers.cc:593 gtk2_ardour/editor_markers.cc:612 +#: gtk2_ardour/editor_markers.cc:642 gtk2_ardour/editor_markers.cc:670 +#: gtk2_ardour/editor_markers.cc:698 gtk2_ardour/editor_markers.cc:737 +#: gtk2_ardour/editor_markers.cc:762 gtk2_ardour/editor_markers.cc:789 +#: gtk2_ardour/editor_markers.cc:812 gtk2_ardour/editor_markers.cc:831 +#: gtk2_ardour/editor_mouse.cc:2038 gtk2_ardour/editor_mouse.cc:4356 msgid "programming error: marker canvas item has no marker object pointer!" msgstr "ошибка в программе: marker canvas item has no marker object pointer!" @@ -3474,89 +3544,90 @@ msgstr "Скрыть маркер" msgid "Remove Mark" msgstr "Удалить маркер" -#: gtk2_ardour/editor_markers.cc:482 gtk2_ardour/editor_markers.cc:538 +#: gtk2_ardour/editor_markers.cc:482 gtk2_ardour/editor_markers.cc:539 #, fuzzy msgid "Locate to Range Mark" msgstr "Маркеры интервалов" -#: gtk2_ardour/editor_markers.cc:483 gtk2_ardour/editor_markers.cc:539 +#: gtk2_ardour/editor_markers.cc:483 gtk2_ardour/editor_markers.cc:540 #, fuzzy msgid "Play from Range Mark" msgstr "Воспроизвести \"кольцо\"" #: gtk2_ardour/editor_markers.cc:484 #, fuzzy +msgid "Play Range" +msgstr "Воспроизвести \"кольцо\"" + +#: gtk2_ardour/editor_markers.cc:485 +#, fuzzy msgid "Loop Range" msgstr "Воспроизвести \"кольцо\"" -#: gtk2_ardour/editor_markers.cc:485 gtk2_ardour/editor_markers.cc:540 +#: gtk2_ardour/editor_markers.cc:486 gtk2_ardour/editor_markers.cc:541 #, fuzzy msgid "Set Range Mark from Playhead" msgstr "Воспроизвести от указателя" -#: gtk2_ardour/editor_markers.cc:486 gtk2_ardour/editor_markers.cc:541 +#: gtk2_ardour/editor_markers.cc:487 gtk2_ardour/editor_markers.cc:542 #, fuzzy msgid "Set Range from Range Selection" msgstr "Воспроизвести выделенное" -#: gtk2_ardour/editor_markers.cc:490 -#, fuzzy +#: gtk2_ardour/editor_markers.cc:491 msgid "Rename Range" -msgstr "Переименовать" +msgstr "Переименовать область" -#: gtk2_ardour/editor_markers.cc:491 gtk2_ardour/editor_markers.cc:543 +#: gtk2_ardour/editor_markers.cc:492 gtk2_ardour/editor_markers.cc:544 #, fuzzy msgid "Hide Range" msgstr "выделять" -#: gtk2_ardour/editor_markers.cc:492 +#: gtk2_ardour/editor_markers.cc:493 #, fuzzy msgid "Remove Range" msgstr "Удалить поле" -#: gtk2_ardour/editor_markers.cc:496 gtk2_ardour/editor_markers.cc:545 +#: gtk2_ardour/editor_markers.cc:497 gtk2_ardour/editor_markers.cc:546 #, fuzzy msgid "Separate Regions in Range" msgstr "Создать область из выделенного" -#: gtk2_ardour/editor_markers.cc:497 gtk2_ardour/editor_markers.cc:546 +#: gtk2_ardour/editor_markers.cc:498 gtk2_ardour/editor_markers.cc:547 #, fuzzy msgid "Select All in Range" msgstr "Выделить всё" -#: gtk2_ardour/editor_markers.cc:523 +#: gtk2_ardour/editor_markers.cc:524 msgid "Set Loop Range" msgstr "" -#: gtk2_ardour/editor_markers.cc:524 +#: gtk2_ardour/editor_markers.cc:525 msgid "Set Punch Range" msgstr "" -#: gtk2_ardour/editor_markers.cc:818 -#, fuzzy +#: gtk2_ardour/editor_markers.cc:845 msgid "New Name:" -msgstr "новое имя: " +msgstr "Новое имя: " -#: gtk2_ardour/editor_markers.cc:821 +#: gtk2_ardour/editor_markers.cc:848 msgid "ardour: rename mark" msgstr "ardour: переименовать маркер" -#: gtk2_ardour/editor_markers.cc:823 -#, fuzzy +#: gtk2_ardour/editor_markers.cc:850 msgid "ardour: rename range" msgstr "ardour: переименовать область" -#: gtk2_ardour/editor_markers.cc:843 -#, fuzzy +#: gtk2_ardour/editor_markers.cc:870 msgid "rename marker" -msgstr "добавить маркер" +msgstr "переименовать маркер" -#: gtk2_ardour/editor_markers.cc:869 +#: gtk2_ardour/editor_markers.cc:896 #, fuzzy msgid "set loop range" msgstr "выбрать окно просмотра" -#: gtk2_ardour/editor_markers.cc:897 +#: gtk2_ardour/editor_markers.cc:924 #, fuzzy msgid "set punch range" msgstr "Выбрать текущий интервал" @@ -3570,72 +3641,72 @@ msgstr "Editor::event_frame() used on unhandled event type %1" msgid "select on click" msgstr "Использовать как щелчок метронома" -#: gtk2_ardour/editor_mouse.cc:1596 +#: gtk2_ardour/editor_mouse.cc:1599 msgid "programming error: start_grab called without drag item" msgstr "ошибка в программе: start_grab called without drag item" -#: gtk2_ardour/editor_mouse.cc:1820 +#: gtk2_ardour/editor_mouse.cc:1823 #, fuzzy msgid "change fade in length" msgstr "редактировать введение в уровень" -#: gtk2_ardour/editor_mouse.cc:1841 +#: gtk2_ardour/editor_mouse.cc:1845 #, fuzzy msgid "programming error: fade out canvas item has no regionview data pointer!" msgstr "ошибка в программе: cursor canvas item has no cursor data pointer!" -#: gtk2_ardour/editor_mouse.cc:1915 +#: gtk2_ardour/editor_mouse.cc:1919 #, fuzzy msgid "change fade out length" msgstr "редактировать сведение в ноль" -#: gtk2_ardour/editor_mouse.cc:1937 +#: gtk2_ardour/editor_mouse.cc:1942 msgid "programming error: cursor canvas item has no cursor data pointer!" msgstr "ошибка в программе: cursor canvas item has no cursor data pointer!" -#: gtk2_ardour/editor_mouse.cc:2162 +#: gtk2_ardour/editor_mouse.cc:2173 #, fuzzy msgid "move marker" msgstr "Удалить поле" -#: gtk2_ardour/editor_mouse.cc:2190 gtk2_ardour/editor_mouse.cc:2221 -#: gtk2_ardour/editor_tempodisplay.cc:490 +#: gtk2_ardour/editor_mouse.cc:2201 gtk2_ardour/editor_mouse.cc:2232 +#: gtk2_ardour/editor_tempodisplay.cc:492 msgid "programming error: meter marker canvas item has no marker object pointer!" msgstr "ошибка в программе: meter marker canvas item has no marker object pointer!" -#: gtk2_ardour/editor_mouse.cc:2289 +#: gtk2_ardour/editor_mouse.cc:2300 #, fuzzy msgid "copy meter mark" msgstr "добавить маркер" -#: gtk2_ardour/editor_mouse.cc:2300 +#: gtk2_ardour/editor_mouse.cc:2311 msgid "move meter mark" msgstr "" -#: gtk2_ardour/editor_mouse.cc:2316 gtk2_ardour/editor_mouse.cc:2349 -#: gtk2_ardour/editor_tempodisplay.cc:353 -#: gtk2_ardour/editor_tempodisplay.cc:437 -#: gtk2_ardour/editor_tempodisplay.cc:456 +#: gtk2_ardour/editor_mouse.cc:2327 gtk2_ardour/editor_mouse.cc:2360 +#: gtk2_ardour/editor_tempodisplay.cc:355 +#: gtk2_ardour/editor_tempodisplay.cc:439 +#: gtk2_ardour/editor_tempodisplay.cc:458 msgid "programming error: tempo marker canvas item has no marker object pointer!" msgstr "ошибка в программе: tempo marker canvas item has no marker object pointer!" -#: gtk2_ardour/editor_mouse.cc:2321 gtk2_ardour/editor_mouse.cc:2354 -#: gtk2_ardour/editor_tempodisplay.cc:358 -#: gtk2_ardour/editor_tempodisplay.cc:442 +#: gtk2_ardour/editor_mouse.cc:2332 gtk2_ardour/editor_mouse.cc:2365 +#: gtk2_ardour/editor_tempodisplay.cc:360 +#: gtk2_ardour/editor_tempodisplay.cc:444 msgid "programming error: marker for tempo is not a tempo marker!" msgstr "ошибка в программе: marker for tempo is not a tempo marker!" -#: gtk2_ardour/editor_mouse.cc:2421 +#: gtk2_ardour/editor_mouse.cc:2432 #, fuzzy msgid "copy tempo mark" msgstr "добавить маркер" -#: gtk2_ardour/editor_mouse.cc:2432 +#: gtk2_ardour/editor_mouse.cc:2443 msgid "move tempo mark" msgstr "" -#: gtk2_ardour/editor_mouse.cc:2447 gtk2_ardour/editor_mouse.cc:2466 -#: gtk2_ardour/editor_mouse.cc:2479 +#: gtk2_ardour/editor_mouse.cc:2458 gtk2_ardour/editor_mouse.cc:2477 +#: gtk2_ardour/editor_mouse.cc:2490 msgid "" "programming error: control point canvas item has no control point object " "pointer!" @@ -3643,344 +3714,344 @@ msgstr "" "ошибка в программе: control point canvas item has no control point object " "pointer!" -#: gtk2_ardour/editor_mouse.cc:2585 +#: gtk2_ardour/editor_mouse.cc:2596 msgid "programming error: line canvas item has no line pointer!" msgstr "ошибка в программе: line canvas item has no line pointer!" -#: gtk2_ardour/editor_mouse.cc:2694 +#: gtk2_ardour/editor_mouse.cc:2705 #, fuzzy msgid "move region(s)" msgstr "Создать область" -#: gtk2_ardour/editor_mouse.cc:2757 +#: gtk2_ardour/editor_mouse.cc:2771 #, fuzzy msgid "Drag region brush" msgstr "прослушать область" -#: gtk2_ardour/editor_mouse.cc:2781 +#: gtk2_ardour/editor_mouse.cc:2793 msgid "Drag region copy" msgstr "" -#: gtk2_ardour/editor_mouse.cc:3641 +#: gtk2_ardour/editor_mouse.cc:3673 #, fuzzy msgid "selection grab" msgstr "Выделенное" -#: gtk2_ardour/editor_mouse.cc:3683 +#: gtk2_ardour/editor_mouse.cc:3715 #, fuzzy msgid "cancel selection" msgstr "Воспроизвести выделенное" -#: gtk2_ardour/editor_mouse.cc:3793 +#: gtk2_ardour/editor_mouse.cc:3825 #, fuzzy msgid "range selection" msgstr "Воспроизвести выделенное" -#: gtk2_ardour/editor_mouse.cc:3809 +#: gtk2_ardour/editor_mouse.cc:3841 #, fuzzy msgid "trim selection start" msgstr "Выделить по интервалу" -#: gtk2_ardour/editor_mouse.cc:3825 +#: gtk2_ardour/editor_mouse.cc:3857 #, fuzzy msgid "trim selection end" msgstr "Выделить по интервалу" -#: gtk2_ardour/editor_mouse.cc:3842 +#: gtk2_ardour/editor_mouse.cc:3874 #, fuzzy msgid "move selection" msgstr "Свести выделенное" -#: gtk2_ardour/editor_mouse.cc:4231 +#: gtk2_ardour/editor_mouse.cc:4265 #, fuzzy msgid "Start point trim" msgstr "От начала до курсора" -#: gtk2_ardour/editor_mouse.cc:4263 +#: gtk2_ardour/editor_mouse.cc:4297 msgid "End point trim" msgstr "" -#: gtk2_ardour/editor_mouse.cc:4306 +#: gtk2_ardour/editor_mouse.cc:4340 msgid "trimmed region" msgstr "" -#: gtk2_ardour/editor_mouse.cc:4448 +#: gtk2_ardour/editor_mouse.cc:4482 msgid "new range marker" msgstr "Новый маркер области" -#: gtk2_ardour/editor_mouse.cc:4692 +#: gtk2_ardour/editor_mouse.cc:4726 #, fuzzy msgid "select regions" msgstr "Воспроизвести выделенную область" -#: gtk2_ardour/editor_mouse.cc:4721 +#: gtk2_ardour/editor_mouse.cc:4755 msgid "Name for region:" msgstr "Имя области: " -#: gtk2_ardour/editor_mouse.cc:4785 +#: gtk2_ardour/editor_mouse.cc:4819 #, fuzzy msgid "timestretch" msgstr "ardour: эффект timestretch" -#: gtk2_ardour/editor_ops.cc:196 +#: gtk2_ardour/editor_ops.cc:115 #, fuzzy msgid "split" msgstr "Склеить" -#: gtk2_ardour/editor_ops.cc:235 +#: gtk2_ardour/editor_ops.cc:154 #, fuzzy msgid "remove region" msgstr "Создать область" -#: gtk2_ardour/editor_ops.cc:255 +#: gtk2_ardour/editor_ops.cc:174 msgid "" " This is destructive, will possibly delete audio files\n" "It cannot be undone\n" "Do you really want to destroy %1 ?" msgstr "" -#: gtk2_ardour/editor_ops.cc:259 +#: gtk2_ardour/editor_ops.cc:178 #, fuzzy msgid "these regions" msgstr "Воспроизвести выделенную область" -#: gtk2_ardour/editor_ops.cc:259 +#: gtk2_ardour/editor_ops.cc:178 #, fuzzy msgid "this region" msgstr "отключить воспроизведение этой области" -#: gtk2_ardour/editor_ops.cc:261 gtk2_ardour/editor_ops.cc:3364 -#: gtk2_ardour/route_ui.cc:715 gtk2_ardour/visual_time_axis.cc:278 +#: gtk2_ardour/editor_ops.cc:180 gtk2_ardour/editor_ops.cc:3300 +#: gtk2_ardour/route_ui.cc:736 gtk2_ardour/visual_time_axis.cc:283 msgid "No, do nothing." msgstr "Нет" -#: gtk2_ardour/editor_ops.cc:264 +#: gtk2_ardour/editor_ops.cc:183 #, fuzzy msgid "Yes, destroy them." msgstr "Да" -#: gtk2_ardour/editor_ops.cc:266 gtk2_ardour/editor_ops.cc:3365 +#: gtk2_ardour/editor_ops.cc:185 gtk2_ardour/editor_ops.cc:3301 msgid "Yes, destroy it." msgstr "Да" -#: gtk2_ardour/editor_ops.cc:355 gtk2_ardour/editor_ops.cc:383 +#: gtk2_ardour/editor_ops.cc:271 gtk2_ardour/editor_ops.cc:299 #, fuzzy msgid "extend selection" msgstr "Выделить по интервалу" -#: gtk2_ardour/editor_ops.cc:399 gtk2_ardour/editor_ops.cc:434 -#: gtk2_ardour/editor_ops.cc:479 gtk2_ardour/editor_ops.cc:506 +#: gtk2_ardour/editor_ops.cc:315 gtk2_ardour/editor_ops.cc:350 +#: gtk2_ardour/editor_ops.cc:395 gtk2_ardour/editor_ops.cc:422 msgid "nudge forward" msgstr "" -#: gtk2_ardour/editor_ops.cc:571 +#: gtk2_ardour/editor_ops.cc:487 msgid "build_region_boundary_cache called with snap_type = %1" msgstr "build_region_boundary_cache called with snap_type = %1" -#: gtk2_ardour/editor_ops.cc:1430 +#: gtk2_ardour/editor_ops.cc:1350 #, fuzzy msgid "select all within" msgstr "Выделить всё" -#: gtk2_ardour/editor_ops.cc:1462 +#: gtk2_ardour/editor_ops.cc:1383 #, fuzzy msgid "set selection from region" msgstr "Создать область из выделенного" -#: gtk2_ardour/editor_ops.cc:1495 +#: gtk2_ardour/editor_ops.cc:1416 #, fuzzy msgid "set selection from range" msgstr "Создать область из выделенного" -#: gtk2_ardour/editor_ops.cc:1525 +#: gtk2_ardour/editor_ops.cc:1446 #, fuzzy msgid "select all from range" msgstr "выбрать окно просмотра" -#: gtk2_ardour/editor_ops.cc:1547 +#: gtk2_ardour/editor_ops.cc:1468 #, fuzzy msgid "select all from punch" msgstr "Выделить всё" -#: gtk2_ardour/editor_ops.cc:1569 +#: gtk2_ardour/editor_ops.cc:1490 #, fuzzy msgid "select all from loop" msgstr "Выделить всё" -#: gtk2_ardour/editor_ops.cc:1583 +#: gtk2_ardour/editor_ops.cc:1504 #, fuzzy msgid "select all after cursor" msgstr "От начала до курсора" -#: gtk2_ardour/editor_ops.cc:1588 +#: gtk2_ardour/editor_ops.cc:1509 #, fuzzy msgid "select all before cursor" msgstr "Воспроизвести от курсора" -#: gtk2_ardour/editor_ops.cc:1618 +#: gtk2_ardour/editor_ops.cc:1539 #, fuzzy msgid "select all between cursors" msgstr "Воспроизвести от курсора" -#: gtk2_ardour/editor_ops.cc:1749 +#: gtk2_ardour/editor_ops.cc:1670 msgid "clear markers" msgstr "очистить маркеры" -#: gtk2_ardour/editor_ops.cc:1762 +#: gtk2_ardour/editor_ops.cc:1683 msgid "clear ranges" msgstr "" -#: gtk2_ardour/editor_ops.cc:1782 +#: gtk2_ardour/editor_ops.cc:1703 msgid "clear locations" msgstr "очистить интервалы" -#: gtk2_ardour/editor_ops.cc:1833 +#: gtk2_ardour/editor_ops.cc:1756 #, fuzzy msgid "insert dragged region" msgstr "Вставить область" -#: gtk2_ardour/editor_ops.cc:1869 +#: gtk2_ardour/editor_ops.cc:1803 #, fuzzy msgid "insert region" msgstr "Вставить область" -#: gtk2_ardour/editor_ops.cc:2060 gtk2_ardour/io_selector.cc:60 -#: gtk2_ardour/io_selector.cc:794 gtk2_ardour/connection_editor.cc:86 +#: gtk2_ardour/editor_ops.cc:1978 gtk2_ardour/io_selector.cc:60 +#: gtk2_ardour/io_selector.cc:748 gtk2_ardour/connection_editor.cc:86 msgid "OK" msgstr "ОК" -#: gtk2_ardour/editor_ops.cc:2067 +#: gtk2_ardour/editor_ops.cc:1985 msgid "ardour: rename region" msgstr "ardour: переименовать область" -#: gtk2_ardour/editor_ops.cc:2292 gtk2_ardour/editor_ops.cc:2345 +#: gtk2_ardour/editor_ops.cc:2210 gtk2_ardour/editor_ops.cc:2263 #, fuzzy msgid "separate" msgstr "Разделить область" -#: gtk2_ardour/editor_ops.cc:2410 +#: gtk2_ardour/editor_ops.cc:2328 #, fuzzy msgid "trim to selection" msgstr "Выделить по интервалу" -#: gtk2_ardour/editor_ops.cc:2451 +#: gtk2_ardour/editor_ops.cc:2369 msgid "region fill" msgstr "" -#: gtk2_ardour/editor_ops.cc:2515 +#: gtk2_ardour/editor_ops.cc:2433 #, fuzzy msgid "fill selection" msgstr "Закольцевать выделенное" -#: gtk2_ardour/editor_ops.cc:2536 +#: gtk2_ardour/editor_ops.cc:2454 #, fuzzy msgid "Programming error. that region doesn't cover that position" msgstr "ошибка в программе: location/marker map does not contain location!" -#: gtk2_ardour/editor_ops.cc:2539 +#: gtk2_ardour/editor_ops.cc:2457 #, fuzzy msgid "set region sync position" msgstr "Области/положение" -#: gtk2_ardour/editor_ops.cc:2555 +#: gtk2_ardour/editor_ops.cc:2473 msgid "Place the edit cursor at the desired sync point" msgstr "Поместите курсор на точку синхронизации" -#: gtk2_ardour/editor_ops.cc:2560 +#: gtk2_ardour/editor_ops.cc:2478 #, fuzzy msgid "set sync from edit cursor" msgstr "Воспроизвести от курсора" -#: gtk2_ardour/editor_ops.cc:2573 +#: gtk2_ardour/editor_ops.cc:2491 msgid "remove sync" msgstr "" -#: gtk2_ardour/editor_ops.cc:2588 +#: gtk2_ardour/editor_ops.cc:2506 msgid "naturalize" msgstr "" -#: gtk2_ardour/editor_ops.cc:2653 +#: gtk2_ardour/editor_ops.cc:2571 #, fuzzy msgid "align selection (relative)" msgstr "Выровнять относительно" -#: gtk2_ardour/editor_ops.cc:2682 +#: gtk2_ardour/editor_ops.cc:2600 #, fuzzy msgid "align selection" msgstr "Свести выделенное" -#: gtk2_ardour/editor_ops.cc:2694 +#: gtk2_ardour/editor_ops.cc:2612 #, fuzzy msgid "align region" msgstr "прослушать область" -#: gtk2_ardour/editor_ops.cc:2742 gtk2_ardour/editor_ops.cc:2768 +#: gtk2_ardour/editor_ops.cc:2660 gtk2_ardour/editor_ops.cc:2686 #, fuzzy msgid "trim to edit" msgstr "От начала до курсора" -#: gtk2_ardour/editor_ops.cc:2820 +#: gtk2_ardour/editor_ops.cc:2738 #, fuzzy msgid "ardour: freeze" msgstr "ardour: " -#: gtk2_ardour/editor_ops.cc:2825 +#: gtk2_ardour/editor_ops.cc:2743 #, fuzzy msgid "Cancel Freeze" msgstr "Отмена" -#: gtk2_ardour/editor_ops.cc:2862 +#: gtk2_ardour/editor_ops.cc:2780 #, fuzzy msgid "bounce range" msgstr "Выбрать текущий интервал" -#: gtk2_ardour/editor_ops.cc:2916 +#: gtk2_ardour/editor_ops.cc:2834 msgid "cut" msgstr "вырезать" -#: gtk2_ardour/editor_ops.cc:2919 +#: gtk2_ardour/editor_ops.cc:2837 msgid "copy" msgstr "копировать" -#: gtk2_ardour/editor_ops.cc:2932 +#: gtk2_ardour/editor_ops.cc:2850 msgid " objects" msgstr "объекты" -#: gtk2_ardour/editor_ops.cc:2958 +#: gtk2_ardour/editor_ops.cc:2876 msgid " range" msgstr "" -#: gtk2_ardour/editor_ops.cc:3121 +#: gtk2_ardour/editor_ops.cc:3057 #, fuzzy msgid "paste" msgstr "Вставить" -#: gtk2_ardour/editor_ops.cc:3159 +#: gtk2_ardour/editor_ops.cc:3095 #, fuzzy msgid "paste chunk" msgstr "Создать фрагмент" -#: gtk2_ardour/editor_ops.cc:3200 +#: gtk2_ardour/editor_ops.cc:3136 #, fuzzy msgid "duplicate region" msgstr "Разделить область" -#: gtk2_ardour/editor_ops.cc:3245 +#: gtk2_ardour/editor_ops.cc:3181 #, fuzzy msgid "duplicate selection" msgstr "Свести выделенное" -#: gtk2_ardour/editor_ops.cc:3303 +#: gtk2_ardour/editor_ops.cc:3239 #, fuzzy msgid "clear playlist" msgstr "Имя снимка" -#: gtk2_ardour/editor_ops.cc:3333 +#: gtk2_ardour/editor_ops.cc:3269 #, fuzzy msgid "nudge track" msgstr "Скрыть трек" -#: gtk2_ardour/editor_ops.cc:3361 +#: gtk2_ardour/editor_ops.cc:3297 msgid "" "Do you really want to destroy the last capture?\n" "(This is destructive and cannot be undone)" @@ -3988,85 +4059,87 @@ msgstr "" "Последнюю запись будет удалена. Вы уверены?\n" "(отмена операции невозможна)" -#: gtk2_ardour/editor_ops.cc:3389 -#, fuzzy +#: gtk2_ardour/editor_ops.cc:3325 msgid "normalize" -msgstr "Норм." +msgstr "нормализовать" -#: gtk2_ardour/editor_ops.cc:3442 +#: gtk2_ardour/editor_ops.cc:3378 msgid "reverse regions" msgstr "" -#: gtk2_ardour/editor_region_list.cc:98 gtk2_ardour/editor_region_list.cc:103 -#: gtk2_ardour/editor_region_list.cc:106 gtk2_ardour/location_ui.cc:57 +#: gtk2_ardour/editor_ops.cc:3491 +#, fuzzy +msgid "reset region gain" +msgstr "Создать область" + +#: gtk2_ardour/editor_region_list.cc:103 gtk2_ardour/editor_region_list.cc:109 +#: gtk2_ardour/editor_region_list.cc:112 gtk2_ardour/location_ui.cc:57 msgid "Hidden" msgstr "Скрытый" #: gtk2_ardour/editor_route_list.cc:100 gtk2_ardour/editor_route_list.cc:101 -#: gtk2_ardour/editor_route_list.cc:246 +#: gtk2_ardour/editor_route_list.cc:250 msgid "editor" msgstr "редактор" -#: gtk2_ardour/editor_route_list.cc:313 gtk2_ardour/mixer_ui.cc:717 +#: gtk2_ardour/editor_route_list.cc:317 gtk2_ardour/mixer_ui.cc:714 msgid "Show All" msgstr "Показать всё" -#: gtk2_ardour/editor_route_list.cc:314 gtk2_ardour/mixer_ui.cc:718 +#: gtk2_ardour/editor_route_list.cc:318 gtk2_ardour/mixer_ui.cc:715 msgid "Hide All" msgstr "Скрыть всё" -#: gtk2_ardour/editor_route_list.cc:315 gtk2_ardour/mixer_ui.cc:719 +#: gtk2_ardour/editor_route_list.cc:319 gtk2_ardour/mixer_ui.cc:716 #, fuzzy msgid "Show All Audio Tracks" msgstr "Показать все аудиошины" -#: gtk2_ardour/editor_route_list.cc:316 gtk2_ardour/mixer_ui.cc:720 +#: gtk2_ardour/editor_route_list.cc:320 gtk2_ardour/mixer_ui.cc:717 #, fuzzy msgid "Hide All Audio Tracks" msgstr "Скрыть все аудиошины" -#: gtk2_ardour/editor_route_list.cc:317 gtk2_ardour/mixer_ui.cc:721 -#, fuzzy +#: gtk2_ardour/editor_route_list.cc:321 gtk2_ardour/mixer_ui.cc:718 msgid "Show All Audio Busses" msgstr "Показать все аудиошины" -#: gtk2_ardour/editor_route_list.cc:318 gtk2_ardour/mixer_ui.cc:722 -#, fuzzy +#: gtk2_ardour/editor_route_list.cc:322 gtk2_ardour/mixer_ui.cc:719 msgid "Hide All Audio Busses" msgstr "Скрыть все аудиошины" -#: gtk2_ardour/editor_rulers.cc:311 +#: gtk2_ardour/editor_rulers.cc:338 #, fuzzy msgid "New location marker" msgstr "Маркеры интервалов" -#: gtk2_ardour/editor_rulers.cc:312 +#: gtk2_ardour/editor_rulers.cc:339 #, fuzzy msgid "Clear all locations" msgstr "очистить интервалы" -#: gtk2_ardour/editor_rulers.cc:317 +#: gtk2_ardour/editor_rulers.cc:344 msgid "Clear all ranges" msgstr "Очистить все области" -#: gtk2_ardour/editor_rulers.cc:326 +#: gtk2_ardour/editor_rulers.cc:353 #, fuzzy msgid "New Tempo" msgstr "Новый темп" -#: gtk2_ardour/editor_rulers.cc:327 +#: gtk2_ardour/editor_rulers.cc:354 msgid "Clear tempo" msgstr "Очистить темп" -#: gtk2_ardour/editor_rulers.cc:332 +#: gtk2_ardour/editor_rulers.cc:359 msgid "New Meter" -msgstr "" +msgstr "Новый счётчик" -#: gtk2_ardour/editor_rulers.cc:333 +#: gtk2_ardour/editor_rulers.cc:360 msgid "Clear meter" -msgstr "" +msgstr "Сбросить счётчик" -#: gtk2_ardour/editor_rulers.cc:341 +#: gtk2_ardour/editor_rulers.cc:368 msgid "Min:Secs" msgstr "Мин:С" @@ -4082,38 +4155,38 @@ msgstr "Создать фрагмент" msgid "Forget it" msgstr "Забыть" -#: gtk2_ardour/editor_tempodisplay.cc:270 -#: gtk2_ardour/editor_tempodisplay.cc:313 +#: gtk2_ardour/editor_tempodisplay.cc:272 +#: gtk2_ardour/editor_tempodisplay.cc:315 msgid "add" msgstr "добавить" -#: gtk2_ardour/editor_tempodisplay.cc:292 +#: gtk2_ardour/editor_tempodisplay.cc:294 #, fuzzy msgid "add tempo mark" msgstr "добавить маркер" -#: gtk2_ardour/editor_tempodisplay.cc:335 +#: gtk2_ardour/editor_tempodisplay.cc:337 #, fuzzy msgid "add meter mark" msgstr "добавить маркер" -#: gtk2_ardour/editor_tempodisplay.cc:370 -#: gtk2_ardour/editor_tempodisplay.cc:401 +#: gtk2_ardour/editor_tempodisplay.cc:372 +#: gtk2_ardour/editor_tempodisplay.cc:403 msgid "done" msgstr "готово" -#: gtk2_ardour/editor_tempodisplay.cc:388 -#: gtk2_ardour/editor_tempodisplay.cc:419 +#: gtk2_ardour/editor_tempodisplay.cc:390 +#: gtk2_ardour/editor_tempodisplay.cc:421 msgid "replace tempo mark" -msgstr "" +msgstr "сменить метку темпа" -#: gtk2_ardour/editor_tempodisplay.cc:461 -#: gtk2_ardour/editor_tempodisplay.cc:495 +#: gtk2_ardour/editor_tempodisplay.cc:463 +#: gtk2_ardour/editor_tempodisplay.cc:497 msgid "programming error: marker for meter is not a meter marker!" msgstr "ошибка в программе: marker for meter is not a meter marker!" -#: gtk2_ardour/editor_tempodisplay.cc:471 -#: gtk2_ardour/editor_tempodisplay.cc:507 +#: gtk2_ardour/editor_tempodisplay.cc:473 +#: gtk2_ardour/editor_tempodisplay.cc:509 #, fuzzy msgid "remove tempo mark" msgstr "Да, удалить всё" @@ -4150,198 +4223,175 @@ msgstr "TimeStretchProgress" msgid "timestretch cannot be started - thread creation error" msgstr "" -#: gtk2_ardour/export_dialog.cc:59 gtk2_ardour/export_dialog.cc:399 -#: gtk2_ardour/export_dialog.cc:1027 gtk2_ardour/export_dialog.cc:1195 +#: gtk2_ardour/export_dialog.cc:57 gtk2_ardour/export_dialog.cc:397 +#: gtk2_ardour/export_dialog.cc:1025 gtk2_ardour/export_dialog.cc:1193 msgid "22.05kHz" msgstr "22.05кГц" -#: gtk2_ardour/export_dialog.cc:60 gtk2_ardour/export_dialog.cc:402 -#: gtk2_ardour/export_dialog.cc:417 gtk2_ardour/export_dialog.cc:1029 -#: gtk2_ardour/export_dialog.cc:1197 +#: gtk2_ardour/export_dialog.cc:58 gtk2_ardour/export_dialog.cc:400 +#: gtk2_ardour/export_dialog.cc:415 gtk2_ardour/export_dialog.cc:1027 +#: gtk2_ardour/export_dialog.cc:1195 msgid "44.1kHz" msgstr "44.1кГц" -#: gtk2_ardour/export_dialog.cc:61 gtk2_ardour/export_dialog.cc:405 -#: gtk2_ardour/export_dialog.cc:1031 gtk2_ardour/export_dialog.cc:1199 +#: gtk2_ardour/export_dialog.cc:59 gtk2_ardour/export_dialog.cc:403 +#: gtk2_ardour/export_dialog.cc:1029 gtk2_ardour/export_dialog.cc:1197 msgid "48kHz" msgstr "48кГц" -#: gtk2_ardour/export_dialog.cc:62 gtk2_ardour/export_dialog.cc:408 -#: gtk2_ardour/export_dialog.cc:1033 gtk2_ardour/export_dialog.cc:1201 +#: gtk2_ardour/export_dialog.cc:60 gtk2_ardour/export_dialog.cc:406 +#: gtk2_ardour/export_dialog.cc:1031 gtk2_ardour/export_dialog.cc:1199 msgid "88.2kHz" msgstr "88.2кГц" -#: gtk2_ardour/export_dialog.cc:63 gtk2_ardour/export_dialog.cc:411 -#: gtk2_ardour/export_dialog.cc:1035 gtk2_ardour/export_dialog.cc:1203 +#: gtk2_ardour/export_dialog.cc:61 gtk2_ardour/export_dialog.cc:409 +#: gtk2_ardour/export_dialog.cc:1033 gtk2_ardour/export_dialog.cc:1201 msgid "96kHz" msgstr "96кГц" -#: gtk2_ardour/export_dialog.cc:64 gtk2_ardour/export_dialog.cc:414 -#: gtk2_ardour/export_dialog.cc:1037 gtk2_ardour/export_dialog.cc:1205 +#: gtk2_ardour/export_dialog.cc:62 gtk2_ardour/export_dialog.cc:412 +#: gtk2_ardour/export_dialog.cc:1035 gtk2_ardour/export_dialog.cc:1203 msgid "192kHz" msgstr "192кГц" -#: gtk2_ardour/export_dialog.cc:69 +#: gtk2_ardour/export_dialog.cc:67 msgid "best" msgstr "высокое" -#: gtk2_ardour/export_dialog.cc:70 gtk2_ardour/export_dialog.cc:1212 +#: gtk2_ardour/export_dialog.cc:68 gtk2_ardour/export_dialog.cc:1210 msgid "fastest" msgstr "быстрое" -#: gtk2_ardour/export_dialog.cc:71 gtk2_ardour/export_dialog.cc:1214 +#: gtk2_ardour/export_dialog.cc:69 gtk2_ardour/export_dialog.cc:1212 msgid "linear" msgstr "линейное" -#: gtk2_ardour/export_dialog.cc:72 gtk2_ardour/export_dialog.cc:1216 +#: gtk2_ardour/export_dialog.cc:70 gtk2_ardour/export_dialog.cc:1214 msgid "better" msgstr "нормальное" -#: gtk2_ardour/export_dialog.cc:73 gtk2_ardour/export_dialog.cc:1218 +#: gtk2_ardour/export_dialog.cc:71 gtk2_ardour/export_dialog.cc:1216 msgid "intermediate" msgstr "среднее" -#: gtk2_ardour/export_dialog.cc:79 gtk2_ardour/export_dialog.cc:1227 +#: gtk2_ardour/export_dialog.cc:77 gtk2_ardour/export_dialog.cc:1225 msgid "Rectangular" -msgstr "Rectangular" +msgstr "Прямоугольный" -#: gtk2_ardour/export_dialog.cc:80 +#: gtk2_ardour/export_dialog.cc:78 msgid "Shaped Noise" -msgstr "Shaped Noise" +msgstr "По очертаниям" -#: gtk2_ardour/export_dialog.cc:81 gtk2_ardour/export_dialog.cc:1229 +#: gtk2_ardour/export_dialog.cc:79 gtk2_ardour/export_dialog.cc:1227 msgid "Triangular" -msgstr "Triangular" +msgstr "Треугольный" -#: gtk2_ardour/export_dialog.cc:86 -msgid "stereo" -msgstr "стерео" - -#: gtk2_ardour/export_dialog.cc:87 gtk2_ardour/export_dialog.cc:486 -#: gtk2_ardour/export_dialog.cc:1055 gtk2_ardour/export_dialog.cc:1177 +#: gtk2_ardour/export_dialog.cc:85 gtk2_ardour/export_dialog.cc:484 +#: gtk2_ardour/export_dialog.cc:1053 gtk2_ardour/export_dialog.cc:1175 msgid "mono" msgstr "моно" -#: gtk2_ardour/export_dialog.cc:93 +#: gtk2_ardour/export_dialog.cc:91 msgid "CUE" -msgstr "" +msgstr "CUE" -#: gtk2_ardour/export_dialog.cc:94 +#: gtk2_ardour/export_dialog.cc:92 msgid "TOC" -msgstr "" +msgstr "TOC" -#: gtk2_ardour/export_dialog.cc:102 -#, fuzzy +#: gtk2_ardour/export_dialog.cc:100 msgid "Format" -msgstr "Норм." +msgstr "Формат" -#: gtk2_ardour/export_dialog.cc:103 +#: gtk2_ardour/export_dialog.cc:101 msgid "CD Marker File Type" -msgstr "" +msgstr "Тип файла маркеров CD" -#: gtk2_ardour/export_dialog.cc:104 -#, fuzzy +#: gtk2_ardour/export_dialog.cc:102 msgid "Channels" -msgstr "отмена" +msgstr "Каналов" -#: gtk2_ardour/export_dialog.cc:105 -#, fuzzy +#: gtk2_ardour/export_dialog.cc:103 msgid "File Type" -msgstr "Тип" +msgstr "Тип файла" -#: gtk2_ardour/export_dialog.cc:106 -#, fuzzy +#: gtk2_ardour/export_dialog.cc:104 msgid "Sample Format" -msgstr "Разделить область" +msgstr "Формат сэмпла" -#: gtk2_ardour/export_dialog.cc:107 +#: gtk2_ardour/export_dialog.cc:105 msgid "Sample Endianness" -msgstr "" +msgstr "Байтовый порядок сэмпла" -#: gtk2_ardour/export_dialog.cc:108 -#, fuzzy +#: gtk2_ardour/export_dialog.cc:106 msgid "Sample Rate" -msgstr "Разделить область" +msgstr "Частота сэмплирования" -#: gtk2_ardour/export_dialog.cc:109 +#: gtk2_ardour/export_dialog.cc:107 msgid "Conversion Quality" -msgstr "" +msgstr "Качество преобразования" -#: gtk2_ardour/export_dialog.cc:110 +#: gtk2_ardour/export_dialog.cc:108 msgid "Dither Type" -msgstr "" +msgstr "Тип дитеринга" -#: gtk2_ardour/export_dialog.cc:111 +#: gtk2_ardour/export_dialog.cc:109 msgid "Export CD Marker File Only" -msgstr "" +msgstr "Экспортировать только файл маркеров CD" -#: gtk2_ardour/export_dialog.cc:112 -#, fuzzy +#: gtk2_ardour/export_dialog.cc:110 msgid "Export to File" -msgstr "Экспорт на CD" +msgstr "Экспорт в файл" -#: gtk2_ardour/export_dialog.cc:113 gtk2_ardour/option_editor.cc:82 -#: gtk2_ardour/option_editor.cc:83 +#: gtk2_ardour/export_dialog.cc:111 gtk2_ardour/option_editor.cc:80 +#: gtk2_ardour/option_editor.cc:81 msgid "Browse" msgstr "Обзор" -#: gtk2_ardour/export_dialog.cc:114 +#: gtk2_ardour/export_dialog.cc:112 msgid "Specific tracks ..." -msgstr "" +msgstr "Специфические задачи" -#: gtk2_ardour/export_dialog.cc:125 +#: gtk2_ardour/export_dialog.cc:123 msgid "ardour: export" msgstr "ardour: экспорт" -#: gtk2_ardour/export_dialog.cc:126 -msgid "ardour_export" -msgstr "ardour_экспорт" - -#: gtk2_ardour/export_dialog.cc:139 gtk2_ardour/export_dialog.cc:155 -#: gtk2_ardour/mixer_strip.cc:121 gtk2_ardour/mixer_strip.cc:727 +#: gtk2_ardour/export_dialog.cc:137 gtk2_ardour/export_dialog.cc:153 +#: gtk2_ardour/mixer_strip.cc:123 gtk2_ardour/mixer_strip.cc:746 msgid "Output" msgstr "Выход" -#: gtk2_ardour/export_dialog.cc:140 gtk2_ardour/export_dialog.cc:156 -#: gtk2_ardour/export_dialog.cc:1068 gtk2_ardour/export_dialog.cc:1072 -msgid "Left" -msgstr "Левый" - -#: gtk2_ardour/export_dialog.cc:141 gtk2_ardour/export_dialog.cc:157 -msgid "Right" -msgstr "Правый" - -#: gtk2_ardour/export_dialog.cc:633 +#: gtk2_ardour/export_dialog.cc:631 #, fuzzy msgid "Editor: cannot open \"%1\" as export file for CD toc file" msgstr "Редакор: не могу открыть \"%1\" как файл экспорта маркеров для CD-треков" -#: gtk2_ardour/export_dialog.cc:759 +#: gtk2_ardour/export_dialog.cc:757 #, fuzzy msgid "Editor: cannot open \"%1\" as export file for CD cue file" msgstr "Редакор: не могу открыть \"%1\" как файл экспорта маркеров для CD-треков" -#: gtk2_ardour/export_dialog.cc:778 +#: gtk2_ardour/export_dialog.cc:776 msgid "WAV" msgstr "WAV" -#: gtk2_ardour/export_dialog.cc:912 +#: gtk2_ardour/export_dialog.cc:910 msgid "Stop Export" msgstr "Остановить экспорт" -#: gtk2_ardour/export_dialog.cc:1131 +#: gtk2_ardour/export_dialog.cc:1129 msgid "Please enter a valid filename." msgstr "Введите корректное имя файла" -#: gtk2_ardour/export_dialog.cc:1141 +#: gtk2_ardour/export_dialog.cc:1139 msgid "Please specify a complete filename for the audio file." msgstr "Укажите полное имя звукового файла" -#: gtk2_ardour/export_dialog.cc:1147 +#: gtk2_ardour/export_dialog.cc:1145 msgid "File already exists, do you want to overwrite it?" msgstr "Файл с таким именем уже есть. Перезаписать его?" -#: gtk2_ardour/export_dialog.cc:1159 +#: gtk2_ardour/export_dialog.cc:1157 #: gtk2_ardour/export_range_markers_dialog.cc:153 msgid "Cannot write file in: " msgstr "Невозможно записать файлв в:" @@ -4361,51 +4411,48 @@ msgstr "" msgid "add gain automation event" msgstr "автомат" -#: gtk2_ardour/gain_meter.cc:67 -msgid "cannot find images for fader slider" -msgstr "" - -#: gtk2_ardour/gain_meter.cc:74 -msgid "cannot find images for fader rail" -msgstr "" - -#: gtk2_ardour/gain_meter.cc:125 gtk2_ardour/gain_meter.cc:334 -#: gtk2_ardour/gain_meter.cc:489 gtk2_ardour/gain_meter.cc:534 +#: gtk2_ardour/gain_meter.cc:112 gtk2_ardour/gain_meter.cc:330 +#: gtk2_ardour/gain_meter.cc:511 gtk2_ardour/gain_meter.cc:578 #, fuzzy msgid "-inf" msgstr "в" -#: gtk2_ardour/gain_meter.cc:135 +#: gtk2_ardour/gain_meter.cc:123 msgid "Fader automation mode" msgstr "Режим автоматизации фейдера" -#: gtk2_ardour/gain_meter.cc:136 +#: gtk2_ardour/gain_meter.cc:124 msgid "Fader automation type" msgstr "Тип автоматизации фейдера" -#: gtk2_ardour/gain_meter.cc:177 gtk2_ardour/gain_meter.cc:812 -#: gtk2_ardour/panner_ui.cc:97 gtk2_ardour/panner_ui.cc:797 +#: gtk2_ardour/gain_meter.cc:169 gtk2_ardour/gain_meter.cc:872 +#: gtk2_ardour/panner_ui.cc:99 gtk2_ardour/panner_ui.cc:810 msgid "Abs" msgstr "Абс" -#: gtk2_ardour/gain_meter.cc:467 +#: gtk2_ardour/gain_meter.cc:489 msgid "-Inf" msgstr "-Inf" -#: gtk2_ardour/gain_meter.cc:776 gtk2_ardour/mixer_strip.cc:730 -#: gtk2_ardour/panner_ui.cc:761 +#: gtk2_ardour/gain_meter.cc:688 gtk2_ardour/gain_meter.cc:703 +#, fuzzy +msgid "meter point change" +msgstr "Выбрать текущий интервал" + +#: gtk2_ardour/gain_meter.cc:836 gtk2_ardour/mixer_strip.cc:749 +#: gtk2_ardour/panner_ui.cc:774 msgid "O" msgstr "O" -#: gtk2_ardour/gain_meter.cc:779 gtk2_ardour/panner_ui.cc:764 +#: gtk2_ardour/gain_meter.cc:839 gtk2_ardour/panner_ui.cc:777 msgid "P" msgstr "P" -#: gtk2_ardour/gain_meter.cc:782 gtk2_ardour/panner_ui.cc:767 +#: gtk2_ardour/gain_meter.cc:842 gtk2_ardour/panner_ui.cc:780 msgid "T" msgstr "T" -#: gtk2_ardour/gain_meter.cc:785 gtk2_ardour/panner_ui.cc:770 +#: gtk2_ardour/gain_meter.cc:845 gtk2_ardour/panner_ui.cc:783 msgid "W" msgstr "W" @@ -4496,10 +4543,10 @@ msgstr "Кадр" msgid "Rename Track" msgstr "Переименовать дорожку" -#: gtk2_ardour/io_selector.cc:62 gtk2_ardour/io_selector.cc:796 +#: gtk2_ardour/io_selector.cc:62 gtk2_ardour/io_selector.cc:750 #: gtk2_ardour/connection_editor.cc:61 gtk2_ardour/connection_editor.cc:110 msgid "Rescan" -msgstr "" +msgstr "Просканировать заново" #: gtk2_ardour/io_selector.cc:70 msgid "%1 input" @@ -4511,11 +4558,11 @@ msgstr "%1 выход" #: gtk2_ardour/io_selector.cc:144 gtk2_ardour/route_params_ui.cc:103 msgid "Inputs" -msgstr "Входов" +msgstr "Входы" #: gtk2_ardour/io_selector.cc:144 gtk2_ardour/route_params_ui.cc:104 msgid "Outputs" -msgstr "Выходов" +msgstr "Выходы" #: gtk2_ardour/io_selector.cc:145 msgid "Add Input" @@ -4541,16 +4588,11 @@ msgstr "Отсоединить все" msgid "Available connections" msgstr "Доступные соединения" -#: gtk2_ardour/io_selector.cc:557 gtk2_ardour/io_selector.cc:576 +#: gtk2_ardour/io_selector.cc:549 gtk2_ardour/io_selector.cc:560 msgid "There are no more JACK ports available." -msgstr "" - -#: gtk2_ardour/io_selector.cc:651 gtk2_ardour/io_selector.cc:678 -#: gtk2_ardour/io_selector.cc:731 -msgid "port" -msgstr "порт" +msgstr "Доступных портов JACK не осталось." -#: gtk2_ardour/io_selector.cc:800 +#: gtk2_ardour/io_selector.cc:754 msgid "ardour: " msgstr "ardour: " @@ -4592,11 +4634,7 @@ msgstr "Для \"mod5\" назначено кнопок: %1" #: gtk2_ardour/ladspa_pluginui.cc:77 msgid "Presets" -msgstr "" - -#: gtk2_ardour/ladspa_pluginui.cc:168 -msgid "Controls" -msgstr "Управление" +msgstr "Предустановки" #: gtk2_ardour/ladspa_pluginui.cc:205 msgid "Plugin Editor: could not build control element for port %1" @@ -4604,7 +4642,7 @@ msgstr "Редактор модулей: невозможно создать э #: gtk2_ardour/ladspa_pluginui.cc:296 msgid "Automation control" -msgstr "Контроль атовматизации" +msgstr "Контроль автоматизации" #: gtk2_ardour/location_ui.cc:49 gtk2_ardour/location_ui.cc:52 msgid "Set" @@ -4620,7 +4658,7 @@ msgstr "CD" #: gtk2_ardour/location_ui.cc:59 msgid "SCMS" -msgstr "" +msgstr "SCMS" #: gtk2_ardour/location_ui.cc:60 msgid "Pre-Emphasis" @@ -4632,16 +4670,12 @@ msgstr "Добавить новый интервал" #: gtk2_ardour/location_ui.cc:572 msgid "Add New Range" -msgstr "" +msgstr "Добавить новую область" #: gtk2_ardour/location_ui.cc:576 msgid "ardour: locations" msgstr "ardour: интервалы" -#: gtk2_ardour/location_ui.cc:577 -msgid "ardour_locations" -msgstr "ardour_интервалы" - #: gtk2_ardour/location_ui.cc:605 #, fuzzy msgid "Location (CD Index) Markers" @@ -4655,32 +4689,28 @@ msgstr "" msgid "add range marker" msgstr "Добавить маркер области" -#: gtk2_ardour/main.cc:72 +#: gtk2_ardour/main.cc:73 msgid "ardour is killing itself for a clean exit\n" msgstr "ardour: принудительное завершение работы\n" -#: gtk2_ardour/main.cc:81 -msgid "stopping user interface\n" -msgstr "завершение работы...\n" - -#: gtk2_ardour/main.cc:100 +#: gtk2_ardour/main.cc:99 #, c-format msgid "%d(%d): received signal %d\n" msgstr "%d(%d): принят сигнал %d\n" -#: gtk2_ardour/main.cc:180 +#: gtk2_ardour/main.cc:179 msgid "cannot become new process group leader (%1)" msgstr "" -#: gtk2_ardour/main.cc:207 +#: gtk2_ardour/main.cc:206 msgid "cannot setup signal handling for %1" msgstr "cannot setup signal handling for %1" -#: gtk2_ardour/main.cc:218 +#: gtk2_ardour/main.cc:217 msgid "cannot set default signal mask (%1)" msgstr "cannot set default signal mask (%1)" -#: gtk2_ardour/main.cc:248 +#: gtk2_ardour/main.cc:247 msgid "" "Without a UI style file, ardour will look strange.\n" " Please set ARDOUR2_UI_RC to point to a valid UI style file" @@ -4689,11 +4719,11 @@ msgstr "" "без файла, определяющего стиль оформления.\n" "Пожалуйста, укажите его [файл] в переменной окружения ARDOUR_UI_RC" -#: gtk2_ardour/main.cc:270 +#: gtk2_ardour/main.cc:268 msgid "Ardour could not connect to JACK." msgstr "Не удалось соединиться с сервером JACK." -#: gtk2_ardour/main.cc:274 +#: gtk2_ardour/main.cc:272 #, fuzzy msgid "" "There are several possible reasons:\n" @@ -4713,11 +4743,11 @@ msgstr "" "\n" "Пожалуйста, проверьте все варианты, возможно потребуется (пере)запуск JACK." -#: gtk2_ardour/main.cc:316 +#: gtk2_ardour/main.cc:314 msgid "could not load command line session \"%1\"" msgstr "не удалось загрузить сессию \"%1\", указанную в командной строке" -#: gtk2_ardour/main.cc:324 +#: gtk2_ardour/main.cc:322 msgid "" "\n" "\n" @@ -4725,52 +4755,52 @@ msgid "" "To create it from the command line, start ardour as \"ardour --new %1" msgstr "" -#: gtk2_ardour/main.cc:383 +#: gtk2_ardour/main.cc:386 msgid "Ardour/GTK " msgstr "Ardour/GTK " -#: gtk2_ardour/main.cc:385 +#: gtk2_ardour/main.cc:388 msgid "" "\n" " (built using " msgstr "" +"\n" +" (собран с использованием " -#: gtk2_ardour/main.cc:389 -msgid " with libardour " -msgstr " с libardour " - -#: gtk2_ardour/main.cc:394 +#: gtk2_ardour/main.cc:391 msgid " and GCC version " msgstr " и версией GCC " -#: gtk2_ardour/main.cc:404 +#: gtk2_ardour/main.cc:401 msgid "Copyright (C) 1999-2006 Paul Davis" msgstr "Авторские права © 1999-2006 Paul Davis" -#: gtk2_ardour/main.cc:405 +#: gtk2_ardour/main.cc:402 msgid "" "Some portions Copyright (C) Steve Harris, Ari Johnson, Brett Viren, Joel " "Baker" -msgstr "Частичные авторские права © Steve Harris, Ari Johnson, Brett Viren, Joel Baker" +msgstr "" +"Частичные авторские права © Steve Harris, Ari Johnson, Brett Viren, Joel " +"Baker" -#: gtk2_ardour/main.cc:407 +#: gtk2_ardour/main.cc:404 msgid "Ardour comes with ABSOLUTELY NO WARRANTY" msgstr "Ardour распространяется БЕЗО ВСЯКИХ ГАРАНТИЙ" -#: gtk2_ardour/main.cc:408 +#: gtk2_ardour/main.cc:405 msgid "not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." msgstr "" -#: gtk2_ardour/main.cc:409 +#: gtk2_ardour/main.cc:406 msgid "This is free software, and you are welcome to redistribute it " msgstr "Это свободное программное обеспечение, Вы можете распространять его" -#: gtk2_ardour/main.cc:410 +#: gtk2_ardour/main.cc:407 #, fuzzy msgid "under certain conditions; see the source for copying conditions." msgstr "на определённых условиях; подробнее об этом читайте в файле COPYING." -#: gtk2_ardour/main.cc:420 +#: gtk2_ardour/main.cc:417 msgid "could not create ARDOUR GUI" msgstr "не удалось создать графический интерфейс для ARDOUR" @@ -4778,7 +4808,7 @@ msgstr "не удалось создать графический интерфе msgid "Could not connect to JACK server as \"%1\"" msgstr "Не удалось соединиться с сервером JACK как \"%1\"" -#: gtk2_ardour/main.cc:446 +#: gtk2_ardour/main.cc:447 msgid "could not initialize Ardour." msgstr "не удалось запустить Ardour." @@ -4795,118 +4825,110 @@ msgstr "Удалить поле" msgid "Marker" msgstr "Маркер" -#: gtk2_ardour/mixer_strip.cc:92 gtk2_ardour/mixer_strip.cc:137 -#: gtk2_ardour/mixer_strip.cc:1191 +#: gtk2_ardour/mixer_strip.cc:94 gtk2_ardour/mixer_strip.cc:139 +#: gtk2_ardour/mixer_strip.cc:1218 msgid "pre" msgstr "" -#: gtk2_ardour/mixer_strip.cc:93 gtk2_ardour/mixer_strip.cc:782 +#: gtk2_ardour/mixer_strip.cc:95 gtk2_ardour/mixer_strip.cc:796 msgid "Comments" msgstr "Комментарии" -#: gtk2_ardour/mixer_strip.cc:116 +#: gtk2_ardour/mixer_strip.cc:118 msgid "Input" msgstr "Вход" -#: gtk2_ardour/mixer_strip.cc:133 gtk2_ardour/mixer_strip.cc:1187 +#: gtk2_ardour/mixer_strip.cc:135 gtk2_ardour/mixer_strip.cc:1214 msgid "input" msgstr "вход" -#: gtk2_ardour/mixer_strip.cc:141 gtk2_ardour/mixer_strip.cc:1195 +#: gtk2_ardour/mixer_strip.cc:143 gtk2_ardour/mixer_strip.cc:1222 msgid "post" msgstr "" -#: gtk2_ardour/mixer_strip.cc:149 +#: gtk2_ardour/mixer_strip.cc:150 msgid "tupni" msgstr "" -#: gtk2_ardour/mixer_strip.cc:205 +#: gtk2_ardour/mixer_strip.cc:204 msgid "Varispeed" msgstr "" -#: gtk2_ardour/mixer_strip.cc:231 gtk2_ardour/mixer_strip.cc:796 +#: gtk2_ardour/mixer_strip.cc:230 gtk2_ardour/mixer_strip.cc:812 msgid "Click to Add/Edit Comments" msgstr "Нажмите для добавления/правки комментариев" -#: gtk2_ardour/mixer_strip.cc:371 +#: gtk2_ardour/mixer_strip.cc:386 msgid "unknown strip width \"%1\" in XML GUI information" msgstr "неизвестная ширина трека \"%1\" в XML описании" -#: gtk2_ardour/mixer_strip.cc:415 +#: gtk2_ardour/mixer_strip.cc:430 #, fuzzy msgid "record" msgstr "Запись" -#: gtk2_ardour/mixer_strip.cc:417 gtk2_ardour/audio_region_editor.cc:46 -msgid "mute" -msgstr "тихо" - -#: gtk2_ardour/mixer_strip.cc:418 -msgid "solo" -msgstr "соло" - -#: gtk2_ardour/mixer_strip.cc:421 +#: gtk2_ardour/mixer_strip.cc:437 msgid "comments" msgstr "комментарии" -#: gtk2_ardour/mixer_strip.cc:423 +#: gtk2_ardour/mixer_strip.cc:440 msgid "*comments*" msgstr "*комментарии*" -#: gtk2_ardour/mixer_strip.cc:438 +#: gtk2_ardour/mixer_strip.cc:455 msgid "Rec" msgstr "Зап" -#: gtk2_ardour/mixer_strip.cc:440 +#: gtk2_ardour/mixer_strip.cc:457 msgid "M" msgstr "M" -#: gtk2_ardour/mixer_strip.cc:441 +#: gtk2_ardour/mixer_strip.cc:458 msgid "S" msgstr "S" -#: gtk2_ardour/mixer_strip.cc:444 gtk2_ardour/mixer_strip.cc:790 +#: gtk2_ardour/mixer_strip.cc:462 gtk2_ardour/mixer_strip.cc:806 msgid "Cmt" msgstr "" -#: gtk2_ardour/mixer_strip.cc:446 gtk2_ardour/mixer_strip.cc:788 +#: gtk2_ardour/mixer_strip.cc:465 gtk2_ardour/mixer_strip.cc:803 msgid "*Cmt*" msgstr "" -#: gtk2_ardour/mixer_strip.cc:484 gtk2_ardour/mixer_strip.cc:550 -#: gtk2_ardour/redirect_box.cc:1021 +#: gtk2_ardour/mixer_strip.cc:503 gtk2_ardour/mixer_strip.cc:569 +#: gtk2_ardour/redirect_box.cc:1086 msgid "Not connected to JACK - no I/O changes are possible" msgstr "" -#: gtk2_ardour/mixer_strip.cc:584 gtk2_ardour/mixer_strip.cc:600 +#: gtk2_ardour/mixer_strip.cc:603 gtk2_ardour/mixer_strip.cc:619 msgid "could not register new ports required for that connection" msgstr "Не удалось зарегистрировать новые порты для этого соединения" -#: gtk2_ardour/mixer_strip.cc:707 +#: gtk2_ardour/mixer_strip.cc:726 msgid " Input" msgstr " Вход" -#: gtk2_ardour/mixer_strip.cc:710 +#: gtk2_ardour/mixer_strip.cc:729 msgid "I" msgstr "ВХ" -#: gtk2_ardour/mixer_strip.cc:780 +#: gtk2_ardour/mixer_strip.cc:793 msgid "*Comments*" msgstr "*Комментарии*" -#: gtk2_ardour/mixer_strip.cc:819 +#: gtk2_ardour/mixer_strip.cc:848 msgid ": comment editor" msgstr ": редактор комментариев" -#: gtk2_ardour/mixer_strip.cc:913 +#: gtk2_ardour/mixer_strip.cc:943 msgid "Grp" -msgstr "" +msgstr "Грп" -#: gtk2_ardour/mixer_strip.cc:916 +#: gtk2_ardour/mixer_strip.cc:946 msgid "~G" msgstr "нГр" -#: gtk2_ardour/mixer_strip.cc:964 +#: gtk2_ardour/mixer_strip.cc:995 msgid "Invert Polarity" msgstr "Развернуть полярность" @@ -4918,194 +4940,187 @@ msgstr "Каналы" msgid "Group" msgstr "Группа" -#: gtk2_ardour/mixer_ui.cc:209 gtk2_ardour/mixer_ui.cc:389 +#: gtk2_ardour/mixer_ui.cc:206 gtk2_ardour/mixer_ui.cc:386 msgid "ardour: mixer" msgstr "ardour: микшер" -#: gtk2_ardour/mixer_ui.cc:210 -msgid "ardour_mixer" -msgstr "ardour_микшер" - -#: gtk2_ardour/mixer_ui.cc:361 +#: gtk2_ardour/mixer_ui.cc:358 msgid "ardour: mixer: " msgstr "ardour: микшер: " -#: gtk2_ardour/mixer_ui.cc:592 +#: gtk2_ardour/mixer_ui.cc:589 msgid "signal" msgstr "сигнал" -#: gtk2_ardour/mixer_ui.cc:741 +#: gtk2_ardour/mixer_ui.cc:738 msgid "track display list item for renamed strip not found!" msgstr "" #: gtk2_ardour/new_session_dialog.cc:41 -msgid "New Session Name :" -msgstr "Имя новой сессии:" +msgid "Name :" +msgstr "Имя:" + +#: gtk2_ardour/new_session_dialog.cc:45 gtk2_ardour/new_session_dialog.cc:46 +#: gtk2_ardour/new_session_dialog.cc:47 gtk2_ardour/new_session_dialog.cc:48 +msgid "channels" +msgstr "канал(-ов)" + +#: gtk2_ardour/new_session_dialog.cc:66 +msgid "Busses" +msgstr "Шины" -#: gtk2_ardour/new_session_dialog.cc:45 -msgid "Create Session Directory In :" -msgstr "Создать каталог сессии в:" +#: gtk2_ardour/new_session_dialog.cc:67 +msgid "Inputs" +msgstr "Входы" -#: gtk2_ardour/new_session_dialog.cc:47 -msgid "Use Session Template :" -msgstr "Использовать шаблон:" +#: gtk2_ardour/new_session_dialog.cc:68 +msgid "Outputs" +msgstr "Выходы" + +#: gtk2_ardour/new_session_dialog.cc:70 +msgid "Create Folder In :" +msgstr "Создать папку сессии в:" -#: gtk2_ardour/new_session_dialog.cc:49 -msgid "Channel Count" -msgstr "Число каналов" +#: gtk2_ardour/new_session_dialog.cc:72 +msgid "Template :" +msgstr "Шаблон:" -#: gtk2_ardour/new_session_dialog.cc:50 +#: gtk2_ardour/new_session_dialog.cc:74 msgid "Create Monitor Bus" msgstr "Создать контрольную шину" -#: gtk2_ardour/new_session_dialog.cc:57 +#: gtk2_ardour/new_session_dialog.cc:81 msgid "Create Master Bus" msgstr "Создать мастер-шину" -#: gtk2_ardour/new_session_dialog.cc:59 -msgid "Automatically Connect Inputs" -msgstr "Автоматическое подключение ко входам" - -#: gtk2_ardour/new_session_dialog.cc:60 gtk2_ardour/new_session_dialog.cc:71 -msgid "Port Limit" -msgstr "Портов не более чем" +#: gtk2_ardour/new_session_dialog.cc:83 +msgid "Automatically Connect to Physical Inputs" +msgstr "Автоматически подключиться к физическим входам" -#: gtk2_ardour/new_session_dialog.cc:68 -msgid "Track/Bus Inputs" -msgstr "Входы дорожек/шин" +#: gtk2_ardour/new_session_dialog.cc:84 gtk2_ardour/new_session_dialog.cc:97 +msgid "Use only" +msgstr "Использовать только" -#: gtk2_ardour/new_session_dialog.cc:70 +#: gtk2_ardour/new_session_dialog.cc:96 msgid "Automatically Connect Outputs" -msgstr "Автоматическое подключение к выходам" +msgstr "Автоматически подключиться к выходам" -#: gtk2_ardour/new_session_dialog.cc:79 -msgid "Connect to Master Bus" -msgstr "Соединиться с мастер-шиной" +#: gtk2_ardour/new_session_dialog.cc:105 +msgid "... to Master Bus" +msgstr "... к мастер-шине" -#: gtk2_ardour/new_session_dialog.cc:80 -msgid "Connect to Physical Outputs" -msgstr "Соединиться с физическими выходами" +#: gtk2_ardour/new_session_dialog.cc:106 +msgid "... to Physical Outputs" +msgstr "... к физическим выходам" -#: gtk2_ardour/new_session_dialog.cc:84 -msgid "Track/Bus Outputs" -msgstr "Выходы дорожек/шин" - -#: gtk2_ardour/new_session_dialog.cc:87 +#: gtk2_ardour/new_session_dialog.cc:112 msgid "Advanced Options" msgstr "Расширенные параметры" -#: gtk2_ardour/new_session_dialog.cc:95 -msgid "Open Recent Session" -msgstr "Открыть недавнюю сессию" +#: gtk2_ardour/new_session_dialog.cc:120 +msgid "Recent:" +msgstr "Недавние:" -#: gtk2_ardour/new_session_dialog.cc:131 -msgid "Open Session File :" -msgstr "Открыть файл сессии:" +#: gtk2_ardour/new_session_dialog.cc:157 +msgid "Browse:" +msgstr "Обзор:" -#: gtk2_ardour/new_session_dialog.cc:281 +#: gtk2_ardour/new_session_dialog.cc:335 msgid "New Session" msgstr "Создать сессию" -#: gtk2_ardour/new_session_dialog.cc:283 +#: gtk2_ardour/new_session_dialog.cc:337 msgid "Open Session" msgstr "Открыть сессию" -#: gtk2_ardour/new_session_dialog.cc:288 +#: gtk2_ardour/new_session_dialog.cc:342 msgid "ardour: session control" msgstr "Сессии Ardour" -#: gtk2_ardour/new_session_dialog.cc:317 +#: gtk2_ardour/new_session_dialog.cc:383 msgid "select template" msgstr "Выберите шаблон" -#: gtk2_ardour/new_session_dialog.cc:323 +#: gtk2_ardour/new_session_dialog.cc:389 msgid "select session file" msgstr "Выберите файл сессии" -#: gtk2_ardour/new_session_dialog.cc:332 +#: gtk2_ardour/new_session_dialog.cc:398 msgid "select directory" msgstr "Выберите каталог" -#: gtk2_ardour/option_editor.cc:75 +#: gtk2_ardour/option_editor.cc:73 msgid "SMPTE offset is negative" msgstr "Смещение SMPTE отрицательно" -#: gtk2_ardour/option_editor.cc:101 +#: gtk2_ardour/option_editor.cc:99 msgid "ardour: options editor" -msgstr "Редактор параметров" - -#: gtk2_ardour/option_editor.cc:102 -msgid "ardour_option_editor" -msgstr "ardour_редактор_параметров" +msgstr "ardour: параметры программы" -#: gtk2_ardour/option_editor.cc:126 +#: gtk2_ardour/option_editor.cc:124 msgid "Paths/Files" -msgstr "Пути/Файлы" +msgstr "Пути/файлы" -#: gtk2_ardour/option_editor.cc:127 +#: gtk2_ardour/option_editor.cc:125 msgid "Kbd/Mouse" -msgstr "Клавиатура/Мышь" +msgstr "Клавиатура/мышь" -#: gtk2_ardour/option_editor.cc:130 +#: gtk2_ardour/option_editor.cc:128 msgid "Layers & Fades" msgstr "Слои и фейды" -#: gtk2_ardour/option_editor.cc:134 +#: gtk2_ardour/option_editor.cc:132 msgid "MIDI" msgstr "MIDI" -#: gtk2_ardour/option_editor.cc:222 +#: gtk2_ardour/option_editor.cc:220 msgid "session RAID path" msgstr "Путь к файлам RAID-сессий" -#: gtk2_ardour/option_editor.cc:227 -msgid "Soundfile Search Paths" -msgstr "Путь к звуковым файлам" - -#: gtk2_ardour/option_editor.cc:252 gtk2_ardour/option_editor.cc:258 -#: gtk2_ardour/option_editor.cc:670 gtk2_ardour/option_editor.cc:697 +#: gtk2_ardour/option_editor.cc:236 gtk2_ardour/option_editor.cc:242 +#: gtk2_ardour/option_editor.cc:652 gtk2_ardour/option_editor.cc:672 msgid "internal" msgstr "внутренний" -#: gtk2_ardour/option_editor.cc:271 +#: gtk2_ardour/option_editor.cc:255 msgid "Short crossfade length (msecs)" -msgstr "" +msgstr "Длительность короткого кроссфейда (мс)" -#: gtk2_ardour/option_editor.cc:283 +#: gtk2_ardour/option_editor.cc:267 msgid "Destructive crossfade length (msecs)" -msgstr "" +msgstr "Длительность деструктивного кроссфейда (мс)" -#: gtk2_ardour/option_editor.cc:342 +#: gtk2_ardour/option_editor.cc:327 msgid "SMPTE Offset" msgstr "Смещение SMPTE" -#: gtk2_ardour/option_editor.cc:409 gtk2_ardour/option_editor.cc:416 -#: gtk2_ardour/option_editor.cc:419 gtk2_ardour/option_editor.cc:565 +#: gtk2_ardour/option_editor.cc:394 gtk2_ardour/option_editor.cc:401 +#: gtk2_ardour/option_editor.cc:404 gtk2_ardour/option_editor.cc:552 msgid "online" msgstr "" -#: gtk2_ardour/option_editor.cc:416 gtk2_ardour/option_editor.cc:417 -#: gtk2_ardour/option_editor.cc:562 +#: gtk2_ardour/option_editor.cc:401 gtk2_ardour/option_editor.cc:402 +#: gtk2_ardour/option_editor.cc:549 msgid "offline" msgstr "" -#: gtk2_ardour/option_editor.cc:617 +#: gtk2_ardour/option_editor.cc:605 msgid "Choose Click" msgstr "Выберите щелчок метронома" -#: gtk2_ardour/option_editor.cc:636 +#: gtk2_ardour/option_editor.cc:624 msgid "Choose Click Emphasis" msgstr "Выберите акцентирующий щелчок метронома" -#: gtk2_ardour/option_editor.cc:750 +#: gtk2_ardour/option_editor.cc:724 msgid "Click audio file" msgstr "Файл щелчков метронома" -#: gtk2_ardour/option_editor.cc:756 +#: gtk2_ardour/option_editor.cc:730 msgid "Click emphasis audiofile" msgstr "Файл акцентирующих щелчков метронома" -#: gtk2_ardour/option_editor.cc:793 +#: gtk2_ardour/option_editor.cc:767 msgid "" "The auditioner is a dedicated mixer strip used\n" "for listening to specific regions outside the context\n" @@ -5116,35 +5131,35 @@ msgstr "" "для прослушивания определённых областей вне общего контекста микса. \n" "Его можно соединить как любой другой канал микшера." -#: gtk2_ardour/option_editor.cc:866 +#: gtk2_ardour/option_editor.cc:840 msgid "Edit using" msgstr "Редактировать с" -#: gtk2_ardour/option_editor.cc:873 gtk2_ardour/option_editor.cc:900 +#: gtk2_ardour/option_editor.cc:847 gtk2_ardour/option_editor.cc:874 msgid "+ button" msgstr "+ клавиша" -#: gtk2_ardour/option_editor.cc:893 +#: gtk2_ardour/option_editor.cc:867 msgid "Delete using" msgstr "Удалять с" -#: gtk2_ardour/option_editor.cc:920 +#: gtk2_ardour/option_editor.cc:894 msgid "Ignore snap using" msgstr "Игнорировать привязку с" -#: gtk2_ardour/opts.cc:46 +#: gtk2_ardour/opts.cc:47 msgid "Usage: " msgstr "Использование: " -#: gtk2_ardour/opts.cc:47 +#: gtk2_ardour/opts.cc:48 msgid " -v, --version Show version information\n" msgstr " -v, --version Информация о версии программы\n" -#: gtk2_ardour/opts.cc:48 +#: gtk2_ardour/opts.cc:49 msgid " -h, --help Print this message\n" msgstr " -h, --help Показать это сообщение\n" -#: gtk2_ardour/opts.cc:49 +#: gtk2_ardour/opts.cc:50 msgid "" " -b, --bindings Print all possible keyboard binding " "names\n" @@ -5152,45 +5167,46 @@ msgstr "" " -b, --bindings Показать все доступные \"горячие\" " "клавиши\n" -#: gtk2_ardour/opts.cc:50 +#: gtk2_ardour/opts.cc:51 msgid " -n, --show-splash Show splash screen\n" msgstr " -n, --no-splash Не показывать заставку\n" -#: gtk2_ardour/opts.cc:51 +#: gtk2_ardour/opts.cc:52 msgid "" " -c, --name name Use a specific jack client name, default " "is ardour\n" msgstr "" -" -c, --jack-client-name имя Использовать другое имя клиента к JACK, " -"по умолчанию — Ardour\n" +" -c, --jack-client-name имя Использовать другое имя клиента к JACK, по " +"умолчанию — Ardour\n" -#: gtk2_ardour/opts.cc:52 +#: gtk2_ardour/opts.cc:53 msgid "" " -N, --new session-name Create a new session from the command " "line\n" msgstr " -N, --new имя-сессии Создать новую сессию из командной строки\n" -#: gtk2_ardour/opts.cc:53 -msgid " -o, --use-hw-optimizations Try to use h/w specific optimizations\n" +#: gtk2_ardour/opts.cc:54 +msgid " -O, --no-hw-optimizations Disable h/w specific optimizations\n" msgstr "" -#: gtk2_ardour/opts.cc:55 +#: gtk2_ardour/opts.cc:56 #, fuzzy msgid " -V, --novst Do not use VST support\n" msgstr " -n, --no-splash Не показывать заставку\n" -#: gtk2_ardour/opts.cc:57 +#: gtk2_ardour/opts.cc:58 msgid " [session-name] Name of session to load\n" msgstr " [имя-сессии] Загрузить сессию с указанным именем\n" -#: gtk2_ardour/opts.cc:58 +#: gtk2_ardour/opts.cc:59 msgid " -C, --curvetest filename Curve algorithm debugger\n" msgstr "" -#: gtk2_ardour/opts.cc:59 -#, fuzzy -msgid " -g, --gtktheme Allow GTK to load a theme\n" -msgstr " -h, --help Показать это сообщение\n" +#: gtk2_ardour/opts.cc:60 +msgid "" +" -k, --keybindings filename Name of key bindings to load (default is " +"~/.ardour2/ardour.bindings)\n" +msgstr "" #: gtk2_ardour/pan_automation_time_axis.cc:70 msgid "You need to select which line to edit" @@ -5200,42 +5216,42 @@ msgstr "" msgid "add pan automation event" msgstr "добавить автомат. событие панорамы" -#: gtk2_ardour/panner2d.cc:589 gtk2_ardour/panner_ui.cc:425 -#: gtk2_ardour/plugin_ui.cc:146 +#: gtk2_ardour/panner2d.cc:589 gtk2_ardour/panner_ui.cc:438 +#: gtk2_ardour/plugin_ui.cc:152 msgid "Bypass" msgstr "Обход" -#: gtk2_ardour/panner_ui.cc:56 gtk2_ardour/panner_ui.cc:223 +#: gtk2_ardour/panner_ui.cc:58 gtk2_ardour/panner_ui.cc:225 #, fuzzy msgid "link" msgstr "в" -#: gtk2_ardour/panner_ui.cc:67 +#: gtk2_ardour/panner_ui.cc:69 msgid "Pan automation mode" msgstr "Режим автоматизации панорамы" -#: gtk2_ardour/panner_ui.cc:68 +#: gtk2_ardour/panner_ui.cc:70 msgid "Pan automation type" msgstr "Тип автоматизации панорамы" -#: gtk2_ardour/panner_ui.cc:79 +#: gtk2_ardour/panner_ui.cc:81 msgid "panning link control" msgstr "" -#: gtk2_ardour/panner_ui.cc:81 +#: gtk2_ardour/panner_ui.cc:83 msgid "panning link direction" msgstr "" -#: gtk2_ardour/panner_ui.cc:233 +#: gtk2_ardour/panner_ui.cc:235 msgid "L" msgstr "L" -#: gtk2_ardour/panner_ui.cc:328 +#: gtk2_ardour/panner_ui.cc:341 #, c-format msgid "panner for channel %zu" msgstr "" -#: gtk2_ardour/panner_ui.cc:435 +#: gtk2_ardour/panner_ui.cc:448 msgid "Reset all" msgstr "Сбросить все" @@ -5247,15 +5263,15 @@ msgstr "Списки воспроизведения" msgid "Playlists grouped by track" msgstr "Списки, сгруппированные по дорожке" -#: gtk2_ardour/playlist_selector.cc:98 +#: gtk2_ardour/playlist_selector.cc:108 msgid "ardour: playlist for " msgstr "ardour: список воспроизведения для " -#: gtk2_ardour/playlist_selector.cc:114 +#: gtk2_ardour/playlist_selector.cc:124 msgid "Other tracks" msgstr "Другие дорожки" -#: gtk2_ardour/playlist_selector.cc:130 +#: gtk2_ardour/playlist_selector.cc:141 msgid "unassigned" msgstr "" @@ -5283,7 +5299,7 @@ msgstr "# выходов" #: gtk2_ardour/plugin_selector.cc:68 msgid "Plugins to be Connected to Insert" -msgstr "" +msgstr "Расширения, подключаемые к возврату" #: gtk2_ardour/plugin_selector.cc:80 gtk2_ardour/plugin_selector.cc:98 msgid "Available plugins" @@ -5319,11 +5335,11 @@ msgid "" "version of ardour)" msgstr "" -#: gtk2_ardour/plugin_ui.cc:166 +#: gtk2_ardour/plugin_ui.cc:172 msgid "Plugin preset %1 not found" msgstr "" -#: gtk2_ardour/plugin_ui.cc:176 +#: gtk2_ardour/plugin_ui.cc:182 msgid "Name of New Preset:" msgstr "Имя новой предустановки:" @@ -5335,15 +5351,15 @@ msgstr "" msgid "add automation event to " msgstr "" -#: gtk2_ardour/redirect_box.cc:226 +#: gtk2_ardour/redirect_box.cc:235 msgid "New send" msgstr "Новый посыл" -#: gtk2_ardour/redirect_box.cc:227 +#: gtk2_ardour/redirect_box.cc:236 msgid "Show send controls" msgstr "" -#: gtk2_ardour/redirect_box.cc:386 +#: gtk2_ardour/redirect_box.cc:417 msgid "" "You attempted to add a plugin (%1).\n" "The plugin has %2 inputs\n" @@ -5354,7 +5370,7 @@ msgid "" "part of the signal." msgstr "" -#: gtk2_ardour/redirect_box.cc:398 +#: gtk2_ardour/redirect_box.cc:429 msgid "" "You attempted to add a plugin (%1).\n" "The plugin has %2 inputs\n" @@ -5366,7 +5382,7 @@ msgid "" "support this type of configuration." msgstr "" -#: gtk2_ardour/redirect_box.cc:411 +#: gtk2_ardour/redirect_box.cc:442 msgid "" "You attempted to add a plugin (%1).\n" "\n" @@ -5379,34 +5395,34 @@ msgid "" "Ardour does not understand what to do in such situations.\n" msgstr "" -#: gtk2_ardour/redirect_box.cc:499 +#: gtk2_ardour/redirect_box.cc:539 msgid "Pre-fader inserts, sends & plugins:" msgstr "" -#: gtk2_ardour/redirect_box.cc:502 +#: gtk2_ardour/redirect_box.cc:542 msgid "Post-fader inserts, sends & plugins:" msgstr "" -#: gtk2_ardour/redirect_box.cc:650 +#: gtk2_ardour/redirect_box.cc:708 msgid "" "You cannot reorder this set of redirects\n" "in that way because the inputs and\n" "outputs do not work correctly." msgstr "" -#: gtk2_ardour/redirect_box.cc:750 +#: gtk2_ardour/redirect_box.cc:821 #, fuzzy msgid "rename redirect" msgstr "ardour: переименовать область" -#: gtk2_ardour/redirect_box.cc:824 gtk2_ardour/redirect_box.cc:872 +#: gtk2_ardour/redirect_box.cc:898 gtk2_ardour/redirect_box.cc:946 msgid "" "Copying the set of redirects on the clipboard failed,\n" "probably because the I/O configuration of the plugins\n" "could not match the configuration of this track." msgstr "" -#: gtk2_ardour/redirect_box.cc:894 +#: gtk2_ardour/redirect_box.cc:968 #, fuzzy msgid "" "Do you really want to remove all redirects from this track?\n" @@ -5415,7 +5431,7 @@ msgstr "" "Вы действительно хотите удалить трек \"%1\" ?\n" "(отмена невозможна)" -#: gtk2_ardour/redirect_box.cc:897 +#: gtk2_ardour/redirect_box.cc:971 #, fuzzy msgid "" "Do you really want to remove all redirects from this bus?\n" @@ -5424,174 +5440,107 @@ msgstr "" "Вы действительно хотите удалить трек \"%1\" ?\n" "(отмена невозможна)" -#: gtk2_ardour/redirect_box.cc:902 +#: gtk2_ardour/redirect_box.cc:976 msgid "Yes, remove them all" msgstr "Да, удалить их все" -#: gtk2_ardour/redirect_box.cc:938 +#: gtk2_ardour/redirect_box.cc:1012 #, fuzzy msgid "ardour: %1" msgstr "ardour: " -#: gtk2_ardour/redirect_box.cc:983 -#, fuzzy -msgid "ardour: %1: %2 (by %3)" -msgstr "ardour: " - -#: gtk2_ardour/redirect_box.cc:1069 +#: gtk2_ardour/redirect_box.cc:1134 msgid "New Plugin ..." -msgstr "Новое расширение..." +msgstr "Добавить расширение..." -#: gtk2_ardour/redirect_box.cc:1070 +#: gtk2_ardour/redirect_box.cc:1136 msgid "New Insert" -msgstr "Новый возврат" +msgstr "Добавить возврат" -#: gtk2_ardour/redirect_box.cc:1071 +#: gtk2_ardour/redirect_box.cc:1138 msgid "New Send ..." -msgstr "Новый посыл..." +msgstr "Добавить посыл..." -#: gtk2_ardour/redirect_box.cc:1083 +#: gtk2_ardour/redirect_box.cc:1152 msgid "Deselect All" msgstr "Снять все выделения" -#: gtk2_ardour/redirect_box.cc:1090 +#: gtk2_ardour/redirect_box.cc:1159 msgid "Activate all" msgstr "Активировать все" -#: gtk2_ardour/redirect_box.cc:1091 +#: gtk2_ardour/redirect_box.cc:1160 msgid "Deactivate all" msgstr "Деактивировать все" -#: gtk2_ardour/audio_region_editor.cc:44 -msgid "NAME:" -msgstr "ИМЯ:" - -#: gtk2_ardour/audio_region_editor.cc:45 -msgid "lock" -msgstr "запереть" +#: gtk2_ardour/redirect_box.cc:1339 +#, fuzzy +msgid "ardour: %1: %2 (by %3)" +msgstr "ardour: " #: gtk2_ardour/audio_region_editor.cc:47 -msgid "opaque" -msgstr "затенить" +msgid "NAME:" +msgstr "ИМЯ:" #: gtk2_ardour/audio_region_editor.cc:48 -#: gtk2_ardour/audio_region_editor.cc:191 -#: gtk2_ardour/audio_region_editor.cc:225 -msgid "active" -msgstr "активно" - -#: gtk2_ardour/audio_region_editor.cc:49 -msgid "visible" -msgstr "Видимы" - -#: gtk2_ardour/audio_region_editor.cc:52 -msgid "Layer" -msgstr "Слой" - -#: gtk2_ardour/audio_region_editor.cc:53 msgid "play" msgstr "воспроизвести" -#: gtk2_ardour/audio_region_editor.cc:60 -msgid "ENVELOPE" -msgstr "ОГИБАЮЩАЯ" - -#: gtk2_ardour/audio_region_editor.cc:106 -msgid "mute this region" -msgstr "отключить воспроизведение этой области" - -#: gtk2_ardour/audio_region_editor.cc:107 -msgid "regions underneath this one cannot be heard" -msgstr "области ниже этой не могут быть прослушаны" - -#: gtk2_ardour/audio_region_editor.cc:108 -msgid "prevent any changes to this region" -msgstr "запретить любые изменения этой области" - -#: gtk2_ardour/audio_region_editor.cc:109 -msgid "use the gain envelope during playback" -msgstr "использовать огибающую при воспроизведении" - -#: gtk2_ardour/audio_region_editor.cc:110 -msgid "show the gain envelope" -msgstr "отображать огибающую" - -#: gtk2_ardour/audio_region_editor.cc:111 -msgid "use fade in curve during playback" -msgstr "использовать вводную кривую при воспроизведении" - -#: gtk2_ardour/audio_region_editor.cc:112 -msgid "use fade out curve during playback" -msgstr "использовать выводную кривую при воспроизведении" - -#: gtk2_ardour/audio_region_editor.cc:113 +#: gtk2_ardour/audio_region_editor.cc:67 msgid "audition this region" msgstr "прослушать область" -#: gtk2_ardour/audio_region_editor.cc:146 +#: gtk2_ardour/audio_region_editor.cc:82 msgid "START:" msgstr "НАЧАЛО:" -#: gtk2_ardour/audio_region_editor.cc:148 +#: gtk2_ardour/audio_region_editor.cc:84 msgid "END:" msgstr "КОНЕЦ:" -#: gtk2_ardour/audio_region_editor.cc:150 +#: gtk2_ardour/audio_region_editor.cc:86 msgid "LENGTH:" msgstr "ДЛИНА:" -#: gtk2_ardour/audio_region_editor.cc:190 -msgid "FADE IN" -msgstr "ВВЕДЕНИЕ В УРОВЕНЬ" - -#: gtk2_ardour/audio_region_editor.cc:192 -#: gtk2_ardour/audio_region_editor.cc:226 -msgid "msecs" -msgstr "мс" - -#: gtk2_ardour/audio_region_editor.cc:224 -msgid "FADE OUT" -msgstr "СВЕДЕНИЕ В НОЛЬ" - -#: gtk2_ardour/audio_region_editor.cc:264 +#: gtk2_ardour/audio_region_editor.cc:122 msgid "ardour: region " msgstr "ardour: область " -#: gtk2_ardour/audio_region_editor.cc:401 -msgid "fade in edit" -msgstr "редактировать введение в уровень" +#: gtk2_ardour/audio_region_editor.cc:202 +#, fuzzy +msgid "change region start position" +msgstr "Области/положение" -#: gtk2_ardour/audio_region_editor.cc:413 -msgid "fade out edit" -msgstr "редактировать сведение в ноль" +#: gtk2_ardour/audio_region_editor.cc:219 +#, fuzzy +msgid "change region end position" +msgstr "Области/положение" -#: gtk2_ardour/audio_region_view.cc:901 +#: gtk2_ardour/audio_region_editor.cc:240 +#, fuzzy +msgid "change region length" +msgstr "редактировать введение в уровень" + +#: gtk2_ardour/audio_region_view.cc:939 #, fuzzy msgid "add gain control point" msgstr "использовать контрольные выходы" #: gtk2_ardour/route_params_ui.cc:85 msgid "Tracks/Buses" -msgstr "Дорожи/Шины" +msgstr "Дорожи/шины" #: gtk2_ardour/route_params_ui.cc:105 -#, fuzzy msgid "Pre-fader Redirects" -msgstr "Предобработка" +msgstr "Предфейдерные перенаправления" #: gtk2_ardour/route_params_ui.cc:106 -#, fuzzy msgid "Post-fader Redirects" -msgstr "Постобработка" +msgstr "Послефейдерные перенаправления" #: gtk2_ardour/route_params_ui.cc:140 -#, fuzzy msgid "ardour: track/bus inspector" -msgstr "ardour: добавить трек/шину" - -#: gtk2_ardour/route_params_ui.cc:141 -msgid "ardour_route_parameters" -msgstr "ardour_параметры_маршрутов" +msgstr "ardour: добавить дорожку/шину" #: gtk2_ardour/route_params_ui.cc:202 msgid "route display list item for renamed route not found!" @@ -5599,12 +5548,11 @@ msgstr "" #: gtk2_ardour/route_params_ui.cc:449 msgid "NO TRACK" -msgstr "НЕТ ТРЕКОВ" +msgstr "НЕТ ДОРОЖЕК" #: gtk2_ardour/route_params_ui.cc:672 -#, fuzzy msgid "ardour: track/bus inspector: " -msgstr "ardour: добавить трек/шину" +msgstr "ardour: инспектор дорожек/шин" #: gtk2_ardour/route_params_ui.cc:676 msgid "No Route Selected" @@ -5615,56 +5563,60 @@ msgstr "Нет выбранных маршрутов" msgid "ardour: track/bus/inspector: no route selected" msgstr "ardour: параметры маршрутов: нет выбранных маршрутов" -#: gtk2_ardour/route_ui.cc:131 +#: gtk2_ardour/route_ui.cc:144 msgid "mute change" msgstr "" -#: gtk2_ardour/route_ui.cc:207 gtk2_ardour/route_ui.cc:218 +#: gtk2_ardour/route_ui.cc:222 gtk2_ardour/route_ui.cc:233 msgid "solo change" msgstr "" -#: gtk2_ardour/route_ui.cc:282 +#: gtk2_ardour/route_ui.cc:291 +msgid "Not connected to JACK - cannot engage record" +msgstr "" + +#: gtk2_ardour/route_ui.cc:303 msgid "rec-enable change" msgstr "" -#: gtk2_ardour/route_ui.cc:480 +#: gtk2_ardour/route_ui.cc:501 #, fuzzy msgid "Solo-safe" msgstr "Соло" -#: gtk2_ardour/route_ui.cc:502 +#: gtk2_ardour/route_ui.cc:523 msgid "Pre Fader" -msgstr "Пред фейдер" +msgstr "Предфейдер" -#: gtk2_ardour/route_ui.cc:509 +#: gtk2_ardour/route_ui.cc:530 msgid "Post Fader" -msgstr "Пост фейдер" +msgstr "Послефейдер" -#: gtk2_ardour/route_ui.cc:516 +#: gtk2_ardour/route_ui.cc:537 msgid "Control Outs" msgstr "Контрольные выходы" -#: gtk2_ardour/route_ui.cc:523 +#: gtk2_ardour/route_ui.cc:544 msgid "Main Outs" msgstr "Главные выходы" -#: gtk2_ardour/route_ui.cc:560 +#: gtk2_ardour/route_ui.cc:581 msgid "mix group solo change" msgstr "" -#: gtk2_ardour/route_ui.cc:599 +#: gtk2_ardour/route_ui.cc:620 msgid "mix group mute change" msgstr "" -#: gtk2_ardour/route_ui.cc:616 +#: gtk2_ardour/route_ui.cc:637 msgid "mix group rec-enable change" msgstr "" -#: gtk2_ardour/route_ui.cc:634 gtk2_ardour/visual_time_axis.cc:237 +#: gtk2_ardour/route_ui.cc:655 gtk2_ardour/visual_time_axis.cc:242 msgid "ardour: color selection" msgstr "ardour: выбор цвета" -#: gtk2_ardour/route_ui.cc:710 +#: gtk2_ardour/route_ui.cc:731 #, fuzzy msgid "" "Do you really want to remove track \"%1\" ?\n" @@ -5675,7 +5627,7 @@ msgstr "" "Вы действительно хотите удалить трек \"%1\" ?\n" "(отмена невозможна)" -#: gtk2_ardour/route_ui.cc:712 +#: gtk2_ardour/route_ui.cc:733 msgid "" "Do you really want to remove bus \"%1\" ?\n" "(cannot be undone)" @@ -5683,98 +5635,91 @@ msgstr "" "Вы действительно хотите удалить шину \"%1\" ?\n" "(отмена невозможна)" -#: gtk2_ardour/route_ui.cc:716 gtk2_ardour/visual_time_axis.cc:279 +#: gtk2_ardour/route_ui.cc:737 gtk2_ardour/visual_time_axis.cc:284 msgid "Yes, remove it." msgstr "Да, удалить." -#: gtk2_ardour/route_ui.cc:744 +#: gtk2_ardour/route_ui.cc:758 #, fuzzy msgid "New Name: " msgstr "новое имя: " -#: gtk2_ardour/sfdb_ui.cc:61 -msgid "Add Field..." -msgstr "Добавить поле..." - -#: gtk2_ardour/sfdb_ui.cc:62 -msgid "Remove Field" -msgstr "Удалить поле" +#: gtk2_ardour/sfdb_ui.cc:60 +#, fuzzy +msgid "Apply" +msgstr "воспроизвести" -#: gtk2_ardour/sfdb_ui.cc:65 +#: gtk2_ardour/sfdb_ui.cc:63 msgid "Soundfile Info" msgstr "Информация о файле" -#: gtk2_ardour/sfdb_ui.cc:83 -msgid "Field" -msgstr "Критерий" - -#: gtk2_ardour/sfdb_ui.cc:84 -msgid "Value" -msgstr "Значение" +#: gtk2_ardour/sfdb_ui.cc:120 +msgid "Length: %1" +msgstr "" -#: gtk2_ardour/sfdb_ui.cc:167 +#: gtk2_ardour/sfdb_ui.cc:126 #, fuzzy -msgid "channels" +msgid "Channels: %1" msgstr "отмена" -#: gtk2_ardour/sfdb_ui.cc:167 +#: gtk2_ardour/sfdb_ui.cc:129 #, fuzzy -msgid "samplerate" +msgid "Samplerate: %1" msgstr "Разделить область" -#: gtk2_ardour/sfdb_ui.cc:168 -#, fuzzy -msgid "resolution" -msgstr "Воспроизвести выделенное" - -#: gtk2_ardour/sfdb_ui.cc:168 -#, fuzzy -msgid "format" -msgstr "Норм." +#: gtk2_ardour/sfdb_ui.cc:132 +msgid "Timecode: %1" +msgstr "" -#: gtk2_ardour/sfdb_ui.cc:189 +#: gtk2_ardour/sfdb_ui.cc:166 #, fuzzy msgid "Could not read file: %1 (%2)." msgstr "Редактор: не удалось открыть файл \"%1\" (%2)" -#: gtk2_ardour/sfdb_ui.cc:205 +#: gtk2_ardour/sfdb_ui.cc:184 msgid "Could not access soundfile: " msgstr "Файл недоступен: " -#: gtk2_ardour/sfdb_ui.cc:244 +#: gtk2_ardour/sfdb_ui.cc:267 +msgid "Add to Region list" +msgstr "Добавить в список областей" + +#: gtk2_ardour/sfdb_ui.cc:268 +msgid "Add to selected Track(s)" +msgstr "Добавить в выделенные дорожки" + +#: gtk2_ardour/sfdb_ui.cc:269 +msgid "Add as new Track(s)" +msgstr "Добавить как новую дорожку(-и)" + +#: gtk2_ardour/sfdb_ui.cc:270 #, fuzzy -msgid "Name for Field" -msgstr "Имя области: " +msgid "Add as new Tape Track(s)" +msgstr "Добавить как новую tape дорожку(-и)" -#: gtk2_ardour/sfdb_ui.cc:356 +#: gtk2_ardour/sfdb_ui.cc:313 msgid "Split Channels" -msgstr "" +msgstr "Разделить каналы" -#: gtk2_ardour/sfdb_ui.cc:363 +#: gtk2_ardour/sfdb_ui.cc:320 msgid "Create a region for each channel" -msgstr "" +msgstr "Создать область для каждого канала" -#: gtk2_ardour/sfdb_ui.cc:365 +#: gtk2_ardour/sfdb_ui.cc:322 msgid "Embed" -msgstr "" +msgstr "Встроить" -#: gtk2_ardour/sfdb_ui.cc:367 -#, fuzzy +#: gtk2_ardour/sfdb_ui.cc:324 msgid "Link to an external file" -msgstr "Вставить внешний аудиофайл" +msgstr "Сослаться на внешний файл" -#: gtk2_ardour/sfdb_ui.cc:369 +#: gtk2_ardour/sfdb_ui.cc:328 msgid "Import" -msgstr "Импорт" +msgstr "Импортировать" -#: gtk2_ardour/sfdb_ui.cc:371 +#: gtk2_ardour/sfdb_ui.cc:330 msgid "Copy a file to the session folder" -msgstr "" - -#: gtk2_ardour/sfdb_ui.cc:438 -#, fuzzy -msgid "programming error: %1" -msgstr "ошибка в программе: " +msgstr "Скопировать файл в папку проекта" #: gtk2_ardour/tempo_dialog.cc:18 gtk2_ardour/tempo_dialog.cc:35 msgid "Beats per minute" @@ -5844,27 +5789,27 @@ msgstr "некорректное определение ноты (%1)" msgid "gTortnam" msgstr "" -#: gtk2_ardour/time_axis_view.cc:550 +#: gtk2_ardour/time_axis_view.cc:583 msgid "Largest" msgstr "Огромная" -#: gtk2_ardour/time_axis_view.cc:551 +#: gtk2_ardour/time_axis_view.cc:584 msgid "Large" msgstr "Большая" -#: gtk2_ardour/time_axis_view.cc:552 +#: gtk2_ardour/time_axis_view.cc:585 msgid "Larger" msgstr "Больше" -#: gtk2_ardour/time_axis_view.cc:554 +#: gtk2_ardour/time_axis_view.cc:587 msgid "Smaller" msgstr "Меньше" -#: gtk2_ardour/time_axis_view.cc:555 +#: gtk2_ardour/time_axis_view.cc:588 msgid "Small" msgstr "Маленькая" -#: gtk2_ardour/time_axis_view.cc:869 +#: gtk2_ardour/time_axis_view.cc:903 msgid "unknown track height name \"%1\" in XML GUI information" msgstr "неизвестное имя ширины трека \"%1\" в XML описании" @@ -5880,15 +5825,20 @@ msgstr "" msgid "programming error: request for non-existent audio range (%1)!" msgstr "ошибка в программе: request for non-existent audio range (%1)!" -#: gtk2_ardour/utils.cc:107 gtk2_ardour/utils.cc:150 +#: gtk2_ardour/utils.cc:118 gtk2_ardour/utils.cc:161 msgid "bad XPM header %1" msgstr "ошибка в XPM заголовке %1" -#: gtk2_ardour/utils.cc:332 +#: gtk2_ardour/utils.cc:285 msgid "missing RGBA style for \"%1\"" msgstr "" -#: gtk2_ardour/visual_time_axis.cc:276 +#: gtk2_ardour/utils.cc:467 +#, fuzzy +msgid "cannot find icon image for %1" +msgstr "cannot setup signal handling for %1" + +#: gtk2_ardour/visual_time_axis.cc:281 msgid "" "Do you really want to remove track \"%1\" ?\n" "(cannot be undone)" @@ -5896,14 +5846,10 @@ msgstr "" "Вы действительно хотите удалить трек \"%1\" ?\n" "(отмена невозможна)" -#: gtk2_ardour/visual_time_axis.cc:325 +#: gtk2_ardour/visual_time_axis.cc:330 msgid "new name: " msgstr "новое имя: " -#: gtk2_ardour/visual_time_axis.cc:336 -msgid "A track already exists with that name" -msgstr "Трек с таким именем уже существует" - #: gtk2_ardour/connection_editor.cc:51 msgid "ardour: connections" msgstr "ardour: соединения" diff --git a/gtk2_ardour/prompter.cc b/gtk2_ardour/prompter.cc index a10bd92f72..0e1732b237 100644 --- a/gtk2_ardour/prompter.cc +++ b/gtk2_ardour/prompter.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include "prompter.h" diff --git a/gtk2_ardour/prompter.h b/gtk2_ardour/prompter.h index 5e8e71f3c5..4e97e64e6f 100644 --- a/gtk2_ardour/prompter.h +++ b/gtk2_ardour/prompter.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_gtk_prompter_h__ diff --git a/gtk2_ardour/public_editor.h b/gtk2_ardour/public_editor.h index 5821110b6c..0baecd43d9 100644 --- a/gtk2_ardour/public_editor.h +++ b/gtk2_ardour/public_editor.h @@ -14,7 +14,6 @@ #include #include "editing.h" -#include "keyboard_target.h" #include "canvas.h" #include "selection.h" @@ -74,11 +73,11 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulThingWithGoingAway virtual void set_mouse_mode (Editing::MouseMode, bool force = false) = 0; virtual void step_mouse_mode (bool next) = 0; virtual Editing::MouseMode current_mouse_mode () = 0; - virtual void add_imageframe_time_axis(const string & track_name, void*) = 0; - virtual void add_imageframe_marker_time_axis(const string & track_name, TimeAxisView* marked_track, void*) = 0; + virtual void add_imageframe_time_axis(const std::string & track_name, void*) = 0; + virtual void add_imageframe_marker_time_axis(const std::string & track_name, TimeAxisView* marked_track, void*) = 0; virtual void connect_to_image_compositor() = 0; virtual void scroll_timeaxis_to_imageframe_item(const TimeAxisViewItem* item) = 0; - virtual TimeAxisView* get_named_time_axis(const string & name) = 0; + virtual TimeAxisView* get_named_time_axis(const std::string & name) = 0; virtual void consider_auditioning (boost::shared_ptr) = 0; virtual void set_show_waveforms (bool yn) = 0; virtual bool show_waveforms() const = 0; @@ -113,6 +112,7 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulThingWithGoingAway virtual void new_playlists () = 0; virtual void copy_playlists () = 0; virtual void clear_playlists () = 0; + virtual void select_all_tracks () = 0; virtual bool set_selected_track (TimeAxisView&, Selection::Operation op = Selection::Set, bool no_remove = false) = 0; virtual void set_selected_mixer_strip (TimeAxisView&) = 0; virtual void hide_track_in_display (TimeAxisView& tv) = 0; @@ -135,8 +135,8 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulThingWithGoingAway virtual void remove_last_capture () = 0; virtual void maximise_editing_space() = 0; virtual void restore_editing_space() = 0; + virtual nframes_t edit_cursor_position(bool sync) = 0; - sigc::signal DisplayControlChanged; sigc::signal ZoomFocusChanged; sigc::signal ZoomChanged; sigc::signal Resized; diff --git a/gtk2_ardour/redirect_automation_line.cc b/gtk2_ardour/redirect_automation_line.cc index 1ea5013295..b1b19d530f 100644 --- a/gtk2_ardour/redirect_automation_line.cc +++ b/gtk2_ardour/redirect_automation_line.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include "public_editor.h" diff --git a/gtk2_ardour/redirect_automation_line.h b/gtk2_ardour/redirect_automation_line.h index ad39f6625c..71e4d23e64 100644 --- a/gtk2_ardour/redirect_automation_line.h +++ b/gtk2_ardour/redirect_automation_line.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_gtk_redirect_automation_line_h__ diff --git a/gtk2_ardour/redirect_automation_time_axis.cc b/gtk2_ardour/redirect_automation_time_axis.cc index 529c0b565d..acffda4ff1 100644 --- a/gtk2_ardour/redirect_automation_time_axis.cc +++ b/gtk2_ardour/redirect_automation_time_axis.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/redirect_box.cc b/gtk2_ardour/redirect_box.cc index fac6ede6f3..63d3ec9d8e 100644 --- a/gtk2_ardour/redirect_box.cc +++ b/gtk2_ardour/redirect_box.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -398,16 +397,16 @@ RedirectBox::insert_plugin_chosen (boost::shared_ptr plugin) uint32_t err_streams; if (_route->add_redirect (redirect, this, &err_streams)) { - wierd_plugin_dialog (*plugin, err_streams, _route); + weird_plugin_dialog (*plugin, err_streams, _route); // XXX SHAREDPTR delete plugin here .. do we even need to care? } } } void -RedirectBox::wierd_plugin_dialog (Plugin& p, uint32_t streams, boost::shared_ptr io) +RedirectBox::weird_plugin_dialog (Plugin& p, uint32_t streams, boost::shared_ptr io) { - ArdourDialog dialog ("wierd plugin dialog"); + ArdourDialog dialog (_("ardour: weird plugin dialog")); Label label; /* i hate this kind of code */ @@ -703,7 +702,7 @@ RedirectBox::compute_redirect_sort_keys () /* now tell them about the problem */ - ArdourDialog dialog ("wierd plugin dialog"); + ArdourDialog dialog (_("ardour: weird plugin dialog")); Label label; label.set_text (_("\ diff --git a/gtk2_ardour/redirect_box.h b/gtk2_ardour/redirect_box.h index 7ab7d03cac..7e93efee1b 100644 --- a/gtk2_ardour/redirect_box.h +++ b/gtk2_ardour/redirect_box.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_gtk_redirect_box__ @@ -195,7 +194,7 @@ class RedirectBox : public Gtk::HBox gint idle_delete_redirect (boost::weak_ptr); - void wierd_plugin_dialog (ARDOUR::Plugin& p, uint32_t streams, boost::shared_ptr io); + void weird_plugin_dialog (ARDOUR::Plugin& p, uint32_t streams, boost::shared_ptr io); static RedirectBox* _current_redirect_box; static bool enter_box (GdkEventCrossing*, RedirectBox*); diff --git a/gtk2_ardour/region_editor.h b/gtk2_ardour/region_editor.h index 70590b0db5..394ad6bcfb 100644 --- a/gtk2_ardour/region_editor.h +++ b/gtk2_ardour/region_editor.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: /local/undo/gtk2_ardour/region_editor.h 5 2006-05-31T02:48:48.738745Z paul $ */ #ifndef __gtk_ardour_region_edit_h__ diff --git a/gtk2_ardour/region_view.cc b/gtk2_ardour/region_view.cc index aff5866c8d..f11ec2a307 100644 --- a/gtk2_ardour/region_view.cc +++ b/gtk2_ardour/region_view.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -68,7 +67,6 @@ RegionView::RegionView (ArdourCanvas::Group* parent, TimeAxisViewItem::ShowFrame)) , _region (r) , sync_mark(0) - , no_wave_msg(0) , editor(0) , current_visible_sync_position(0.0) , valid(false) @@ -79,6 +77,19 @@ RegionView::RegionView (ArdourCanvas::Group* parent, { } +RegionView::RegionView (const RegionView& other) + : TimeAxisViewItem (other) +{ + /* derived concrete type will call init () */ + + _region = other._region; + editor = other.editor; + current_visible_sync_position = other.current_visible_sync_position; + valid = false; + _pixel_width = other._pixel_width; + _height = other._height; +} + RegionView::RegionView (ArdourCanvas::Group* parent, TimeAxisView& tv, boost::shared_ptr r, @@ -88,7 +99,6 @@ RegionView::RegionView (ArdourCanvas::Group* parent, : TimeAxisViewItem (r->name(), *parent, tv, spu, basic_color, r->position(), r->length(), visibility) , _region (r) , sync_mark(0) - , no_wave_msg(0) , editor(0) , current_visible_sync_position(0.0) , valid(false) @@ -102,7 +112,6 @@ RegionView::RegionView (ArdourCanvas::Group* parent, void RegionView::init (Gdk::Color& basic_color, bool wfd) { - editor = 0; valid = true; in_destructor = false; _height = 0; @@ -375,6 +384,18 @@ RegionView::set_frame_color () TimeAxisViewItem::set_frame_color (); } +void +RegionView::fake_set_opaque (bool yn) +{ + if (yn) { + fill_opacity = 130; + } else { + fill_opacity = 60; + } + + TimeAxisViewItem::set_frame_color (); +} + void RegionView::hide_region_editor() { diff --git a/gtk2_ardour/region_view.h b/gtk2_ardour/region_view.h index 435e878bc8..74073b404e 100644 --- a/gtk2_ardour/region_view.h +++ b/gtk2_ardour/region_view.h @@ -47,6 +47,8 @@ class RegionView : public TimeAxisViewItem double samples_per_unit, Gdk::Color& basic_color); + RegionView (const RegionView& other); + ~RegionView (); virtual void init (Gdk::Color& base_color, bool wait_for_data); @@ -68,6 +70,7 @@ class RegionView : public TimeAxisViewItem void lower_to_bottom (); bool set_position(nframes_t pos, void* src, double* delta = 0); + void fake_set_opaque (bool yn); virtual void show_region_editor () = 0; virtual void hide_region_editor(); @@ -82,14 +85,14 @@ class RegionView : public TimeAxisViewItem virtual void entered () {} virtual void exited () {} - static sigc::signal RegionViewGoingAway; + static sigc::signal RegionViewGoingAway; sigc::signal GoingAway; protected: /** Allows derived types to specify their visibility requirements * to the TimeAxisViewItem parent class - */ + */ RegionView (ArdourCanvas::Group *, TimeAxisView&, boost::shared_ptr, @@ -119,7 +122,6 @@ class RegionView : public TimeAxisViewItem boost::shared_ptr _region; ArdourCanvas::Polygon* sync_mark; ///< polgyon for sync position - ArdourCanvas::Text* no_wave_msg; RegionEditor* editor; diff --git a/gtk2_ardour/rgb_macros.h b/gtk2_ardour/rgb_macros.h index 310e0a224d..5660e90ee6 100644 --- a/gtk2_ardour/rgb_macros.h +++ b/gtk2_ardour/rgb_macros.h @@ -18,7 +18,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __gtk_ardour_rgb_macros_h__ diff --git a/gtk2_ardour/route_params_ui.cc b/gtk2_ardour/route_params_ui.cc index 14d9fa02cb..386815ea27 100644 --- a/gtk2_ardour/route_params_ui.cc +++ b/gtk2_ardour/route_params_ui.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -56,9 +55,8 @@ using namespace PBD; using namespace Gtk; using namespace sigc; -RouteParams_UI::RouteParams_UI (AudioEngine& eng) +RouteParams_UI::RouteParams_UI () : ArdourDialog ("track/bus inspector"), - engine (eng), track_menu(0) { pre_redirect_box = 0; @@ -508,7 +506,7 @@ RouteParams_UI::show_track_menu() track_menu->set_name ("ArdourContextMenu"); track_menu->items().push_back (MenuElem (_("Add Track/Bus"), - mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::add_route))); + bind (mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::add_route), (Gtk::Window*) 0))); } track_menu->popup (1, gtk_get_current_event_time()); } diff --git a/gtk2_ardour/route_params_ui.h b/gtk2_ardour/route_params_ui.h index 394383de6b..c0b70cbdb1 100644 --- a/gtk2_ardour/route_params_ui.h +++ b/gtk2_ardour/route_params_ui.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_route_params_ui_h__ @@ -41,7 +40,6 @@ #include "io_selector.h" #include "ardour_dialog.h" -#include "keyboard_target.h" #include "redirect_box.h" #include "route_redirect_selection.h" @@ -60,7 +58,7 @@ class PluginSelector; class RouteParams_UI : public ArdourDialog { public: - RouteParams_UI (ARDOUR::AudioEngine&); + RouteParams_UI (); ~RouteParams_UI(); void set_session (ARDOUR::Session *); @@ -68,8 +66,6 @@ class RouteParams_UI : public ArdourDialog PluginSelector& plugin_selector() { return *_plugin_selector; } private: - ARDOUR::AudioEngine& engine; - Gtk::HBox global_hpacker; Gtk::VBox global_vpacker; Gtk::ScrolledWindow scroller; diff --git a/gtk2_ardour/route_redirect_selection.cc b/gtk2_ardour/route_redirect_selection.cc index 76f202dd92..5ad795c6f5 100644 --- a/gtk2_ardour/route_redirect_selection.cc +++ b/gtk2_ardour/route_redirect_selection.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/route_redirect_selection.h b/gtk2_ardour/route_redirect_selection.h index 60d301e762..8f0cfaf543 100644 --- a/gtk2_ardour/route_redirect_selection.h +++ b/gtk2_ardour/route_redirect_selection.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_gtk_route_redirect_selection_h__ diff --git a/gtk2_ardour/route_time_axis.cc b/gtk2_ardour/route_time_axis.cc index 9684f74024..b2f9ebf13f 100644 --- a/gtk2_ardour/route_time_axis.cc +++ b/gtk2_ardour/route_time_axis.cc @@ -105,11 +105,6 @@ RouteTimeAxisView::RouteTimeAxisView (PublicEditor& ed, Session& sess, boost::sh ignore_toggle = false; - mute_button->set_active (false); - solo_button->set_active (false); - - mute_button->set_name ("TrackMuteButton"); - solo_button->set_name ("SoloButton"); edit_group_button.set_name ("TrackGroupButton"); playlist_button.set_name ("TrackPlaylistButton"); automation_button.set_name ("TrackAutomationButton"); @@ -127,9 +122,9 @@ RouteTimeAxisView::RouteTimeAxisView (PublicEditor& ed, Session& sess, boost::sh visual_button.signal_clicked().connect (mem_fun(*this, &RouteTimeAxisView::visual_click)); hide_button.signal_clicked().connect (mem_fun(*this, &RouteTimeAxisView::hide_click)); - solo_button->signal_button_press_event().connect (mem_fun(*this, &RouteUI::solo_press)); + solo_button->signal_button_press_event().connect (mem_fun(*this, &RouteUI::solo_press), false); solo_button->signal_button_release_event().connect (mem_fun(*this, &RouteUI::solo_release)); - mute_button->signal_button_press_event().connect (mem_fun(*this, &RouteUI::mute_press)); + mute_button->signal_button_press_event().connect (mem_fun(*this, &RouteUI::mute_press), false); mute_button->signal_button_release_event().connect (mem_fun(*this, &RouteUI::mute_release)); if (is_track()) { @@ -147,8 +142,8 @@ RouteTimeAxisView::RouteTimeAxisView (PublicEditor& ed, Session& sess, boost::sh } rec_enable_button->show_all (); - rec_enable_button->set_name ("TrackRecordEnableButton"); - rec_enable_button->signal_button_press_event().connect (mem_fun(*this, &RouteUI::rec_enable_press)); + rec_enable_button->signal_button_press_event().connect (mem_fun(*this, &RouteUI::rec_enable_press), false); + rec_enable_button->signal_button_release_event().connect (mem_fun(*this, &RouteUI::rec_enable_release)); controls_table.attach (*rec_enable_button, 5, 6, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND, 0, 0); ARDOUR_UI::instance()->tooltips().set_tip(*rec_enable_button, _("Record")); } @@ -180,15 +175,6 @@ RouteTimeAxisView::RouteTimeAxisView (PublicEditor& ed, Session& sess, boost::sh /* remove focus from the buttons */ - automation_button.unset_flags (Gtk::CAN_FOCUS); - solo_button->unset_flags (Gtk::CAN_FOCUS); - mute_button->unset_flags (Gtk::CAN_FOCUS); - edit_group_button.unset_flags (Gtk::CAN_FOCUS); - size_button.unset_flags (Gtk::CAN_FOCUS); - playlist_button.unset_flags (Gtk::CAN_FOCUS); - hide_button.unset_flags (Gtk::CAN_FOCUS); - visual_button.unset_flags (Gtk::CAN_FOCUS); - y_position = -1; _route->mute_changed.connect (mem_fun(*this, &RouteUI::mute_changed)); @@ -491,7 +477,6 @@ RouteTimeAxisView::build_display_menu () static bool __reset_item (RadioMenuItem* item) { - cerr << "reset item to true\n"; item->set_active (); return false; } @@ -1006,6 +991,18 @@ RouteTimeAxisView::update_diskstream_display () void RouteTimeAxisView::selection_click (GdkEventButton* ev) { + if (Keyboard::modifier_state_equals (ev->state, (Keyboard::Shift|Keyboard::Control))) { + + /* special case: select/deselect all tracks */ + if (editor.get_selection().selected (this)) { + editor.get_selection().clear_tracks (); + } else { + editor.select_all_tracks (); + } + + return; + } + PublicEditor::TrackViewList* tracks = editor.get_valid_views (this, _route->edit_group()); switch (Keyboard::selection_type (ev->state)) { diff --git a/gtk2_ardour/route_time_axis.h b/gtk2_ardour/route_time_axis.h index c597f2893c..a72bc5a2cf 100644 --- a/gtk2_ardour/route_time_axis.h +++ b/gtk2_ardour/route_time_axis.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: audio_time_axis.h 664 2006-07-05 19:47:25Z drobilla $ */ #ifndef __ardour_route_time_axis_h__ diff --git a/gtk2_ardour/route_ui.cc b/gtk2_ardour/route_ui.cc index e7fa77f4da..303d05dc86 100644 --- a/gtk2_ardour/route_ui.cc +++ b/gtk2_ardour/route_ui.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -65,24 +64,32 @@ RouteUI::RouteUI (boost::shared_ptr rt, ARDOUR::Session& sess, co ignore_toggle = false; wait_for_release = false; route_active_menu_item = 0; + was_solo_safe = false; if (set_color_from_route()) { set_color (unique_random_color()); } - new Shiva (*_route, *this); + new PairedShiva (*_route, *this); _route->active_changed.connect (mem_fun (*this, &RouteUI::route_active_changed)); - mute_button = manage (new BindableToggleButton (_route->mute_control(), m_name )); - solo_button = manage (new BindableToggleButton (_route->solo_control(), s_name )); + mute_button = manage (new BindableToggleButton (_route->mute_control(), m_name )); + mute_button->set_self_managed (true); - // mute_button->unset_flags (Gtk::CAN_FOCUS); - // solo_button->unset_flags (Gtk::CAN_FOCUS); + solo_button = manage (new BindableToggleButton (_route->solo_control(), s_name )); + solo_button->set_self_managed (true); + + mute_button->set_name ("MuteButton"); + solo_button->set_name ("SoloButton"); _route->mute_changed.connect (mem_fun(*this, &RouteUI::mute_changed)); _route->solo_changed.connect (mem_fun(*this, &RouteUI::solo_changed)); _route->solo_safe_changed.connect (mem_fun(*this, &RouteUI::solo_changed)); + + /* when solo changes, update mute state too, in case the user wants us to display it */ + + _session.SoloChanged.connect (mem_fun(*this, &RouteUI::solo_changed_so_update_mute)); if (is_track()) { boost::shared_ptr t = boost::dynamic_pointer_cast(_route); @@ -92,14 +99,17 @@ RouteUI::RouteUI (boost::shared_ptr rt, ARDOUR::Session& sess, co _session.RecordStateChanged.connect (mem_fun (*this, &RouteUI::session_rec_enable_changed)); rec_enable_button = manage (new BindableToggleButton (t->rec_enable_control(), r_name )); - rec_enable_button->unset_flags (Gtk::CAN_FOCUS); - + rec_enable_button->set_name ("RecordEnableButton"); + rec_enable_button->set_self_managed (true); + update_rec_display (); } mute_button->unset_flags (Gtk::CAN_FOCUS); solo_button->unset_flags (Gtk::CAN_FOCUS); + _route->RemoteControlIDChanged.connect (mem_fun(*this, &RouteUI::refresh_remote_control_menu)); + /* map the current state */ map_frozen (); @@ -298,9 +308,10 @@ RouteUI::rec_enable_press(GdkEventButton* ev) if (!ignore_toggle && is_track() && rec_enable_button) { if (ev->button == 2 && Keyboard::modifier_state_equals (ev->state, Keyboard::Control)) { + // do nothing on midi bind event - } - else if (Keyboard::modifier_state_equals (ev->state, Keyboard::ModifierMask (Keyboard::Control|Keyboard::Shift))) { + + } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::ModifierMask (Keyboard::Control|Keyboard::Shift))) { _session.begin_reversible_command (_("rec-enable change")); Session::GlobalRecordEnableStateCommand *cmd = new Session::GlobalRecordEnableStateCommand(_session, this); @@ -322,16 +333,16 @@ RouteUI::rec_enable_press(GdkEventButton* ev) } else { reversibly_apply_track_boolean ("rec-enable change", &Track::set_record_enable, !track()->record_enabled(), this); - - ignore_toggle = true; - rec_enable_button->set_active(track()->record_enabled()); - ignore_toggle = false; } - - stop_signal (*rec_enable_button, "button-press-event"); } - return TRUE; + return true; +} + +bool +RouteUI::rec_enable_release (GdkEventButton* ev) +{ + return true; } void @@ -344,22 +355,30 @@ void RouteUI::update_solo_display () { bool x; - + vector fg_colors; + Gdk::Color c; + if (solo_button->get_active() != (x = _route->soloed())){ ignore_toggle = true; solo_button->set_active(x); ignore_toggle = false; } - /* show solo safe */ - - if (_route->solo_safe()){ - solo_button->set_name(safe_solo_button_name()); + if (_route->solo_safe()) { + solo_button->set_visual_state (2); + } else if (_route->soloed()) { + solo_button->set_visual_state (1); } else { - solo_button->set_name(solo_button_name()); + solo_button->set_visual_state (0); } } +void +RouteUI::solo_changed_so_update_mute () +{ + Gtkmm2ext::UI::instance()->call_slot (mem_fun (*this, &RouteUI::update_mute_display)); +} + void RouteUI::mute_changed(void* src) { @@ -369,13 +388,38 @@ RouteUI::mute_changed(void* src) void RouteUI::update_mute_display () { - bool x; + bool model = _route->muted(); + bool view = mute_button->get_active(); - if (mute_button->get_active() != (x = _route->muted())){ + /* first make sure the button's "depressed" visual + is correct. + */ + + if (model != view) { ignore_toggle = true; - mute_button->set_active(x); + mute_button->set_active (model); ignore_toggle = false; } + + /* now attend to visual state */ + + if (Config->get_show_solo_mutes()) { + if (_route->muted()) { + mute_button->set_visual_state (2); + } else if (!_route->soloed() && _route->solo_muted()) { + + mute_button->set_visual_state (1); + } else { + mute_button->set_visual_state (0); + } + } else { + if (_route->muted()) { + mute_button->set_visual_state (2); + } else { + mute_button->set_visual_state (0); + } + } + } void @@ -399,7 +443,7 @@ RouteUI::update_rec_display () /* first make sure the button's "depressed" visual is correct. */ - + if (model != view) { ignore_toggle = true; rec_enable_button->set_active (model); @@ -411,24 +455,19 @@ RouteUI::update_rec_display () if (model) { switch (_session.record_status ()) { + case Session::Recording: + rec_enable_button->set_visual_state (1); + break; + case Session::Disabled: case Session::Enabled: - if (rec_enable_button->get_state() != Gtk::STATE_ACTIVE) { - rec_enable_button->set_state (Gtk::STATE_ACTIVE); - } + rec_enable_button->set_visual_state (2); break; - case Session::Recording: - if (rec_enable_button->get_state() != Gtk::STATE_SELECTED) { - rec_enable_button->set_state (Gtk::STATE_SELECTED); - } - break; } } else { - if (rec_enable_button->get_state() != Gtk::STATE_NORMAL) { - rec_enable_button->set_state (Gtk::STATE_NORMAL); - } + rec_enable_button->set_visual_state (0); } } @@ -442,6 +481,14 @@ RouteUI::build_remote_control_menu () void RouteUI::refresh_remote_control_menu () { + ENSURE_GUI_THREAD (mem_fun (*this, &RouteUI::refresh_remote_control_menu)); + + // only refresh the menu if it has been instantiated + + if (remote_control_menu == 0) { + return; + } + using namespace Menu_Helpers; RadioMenuItem::Group rc_group; diff --git a/gtk2_ardour/route_ui.h b/gtk2_ardour/route_ui.h index bad47ac274..f7749b0b4b 100644 --- a/gtk2_ardour/route_ui.h +++ b/gtk2_ardour/route_ui.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_route_ui__ @@ -95,8 +94,10 @@ class RouteUI : public virtual AxisView bool solo_press(GdkEventButton*); bool solo_release(GdkEventButton*); bool rec_enable_press(GdkEventButton*); + bool rec_enable_release(GdkEventButton*); void solo_changed(void*); + void solo_changed_so_update_mute (); void mute_changed(void*); virtual void redirects_changed (void *) {} void route_rec_enable_changed(); @@ -149,7 +150,10 @@ class RouteUI : public virtual AxisView void update_rec_display (); void update_mute_display (); + + bool was_solo_safe; void update_solo_display (); + virtual void map_frozen (); void set_remote_control_id (uint32_t id, Gtk::CheckMenuItem* item); diff --git a/gtk2_ardour/selectable.h b/gtk2_ardour/selectable.h index b52214c9c9..51fc5da027 100644 --- a/gtk2_ardour/selectable.h +++ b/gtk2_ardour/selectable.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_gtk_selectable_h__ diff --git a/gtk2_ardour/selection.cc b/gtk2_ardour/selection.cc index 8a34752cdd..8a9d27a4ed 100644 --- a/gtk2_ardour/selection.cc +++ b/gtk2_ardour/selection.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/selection.h b/gtk2_ardour/selection.h index 5422888536..00bc6eeaaa 100644 --- a/gtk2_ardour/selection.h +++ b/gtk2_ardour/selection.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_gtk_selection_h__ diff --git a/gtk2_ardour/selection_templates.h b/gtk2_ardour/selection_templates.h index 5440112ad6..4e02ab9061 100644 --- a/gtk2_ardour/selection_templates.h +++ b/gtk2_ardour/selection_templates.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_gtk_selection_templates_h__ diff --git a/gtk2_ardour/send_ui.cc b/gtk2_ardour/send_ui.cc index c4656834a6..8faa315848 100644 --- a/gtk2_ardour/send_ui.cc +++ b/gtk2_ardour/send_ui.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/send_ui.h b/gtk2_ardour/send_ui.h index b64e3c8e58..2d041bb4fe 100644 --- a/gtk2_ardour/send_ui.h +++ b/gtk2_ardour/send_ui.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_gtk_send_ui_h__ diff --git a/gtk2_ardour/sfdb_ui.cc b/gtk2_ardour/sfdb_ui.cc index f18b543e0c..19e265b79e 100644 --- a/gtk2_ardour/sfdb_ui.cc +++ b/gtk2_ardour/sfdb_ui.cc @@ -50,6 +50,8 @@ using namespace ARDOUR; using namespace PBD; using namespace std; +Glib::ustring SoundFileBrowser::persistent_folder; + SoundFileBox::SoundFileBox () : _session(0), @@ -308,6 +310,11 @@ SoundFileBrowser::SoundFileBrowser (string title, ARDOUR::Session* s) chooser.set_filter (filter); chooser.set_select_multiple (true); chooser.signal_update_preview().connect(mem_fun(*this, &SoundFileBrowser::update_preview)); + + if (!persistent_folder.empty()) { + chooser.set_current_folder (persistent_folder); + } + found_list_view.get_selection()->signal_changed().connect(mem_fun(*this, &SoundFileBrowser::found_list_view_selected)); found_search_btn.signal_clicked().connect(mem_fun(*this, &SoundFileBrowser::found_search_clicked)); @@ -318,6 +325,11 @@ SoundFileBrowser::SoundFileBrowser (string title, ARDOUR::Session* s) set_session (s); } +SoundFileBrowser::~SoundFileBrowser () +{ + persistent_folder = chooser.get_current_folder(); +} + void SoundFileBrowser::set_session (Session* s) { @@ -548,3 +560,4 @@ SoundFileOmega::mode_changed () break; } } + diff --git a/gtk2_ardour/sfdb_ui.h b/gtk2_ardour/sfdb_ui.h index fb0b7da600..bbc6e2edd4 100644 --- a/gtk2_ardour/sfdb_ui.h +++ b/gtk2_ardour/sfdb_ui.h @@ -88,7 +88,7 @@ class SoundFileBrowser : public ArdourDialog { public: SoundFileBrowser (std::string title, ARDOUR::Session* _s = 0); - virtual ~SoundFileBrowser () {}; + virtual ~SoundFileBrowser (); virtual void set_session (ARDOUR::Session*); @@ -96,7 +96,9 @@ class SoundFileBrowser : public ArdourDialog Gtk::FileChooserWidget chooser; Gtk::FileFilter filter; SoundFileBox preview; - + + static Glib::ustring persistent_folder; + class FoundTagColumns : public Gtk::TreeModel::ColumnRecord { public: @@ -110,7 +112,7 @@ class SoundFileBrowser : public ArdourDialog Gtk::TreeView found_list_view; Gtk::Entry found_entry; Gtk::Button found_search_btn; - + Gtk::Notebook notebook; void update_preview (); diff --git a/gtk2_ardour/simpleline.cc b/gtk2_ardour/simpleline.cc index 4a50ccb4aa..b1fecba840 100644 --- a/gtk2_ardour/simpleline.cc +++ b/gtk2_ardour/simpleline.cc @@ -3,7 +3,6 @@ #include "simpleline.h" #include "simpleline_p.h" -/* $Id$ */ /* line.ccg * diff --git a/gtk2_ardour/simpleline.h b/gtk2_ardour/simpleline.h index 92afa49975..3e23ace83b 100644 --- a/gtk2_ardour/simpleline.h +++ b/gtk2_ardour/simpleline.h @@ -4,7 +4,6 @@ #include -/* $Id$ */ /* line.h * diff --git a/gtk2_ardour/simplerect.cc b/gtk2_ardour/simplerect.cc index b9bedbefd9..bb69fc34ca 100644 --- a/gtk2_ardour/simplerect.cc +++ b/gtk2_ardour/simplerect.cc @@ -4,7 +4,6 @@ #include "simplerect_p.h" #include -/* $Id$ */ /* rect.c * diff --git a/gtk2_ardour/simplerect.h b/gtk2_ardour/simplerect.h index 329823ab2f..299b27a868 100644 --- a/gtk2_ardour/simplerect.h +++ b/gtk2_ardour/simplerect.h @@ -4,7 +4,6 @@ #include -/* $Id$ */ /* rect.h * diff --git a/gtk2_ardour/tape_region_view.cc b/gtk2_ardour/tape_region_view.cc index e697afddb9..f46d1c05dc 100644 --- a/gtk2_ardour/tape_region_view.cc +++ b/gtk2_ardour/tape_region_view.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/tape_region_view.h b/gtk2_ardour/tape_region_view.h index fbedf19ebc..048c9bcc5b 100644 --- a/gtk2_ardour/tape_region_view.h +++ b/gtk2_ardour/tape_region_view.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __gtk_ardour_tape_audio_region_view_h__ diff --git a/gtk2_ardour/tempo_dialog.cc b/gtk2_ardour/tempo_dialog.cc index c5816e36d1..4dae108149 100644 --- a/gtk2_ardour/tempo_dialog.cc +++ b/gtk2_ardour/tempo_dialog.cc @@ -14,7 +14,9 @@ using namespace ARDOUR; using namespace PBD; TempoDialog::TempoDialog (TempoMap& map, nframes_t frame, const string & action) - : ArdourDialog ("tempo dialog"), + : ArdourDialog (_("edit tempo")), + bpm_adjustment (60.0, 1.0, 999.9, 0.1, 1.0, 1.0), + bpm_spinner (bpm_adjustment), bpm_frame (_("Beats per minute")), ok_button (action), cancel_button (_("Cancel")), @@ -32,6 +34,8 @@ TempoDialog::TempoDialog (TempoMap& map, nframes_t frame, const string & action) TempoDialog::TempoDialog (TempoSection& section, const string & action) : ArdourDialog ("tempo dialog"), + bpm_adjustment (60.0, 1.0, 999.9, 0.1, 1.0, 1.0), + bpm_spinner (bpm_adjustment), bpm_frame (_("Beats per minute")), ok_button (action), cancel_button (_("Cancel")), @@ -46,12 +50,13 @@ TempoDialog::TempoDialog (TempoSection& section, const string & action) void TempoDialog::init (const BBT_Time& when, double bpm, bool movable) { - snprintf (buf, sizeof (buf), "%.2f", bpm); - bpm_entry.set_text (buf); - bpm_entry.select_region (0, -1); - + bpm_spinner.set_numeric (true); + bpm_spinner.set_digits (1); + bpm_spinner.set_wrap (true); + bpm_spinner.set_value (bpm); + hspacer1.set_border_width (5); - hspacer1.pack_start (bpm_entry, false, false); + hspacer1.pack_start (bpm_spinner, false, false); vspacer1.set_border_width (5); vspacer1.pack_start (hspacer1, false, false); @@ -90,7 +95,7 @@ TempoDialog::init (const BBT_Time& when, double bpm, bool movable) } bpm_frame.set_name ("MetricDialogFrame"); - bpm_entry.set_name ("MetricEntry"); + bpm_spinner.set_name ("MetricEntry"); get_vbox()->pack_start (bpm_frame, false, false); @@ -100,83 +105,34 @@ TempoDialog::init (const BBT_Time& when, double bpm, bool movable) set_default_response (RESPONSE_ACCEPT); get_vbox()->show_all(); - bpm_entry.show(); + bpm_spinner.show(); set_name ("MetricDialog"); - bpm_entry.signal_activate().connect (bind (mem_fun (*this, &TempoDialog::response), RESPONSE_ACCEPT)); - bpm_entry.signal_key_release_event().connect (mem_fun (*this, &TempoDialog::bpm_key_release)); - bpm_entry.signal_key_press_event().connect (mem_fun (*this, &TempoDialog::bpm_key_press), false); + + bpm_spinner.signal_activate().connect (bind (mem_fun (*this, &TempoDialog::response), RESPONSE_ACCEPT)); + bpm_spinner.signal_button_press_event().connect (mem_fun (*this, &TempoDialog::bpm_button_press), false); + bpm_spinner.signal_button_release_event().connect (mem_fun (*this, &TempoDialog::bpm_button_release), false); } bool -TempoDialog::bpm_key_press (GdkEventKey* ev) +TempoDialog::bpm_button_press (GdkEventButton* ev) { - -switch (ev->keyval) { - - case GDK_0: - case GDK_1: - case GDK_2: - case GDK_3: - case GDK_4: - case GDK_5: - case GDK_6: - case GDK_7: - case GDK_8: - case GDK_9: - case GDK_KP_0: - case GDK_KP_1: - case GDK_KP_2: - case GDK_KP_3: - case GDK_KP_4: - case GDK_KP_5: - case GDK_KP_6: - case GDK_KP_7: - case GDK_KP_8: - case GDK_KP_9: - case GDK_period: - case GDK_comma: - case GDK_KP_Delete: - case GDK_KP_Enter: - case GDK_Delete: - case GDK_BackSpace: - case GDK_Escape: - case GDK_Return: - case GDK_Home: - case GDK_End: - case GDK_Left: - case GDK_Right: - case GDK_Num_Lock: - case GDK_Tab: - return FALSE; - default: - break; - } - - return TRUE; + return false; } bool -TempoDialog::bpm_key_release (GdkEventKey* ev) -{ - if (bpm_entry.get_text() != "") { - set_response_sensitive (Gtk::RESPONSE_ACCEPT, true); - } else { - set_response_sensitive (Gtk::RESPONSE_ACCEPT, false); - } +TempoDialog::bpm_button_release (GdkEventButton* ev) +{ + /* the value has been modified, accept should work now */ + + set_response_sensitive (Gtk::RESPONSE_ACCEPT, true); return false; } double TempoDialog::get_bpm () { - double bpm; - - if (sscanf (bpm_entry.get_text().c_str(), "%lf", &bpm) != 1) { - return 0; - } - - return bpm; + return bpm_spinner.get_value (); } bool diff --git a/gtk2_ardour/tempo_dialog.h b/gtk2_ardour/tempo_dialog.h index 720a87c4ba..09a91dd3e3 100644 --- a/gtk2_ardour/tempo_dialog.h +++ b/gtk2_ardour/tempo_dialog.h @@ -8,6 +8,7 @@ #include #include #include +#include #include #include @@ -17,8 +18,9 @@ struct TempoDialog : public ArdourDialog { - Gtk::Entry bpm_entry; - Gtk::Frame bpm_frame; + Gtk::Adjustment bpm_adjustment; + Gtk::SpinButton bpm_spinner; + Gtk::Frame bpm_frame; Gtk::VBox vpacker; Gtk::Button ok_button; Gtk::Button cancel_button; @@ -41,8 +43,9 @@ struct TempoDialog : public ArdourDialog private: void init (const ARDOUR::BBT_Time& start, double, bool); - bool bpm_key_press (GdkEventKey* ); - bool bpm_key_release (GdkEventKey* ); + void bpm_changed (); + bool bpm_button_press (GdkEventButton* ); + bool bpm_button_release (GdkEventButton* ); }; struct MeterDialog : public ArdourDialog diff --git a/gtk2_ardour/time_axis_view.cc b/gtk2_ardour/time_axis_view.cc index 53a0ee4553..a0267d7e86 100644 --- a/gtk2_ardour/time_axis_view.cc +++ b/gtk2_ardour/time_axis_view.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -969,12 +968,10 @@ TimeAxisView::compute_controls_size_info () buttons[i]->set_name ("TrackMuteButton"); } - Gtk::Requisition req; - one_row_table.attach (*buttons[0], 6, 7, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND, 0, 0); one_row_table.show_all (); - one_row_table.size_request (req); + Gtk::Requisition req(one_row_table.size_request ()); // height required to show 1 row of buttons @@ -990,7 +987,7 @@ TimeAxisView::compute_controls_size_info () two_row_table.attach (*buttons[4], 8, 9, 0, 1, Gtk::FILL|Gtk::EXPAND, Gtk::FILL|Gtk::EXPAND, 0, 0); two_row_table.show_all (); - two_row_table.size_request (req); + req = two_row_table.size_request (); // height required to show all normal buttons diff --git a/gtk2_ardour/time_axis_view.h b/gtk2_ardour/time_axis_view.h index 96437a9991..1f401967eb 100644 --- a/gtk2_ardour/time_axis_view.h +++ b/gtk2_ardour/time_axis_view.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_gtk_time_axis_h__ diff --git a/gtk2_ardour/time_axis_view_item.cc b/gtk2_ardour/time_axis_view_item.cc index a008e2af1a..87eac74ccf 100644 --- a/gtk2_ardour/time_axis_view_item.cc +++ b/gtk2_ardour/time_axis_view_item.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -89,13 +88,42 @@ TimeAxisViewItem::TimeAxisViewItem(const string & it_name, ArdourCanvas::Group& layout->set_font_description (NAME_FONT); Gtkmm2ext::get_ink_pixel_size (layout, width, height); - NAME_Y_OFFSET = height + 4; + NAME_Y_OFFSET = height + 6; NAME_HIGHLIGHT_SIZE = height + 6; NAME_HIGHLIGHT_THRESH = NAME_HIGHLIGHT_SIZE * 2; have_name_font = true; } + group = new ArdourCanvas::Group (parent); + + init (it_name, spu, base_color, start, duration, vis); + +} + +TimeAxisViewItem::TimeAxisViewItem (const TimeAxisViewItem& other) + : trackview (other.trackview) +{ + + Gdk::Color c; + int r,g,b,a; + + UINT_TO_RGBA (other.fill_color, &r, &g, &b, &a); + c.set_rgb_p (r/255.0, g/255.0, b/255.0); + + /* share the other's parent, but still create a new group */ + + Gnome::Canvas::Group* parent = other.group->property_parent(); + + group = new ArdourCanvas::Group (*parent); + + init (other.item_name, other.samples_per_unit, c, other.frame_position, other.item_duration, other.visibility); +} + + +void +TimeAxisViewItem::init (const string& it_name, double spu, Gdk::Color& base_color, nframes_t start, nframes_t duration, Visibility vis) +{ item_name = it_name ; samples_per_unit = spu ; should_show_selection = true; @@ -113,8 +141,6 @@ TimeAxisViewItem::TimeAxisViewItem(const string & it_name, ArdourCanvas::Group& warning << "Time Axis Item Duration == 0" << endl ; } - group = new ArdourCanvas::Group (parent); - vestigial_frame = new ArdourCanvas::SimpleRect (*group); vestigial_frame->property_x1() = (double) 0.0; vestigial_frame->property_y1() = (double) 1.0; @@ -221,7 +247,6 @@ TimeAxisViewItem::TimeAxisViewItem(const string & it_name, ArdourCanvas::Group& set_position (start, this) ; } - /** * Destructor */ diff --git a/gtk2_ardour/time_axis_view_item.h b/gtk2_ardour/time_axis_view_item.h index 80d9177041..d41ad5a327 100644 --- a/gtk2_ardour/time_axis_view_item.h +++ b/gtk2_ardour/time_axis_view_item.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __gtk_ardour_time_axis_view_item_h__ @@ -340,6 +339,10 @@ class TimeAxisViewItem : public Selectable */ TimeAxisViewItem(const std::string & it_name, ArdourCanvas::Group& parent, TimeAxisView& tv, double spu, Gdk::Color& base_color, nframes_t start, nframes_t duration, Visibility v = Visibility (0)); + + TimeAxisViewItem (const TimeAxisViewItem& other); + + void init (const std::string& it_name, double spu, Gdk::Color& base_color, nframes_t start, nframes_t duration, Visibility vis); /** * Calculates some contrasting color for displaying various parts of this item, based upon the base color diff --git a/gtk2_ardour/time_selection.cc b/gtk2_ardour/time_selection.cc index c0a05abc45..eac7bd70f5 100644 --- a/gtk2_ardour/time_selection.cc +++ b/gtk2_ardour/time_selection.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/utils.cc b/gtk2_ardour/utils.cc index 887494829e..fbebf0d51a 100644 --- a/gtk2_ardour/utils.cc +++ b/gtk2_ardour/utils.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -120,7 +119,7 @@ xpm2rgb (const char** xpm, uint32_t& w, uint32_t& h) return 0; } - savergb = rgb = (unsigned char*)art_alloc (h * w * 3); + savergb = rgb = (unsigned char*) malloc (h * w * 3); // LOAD XPM COLORMAP LONG ENOUGH TO DO CONVERSION for (t = 0; t < colors; ++t) { @@ -163,7 +162,7 @@ xpm2rgba (const char** xpm, uint32_t& w, uint32_t& h) return 0; } - savergb = rgb = (unsigned char*)art_alloc (h * w * 4); + savergb = rgb = (unsigned char*) malloc (h * w * 4); // LOAD XPM COLORMAP LONG ENOUGH TO DO CONVERSION @@ -233,7 +232,21 @@ get_font_for_style (string widgetname) foobar.ensure_style(); style = foobar.get_style (); - return style->get_font(); + + Glib::RefPtr layout = foobar.get_layout(); + + PangoFontDescription *pfd = (PangoFontDescription *)pango_layout_get_font_description((PangoLayout *)layout->gobj()); + + if (!pfd) { + + /* layout inherited its font description from a PangoContext */ + + PangoContext* ctxt = (PangoContext*) pango_layout_get_context ((PangoLayout*) layout->gobj()); + pfd = pango_context_get_font_description (ctxt); + return Pango::FontDescription (pfd, true); /* make a copy */ + } + + return Pango::FontDescription (pfd, true); /* make a copy */ } uint32_t @@ -263,6 +276,7 @@ rgba_from_style (string style, uint32_t r, uint32_t g, uint32_t b, uint32_t a, s r = waverc->fg[state].red / 257; g = waverc->fg[state].green / 257; b = waverc->fg[state].blue / 257; + /* what a hack ... "a" is for "active" */ if (state == Gtk::STATE_NORMAL && rgba) { a = waverc->fg[GTK_STATE_ACTIVE].red / 257; @@ -547,3 +561,56 @@ key_is_legal_for_numeric_entry (guint keyval) return false; } + +ustring +short_path (ustring path, uint32_t target_characters) +{ + ustring::size_type last_sep; + ustring::size_type len = path.length(); + const char separator = '/'; + + if (len <= target_characters) { + return path; + } + + if ((last_sep = path.find_last_of (separator)) == ustring::npos) { + + /* just a filename, but its too long anyway */ + + if (target_characters > 3) { + return path.substr (0, target_characters - 3) + ustring ("..."); + } else { + /* stupid caller, just hand back the whole thing */ + return path; + } + } + + if (len - last_sep >= target_characters) { + + /* even the filename itself is too long */ + + if (target_characters > 3) { + return path.substr (last_sep+1, target_characters - 3) + ustring ("..."); + } else { + /* stupid caller, just hand back the whole thing */ + return path; + } + } + + uint32_t so_far = (len - last_sep); + uint32_t space_for = target_characters - so_far; + + if (space_for >= 3) { + ustring res = "..."; + res += path.substr (last_sep - space_for); + return res; + } else { + /* remove part of the end */ + ustring res = "..."; + res += path.substr (last_sep - space_for, len - last_sep + space_for - 3); + res += "..."; + return res; + + } +} + diff --git a/gtk2_ardour/utils.h b/gtk2_ardour/utils.h index 6d5ff0702d..2d2f879073 100644 --- a/gtk2_ardour/utils.h +++ b/gtk2_ardour/utils.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_gtk_utils_h__ @@ -81,5 +80,6 @@ static std::map > xpm_map; const char* const *get_xpm_data (std::string path); std::string longest (std::vector&); bool key_is_legal_for_numeric_entry (guint keyval); +Glib::ustring short_path (Glib::ustring, uint32_t target_characters); #endif /* __ardour_gtk_utils_h__ */ diff --git a/gtk2_ardour/visual_time_axis.cc b/gtk2_ardour/visual_time_axis.cc index 20fe13603e..b685971144 100644 --- a/gtk2_ardour/visual_time_axis.cc +++ b/gtk2_ardour/visual_time_axis.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/visual_time_axis.h b/gtk2_ardour/visual_time_axis.h index d569ca3733..6d1396bc54 100644 --- a/gtk2_ardour/visual_time_axis.h +++ b/gtk2_ardour/visual_time_axis.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #ifndef __ardour_visual_time_axis_h__ diff --git a/gtk2_ardour/vst_pluginui.cc b/gtk2_ardour/vst_pluginui.cc index 5e65475c46..1320ccdc7a 100644 --- a/gtk2_ardour/vst_pluginui.cc +++ b/gtk2_ardour/vst_pluginui.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include diff --git a/gtk2_ardour/waveview.cc b/gtk2_ardour/waveview.cc index 92e4fdd24a..d9316c110e 100644 --- a/gtk2_ardour/waveview.cc +++ b/gtk2_ardour/waveview.cc @@ -1,7 +1,6 @@ #include "waveview.h" #include "waveview_p.h" -/* $Id$ */ /* waveview.cc * diff --git a/gtk2_ardour/waveview.h b/gtk2_ardour/waveview.h index 56d0ed7675..cfa7fd416d 100644 --- a/gtk2_ardour/waveview.h +++ b/gtk2_ardour/waveview.h @@ -4,7 +4,6 @@ #include -/* $Id$ */ /* waveview.h * -- cgit v1.2.3