summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-03-18 06:07:08 +0000
committerDavid Robillard <d@drobilla.net>2007-03-18 06:07:08 +0000
commit99904735e066804358f1d0bd138a84f1e9ecda91 (patch)
tree71a924cf1660b5b00231275bd481bbd27094dd9b /gtk2_ardour
parenteb270e70a12c410cdd98585ad25bb6d8e384a4f5 (diff)
Merged with trunk R1612.
git-svn-id: svn://localhost/ardour2/branches/midi@1614 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/SConscript11
-rw-r--r--gtk2_ardour/about.cc6
-rw-r--r--gtk2_ardour/about.h1
-rw-r--r--gtk2_ardour/actions.cc1
-rw-r--r--gtk2_ardour/add_route_dialog.cc3
-rw-r--r--gtk2_ardour/analysis_window.cc1
-rwxr-xr-xgtk2_ardour/ardbg1
-rwxr-xr-xgtk2_ardour/ardev1
-rw-r--r--gtk2_ardour/ardour.bindings.in (renamed from gtk2_ardour/ardour.bindings)14
-rw-r--r--gtk2_ardour/ardour.colors3
-rw-r--r--gtk2_ardour/ardour.menus10
-rw-r--r--gtk2_ardour/ardour2_ui.rc874
-rw-r--r--gtk2_ardour/ardour_image_compositor_socket.h1
-rw-r--r--gtk2_ardour/ardour_message.cc64
-rw-r--r--gtk2_ardour/ardour_message.h47
-rw-r--r--gtk2_ardour/ardour_ui.cc515
-rw-r--r--gtk2_ardour/ardour_ui.h109
-rw-r--r--gtk2_ardour/ardour_ui2.cc134
-rw-r--r--gtk2_ardour/ardour_ui_dependents.cc1
-rw-r--r--gtk2_ardour/ardour_ui_dialogs.cc18
-rw-r--r--gtk2_ardour/ardour_ui_ed.cc77
-rw-r--r--gtk2_ardour/ardour_ui_mixer.cc4
-rw-r--r--gtk2_ardour/ardour_ui_options.cc107
-rw-r--r--gtk2_ardour/audio_clock.cc1
-rw-r--r--gtk2_ardour/audio_clock.h1
-rw-r--r--gtk2_ardour/audio_region_editor.cc1
-rw-r--r--gtk2_ardour/audio_region_editor.h1
-rw-r--r--gtk2_ardour/audio_region_view.cc38
-rw-r--r--gtk2_ardour/audio_region_view.h6
-rw-r--r--gtk2_ardour/audio_time_axis.cc25
-rw-r--r--gtk2_ardour/audio_time_axis.h2
-rw-r--r--gtk2_ardour/automation_gain_line.cc1
-rw-r--r--gtk2_ardour/automation_line.cc2
-rw-r--r--gtk2_ardour/automation_line.h1
-rw-r--r--gtk2_ardour/automation_pan_line.cc1
-rw-r--r--gtk2_ardour/axis_view.cc1
-rw-r--r--gtk2_ardour/axis_view.h1
-rw-r--r--gtk2_ardour/canvas-imageframe.h8
-rw-r--r--gtk2_ardour/canvas-simplerect.c87
-rw-r--r--gtk2_ardour/canvas-waveview.c5
-rw-r--r--gtk2_ardour/colors.h3
-rw-r--r--gtk2_ardour/connection_editor.cc1
-rw-r--r--gtk2_ardour/connection_editor.h1
-rw-r--r--gtk2_ardour/crossfade_edit.cc35
-rw-r--r--gtk2_ardour/crossfade_edit.h5
-rw-r--r--gtk2_ardour/crossfade_view.cc1
-rw-r--r--gtk2_ardour/crossfade_view.h1
-rw-r--r--gtk2_ardour/editor.cc74
-rw-r--r--gtk2_ardour/editor.h25
-rw-r--r--gtk2_ardour/editor_actions.cc4
-rw-r--r--gtk2_ardour/editor_audio_import.cc27
-rw-r--r--gtk2_ardour/editor_audiotrack.cc2
-rw-r--r--gtk2_ardour/editor_canvas.cc48
-rw-r--r--gtk2_ardour/editor_canvas_events.cc6
-rw-r--r--gtk2_ardour/editor_cursors.cc4
-rw-r--r--gtk2_ardour/editor_edit_groups.cc1
-rw-r--r--gtk2_ardour/editor_export_audio.cc1
-rw-r--r--gtk2_ardour/editor_hscroller.cc8
-rw-r--r--gtk2_ardour/editor_imageframe.cc1
-rw-r--r--gtk2_ardour/editor_keyboard.cc1
-rw-r--r--gtk2_ardour/editor_keys.cc12
-rw-r--r--gtk2_ardour/editor_markers.cc20
-rw-r--r--gtk2_ardour/editor_mixer.cc57
-rw-r--r--gtk2_ardour/editor_mouse.cc633
-rw-r--r--gtk2_ardour/editor_nudge.cc1
-rw-r--r--gtk2_ardour/editor_ops.cc7
-rw-r--r--gtk2_ardour/editor_region_list.cc16
-rw-r--r--gtk2_ardour/editor_route_list.cc12
-rw-r--r--gtk2_ardour/editor_rulers.cc3
-rw-r--r--gtk2_ardour/editor_selection.cc6
-rw-r--r--gtk2_ardour/editor_selection_list.cc2
-rw-r--r--gtk2_ardour/editor_tempodisplay.cc28
-rw-r--r--gtk2_ardour/editor_timefx.cc1
-rw-r--r--gtk2_ardour/export_dialog.cc20
-rw-r--r--gtk2_ardour/export_dialog.h7
-rw-r--r--gtk2_ardour/export_range_markers_dialog.cc39
-rw-r--r--gtk2_ardour/export_range_markers_dialog.h4
-rw-r--r--gtk2_ardour/export_region_dialog.cc3
-rw-r--r--gtk2_ardour/export_session_dialog.cc3
-rw-r--r--gtk2_ardour/gain_automation_time_axis.cc1
-rw-r--r--gtk2_ardour/gain_meter.cc35
-rw-r--r--gtk2_ardour/gain_meter.h5
-rw-r--r--gtk2_ardour/ghostregion.h1
-rw-r--r--gtk2_ardour/grouped_buttons.cc96
-rw-r--r--gtk2_ardour/grouped_buttons.h49
-rw-r--r--gtk2_ardour/icons/crossfade_in_constant.pngbin0 -> 693 bytes
-rw-r--r--gtk2_ardour/icons/crossfade_in_dipped.pngbin0 -> 667 bytes
-rw-r--r--gtk2_ardour/icons/crossfade_in_fast-cut.pngbin0 -> 686 bytes
-rw-r--r--gtk2_ardour/icons/crossfade_in_slow-cut.pngbin0 -> 723 bytes
-rw-r--r--gtk2_ardour/icons/crossfade_in_slow-fade.pngbin0 -> 730 bytes
-rw-r--r--gtk2_ardour/icons/crossfade_in_transition.pngbin0 -> 692 bytes
-rw-r--r--gtk2_ardour/icons/crossfade_out_constant.pngbin0 -> 720 bytes
-rw-r--r--gtk2_ardour/icons/crossfade_out_dipped.pngbin0 -> 831 bytes
-rw-r--r--gtk2_ardour/icons/crossfade_out_fast-cut.pngbin0 -> 737 bytes
-rw-r--r--gtk2_ardour/icons/crossfade_out_slow-cut.pngbin0 -> 770 bytes
-rw-r--r--gtk2_ardour/icons/crossfade_out_slow-fade.pngbin0 -> 798 bytes
-rw-r--r--gtk2_ardour/icons/crossfade_out_transition.pngbin0 -> 737 bytes
-rw-r--r--gtk2_ardour/imageframe.cc1
-rw-r--r--gtk2_ardour/imageframe.h1
-rw-r--r--gtk2_ardour/imageframe_socket_handler.cc1
-rw-r--r--gtk2_ardour/imageframe_socket_handler.h1
-rw-r--r--gtk2_ardour/imageframe_time_axis.cc1
-rw-r--r--gtk2_ardour/imageframe_time_axis.h1
-rw-r--r--gtk2_ardour/imageframe_time_axis_group.cc1
-rw-r--r--gtk2_ardour/imageframe_time_axis_group.h1
-rw-r--r--gtk2_ardour/imageframe_time_axis_view.cc1
-rw-r--r--gtk2_ardour/imageframe_time_axis_view.h1
-rw-r--r--gtk2_ardour/imageframe_view.cc1
-rw-r--r--gtk2_ardour/imageframe_view.h1
-rw-r--r--gtk2_ardour/io_selector.cc1
-rw-r--r--gtk2_ardour/io_selector.h1
-rw-r--r--gtk2_ardour/keyboard.cc514
-rw-r--r--gtk2_ardour/keyboard.h24
-rw-r--r--gtk2_ardour/keyboard_target.cc258
-rw-r--r--gtk2_ardour/keyboard_target.h83
-rw-r--r--gtk2_ardour/ladspa_pluginui.cc19
-rw-r--r--gtk2_ardour/location_ui.cc1
-rw-r--r--gtk2_ardour/location_ui.h2
-rw-r--r--gtk2_ardour/main.cc198
-rw-r--r--gtk2_ardour/marker.cc1
-rw-r--r--gtk2_ardour/marker.h1
-rw-r--r--gtk2_ardour/marker_time_axis.cc1
-rw-r--r--gtk2_ardour/marker_time_axis.h1
-rw-r--r--gtk2_ardour/marker_time_axis_view.cc1
-rw-r--r--gtk2_ardour/marker_time_axis_view.h1
-rw-r--r--gtk2_ardour/marker_view.cc1
-rw-r--r--gtk2_ardour/marker_view.h1
-rw-r--r--gtk2_ardour/meter_bridge.cc260
-rw-r--r--gtk2_ardour/meter_bridge.h91
-rw-r--r--gtk2_ardour/meter_bridge_strip.cc243
-rw-r--r--gtk2_ardour/meter_bridge_strip.h110
-rw-r--r--gtk2_ardour/mixer_strip.cc76
-rw-r--r--gtk2_ardour/mixer_strip.h3
-rw-r--r--gtk2_ardour/mixer_ui.cc31
-rw-r--r--gtk2_ardour/mixer_ui.h6
-rw-r--r--gtk2_ardour/new_session_dialog.cc1
-rw-r--r--gtk2_ardour/new_session_dialog.h1
-rw-r--r--gtk2_ardour/option_editor.cc43
-rw-r--r--gtk2_ardour/option_editor.h6
-rw-r--r--gtk2_ardour/opts.cc9
-rw-r--r--gtk2_ardour/opts.h1
-rw-r--r--gtk2_ardour/pan_automation_time_axis.cc1
-rw-r--r--gtk2_ardour/panner.cc10
-rw-r--r--gtk2_ardour/panner2d.cc5
-rw-r--r--gtk2_ardour/panner2d.h3
-rw-r--r--gtk2_ardour/panner_ui.cc56
-rw-r--r--gtk2_ardour/panner_ui.h1
-rw-r--r--gtk2_ardour/playlist_selector.cc1
-rw-r--r--gtk2_ardour/plugin_selector.cc10
-rw-r--r--gtk2_ardour/plugin_ui.cc4
-rw-r--r--gtk2_ardour/plugin_ui.h1
-rw-r--r--gtk2_ardour/po/ru_RU.po3528
-rw-r--r--gtk2_ardour/prompter.cc1
-rw-r--r--gtk2_ardour/prompter.h1
-rw-r--r--gtk2_ardour/public_editor.h10
-rw-r--r--gtk2_ardour/redirect_automation_line.cc1
-rw-r--r--gtk2_ardour/redirect_automation_line.h1
-rw-r--r--gtk2_ardour/redirect_automation_time_axis.cc1
-rw-r--r--gtk2_ardour/redirect_box.cc9
-rw-r--r--gtk2_ardour/redirect_box.h3
-rw-r--r--gtk2_ardour/region_editor.h1
-rw-r--r--gtk2_ardour/region_view.cc29
-rw-r--r--gtk2_ardour/region_view.h8
-rw-r--r--gtk2_ardour/rgb_macros.h1
-rw-r--r--gtk2_ardour/route_params_ui.cc6
-rw-r--r--gtk2_ardour/route_params_ui.h6
-rw-r--r--gtk2_ardour/route_redirect_selection.cc1
-rw-r--r--gtk2_ardour/route_redirect_selection.h1
-rw-r--r--gtk2_ardour/route_time_axis.cc35
-rw-r--r--gtk2_ardour/route_time_axis.h1
-rw-r--r--gtk2_ardour/route_ui.cc123
-rw-r--r--gtk2_ardour/route_ui.h6
-rw-r--r--gtk2_ardour/selectable.h1
-rw-r--r--gtk2_ardour/selection.cc1
-rw-r--r--gtk2_ardour/selection.h1
-rw-r--r--gtk2_ardour/selection_templates.h1
-rw-r--r--gtk2_ardour/send_ui.cc1
-rw-r--r--gtk2_ardour/send_ui.h1
-rw-r--r--gtk2_ardour/sfdb_ui.cc13
-rw-r--r--gtk2_ardour/sfdb_ui.h8
-rw-r--r--gtk2_ardour/simpleline.cc1
-rw-r--r--gtk2_ardour/simpleline.h1
-rw-r--r--gtk2_ardour/simplerect.cc1
-rw-r--r--gtk2_ardour/simplerect.h1
-rw-r--r--gtk2_ardour/tape_region_view.cc1
-rw-r--r--gtk2_ardour/tape_region_view.h1
-rw-r--r--gtk2_ardour/tempo_dialog.cc94
-rw-r--r--gtk2_ardour/tempo_dialog.h11
-rw-r--r--gtk2_ardour/time_axis_view.cc7
-rw-r--r--gtk2_ardour/time_axis_view.h1
-rw-r--r--gtk2_ardour/time_axis_view_item.cc35
-rw-r--r--gtk2_ardour/time_axis_view_item.h5
-rw-r--r--gtk2_ardour/time_selection.cc1
-rw-r--r--gtk2_ardour/utils.cc75
-rw-r--r--gtk2_ardour/utils.h2
-rw-r--r--gtk2_ardour/visual_time_axis.cc1
-rw-r--r--gtk2_ardour/visual_time_axis.h1
-rw-r--r--gtk2_ardour/vst_pluginui.cc1
-rw-r--r--gtk2_ardour/waveview.cc1
-rw-r--r--gtk2_ardour/waveview.h1
200 files changed, 4225 insertions, 5406 deletions
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 <algorithm>
@@ -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 <vector>
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 <cstdio>
@@ -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 <gtkmm2ext/gtk_ui.h>
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.in
index 3c7afcde6c..d8316a0147 100644
--- a/gtk2_ardour/ardour.bindings
+++ b/gtk2_ardour/ardour.bindings.in
@@ -9,7 +9,7 @@
; (gtk_accel_path "<Actions>/JACK/JACKReconnect" "")
; (gtk_accel_path "<Actions>/Editor/Autoconnect" "")
; (gtk_accel_path "<Actions>/Editor/Edit" "")
-(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-end" "<Control>grave")
+(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-end" "<Control>comma")
; (gtk_accel_path "<Actions>/redirectmenu/copy" "")
; (gtk_accel_path "<Actions>/options/MeterFalloffFaster" "")
(gtk_accel_path "<Actions>/Transport/ToggleRollForgetCapture" "<Control>space")
@@ -23,7 +23,7 @@
; (gtk_accel_path "<Actions>/options/MeterFalloffSlow" "")
; (gtk_accel_path "<Actions>/RegionList/rlHide" "")
; (gtk_accel_path "<Actions>/Main/Metering" "")
-(gtk_accel_path "<Actions>/Editor/playhead-to-next-region-end" "<Control>Tab")
+(gtk_accel_path "<Actions>/Editor/playhead-to-next-region-end" "<Control>period")
; (gtk_accel_path "<Actions>/Zoom/zoom-focus-playhead" "")
; (gtk_accel_path "<Actions>/Editor/center-edit-cursor" "")
; (gtk_accel_path "<Actions>/Editor/Monitoring" "")
@@ -61,7 +61,7 @@
(gtk_accel_path "<Actions>/Editor/jump-backward-to-mark" "<Control>KP_Left")
; (gtk_accel_path "<Actions>/Main/AudioFileFormatData" "")
; (gtk_accel_path "<Actions>/options/MeterFalloffFastest" "")
-(gtk_accel_path "<Actions>/Editor/audition-at-mouse" "period")
+; (gtk_accel_path "<Actions>/Editor/audition-at-mouse" "")
(gtk_accel_path "<Actions>/Transport/Forward" "<Control>rightarrow")
; (gtk_accel_path "<Actions>/Snap/snap-to-smpte-seconds" "")
; (gtk_accel_path "<Actions>/Snap/snap-to-smpte-frame" "")
@@ -93,7 +93,7 @@
(gtk_accel_path "<Actions>/Editor/set-edit-cursor" "e")
; (gtk_accel_path "<Actions>/Editor/Smpte30drop" "")
; (gtk_accel_path "<Actions>/Zoom/zoom-focus-edit" "")
-(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-start" "grave")
+(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-start" "comma")
; (gtk_accel_path "<Actions>/Editor/EditCursorMovementOptions" "")
; (gtk_accel_path "<Actions>/redirectmenu/activate_all" "")
; (gtk_accel_path "<Actions>/Editor/addExternalAudioAsTapeTrack" "")
@@ -112,7 +112,6 @@
(gtk_accel_path "<Actions>/Editor/extend-range-to-end-of-region" "rightanglebracket")
(gtk_accel_path "<Actions>/Editor/scroll-backward" "leftarrow")
(gtk_accel_path "<Actions>/Editor/start-range" "<Control>KP_Down")
-; (gtk_accel_path "<Actions>/Editor/ToggleTranzportSurface" "")
; (gtk_accel_path "<Actions>/ShuttleActions/SetShuttleUnitsSemitones" "")
; (gtk_accel_path "<Actions>/JACK/JACKLatency128" "")
; (gtk_accel_path "<Actions>/Snap/snap-to-beat" "")
@@ -124,6 +123,7 @@
; (gtk_accel_path "<Actions>/Editor/EditSelectRegionOptions" "")
(gtk_accel_path "<Actions>/Editor/crop" "c")
; (gtk_accel_path "<Actions>/redirectmenu/newsend" "")
+; (gtk_accel_path "<Actions>/Editor/ToggleGeneric MIDISurfaceSubMenu" "")
; (gtk_accel_path "<Actions>/Editor/MeterFalloff" "")
; (gtk_accel_path "<Actions>/RegionList/rlRemove" "")
(gtk_accel_path "<Actions>/Transport/GotoStart" "Home")
@@ -151,6 +151,7 @@
(gtk_accel_path "<Actions>/Common/goto-editor" "<Alt>e")
(gtk_accel_path "<Actions>/Editor/select-all" "<Control>a")
(gtk_accel_path "<Actions>/Editor/nudge-next-forward" "<Control>KP_Add")
+; (gtk_accel_path "<Actions>/options/ShowSoloMutes" "")
; (gtk_accel_path "<Actions>/Snap/snap-to-eighths" "")
(gtk_accel_path "<Actions>/Editor/select-all-after-playhead" "<Shift><Control>p")
(gtk_accel_path "<Actions>/Common/ToggleMaximalEditor" "F11")
@@ -272,7 +273,7 @@
; (gtk_accel_path "<Actions>/options/VerifyRemoveLastCapture" "")
; (gtk_accel_path "<Actions>/options/OutputAutoConnectPhysical" "")
(gtk_accel_path "<Actions>/Editor/step-tracks-up" "uparrow")
-(gtk_accel_path "<Actions>/Editor/playhead-to-next-region-start" "Tab")
+(gtk_accel_path "<Actions>/Editor/playhead-to-next-region-start" "period")
; (gtk_accel_path "<Actions>/options/SendMMC" "")
; (gtk_accel_path "<Actions>/Editor/toggle-auto-xfades" "")
; (gtk_accel_path "<Actions>/Main/AudioFileFormatHeader" "")
@@ -305,6 +306,7 @@
; (gtk_accel_path "<Actions>/Snap/snap-to-region-sync" "")
(gtk_accel_path "<Actions>/Editor/edit-cursor-to-previous-region-sync" "apostrophe")
; (gtk_accel_path "<Actions>/redirectmenu/clear" "")
+; (gtk_accel_path "<Actions>/Editor/ToggleGeneric MIDISurfaceFeedback" "")
; (gtk_accel_path "<Actions>/Editor/PullupPlus4Minus1" "")
; (gtk_accel_path "<Actions>/JACK/JACKLatency512" "")
(gtk_accel_path "<Actions>/Editor/edit-cursor-to-next-region-end" "<Control>bracketright")
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 @@
<menuitem action='OutputAutoConnectMaster'/>
<menuitem action='OutputAutoConnectManual'/>
</menu>
- <menu action='ControlSurfaces'/>
- <menu action='Monitoring'>
+ <menu action='ControlSurfaces'>
+ <menuitem action='RemoteUserDefined'/>
+ <menuitem action='RemoteMixerDefined'/>
+ <menuitem action='RemoteEditorDefined'/>
+ </menu>
+ <menu action='Monitoring'>
<menuitem action='UseHardwareMonitoring'/>
<menuitem action='UseSoftwareMonitoring'/>
<menuitem action='UseExternalMonitoring'/>
@@ -318,6 +322,7 @@
<menuitem action='LatchedSolo'/>
<menuitem action='SoloInPlace'/>
<menuitem action='SoloViaBus'/>
+ <menuitem action='ShowSoloMutes'/>
</menu>
<menu action='Crossfades'>
<menuitem action='toggle-xfades-active'/>
@@ -337,6 +342,7 @@
<menuitem action='SendMMC'/>
<menuitem action='UseMMC'/>
<separator/>
+ <menuitem action='UseOSC'/>
<menuitem action='StopPluginsWithTransport'/>
<menuitem action='DoNotRunPluginsWhileRecording'/>
<menuitem action='LatchedRecordEnable'/>
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 <gtkmm/stock.h>
-
-#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 <string>
-
-#include <gtkmm/box.h>
-#include <gtkmm/button.h>
-#include <gtkmm/label.h>
-
-#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 <iostream>
+#include <sys/resource.h>
+
#include <gtkmm/messagedialog.h>
#include <gtkmm/accelmap.h>
@@ -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<void,bool> ARDOUR_UI::Blink;
sigc::signal<void> ARDOUR_UI::RapidScreenUpdate;
+sigc::signal<void> ARDOUR_UI::MidRapidScreenUpdate;
sigc::signal<void> ARDOUR_UI::SuperRapidScreenUpdate;
sigc::signal<void,nframes_t> 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
@@ -334,6 +346,63 @@ ARDOUR_UI::configure_handler (GdkEventConfigure* conf)
}
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 ()
{
if (!keyboard || !mixer || !editor) {
@@ -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<Stateful*>(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()
{
@@ -491,6 +624,13 @@ ARDOUR_UI::every_point_one_seconds ()
}
gint
+ARDOUR_UI::every_point_oh_five_seconds ()
+{
+ MidRapidScreenUpdate(); /* EMIT_SIGNAL */
+ return true;
+}
+
+gint
ARDOUR_UI::every_point_zero_one_seconds ()
{
SuperRapidScreenUpdate(); /* EMIT_SIGNAL */
@@ -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);
}
@@ -1244,24 +1352,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)
{
snprintf (buf, sizeof(buf), "%s", ((GlobalClickBox *) arg)->strings[
@@ -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> 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<RadioAction> ract = Glib::RefPtr<RadioAction>::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;
}
}
@@ -1596,12 +1730,6 @@ ARDOUR_UI::hide_and_quit (GdkEventAny *ev, ArdourDialog *window)
}
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<Action> 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<RadioAction> ract = Glib::RefPtr<RadioAction>::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<Action> 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 <gtkmm2ext/gtk_ui.h>
#include <gtkmm2ext/click_box.h>
#include <gtkmm2ext/stateful_button.h>
+#include <gtkmm2ext/bindable_button.h>
#include <ardour/ardour.h>
#include <ardour/session.h>
@@ -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<void,bool> Blink;
static sigc::signal<void> RapidScreenUpdate;
+ static sigc::signal<void> MidRapidScreenUpdate;
static sigc::signal<void> SuperRapidScreenUpdate;
static sigc::signal<void,nframes_t> 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<string> crossfade_time_strings;
- GlobalClickBox *mmc_id_button;
- vector<string> 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 <fcntl.h>
@@ -38,10 +37,12 @@
#include <ardour/route.h>
#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_("<Actions>/Common/ToggleColorManager")));
+
top_packer.pack_start (menu_bar_base, false, false);
top_packer.pack_start (transport_frame, false, false);
@@ -84,45 +86,13 @@ ARDOUR_UI::setup_windows ()
}
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<Gdk::Color> 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;
}
@@ -750,6 +697,13 @@ ARDOUR_UI::mouse_shuttle (double x, bool force)
}
void
+ARDOUR_UI::set_shuttle_fract (double f)
+{
+ shuttle_fract = f;
+ use_shuttle_fract (false);
+}
+
+void
ARDOUR_UI::use_shuttle_fract (bool force)
{
struct timeval now;
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<Action> act = ActionManager::get_action (X_("options"), X_("SoloViaBus"));
+ if (act) {
+ act->set_sensitive (false);
+ }
+ }
+
+ /* allow wastebasket flush again */
+
+ Glib::RefPtr<Action> 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_("<Actions>/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 <ardour/session.h>
+#include <ardour/audioengine.h>
#include <ardour/control_protocol_manager.h>
#include <control_protocol/control_protocol.h>
@@ -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);
@@ -527,6 +543,57 @@ ARDOUR_UI::toggle_control_protocol_feedback (ControlProtocolInfo* cpi, const cha
}
void
+ARDOUR_UI::set_jack_buffer_size (nframes_t nframes)
+{
+ Glib::RefPtr<Action> 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<RadioAction> ract = Glib::RefPtr<RadioAction>::cast_dynamic (action);
+
+ if (ract && ract->get_active()) {
+ engine->request_buffer_size (nframes);
+ update_sample_rate (0);
+ }
+ }
+ }
+}
+
+void
ARDOUR_UI::build_control_surface_menu ()
{
list<ControlProtocolInfo*>::iterator i;
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 <pbd/convert.h>
@@ -25,6 +24,7 @@
#include <ardour/configuration.h>
#include <ardour/session.h>
+#include <ardour/osc.h>
#include <ardour/audioengine.h>
#include "ardour_ui.h"
@@ -64,6 +64,12 @@ ARDOUR_UI::toggle_use_mmc ()
}
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 ()
{
ActionManager::toggle_config_state ("options", "UseMIDIcontrol", &Configuration::set_midi_control, &Configuration::get_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:
@@ -226,6 +232,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<Action> act = ActionManager::get_action ("options", action);
+
+ if (act) {
+ Glib::RefPtr<RadioAction> ract = Glib::RefPtr<RadioAction>::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)
{
const char* action = 0;
@@ -390,6 +429,12 @@ ARDOUR_UI::toggle_LatchedSolo()
}
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 ()
{
bool have_mtc;
@@ -472,6 +517,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<Action> act = ActionManager::get_action ("options", on);
+ if (act) {
+ Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::cast_dynamic(act);
+
+ if (tact && !tact->get_active()) {
+ tact->set_active (true);
+ }
+ }
+}
+
+void
ARDOUR_UI::map_file_header_format ()
{
const char* action = 0;
@@ -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 <cstdio> // 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 <pbd/memento_command.h>
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<GnomeCanvasWaveViewCache*> wave_caches;
void color_handler (ColorID, uint32_t);
+
+ vector<GnomeCanvasWaveViewCache*> 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 <cstdlib>
@@ -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 <sigc++/signal.h>
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 <cmath>
@@ -25,6 +24,7 @@
#include <pbd/stl_delete.h>
#include <pbd/memento_command.h>
+#include <pbd/stacktrace.h>
#include <ardour/automation_event.h>
#include <ardour/curve.h>
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 <sigc++/signal.h>
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 <cstdlib>
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 <libgnomecanvas/libgnomecanvas.h>
#include <gtk/gtkenums.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
#include <libart_lgpl/art_misc.h>
+#ifdef __cplusplus
+}
+#endif
+
#include <libart_lgpl/art_pixbuf.h>
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 <map>
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 <cmath>
@@ -194,7 +193,7 @@ CrossfadeEditor::CrossfadeEditor (Session& s, boost::shared_ptr<Crossfade> xf, d
for (list<Preset*>::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<Crossfade> xf, d
for (list<Preset*>::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<PresetPoint> {
- string xpm;
+ const char* image_name;
- Preset (string x)
- : xpm (x) {}
+ Preset (const char* x) : image_name (x) {}
};
typedef list<Preset*> 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 <algorithm>
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 <unistd.h>
@@ -35,6 +34,7 @@
#include <gdkmm/color.h>
#include <gdkmm/bitmap.h>
+#include <gtkmm2ext/grouped_buttons.h>
#include <gtkmm2ext/gtk_ui.h>
#include <gtkmm2ext/tearoff.h>
#include <gtkmm2ext/utils.h>
@@ -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<Playlist> 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<ARDOUR::Region>);
void hide_a_region (boost::shared_ptr<ARDOUR::Region>);
@@ -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<Action> act = ActionManager::get_action (X_("Editor"), X_("ToggleWaveformVisibility"));
+ Glib::RefPtr<Action> act = ActionManager::get_action (X_("Editor"), X_("ToggleWaveformsWhileRecording"));
if (act) {
Glib::RefPtr<ToggleAction> tact = Glib::RefPtr<ToggleAction>::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 <pbd/pthread_utils.h>
@@ -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<ustring> 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<Glib::ustring> 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<Glib::ustring> paths, bool split, bool multiple_fi
for (int n = 0; n < finfo.channels; ++n)
{
try {
- source = boost::dynamic_pointer_cast<AudioFileSource> (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<Source> s;
+
+ if ((s = session->source_by_path_and_channel (path, n)) == 0) {
+ cerr << "source doesn't exist yet\n";
+ source = boost::dynamic_pointer_cast<AudioFileSource> (SourceFactory::createReadable
+ (DataType::AUDIO, *session, path, n,
+ (mode == ImportAsTapeTrack ?
+ AudioFileSource::Destructive :
+ AudioFileSource::Flag (0))));
+ } else {
+ source = boost::dynamic_pointer_cast<AudioFileSource> (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 <libgnomecanvasmm/init.h>
@@ -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 <cstdlib>
@@ -25,6 +24,7 @@
#include <ardour/audioplaylist.h>
#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 <cstdlib>
@@ -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 <cstdlib>
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 <unistd.h>
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 <ardour/audioregion.h>
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 <cstdlib>
@@ -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 <sigc++/retype.h>
@@ -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)));
}
@@ -561,6 +561,24 @@ Editor::marker_menu_hide ()
}
void
+Editor::marker_menu_select_using_range ()
+{
+ Marker* marker;
+
+ if ((marker = reinterpret_cast<Marker *> (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 ()
{
Marker* marker;
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 <gtkmm2ext/utils.h>
@@ -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 <cassert>
@@ -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<ControlPoint*>(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<ControlPoint*>(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<ArdourCanvas::Line *> (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<ArdourCanvas::Line *> (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<RegionView*> new_regionviews;
- set<boost::shared_ptr<Playlist> > affected_playlists;
- pair<set<boost::shared_ptr<Playlist> >::iterator,bool> insert_result;
-
for (list<RegionView*>::const_iterator i = selection->regions.by_layer().begin(); i != selection->regions.by_layer().end(); ++i) {
RegionView* rv;
-
+ RegionView* nrv;
+ AudioRegionView* arv = dynamic_cast<AudioRegionView*>(rv);
+ MidiRegionView* mrv = dynamic_cast<MidiRegionView*>(rv);
+
rv = (*i);
-
- boost::shared_ptr<Playlist> to_playlist = rv->region()->playlist();
- RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*>(&rv->get_time_axis_view());
- insert_result = affected_playlists.insert (to_playlist);
- if (insert_result.second) {
- session->add_command (new MementoCommand<Playlist>(*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<Region> 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<set<boost::shared_ptr<Playlist> >::iterator,bool> insert_result;
- const list<RegionView*>& layered_regions = selection->regions.by_layer();
+ bool do_move;
- for (list<RegionView*>::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<set<boost::shared_ptr<Playlist> >::iterator,bool> insert_result;
+ const list<RegionView*>& layered_regions = selection->regions.by_layer();
+
+ for (list<RegionView*>::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<RouteTimeAxisView*>(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<RouteTimeAxisView*>(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<RouteTimeAxisView*>(tvp2);
- rv->set_height (temp_rtv->height);
+ tvp2 = trackview_by_y_position (iy1 + y_delta);
+ temp_rtv = dynamic_cast<RouteTimeAxisView*>(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<GdkColor&>(col));
- break;
+ //const GdkColor& col (temp_rtv->view->get_region_color());
+ //rv->set_color (const_cast<GdkColor&>(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<RouteTimeAxisView*> (&rv->get_time_axis_view());
- if (rtv && rtv->is_audio_track()) {
- boost::shared_ptr<AudioPlaylist> pl = boost::dynamic_pointer_cast<AudioPlaylist>(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<Playlist>(*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<set<boost::shared_ptr<Playlist> >::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<RouteTimeAxisView*> (drag_info.last_trackview);
- if (atv && atv->get_diskstream()) {
- speed = atv->get_diskstream()->speed();
+ rtv = dynamic_cast<RouteTimeAxisView*> (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<RegionView*> new_selection;
-
- /* moved to a different audio track. */
+ new_selection = selection->regions.by_layer();
+ selection->clear_regions ();
- for (list<RegionView*>::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<RegionView*>::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<RegionView*>::const_iterator i = new_selection.begin(); i != new_selection.end();i++ ) {
+ RegionView* rv = (*i);
- boost::shared_ptr<Playlist> from_playlist;
- boost::shared_ptr<Playlist> 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<RouteTimeAxisView*>(tvp2);
+ RouteTimeAxisView* rtv2 = dynamic_cast<RouteTimeAxisView*>(tvp2);
- (*i)->region()->set_opaque (true);
+ boost::shared_ptr<Playlist> from_playlist = rv->region()->playlist();
+ boost::shared_ptr<Playlist> 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<Playlist>(*to_playlist, &to_playlist->get_state(), 0));
- }
-
- }
-
- /* now do it again with the actual operations */
-
- for (list<RegionView*>::const_iterator i = new_selection.begin(); i != new_selection.end();i++ ) {
+ where = (nframes_t) (unit_to_frame (ix1) * speed);
+ boost::shared_ptr<Region> new_region (RegionFactory::create (rv->region()));
- boost::shared_ptr<Playlist> from_playlist;
- boost::shared_ptr<Playlist> 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<RouteTimeAxisView*>(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<Region> new_region (RegionFactory::create ((*i)->region()));
+ session->add_command (new MementoCommand<Playlist>(*from_playlist, &from_playlist->get_state(), 0));
+ from_playlist->remove_region ((rv->region()));
+ session->add_command (new MementoCommand<Playlist>(*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<Playlist>(*to_playlist, &to_playlist->get_state(), 0));
to_playlist->add_region (new_region, where);
+ session->add_command (new MementoCommand<Playlist>(*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<RegionView*> regions = selection->regions.by_layer();
+
+ if (drag_info.copy) {
+ selection->clear_regions();
+ }
- for (list<RegionView*>::const_iterator i = selection->regions.by_layer().begin(); i != selection->regions.by_layer().end(); ++i) {
+ for (list<RegionView*>::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<RouteTimeAxisView*> (&(rv->get_time_axis_view()));
+ rtv = dynamic_cast<RouteTimeAxisView*> (&(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<Playlist> 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<Playlist>(*to_playlist, &to_playlist->get_state(), 0));
+
+ if (drag_info.copy) {
+
+ boost::shared_ptr<Region> newregion;
+ boost::shared_ptr<Region> ar;
+
+ if ((ar = boost::dynamic_pointer_cast<AudioRegion>(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<Playlist>(*to_playlist, 0, &to_playlist->get_state()));
+
+ /* get rid of the copy */
+
+ if (drag_info.copy) {
+ delete rv;
+ }
}
}
out:
- for (set<boost::shared_ptr<Playlist> >::iterator p = motion_frozen_playlists.begin(); p != motion_frozen_playlists.end(); ++p) {
- (*p)->thaw ();
- session->add_command (new MementoCommand<Playlist>(*((*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<RouteTimeAxisView*>(tv);
+ RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*>(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<RegionView*>::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<AudioRegionView*>(*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<RouteTimeAxisView*>(&arv->get_time_axis_view());
+ RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*>(&arv->get_time_axis_view());
- if (atv == 0 || !atv->is_track()) {
+ if (rtv == 0 || !rtv->is_track()) {
return;
}
- boost::shared_ptr<Playlist> playlist = atv->playlist();
- double speed = atv->get_diskstream()->speed();
+ boost::shared_ptr<Playlist> playlist = rtv->playlist();
+ double speed = rtv->get_diskstream()->speed();
XMLNode &before = playlist->get_state();
playlist->add_region (boost::dynamic_pointer_cast<AudioRegion> (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 <cstdlib>
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 <unistd.h>
@@ -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 <cstdlib>
@@ -27,12 +26,14 @@
#include <ardour/audioregion.h>
#include <ardour/audiofilesource.h>
+#include <ardour/silentfilesource.h>
#include <ardour/session_region.h>
#include <gtkmm2ext/stop_signal.h>
#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> region)
string str;
TreeModel::Row row;
Gdk::Color c;
+ bool missing_source;
+
+ missing_source = boost::dynamic_pointer_cast<SilentFileSource>(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> 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> 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 <algorithm>
@@ -24,11 +23,13 @@
#include <cassert>
#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 <pbd/unknown_type.h>
@@ -56,7 +57,7 @@ Editor::handle_new_route (Session::RouteList& routes)
boost::shared_ptr<Route> 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 ("<Actions>/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 <cstdio> // 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 <pbd/stacktrace.h>
@@ -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 <cstdlib>
@@ -31,6 +30,7 @@
#include <gtkmm2ext/stop_signal.h>
#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 <cstdio> // 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 <cstdlib>
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 <gtkmm/progressbar.h>
#include <gtkmm/scrolledwindow.h>
#include <gtkmm/fileselection.h>
+#include <gtkmm/filechooser.h>
#include <gtkmm/comboboxtext.h>
#include <gtkmm/treeview.h>
#include <gtkmm/liststore.h>
@@ -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<ARDOUR::Region> region)
: ExportDialog(editor)
{
+ set_title (_("ardour: export region"));
+ file_frame.set_label (_("Export to File")),
+
audio_region = boost::dynamic_pointer_cast<ARDOUR::AudioRegion>(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 <ardour/curve.h>
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 <limits.h>
@@ -107,11 +106,11 @@ GainMeter::GainMeter (boost::shared_ptr<IO> 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> 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<Gdk::Window> win (w.get_window());
Glib::RefPtr<Gdk::GC> fg_gc (w.get_style()->get_fg_gc (Gtk::STATE_NORMAL));
Glib::RefPtr<Gdk::GC> 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<Gdk::Pixmap> pixmap = Gdk::Pixmap::create (win, width, height);
@@ -274,9 +273,9 @@ GainMeter::meter_metrics_expose (GdkEventExpose *ev)
Glib::RefPtr<Gdk::GC> 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 <gtkmm.h>
-
-#include "grouped_buttons.h"
-
-using namespace std;
-
-GroupedButtons::GroupedButtons (vector<Gtk::ToggleButton *>& buttonset)
-{
- uint32_t n = 0;
-
- buttons = buttonset;
-
- for (vector<Gtk::ToggleButton *>::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 <stdint.h>
-
-#include <vector>
-#include <sigc++/signal.h>
-
-namespace Gtk {
- class ToggleButton;
-};
-
-class GroupedButtons : public sigc::trackable
-{
- public:
- GroupedButtons (uint32_t nbuttons, uint32_t first_active);
- GroupedButtons (std::vector<Gtk::ToggleButton *>&);
-
- Gtk::ToggleButton& button (uint32_t which) {
- return *buttons[which];
- }
-
- private:
- std::vector<Gtk::ToggleButton *> 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
--- /dev/null
+++ b/gtk2_ardour/icons/crossfade_in_constant.png
Binary files 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
--- /dev/null
+++ b/gtk2_ardour/icons/crossfade_in_dipped.png
Binary files 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
--- /dev/null
+++ b/gtk2_ardour/icons/crossfade_in_fast-cut.png
Binary files 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
--- /dev/null
+++ b/gtk2_ardour/icons/crossfade_in_slow-cut.png
Binary files 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
--- /dev/null
+++ b/gtk2_ardour/icons/crossfade_in_slow-fade.png
Binary files 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
--- /dev/null
+++ b/gtk2_ardour/icons/crossfade_in_transition.png
Binary files 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
--- /dev/null
+++ b/gtk2_ardour/icons/crossfade_out_constant.png
Binary files 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
--- /dev/null
+++ b/gtk2_ardour/icons/crossfade_out_dipped.png
Binary files 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
--- /dev/null
+++ b/gtk2_ardour/icons/crossfade_out_fast-cut.png
Binary files 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
--- /dev/null
+++ b/gtk2_ardour/icons/crossfade_out_slow-cut.png
Binary files 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
--- /dev/null
+++ b/gtk2_ardour/icons/crossfade_out_slow-fade.png
Binary files 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
--- /dev/null
+++ b/gtk2_ardour/icons/crossfade_out_transition.png
Binary files 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 <libgnomecanvasmm/private/shape_p.h>
-/* $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 <glibmm.h>
-/* $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 <iostream>
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 <string>
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 <algorithm>
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 <algorithm>
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 <algorithm>
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 <map>
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 <ctype.h>
-#include <X11/keysymdef.h>
-#include <gdk/gdkx.h>
#include <gdk/gdkkeysyms.h>
#include <pbd/error.h>
@@ -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<<j)) {
- modifier_mask |= modifier_masks[(i*8)+j];
- }
- }
- }
-}
-
-void
-Keyboard::check_meta_numlock (char keycode, guint mod, string modname)
-{
- guint alternate_meta_mod;
- string alternate_meta_modname;
-
- if (mod == Meta) {
-
- guint keysym = XKeycodeToKeysym (GDK_DISPLAY(), keycode, 0);
-
- if (keysym == GDK_Num_Lock) {
-
- switch (mod) {
- case GDK_MOD2_MASK:
- alternate_meta_mod = GDK_MOD3_MASK;
- alternate_meta_modname = "Mod3";
- break;
- case GDK_MOD3_MASK:
- alternate_meta_mod = GDK_MOD2_MASK;
- alternate_meta_modname = "Mod2";
- break;
- case GDK_MOD4_MASK:
- alternate_meta_mod = GDK_MOD2_MASK;
- alternate_meta_modname = "Mod2";
- break;
- case GDK_MOD5_MASK:
- alternate_meta_mod = GDK_MOD2_MASK;
- alternate_meta_modname = "Mod2";
- break;
- default:
- error << string_compose (_("Your system is completely broken - NumLock uses \"%1\""
- "as its modifier. This is madness - see the man page "
- "for xmodmap to find out how to fix this."),
- modname)
- << endmsg;
- return;
- }
-
- warning << string_compose (_("Your system generates \"%1\" when the NumLock key "
- "is pressed. This can cause problems when editing "
- "so Ardour will use %2 to mean Meta rather than %1"),
- modname, alternate_meta_modname)
- << endmsg;
-
- set_meta_modifier (alternate_meta_mod);
- }
- }
-}
-
-void
-Keyboard::get_modifier_masks ()
-{
- XModifierKeymap *modifiers;
- KeyCode *keycode;
- int i;
- int bound;
-
- XDisplayKeycodes (GDK_DISPLAY(), &min_keycode, &max_keycode);
-
- /* This function builds a lookup table to provide rapid answers to
- the question: what, if any, modmask, is associated with a given
- keycode ?
- */
-
- modifiers = XGetModifierMapping (GDK_DISPLAY());
-
- modifier_masks = new int32_t [max_keycode+1];
-
- keycode = modifiers->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<uint32_t> 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 <gdk/gdkkeysyms.h>
-#include <pbd/error.h>
-
-#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<Keyboard::State,KeyAction> (state, key_action));
- bindings.insert (pair<string,string> (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<string,KeyAction> newpair;
- pair<ActionMap::iterator,bool> 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<string,KeyAction>::iterator i;
-
- if ((i = actions.find (name)) != actions.end()) {
- action = i->second;
- return 0;
- } else {
- return -1;
- }
-}
-
-int
-KeyboardTarget::remove_action (string name)
-{
- map<string,KeyAction>::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 <map>
-#include <string>
-#include <sigc++/signal.h>
-#include <sigc++/slot.h>
-#include <gdk/gdk.h>
-#include <pbd/xml++.h>
-
-#include "keyboard.h"
-
-namespace Gtk {
- class Window;
-}
-
-class KeyboardTarget
-{
- public:
- KeyboardTarget(Gtk::Window& w, std::string name);
- virtual ~KeyboardTarget();
-
- sigc::signal<void> Hiding;
- sigc::signal<void> GoingAway;
-
- typedef sigc::slot<void> 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<Keyboard::State,KeyAction> KeyMap;
- typedef std::map<std::string,std::string> BindingMap;
-
- KeyMap keymap;
- BindingMap bindings;
-
- private:
- typedef map<std::string,KeyAction> 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<LadspaPlugin> lp;
@@ -451,8 +455,7 @@ LadspaPluginUI::build_control_ui (guint32 port_index, PBD::Controllable* mcontro
sigc::slot<void,char*,uint32_t> 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 <cmath>
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 <ardour/session.h>
#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 <sys/types.h>
-#include <sys/mman.h>
-#include <sys/wait.h>
-#include <cerrno>
#include <cstdlib>
-#include <signal.h>
-#include <unistd.h>
#include <sigc++/bind.h>
#include <gtkmm/settings.h>
@@ -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 <sigc++/bind.h>
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 <string>
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 <algorithm>
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 <gtkmm.h>
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 <ardour/session.h>
-#include <ardour/session_route.h>
-#include <ardour/audio_diskstream.h>
-#include <ardour/audio_track.h>
-
-#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<Gtk::Window*>(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<MeterBridgeStrip *>::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<AudioTrack*>(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<MeterBridgeStrip *>::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<MeterBridgeStrip *>::iterator i;
-
- for (i = meters.begin(); i != meters.end(); ++i) {
- (*i)->clear_meter ();
- }
-}
-
-void
-MeterBridge::update ()
-{
- list<MeterBridgeStrip *>::iterator i;
-
- for (i = meters.begin(); i != meters.end(); ++i) {
- (*i)->update ();
- }
-}
-
-void
-MeterBridge::start_metering ()
-{
- list<MeterBridgeStrip *>::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<MeterBridgeStrip *>::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 <list>
-
-#include <gtkmm/eventbox.h>
-#include <gtkmm/viewport.h>
-#include <gtkmm/scrolledwindow.h>
-#include <gtkmm/box.h>
-#include <gtkmm/fixed.h>
-#include <gtkmm/frame.h>
-
-#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<MeterBridgeStrip*> 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 <cmath>
-#include <ctime>
-#include <sys/stat.h>
-
-#include <pbd/pathscanner.h>
-#include <pbd/fastlog.h>
-#include <gtkmm2ext/utils.h>
-#include <gtkmm2ext/selector.h>
-
-#include <ardour/audioengine.h>
-#include <ardour/route.h>
-#include <ardour/port.h>
-#include <ardour/utils.h>
-
-#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 <sigc++/signal.h>
-
-#include <gtkmm/box.h>
-#include <gtkmm/widget.h>
-#include <gtkmm/eventbox.h>
-#include <gtkmm/label.h>
-#include <gtkmm/frame.h>
-
-#include <gtkmm2ext/fastmeter.h>
-
-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 <cmath>
+#include <algorithm>
#include <sigc++/bind.h>
@@ -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<Route> 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<Route> 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<Route> 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 <algorithm>
@@ -30,13 +29,13 @@
#include <gtkmm2ext/utils.h>
#include <gtkmm2ext/stop_signal.h>
-#include <ardour/audioengine.h>
#include <ardour/session.h>
#include <ardour/audio_track.h>
#include <ardour/session_route.h>
#include <ardour/audio_diskstream.h>
#include <ardour/plugin_manager.h>
+#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<MixerStrip *>::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 <ardour/ardour.h>
#include <ardour/io.h>
-#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 <pbd/whitespace.h>
@@ -24,13 +23,14 @@
#include <ardour/audioengine.h>
#include <ardour/configuration.h>
#include <ardour/auditioner.h>
-#include <ardour/destructive_filesource.h>
+#include <ardour/sndfilesource.h>
#include <ardour/crossfade.h>
#include <midi++/manager.h>
#include <gtkmm2ext/stop_signal.h>
#include <gtkmm2ext/utils.h>
#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<MIDI::Port*,vector<RadioButton*> > 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());
@@ -556,12 +561,22 @@ 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 <getopt.h>
@@ -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 <ardour/curve.h>
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 <cmath>
@@ -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> 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> 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> 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<PannerBar*>::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<PannerBar*>::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<Adjustment*>::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 <climits>
@@ -96,13 +95,14 @@ PluginUIWindow::PluginUIWindow (boost::shared_ptr<PluginInsert> 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<Window*> (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 <alexandre.prokoudine@gmail.com>, 2006.
+# Alexandre Prokoudine <alexandre.prokoudine@gmail.com>, 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 <alexandre.prokoudine@gmail.com>\n"
-"Language-Team: Russian <ru@li.org>\n"
+"Language-Team: Russian <gnome-cyr@lists.gnome.org>\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 <alain.frehel@free.fr>\n"
+"\tChristophe Combelles <ccomb@free.fr>\n"
msgstr ""
"ФранцузÑкий:\n"
"\tAlain Fréhel <alain.frehel@free.fr>\n"
+"\tChristophe Combelles <ccomb@free.fr>\n"
-#: gtk2_ardour/about.cc:147
+#: gtk2_ardour/about.cc:155
msgid ""
"German:\n"
"\tKarsten Petersen <kapet@kapet.de>\n"
@@ -122,7 +152,7 @@ msgstr ""
"Ðемецкий:\n"
"\tKarsten Petersen <kapet@kapet.de>\n"
-#: gtk2_ardour/about.cc:148
+#: gtk2_ardour/about.cc:156
msgid ""
"Italian:\n"
"\tFilippo Pappalardo <filippo@email.it>\n"
@@ -130,7 +160,7 @@ msgstr ""
"ИтальÑнÑкий:\n"
"\tFilippo Pappalardo <filippo@email.it>\n"
-#: gtk2_ardour/about.cc:149
+#: gtk2_ardour/about.cc:157
msgid ""
"Portuguese:\n"
"\tRui Nuno Capela <rncbc@rncbc.org>\n"
@@ -138,7 +168,7 @@ msgstr ""
"ПортугальÑкий:\n"
"\tRui Nuno Capela <rncbc@rncbc.org>\n"
-#: gtk2_ardour/about.cc:150
+#: gtk2_ardour/about.cc:158
msgid ""
"Brazilian Portuguese:\n"
"\tAlexander da Franca Fernandes <alexander@nautae.eti.br>\n"
@@ -148,7 +178,7 @@ msgstr ""
"\tAlexander da Franca Fernandes <alexander@nautae.eti.br>\n"
"\tChris Ross <chris@tebibyte.org>\n"
-#: gtk2_ardour/about.cc:152
+#: gtk2_ardour/about.cc:160
msgid ""
"Spanish:\n"
"\t Alex Krohn <alexkrohn@fastmail.fm>\n"
@@ -156,7 +186,7 @@ msgstr ""
"ИÑпанÑкий:\n"
"\t Alex Krohn <alexkrohn@fastmail.fm>\n"
-#: gtk2_ardour/about.cc:153
+#: gtk2_ardour/about.cc:161
msgid ""
"Russian:\n"
"\t Igor Blinov <pitstop@nm.ru>\n"
@@ -165,47 +195,93 @@ msgstr ""
"\t Igor Blinov <pitstop@nm.ru>\n"
"\t Alexandre Prokoudine <alexandre.prokoudine@gmail.com>\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:%<PRIu32>%% c:%<PRIu32>%%"
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
+#: 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:399 gtk2_ardour/editor.cc:1357
+#: gtk2_ardour/editor.cc:1374
+msgid "Slowest"
+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_ed.cc:401 gtk2_ardour/ardour_ui_ed.cc:408
+msgid "Medium"
+msgstr "Средне"
+
+#: gtk2_ardour/ardour_ui_ed.cc:402 gtk2_ardour/editor.cc:1359
+#: gtk2_ardour/editor.cc:1376
+msgid "Fast"
+msgstr "БыÑтро"
+
+#: gtk2_ardour/ardour_ui_ed.cc:403
+msgid "Faster"
+msgstr "БыÑтрее"
+
+#: gtk2_ardour/ardour_ui_ed.cc:404 gtk2_ardour/editor.cc:1360
+#: gtk2_ardour/editor.cc:1377
+msgid "Fastest"
+msgstr "БыÑтрее вÑего"
+
+#: 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:426
+#: gtk2_ardour/ardour_ui_ed.cc:435
msgid "Solo via bus"
msgstr ""
-#: gtk2_ardour/ardour_ui_ed.cc:429
-#, fuzzy
-msgid "Automatically create crossfades"
-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:431
-msgid "Unmute new full crossfades"
+#: 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:423 gtk2_ardour/ardour_ui_options.cc:433
-#: gtk2_ardour/ardour_ui_options.cc:501
-#, fuzzy
-msgid "Internal"
-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:424 gtk2_ardour/ardour_ui_options.cc:504
+#: gtk2_ardour/ardour_ui_options.cc:824
#, fuzzy
-msgid "MTC"
-msgstr "MMC"
+msgid "ST"
+msgstr "УСТÐÐОВИТЬ"
-#: gtk2_ardour/audio_clock.cc:1742 gtk2_ardour/editor.cc:189
-msgid "SMPTE"
-msgstr "SMPTE"
+#: gtk2_ardour/audio_clock.cc:1801 gtk2_ardour/editor.cc:180
+msgid "Timecode"
+msgstr "Тайм-код"
-#: gtk2_ardour/audio_clock.cc:1743 gtk2_ardour/editor.cc:188
-#: gtk2_ardour/editor_rulers.cc:359
+#: 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:1744
+#: 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:136 gtk2_ardour/editor.cc:3595
-#, fuzzy
-msgid "Magnetic 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: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:1824
+#: gtk2_ardour/editor.cc:1782
+msgid "Envelope Active"
+msgstr "ÐžÐ³Ð¸Ð±Ð°ÑŽÑ‰Ð°Ñ Ð°ÐºÑ‚Ð¸Ð²Ð½Ð°"
+
+#: 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:283
+msgid "Snap Mode"
+msgstr "Режим привÑзки"
-#: gtk2_ardour/editor_actions.cc:288
+#: 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:145
+#: 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: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 ""
+msgstr "ДоÑтупных портов JACK не оÑталоÑÑŒ."
-#: gtk2_ardour/io_selector.cc:651 gtk2_ardour/io_selector.cc:678
-#: gtk2_ardour/io_selector.cc:731
-msgid "port"
-msgstr "порт"
-
-#: 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 "<span size=\"large\">Presets</span>"
-msgstr ""
-
-#: gtk2_ardour/ladspa_pluginui.cc:168
-msgid "Controls"
-msgstr "Управление"
+msgstr "<span size=\"large\">ПредуÑтановки</span>"
#: 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:45
-msgid "Create Session Directory In :"
-msgstr "Создать каталог ÑеÑÑии в:"
+#: gtk2_ardour/new_session_dialog.cc:66
+msgid "<b>Busses</b>"
+msgstr "<b>Шины</b>"
+
+#: gtk2_ardour/new_session_dialog.cc:67
+msgid "<b>Inputs</b>"
+msgstr "<b>Входы</b>"
+
+#: gtk2_ardour/new_session_dialog.cc:68
+msgid "<b>Outputs</b>"
+msgstr "<b>Выходы</b>"
-#: gtk2_ardour/new_session_dialog.cc:47
-msgid "Use Session Template :"
-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 "<b>Track/Bus Inputs</b>"
-msgstr "<b>Входы дорожек/шин</b>"
+#: 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 "<b>Track/Bus Outputs</b>"
-msgstr "<b>Выходы дорожек/шин</b>"
-
-#: 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 <pbd/statefuldestructible.h>
#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<ARDOUR::Region>) = 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<void,Editing::DisplayControl> DisplayControlChanged;
sigc::signal<void> ZoomFocusChanged;
sigc::signal<void> ZoomChanged;
sigc::signal<void> 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 <ardour/redirect.h>
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 <cmath>
@@ -398,16 +397,16 @@ RedirectBox::insert_plugin_chosen (boost::shared_ptr<Plugin> 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> io)
+RedirectBox::weird_plugin_dialog (Plugin& p, uint32_t streams, boost::shared_ptr<IO> 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<ARDOUR::Redirect>);
- void wierd_plugin_dialog (ARDOUR::Plugin& p, uint32_t streams, boost::shared_ptr<ARDOUR::IO> io);
+ void weird_plugin_dialog (ARDOUR::Plugin& p, uint32_t streams, boost::shared_ptr<ARDOUR::IO> 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 <cmath>
@@ -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<ARDOUR::Region> 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;
@@ -376,6 +385,18 @@ RegionView::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()
{
if (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<void,RegionView*> RegionViewGoingAway;
+ static sigc::signal<void,RegionView*> RegionViewGoingAway;
sigc::signal<void> GoingAway;
protected:
/** Allows derived types to specify their visibility requirements
* to the TimeAxisViewItem parent class
- */
+ */
RegionView (ArdourCanvas::Group *,
TimeAxisView&,
boost::shared_ptr<ARDOUR::Region>,
@@ -119,7 +122,6 @@ class RegionView : public TimeAxisViewItem
boost::shared_ptr<ARDOUR::Region> _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 <algorithm>
@@ -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 <algorithm>
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 <gtkmm2ext/gtk_ui.h>
@@ -65,24 +64,32 @@ RouteUI::RouteUI (boost::shared_ptr<ARDOUR::Route> 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,RouteUI> (*_route, *this);
+ new PairedShiva<Route,RouteUI> (*_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<Track> t = boost::dynamic_pointer_cast<Track>(_route);
@@ -92,14 +99,17 @@ RouteUI::RouteUI (boost::shared_ptr<ARDOUR::Route> 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,23 +355,31 @@ void
RouteUI::update_solo_display ()
{
bool x;
-
+ vector<Gdk::Color> 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)
{
Gtkmm2ext::UI::instance()->call_slot (mem_fun (*this, &RouteUI::update_mute_display));
@@ -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 <algorithm>
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 <ardour/send.h>
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 <glibmm.h>
-/* $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 <libgnomecanvasmm/private/shape_p.h>
-/* $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 <glibmm.h>
-/* $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 <cmath>
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 <gtkmm/label.h>
#include <gtkmm/table.h>
#include <gtkmm/entry.h>
+#include <gtkmm/spinbutton.h>
#include <gtkmm/comboboxtext.h>
#include <ardour/types.h>
@@ -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 <cstdlib>
@@ -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 <pbd/error.h>
@@ -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 <algorithm>
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 <cstdlib>
@@ -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<const Pango::Layout> 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<std::string, Glib::RefPtr<Gdk::Pixbuf> > xpm_map;
const char* const *get_xpm_data (std::string path);
std::string longest (std::vector<std::string>&);
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 <cstdlib>
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 <fst.h>
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 <glibmm.h>
-/* $Id$ */
/* waveview.h
*