mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-20 21:56:30 +01:00
more ongoing SAE-driven changes (too many too list here)
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2715 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
90a5607604
commit
1268bf8b45
17 changed files with 272 additions and 95 deletions
|
|
@ -25,6 +25,7 @@
|
||||||
#include <pbd/error.h>
|
#include <pbd/error.h>
|
||||||
#include <pbd/convert.h>
|
#include <pbd/convert.h>
|
||||||
#include <gtkmm2ext/utils.h>
|
#include <gtkmm2ext/utils.h>
|
||||||
|
#include <ardour/profile.h>
|
||||||
|
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
#include "add_route_dialog.h"
|
#include "add_route_dialog.h"
|
||||||
|
|
@ -70,6 +71,14 @@ AddRouteDialog::AddRouteDialog ()
|
||||||
|
|
||||||
if (track_mode_strings.empty()) {
|
if (track_mode_strings.empty()) {
|
||||||
track_mode_strings = I18N (track_mode_names);
|
track_mode_strings = I18N (track_mode_names);
|
||||||
|
|
||||||
|
if (ARDOUR::Profile->get_sae()) {
|
||||||
|
/* remove all but the first track mode (Normal) */
|
||||||
|
|
||||||
|
while (track_mode_strings.size() > 1) {
|
||||||
|
track_mode_strings.pop_back();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
set_name ("AddRouteDialog");
|
set_name ("AddRouteDialog");
|
||||||
|
|
|
||||||
|
|
@ -95,6 +95,9 @@
|
||||||
<menuitem action='select-all-in-punch-range'/>
|
<menuitem action='select-all-in-punch-range'/>
|
||||||
<menuitem action='select-all-in-loop-range'/>
|
<menuitem action='select-all-in-loop-range'/>
|
||||||
<separator/>
|
<separator/>
|
||||||
|
<menuitem action='select-next-route'/>
|
||||||
|
<menuitem action='select-prev-route'/>
|
||||||
|
<separator/>
|
||||||
<menu action='EditCursorMovementOptions'>
|
<menu action='EditCursorMovementOptions'>
|
||||||
<menuitem action='edit-cursor-to-next-region-start'/>
|
<menuitem action='edit-cursor-to-next-region-start'/>
|
||||||
<menuitem action='edit-cursor-to-next-region-end'/>
|
<menuitem action='edit-cursor-to-next-region-end'/>
|
||||||
|
|
@ -154,9 +157,6 @@
|
||||||
<menuitem action='ToggleMaximalEditor'/>
|
<menuitem action='ToggleMaximalEditor'/>
|
||||||
<separator/>
|
<separator/>
|
||||||
<menu name='ZoomFocus' action='ZoomFocus'>
|
<menu name='ZoomFocus' action='ZoomFocus'>
|
||||||
<menuitem action='zoom-focus-left'/>
|
|
||||||
<menuitem action='zoom-focus-right'/>
|
|
||||||
<menuitem action='zoom-focus-center'/>
|
|
||||||
<menuitem action='zoom-focus-playhead'/>
|
<menuitem action='zoom-focus-playhead'/>
|
||||||
<menuitem action='zoom-focus-edit'/>
|
<menuitem action='zoom-focus-edit'/>
|
||||||
<menuitem action='zoom-focus-mouse'/>
|
<menuitem action='zoom-focus-mouse'/>
|
||||||
|
|
@ -208,6 +208,7 @@
|
||||||
<separator/>
|
<separator/>
|
||||||
<menuitem action='show-editor-mixer'/>
|
<menuitem action='show-editor-mixer'/>
|
||||||
<menuitem action='SyncEditorAndMixerTrackOrder'/>
|
<menuitem action='SyncEditorAndMixerTrackOrder'/>
|
||||||
|
<menuitem action='ToggleMeasureVisibility'/>
|
||||||
<menuitem action='ToggleLogoVisibility'/>
|
<menuitem action='ToggleLogoVisibility'/>
|
||||||
<separator/>
|
<separator/>
|
||||||
<menuitem action='goto-editor'/>
|
<menuitem action='goto-editor'/>
|
||||||
|
|
|
||||||
|
|
@ -10,10 +10,10 @@
|
||||||
; (gtk_accel_path "<Actions>/Editor/Autoconnect" "")
|
; (gtk_accel_path "<Actions>/Editor/Autoconnect" "")
|
||||||
; (gtk_accel_path "<Actions>/Editor/Edit" "")
|
; (gtk_accel_path "<Actions>/Editor/Edit" "")
|
||||||
(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-end" "<Control>comma")
|
(gtk_accel_path "<Actions>/Editor/playhead-to-previous-region-end" "<Control>comma")
|
||||||
(gtk_accel_path "<Actions>/Editor/cycle-snap-mode" "<Alt>KP_Decimal")
|
(gtk_accel_path "<Actions>/Editor/cycle-edit-point" "grave")
|
||||||
(gtk_accel_path "<Actions>/Editor/cycle-snap-choice" "KP_Decimal")
|
(gtk_accel_path "<Actions>/Editor/toggle-edit-mode" "1")
|
||||||
(gtk_accel_path "<Actions>/Editor/cycle-edit-point" "KP_Divide")
|
(gtk_accel_path "<Actions>/Editor/cycle-snap-mode" "2")
|
||||||
(gtk_accel_path "<Actions>/Editor/toggle-edit-mode" "KP_Multiply")
|
(gtk_accel_path "<Actions>/Editor/cycle-snap-choice" "3")
|
||||||
; (gtk_accel_path "<Actions>/redirectmenu/copy" "")
|
; (gtk_accel_path "<Actions>/redirectmenu/copy" "")
|
||||||
; (gtk_accel_path "<Actions>/options/MeterFalloffFaster" "")
|
; (gtk_accel_path "<Actions>/options/MeterFalloffFaster" "")
|
||||||
(gtk_accel_path "<Actions>/Transport/ToggleRollForgetCapture" "<Control>space")
|
(gtk_accel_path "<Actions>/Transport/ToggleRollForgetCapture" "<Control>space")
|
||||||
|
|
@ -73,6 +73,8 @@
|
||||||
; (gtk_accel_path "<Actions>/options/StopPluginsWithTransport" "")
|
; (gtk_accel_path "<Actions>/options/StopPluginsWithTransport" "")
|
||||||
(gtk_accel_path "<Actions>/Editor/editor-paste" "<Control>v")
|
(gtk_accel_path "<Actions>/Editor/editor-paste" "<Control>v")
|
||||||
(gtk_accel_path "<Actions>/Editor/scroll-tracks-down" "Page_Down")
|
(gtk_accel_path "<Actions>/Editor/scroll-tracks-down" "Page_Down")
|
||||||
|
(gtk_accel_path "<Actions>/Editor/select-next-route" "<Ctrl>Page_Down")
|
||||||
|
(gtk_accel_path "<Actions>/Editor/select-prev-route" "<Ctrl>Page_Up")
|
||||||
; (gtk_accel_path "<Actions>/Snap/snap-to-smpte-minutes" "")
|
; (gtk_accel_path "<Actions>/Snap/snap-to-smpte-minutes" "")
|
||||||
; (gtk_accel_path "<Actions>/Main/FlushWastebasket" "")
|
; (gtk_accel_path "<Actions>/Main/FlushWastebasket" "")
|
||||||
(gtk_accel_path "<Actions>/Editor/normalize-region" "n")
|
(gtk_accel_path "<Actions>/Editor/normalize-region" "n")
|
||||||
|
|
@ -333,3 +335,5 @@
|
||||||
(gtk_accel_path "<Actions>/Editor/goto-mark-7" "KP_7")
|
(gtk_accel_path "<Actions>/Editor/goto-mark-7" "KP_7")
|
||||||
(gtk_accel_path "<Actions>/Editor/goto-mark-8" "KP_8")
|
(gtk_accel_path "<Actions>/Editor/goto-mark-8" "KP_8")
|
||||||
(gtk_accel_path "<Actions>/Editor/goto-mark-9" "KP_9")
|
(gtk_accel_path "<Actions>/Editor/goto-mark-9" "KP_9")
|
||||||
|
(gtk_accel_path "<Actions>/Transport/ToggleClick" "5")
|
||||||
|
(gtk_accel_path "<Actions>/Transport/ToggleAutoReturn" "4")
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,7 @@
|
||||||
#include <ardour/location.h>
|
#include <ardour/location.h>
|
||||||
#include <ardour/panner.h>
|
#include <ardour/panner.h>
|
||||||
#include <ardour/playlist.h>
|
#include <ardour/playlist.h>
|
||||||
|
#include <ardour/profile.h>
|
||||||
#include <ardour/session.h>
|
#include <ardour/session.h>
|
||||||
#include <ardour/session_playlist.h>
|
#include <ardour/session_playlist.h>
|
||||||
#include <ardour/utils.h>
|
#include <ardour/utils.h>
|
||||||
|
|
@ -251,8 +252,12 @@ AudioTimeAxisView::append_extra_display_menu_items ()
|
||||||
waveform_items.push_back (RadioMenuElem (group, _("Traditional"), bind (mem_fun(*this, &AudioTimeAxisView::set_waveform_shape), Traditional)));
|
waveform_items.push_back (RadioMenuElem (group, _("Traditional"), bind (mem_fun(*this, &AudioTimeAxisView::set_waveform_shape), Traditional)));
|
||||||
traditional_item = static_cast<RadioMenuItem *> (&waveform_items.back());
|
traditional_item = static_cast<RadioMenuItem *> (&waveform_items.back());
|
||||||
|
|
||||||
waveform_items.push_back (RadioMenuElem (group, _("Rectified"), bind (mem_fun(*this, &AudioTimeAxisView::set_waveform_shape), Rectified)));
|
if (!Profile->get_sae()) {
|
||||||
rectified_item = static_cast<RadioMenuItem *> (&waveform_items.back());
|
waveform_items.push_back (RadioMenuElem (group, _("Rectified"), bind (mem_fun(*this, &AudioTimeAxisView::set_waveform_shape), Rectified)));
|
||||||
|
rectified_item = static_cast<RadioMenuItem *> (&waveform_items.back());
|
||||||
|
} else {
|
||||||
|
rectified_item = 0;
|
||||||
|
}
|
||||||
|
|
||||||
waveform_items.push_back (SeparatorElem());
|
waveform_items.push_back (SeparatorElem());
|
||||||
|
|
||||||
|
|
@ -268,9 +273,11 @@ AudioTimeAxisView::append_extra_display_menu_items ()
|
||||||
AudioStreamView* asv = audio_view();
|
AudioStreamView* asv = audio_view();
|
||||||
if (asv) {
|
if (asv) {
|
||||||
ignore_toggle = true;
|
ignore_toggle = true;
|
||||||
if (asv->get_waveform_shape() == Rectified)
|
if (asv->get_waveform_shape() == Rectified && rectified_item) {
|
||||||
rectified_item->set_active(true);
|
rectified_item->set_active(true);
|
||||||
else traditional_item->set_active(true);
|
} else {
|
||||||
|
traditional_item->set_active(true);
|
||||||
|
}
|
||||||
|
|
||||||
if (asv->get_waveform_scale() == LogWaveform)
|
if (asv->get_waveform_scale() == LogWaveform)
|
||||||
logscale_item->set_active(true);
|
logscale_item->set_active(true);
|
||||||
|
|
|
||||||
|
|
@ -318,6 +318,7 @@ Editor::Editor ()
|
||||||
_dragging_playhead = false;
|
_dragging_playhead = false;
|
||||||
_dragging_edit_point = false;
|
_dragging_edit_point = false;
|
||||||
_dragging_hscrollbar = false;
|
_dragging_hscrollbar = false;
|
||||||
|
select_new_marker = false;
|
||||||
|
|
||||||
scrubbing_direction = 0;
|
scrubbing_direction = 0;
|
||||||
|
|
||||||
|
|
@ -489,7 +490,7 @@ Editor::Editor ()
|
||||||
CellRendererToggle* route_list_visible_cell = dynamic_cast<CellRendererToggle*>(route_list_display.get_column_cell_renderer (0));
|
CellRendererToggle* route_list_visible_cell = dynamic_cast<CellRendererToggle*>(route_list_display.get_column_cell_renderer (0));
|
||||||
route_list_visible_cell->property_activatable() = true;
|
route_list_visible_cell->property_activatable() = true;
|
||||||
route_list_visible_cell->property_radio() = false;
|
route_list_visible_cell->property_radio() = false;
|
||||||
|
|
||||||
route_display_model->signal_row_deleted().connect (mem_fun (*this, &Editor::route_list_delete));
|
route_display_model->signal_row_deleted().connect (mem_fun (*this, &Editor::route_list_delete));
|
||||||
route_display_model->signal_row_changed().connect (mem_fun (*this, &Editor::route_list_change));
|
route_display_model->signal_row_changed().connect (mem_fun (*this, &Editor::route_list_change));
|
||||||
route_display_model->signal_rows_reordered().connect (mem_fun (*this, &Editor::track_list_reorder));
|
route_display_model->signal_rows_reordered().connect (mem_fun (*this, &Editor::track_list_reorder));
|
||||||
|
|
@ -579,6 +580,10 @@ Editor::Editor ()
|
||||||
region_list_display.append_column (_("Regions"), region_list_columns.name);
|
region_list_display.append_column (_("Regions"), region_list_columns.name);
|
||||||
region_list_display.set_headers_visible (false);
|
region_list_display.set_headers_visible (false);
|
||||||
|
|
||||||
|
CellRendererText* region_name_cell = dynamic_cast<CellRendererText*>(region_list_display.get_column_cell_renderer (0));
|
||||||
|
region_name_cell->property_editable() = true;
|
||||||
|
region_name_cell->signal_edited().connect (mem_fun (*this, &Editor::region_name_edit));
|
||||||
|
|
||||||
region_list_display.get_selection()->set_select_function (mem_fun (*this, &Editor::region_list_selection_filter));
|
region_list_display.get_selection()->set_select_function (mem_fun (*this, &Editor::region_list_selection_filter));
|
||||||
|
|
||||||
TreeViewColumn* tv_col = region_list_display.get_column(0);
|
TreeViewColumn* tv_col = region_list_display.get_column(0);
|
||||||
|
|
@ -4226,3 +4231,37 @@ Editor::get_regions_for_action ()
|
||||||
tmp_regions = get_regions_at (where, selection->tracks);
|
tmp_regions = get_regions_at (where, selection->tracks);
|
||||||
return tmp_regions;
|
return tmp_regions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Editor::get_regions_corresponding_to (boost::shared_ptr<Region> region, vector<RegionView*>& regions)
|
||||||
|
{
|
||||||
|
|
||||||
|
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) {
|
||||||
|
|
||||||
|
RouteTimeAxisView* tatv;
|
||||||
|
|
||||||
|
if ((tatv = dynamic_cast<RouteTimeAxisView*> (*i)) != 0) {
|
||||||
|
|
||||||
|
boost::shared_ptr<Playlist> pl;
|
||||||
|
vector<boost::shared_ptr<Region> > results;
|
||||||
|
RegionView* marv;
|
||||||
|
boost::shared_ptr<Diskstream> ds;
|
||||||
|
|
||||||
|
if ((ds = tatv->get_diskstream()) == 0) {
|
||||||
|
/* bus */
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((pl = (ds->playlist())) != 0) {
|
||||||
|
pl->get_region_list_equivalent_regions (region, results);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (vector<boost::shared_ptr<Region> >::iterator ir = results.begin(); ir != results.end(); ++ir) {
|
||||||
|
if ((marv = tatv->view()->find_view (*ir)) != 0) {
|
||||||
|
regions.push_back (marv);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -763,13 +763,15 @@ class Editor : public PublicEditor
|
||||||
|
|
||||||
RegionListDisplayModelColumns region_list_columns;
|
RegionListDisplayModelColumns region_list_columns;
|
||||||
Gtkmm2ext::DnDTreeView<boost::shared_ptr<ARDOUR::Region> > region_list_display;
|
Gtkmm2ext::DnDTreeView<boost::shared_ptr<ARDOUR::Region> > region_list_display;
|
||||||
|
|
||||||
Glib::RefPtr<Gtk::TreeStore> region_list_model;
|
Glib::RefPtr<Gtk::TreeStore> region_list_model;
|
||||||
Glib::RefPtr<Gtk::ToggleAction> toggle_full_region_list_action;
|
Glib::RefPtr<Gtk::ToggleAction> toggle_full_region_list_action;
|
||||||
Glib::RefPtr<Gtk::ToggleAction> toggle_show_auto_regions_action;
|
Glib::RefPtr<Gtk::ToggleAction> toggle_show_auto_regions_action;
|
||||||
|
|
||||||
void region_list_selection_changed ();
|
void region_list_selection_changed ();
|
||||||
bool region_list_selection_filter (const Glib::RefPtr<Gtk::TreeModel>& model, const Gtk::TreeModel::Path& path, bool yn);
|
bool region_list_selection_filter (const Glib::RefPtr<Gtk::TreeModel>& model, const Gtk::TreeModel::Path& path, bool yn);
|
||||||
|
void region_name_edit (const Glib::ustring&, const Glib::ustring&);
|
||||||
|
void get_regions_corresponding_to (boost::shared_ptr<ARDOUR::Region> region, std::vector<RegionView*>& regions);
|
||||||
|
|
||||||
Gtk::Menu *region_list_menu;
|
Gtk::Menu *region_list_menu;
|
||||||
Gtk::ScrolledWindow region_list_scroller;
|
Gtk::ScrolledWindow region_list_scroller;
|
||||||
|
|
@ -1096,6 +1098,7 @@ class Editor : public PublicEditor
|
||||||
void set_punch_range (nframes_t start, nframes_t end, std::string cmd);
|
void set_punch_range (nframes_t start, nframes_t end, std::string cmd);
|
||||||
|
|
||||||
void add_location_from_playhead_cursor ();
|
void add_location_from_playhead_cursor ();
|
||||||
|
bool select_new_marker;
|
||||||
|
|
||||||
void reverse_selection ();
|
void reverse_selection ();
|
||||||
void edit_envelope ();
|
void edit_envelope ();
|
||||||
|
|
@ -1969,6 +1972,8 @@ class Editor : public PublicEditor
|
||||||
void fast_update_strips ();
|
void fast_update_strips ();
|
||||||
bool meters_running;
|
bool meters_running;
|
||||||
|
|
||||||
|
void select_next_route ();
|
||||||
|
void select_prev_route ();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* __ardour_editor_h__ */
|
#endif /* __ardour_editor_h__ */
|
||||||
|
|
|
||||||
|
|
@ -149,6 +149,12 @@ Editor::register_actions ()
|
||||||
ActionManager::session_sensitive_actions.push_back (act);
|
ActionManager::session_sensitive_actions.push_back (act);
|
||||||
act = ActionManager::register_action (editor_actions, "select-all-in-loop-range", _("Select All in Loop Range"), mem_fun(*this, &Editor::select_all_selectables_using_loop));
|
act = ActionManager::register_action (editor_actions, "select-all-in-loop-range", _("Select All in Loop Range"), mem_fun(*this, &Editor::select_all_selectables_using_loop));
|
||||||
ActionManager::session_sensitive_actions.push_back (act);
|
ActionManager::session_sensitive_actions.push_back (act);
|
||||||
|
|
||||||
|
act = ActionManager::register_action (editor_actions, "select-next-route", _("Select Next Track/Bus"), mem_fun(*this, &Editor::select_next_route));
|
||||||
|
ActionManager::session_sensitive_actions.push_back (act);
|
||||||
|
act = ActionManager::register_action (editor_actions, "select-prev-route", _("Select Previous Track/Bus"), mem_fun(*this, &Editor::select_prev_route));
|
||||||
|
ActionManager::session_sensitive_actions.push_back (act);
|
||||||
|
|
||||||
|
|
||||||
act = ActionManager::register_action (editor_actions, "goto-mark-1", _("Locate to Mark 1"), bind (mem_fun (*this, &Editor::goto_nth_marker), 0));
|
act = ActionManager::register_action (editor_actions, "goto-mark-1", _("Locate to Mark 1"), bind (mem_fun (*this, &Editor::goto_nth_marker), 0));
|
||||||
ActionManager::session_sensitive_actions.push_back (act);
|
ActionManager::session_sensitive_actions.push_back (act);
|
||||||
|
|
|
||||||
|
|
@ -135,6 +135,11 @@ Editor::add_new_location (Location *location)
|
||||||
newpair.second = lam;
|
newpair.second = lam;
|
||||||
|
|
||||||
location_markers.insert (newpair);
|
location_markers.insert (newpair);
|
||||||
|
|
||||||
|
if (select_new_marker && location->is_mark()) {
|
||||||
|
selection->set (lam->start);
|
||||||
|
select_new_marker = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
||||||
|
|
@ -1508,6 +1508,8 @@ Editor::add_location_from_playhead_cursor ()
|
||||||
|
|
||||||
nframes_t where = session->audible_frame();
|
nframes_t where = session->audible_frame();
|
||||||
|
|
||||||
|
select_new_marker = true;
|
||||||
|
|
||||||
session->locations()->next_available_name(markername,"mark");
|
session->locations()->next_available_name(markername,"mark");
|
||||||
Location *location = new Location (where, where, markername, Location::IsMark);
|
Location *location = new Location (where, where, markername, Location::IsMark);
|
||||||
session->begin_reversible_command (_("add marker"));
|
session->begin_reversible_command (_("add marker"));
|
||||||
|
|
@ -4192,3 +4194,56 @@ Editor::trim_region (bool front)
|
||||||
}
|
}
|
||||||
commit_reversible_command ();
|
commit_reversible_command ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct EditorOrderRouteSorter {
|
||||||
|
bool operator() (boost::shared_ptr<Route> a, boost::shared_ptr<Route> b) {
|
||||||
|
/* use of ">" forces the correct sort order */
|
||||||
|
return a->order_key ("editor") < b->order_key ("editor");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
void
|
||||||
|
Editor::select_next_route()
|
||||||
|
{
|
||||||
|
if (selection->tracks.empty()) {
|
||||||
|
selection->set (track_views.front());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
TimeAxisView* current = selection->tracks.front();
|
||||||
|
|
||||||
|
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) {
|
||||||
|
if (*i == current) {
|
||||||
|
++i;
|
||||||
|
if (i != track_views.end()) {
|
||||||
|
selection->set (*i);
|
||||||
|
} else {
|
||||||
|
selection->set (*(track_views.begin()));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Editor::select_prev_route()
|
||||||
|
{
|
||||||
|
if (selection->tracks.empty()) {
|
||||||
|
selection->set (track_views.front());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
TimeAxisView* current = selection->tracks.front();
|
||||||
|
|
||||||
|
for (TrackViewList::reverse_iterator i = track_views.rbegin(); i != track_views.rend(); ++i) {
|
||||||
|
if (*i == current) {
|
||||||
|
++i;
|
||||||
|
if (i != track_views.rend()) {
|
||||||
|
selection->set (*i);
|
||||||
|
} else {
|
||||||
|
selection->set (*(track_views.rbegin()));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@
|
||||||
#include "ardour_ui.h"
|
#include "ardour_ui.h"
|
||||||
#include "gui_thread.h"
|
#include "gui_thread.h"
|
||||||
#include "actions.h"
|
#include "actions.h"
|
||||||
|
#include "region_view.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
|
||||||
#include "i18n.h"
|
#include "i18n.h"
|
||||||
|
|
@ -632,3 +633,30 @@ Editor::region_list_selection_filter (const RefPtr<TreeModel>& model, const Tree
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Editor::region_name_edit (const Glib::ustring& path, const Glib::ustring& new_text)
|
||||||
|
{
|
||||||
|
boost::shared_ptr<Region> region;
|
||||||
|
TreeIter iter;
|
||||||
|
|
||||||
|
if ((iter = region_list_model->get_iter (path))) {
|
||||||
|
region = (*iter)[region_list_columns.region];
|
||||||
|
(*iter)[region_list_columns.name] = new_text;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* now mapover everything */
|
||||||
|
|
||||||
|
if (region) {
|
||||||
|
vector<RegionView*> equivalents;
|
||||||
|
get_regions_corresponding_to (region, equivalents);
|
||||||
|
|
||||||
|
for (vector<RegionView*>::iterator i = equivalents.begin(); i != equivalents.end(); ++i) {
|
||||||
|
if (new_text != (*i)->region()->name()) {
|
||||||
|
(*i)->region()->set_name (new_text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -558,40 +558,18 @@ Editor::set_selected_regionview_from_click (bool press, Selection::Operation op,
|
||||||
return commit;
|
return commit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
Editor::set_selected_regionview_from_region_list (boost::shared_ptr<Region> region, Selection::Operation op)
|
Editor::set_selected_regionview_from_region_list (boost::shared_ptr<Region> region, Selection::Operation op)
|
||||||
{
|
{
|
||||||
vector<RegionView*> all_equivalent_regions;
|
vector<RegionView*> all_equivalent_regions;
|
||||||
|
|
||||||
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) {
|
get_regions_corresponding_to (region, all_equivalent_regions);
|
||||||
|
|
||||||
RouteTimeAxisView* tatv;
|
if (all_equivalent_regions.empty()) {
|
||||||
|
return;
|
||||||
if ((tatv = dynamic_cast<RouteTimeAxisView*> (*i)) != 0) {
|
|
||||||
|
|
||||||
boost::shared_ptr<Playlist> pl;
|
|
||||||
vector<boost::shared_ptr<Region> > results;
|
|
||||||
RegionView* marv;
|
|
||||||
boost::shared_ptr<Diskstream> ds;
|
|
||||||
|
|
||||||
if ((ds = tatv->get_diskstream()) == 0) {
|
|
||||||
/* bus */
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((pl = (ds->playlist())) != 0) {
|
|
||||||
pl->get_region_list_equivalent_regions (region, results);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (vector<boost::shared_ptr<Region> >::iterator ir = results.begin(); ir != results.end(); ++ir) {
|
|
||||||
if ((marv = tatv->view()->find_view (*ir)) != 0) {
|
|
||||||
all_equivalent_regions.push_back (marv);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (op) {
|
switch (op) {
|
||||||
case Selection::Toggle:
|
case Selection::Toggle:
|
||||||
/* XXX this is not correct */
|
/* XXX this is not correct */
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@
|
||||||
#include <ardour/audioengine.h>
|
#include <ardour/audioengine.h>
|
||||||
#include <ardour/gdither.h>
|
#include <ardour/gdither.h>
|
||||||
#include <ardour/utils.h>
|
#include <ardour/utils.h>
|
||||||
|
#include <ardour/profile.h>
|
||||||
|
|
||||||
#include "export_dialog.h"
|
#include "export_dialog.h"
|
||||||
#include "ardour_ui.h"
|
#include "ardour_ui.h"
|
||||||
|
|
@ -318,30 +319,52 @@ ExportDialog::ExportDialog(PublicEditor& e)
|
||||||
format_table.set_col_spacings (5);
|
format_table.set_col_spacings (5);
|
||||||
format_table.set_row_spacings (5);
|
format_table.set_row_spacings (5);
|
||||||
|
|
||||||
format_table.attach (channel_count_label, 0, 1, 0, 1);
|
int row = 0;
|
||||||
format_table.attach (channel_count_combo, 1, 2, 0, 1);
|
|
||||||
|
format_table.attach (channel_count_label, 0, 1, row, row+1);
|
||||||
|
format_table.attach (channel_count_combo, 1, 2, row, row+1);
|
||||||
|
|
||||||
|
row++;
|
||||||
|
|
||||||
format_table.attach (header_format_label, 0, 1, 1, 2);
|
format_table.attach (header_format_label, 0, 1, row, row+1);
|
||||||
format_table.attach (header_format_combo, 1, 2, 1, 2);
|
format_table.attach (header_format_combo, 1, 2, row, row+1);
|
||||||
|
|
||||||
format_table.attach (bitdepth_format_label, 0, 1, 2, 3);
|
row++;
|
||||||
format_table.attach (bitdepth_format_combo, 1, 2, 2, 3);
|
|
||||||
|
|
||||||
format_table.attach (endian_format_label, 0, 1, 3, 4);
|
format_table.attach (bitdepth_format_label, 0, 1, row, row+1);
|
||||||
format_table.attach (endian_format_combo, 1, 2, 3, 4);
|
format_table.attach (bitdepth_format_combo, 1, 2, row, row+1);
|
||||||
|
|
||||||
format_table.attach (sample_rate_label, 0, 1, 4, 5);
|
row++;
|
||||||
format_table.attach (sample_rate_combo, 1, 2, 4, 5);
|
|
||||||
|
|
||||||
format_table.attach (src_quality_label, 0, 1, 5, 6);
|
if (!Profile->get_sae()) {
|
||||||
format_table.attach (src_quality_combo, 1, 2, 5, 6);
|
format_table.attach (endian_format_label, 0, 1, row, row+1);
|
||||||
|
format_table.attach (endian_format_combo, 1, 2, row, row+1);
|
||||||
|
row++;
|
||||||
|
}
|
||||||
|
|
||||||
format_table.attach (dither_type_label, 0, 1, 6, 7);
|
format_table.attach (sample_rate_label, 0, 1, row, row+1);
|
||||||
format_table.attach (dither_type_combo, 1, 2, 6, 7);
|
format_table.attach (sample_rate_combo, 1, 2, row, row+1);
|
||||||
|
|
||||||
format_table.attach (cue_file_label, 0, 1, 7, 8);
|
row++;
|
||||||
format_table.attach (cue_file_combo, 1, 2, 7, 8);
|
|
||||||
format_table.attach (cuefile_only_checkbox, 0, 2, 8, 9);
|
if (!Profile->get_sae()) {
|
||||||
|
format_table.attach (src_quality_label, 0, 1, row, row+1);
|
||||||
|
format_table.attach (src_quality_combo, 1, 2, row, row+1);
|
||||||
|
row++;
|
||||||
|
}
|
||||||
|
|
||||||
|
format_table.attach (dither_type_label, 0, 1, row, row+1);
|
||||||
|
format_table.attach (dither_type_combo, 1, 2, row, row+1);
|
||||||
|
|
||||||
|
row++;
|
||||||
|
|
||||||
|
if (!Profile->get_sae()) {
|
||||||
|
format_table.attach (cue_file_label, 0, 1, row, row+1);
|
||||||
|
format_table.attach (cue_file_combo, 1, 2, row, row+1);
|
||||||
|
row++;
|
||||||
|
|
||||||
|
format_table.attach (cuefile_only_checkbox, 0, 2, row, row+1);
|
||||||
|
}
|
||||||
|
|
||||||
file_entry.set_name ("ExportFileDisplay");
|
file_entry.set_name ("ExportFileDisplay");
|
||||||
|
|
||||||
|
|
@ -918,7 +941,7 @@ ExportDialog::do_export ()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (export_cd_markers_allowed) {
|
if (!Profile->get_sae() && export_cd_markers_allowed) {
|
||||||
if (cue_file_combo.get_active_text () != _("None")) {
|
if (cue_file_combo.get_active_text () != _("None")) {
|
||||||
do_export_cd_markers (file_entry.get_text(), cue_file_combo.get_active_text ());
|
do_export_cd_markers (file_entry.get_text(), cue_file_combo.get_active_text ());
|
||||||
}
|
}
|
||||||
|
|
@ -1212,10 +1235,12 @@ ExportDialog::initSpec(string &filepath)
|
||||||
spec.format = 0;
|
spec.format = 0;
|
||||||
|
|
||||||
spec.format |= sndfile_header_format_from_string (header_format_combo.get_active_text ());
|
spec.format |= sndfile_header_format_from_string (header_format_combo.get_active_text ());
|
||||||
|
|
||||||
if ((spec.format & SF_FORMAT_WAV) == 0) {
|
if (!Profile->get_sae()) {
|
||||||
/* RIFF/WAV specifies endianess */
|
if ((spec.format & SF_FORMAT_WAV) == 0) {
|
||||||
spec.format |= sndfile_endian_format_from_string (endian_format_combo.get_active_text ());
|
/* RIFF/WAV specifies endianess */
|
||||||
|
spec.format |= sndfile_endian_format_from_string (endian_format_combo.get_active_text ());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
spec.format |= sndfile_bitdepth_format_from_string (bitdepth_format_combo.get_active_text ());
|
spec.format |= sndfile_bitdepth_format_from_string (bitdepth_format_combo.get_active_text ());
|
||||||
|
|
@ -1237,17 +1262,21 @@ ExportDialog::initSpec(string &filepath)
|
||||||
spec.sample_rate = session->frame_rate();
|
spec.sample_rate = session->frame_rate();
|
||||||
}
|
}
|
||||||
|
|
||||||
string src_str = src_quality_combo.get_active_text();
|
if (Profile->get_sae()) {
|
||||||
if (src_str == _("fastest")) {
|
|
||||||
spec.src_quality = SRC_ZERO_ORDER_HOLD;
|
|
||||||
} else if (src_str == _("linear")) {
|
|
||||||
spec.src_quality = SRC_LINEAR;
|
|
||||||
} else if (src_str == _("better")) {
|
|
||||||
spec.src_quality = SRC_SINC_FASTEST;
|
|
||||||
} else if (src_str == _("intermediate")) {
|
|
||||||
spec.src_quality = SRC_SINC_MEDIUM_QUALITY;
|
|
||||||
} else {
|
|
||||||
spec.src_quality = SRC_SINC_BEST_QUALITY;
|
spec.src_quality = SRC_SINC_BEST_QUALITY;
|
||||||
|
} else {
|
||||||
|
string src_str = src_quality_combo.get_active_text();
|
||||||
|
if (src_str == _("fastest")) {
|
||||||
|
spec.src_quality = SRC_ZERO_ORDER_HOLD;
|
||||||
|
} else if (src_str == _("linear")) {
|
||||||
|
spec.src_quality = SRC_LINEAR;
|
||||||
|
} else if (src_str == _("better")) {
|
||||||
|
spec.src_quality = SRC_SINC_FASTEST;
|
||||||
|
} else if (src_str == _("intermediate")) {
|
||||||
|
spec.src_quality = SRC_SINC_MEDIUM_QUALITY;
|
||||||
|
} else {
|
||||||
|
spec.src_quality = SRC_SINC_BEST_QUALITY;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
string dither_str = dither_type_combo.get_active_text();
|
string dither_str = dither_type_combo.get_active_text();
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,7 @@
|
||||||
#include <ardour/panner.h>
|
#include <ardour/panner.h>
|
||||||
#include <ardour/send.h>
|
#include <ardour/send.h>
|
||||||
#include <ardour/insert.h>
|
#include <ardour/insert.h>
|
||||||
|
#include <ardour/profile.h>
|
||||||
#include <ardour/ladspa_plugin.h>
|
#include <ardour/ladspa_plugin.h>
|
||||||
#include <ardour/connection.h>
|
#include <ardour/connection.h>
|
||||||
#include <ardour/session_connection.h>
|
#include <ardour/session_connection.h>
|
||||||
|
|
@ -992,7 +993,9 @@ MixerStrip::build_route_ops_menu ()
|
||||||
build_remote_control_menu ();
|
build_remote_control_menu ();
|
||||||
|
|
||||||
items.push_back (SeparatorElem());
|
items.push_back (SeparatorElem());
|
||||||
items.push_back (MenuElem (_("Remote Control ID"), *remote_control_menu));
|
if (!Profile->get_sae()) {
|
||||||
|
items.push_back (MenuElem (_("Remote Control ID"), *remote_control_menu));
|
||||||
|
}
|
||||||
|
|
||||||
items.push_back (SeparatorElem());
|
items.push_back (SeparatorElem());
|
||||||
items.push_back (MenuElem (_("Remove"), mem_fun(*this, &RouteUI::remove_this_route)));
|
items.push_back (MenuElem (_("Remove"), mem_fun(*this, &RouteUI::remove_this_route)));
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,7 @@
|
||||||
#include <ardour/session.h>
|
#include <ardour/session.h>
|
||||||
#include <ardour/session_playlist.h>
|
#include <ardour/session_playlist.h>
|
||||||
#include <ardour/utils.h>
|
#include <ardour/utils.h>
|
||||||
|
#include <ardour/profile.h>
|
||||||
|
|
||||||
#include "ardour_ui.h"
|
#include "ardour_ui.h"
|
||||||
#include "route_time_axis.h"
|
#include "route_time_axis.h"
|
||||||
|
|
@ -416,7 +417,9 @@ RouteTimeAxisView::build_display_menu ()
|
||||||
items.push_back (SeparatorElem());
|
items.push_back (SeparatorElem());
|
||||||
|
|
||||||
build_remote_control_menu ();
|
build_remote_control_menu ();
|
||||||
items.push_back (MenuElem (_("Remote Control ID"), *remote_control_menu));
|
if (!Profile->get_sae()) {
|
||||||
|
items.push_back (MenuElem (_("Remote Control ID"), *remote_control_menu));
|
||||||
|
}
|
||||||
|
|
||||||
build_automation_action_menu ();
|
build_automation_action_menu ();
|
||||||
items.push_back (MenuElem (_("Automation"), *automation_action_menu));
|
items.push_back (MenuElem (_("Automation"), *automation_action_menu));
|
||||||
|
|
@ -446,10 +449,10 @@ RouteTimeAxisView::build_display_menu ()
|
||||||
if (get_diskstream()->alignment_style() == CaptureTime)
|
if (get_diskstream()->alignment_style() == CaptureTime)
|
||||||
align_capture_item->set_active();
|
align_capture_item->set_active();
|
||||||
|
|
||||||
items.push_back (MenuElem (_("Alignment"), *alignment_menu));
|
if (!Profile->get_sae()) {
|
||||||
|
items.push_back (MenuElem (_("Alignment"), *alignment_menu));
|
||||||
get_diskstream()->AlignmentStyleChanged.connect (
|
get_diskstream()->AlignmentStyleChanged.connect (mem_fun(*this, &RouteTimeAxisView::align_style_changed));
|
||||||
mem_fun(*this, &RouteTimeAxisView::align_style_changed));
|
}
|
||||||
|
|
||||||
RadioMenuItem::Group mode_group;
|
RadioMenuItem::Group mode_group;
|
||||||
items.push_back (RadioMenuElem (mode_group, _("Normal mode"),
|
items.push_back (RadioMenuElem (mode_group, _("Normal mode"),
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ using std::string;
|
||||||
// Use this define when initializing arrarys for use in sndfile_*_format()
|
// Use this define when initializing arrarys for use in sndfile_*_format()
|
||||||
#define SNDFILE_STR_LENGTH 32
|
#define SNDFILE_STR_LENGTH 32
|
||||||
|
|
||||||
#define SNDFILE_HEADER_FORMATS 7
|
#define SNDFILE_HEADER_FORMATS 5
|
||||||
extern const char * const sndfile_header_formats_strings[SNDFILE_HEADER_FORMATS+1];
|
extern const char * const sndfile_header_formats_strings[SNDFILE_HEADER_FORMATS+1];
|
||||||
extern const char * const sndfile_file_endings_strings[SNDFILE_HEADER_FORMATS+1];
|
extern const char * const sndfile_file_endings_strings[SNDFILE_HEADER_FORMATS+1];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -149,8 +149,19 @@ Auditioner::audition_region (boost::shared_ptr<Region> region)
|
||||||
_panner->reset (n_outputs(), _diskstream->n_channels());
|
_panner->reset (n_outputs(), _diskstream->n_channels());
|
||||||
|
|
||||||
length = the_region->length();
|
length = the_region->length();
|
||||||
_diskstream->seek (0);
|
|
||||||
current_frame = 0;
|
int dir;
|
||||||
|
nframes_t offset = the_region->sync_offset (dir);
|
||||||
|
|
||||||
|
/* can't audition from a negative sync point */
|
||||||
|
|
||||||
|
if (dir < 0) {
|
||||||
|
offset = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
_diskstream->seek (offset);
|
||||||
|
current_frame = offset;
|
||||||
|
|
||||||
g_atomic_int_set (&_active, 1);
|
g_atomic_int_set (&_active, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -33,33 +33,27 @@ using namespace std;
|
||||||
const char * const sndfile_header_formats_strings[SNDFILE_HEADER_FORMATS+1] = {
|
const char * const sndfile_header_formats_strings[SNDFILE_HEADER_FORMATS+1] = {
|
||||||
N_("WAV"),
|
N_("WAV"),
|
||||||
N_("AIFF"),
|
N_("AIFF"),
|
||||||
N_("raw (no header)"),
|
N_("CAF"),
|
||||||
N_("PAF (Ensoniq Paris)"),
|
|
||||||
N_("AU (Sun/NeXT)"),
|
|
||||||
N_("IRCAM"),
|
|
||||||
N_("W64 (64 bit WAV)"),
|
N_("W64 (64 bit WAV)"),
|
||||||
|
N_("raw (no header)"),
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
|
|
||||||
const char* const sndfile_file_endings_strings[SNDFILE_HEADER_FORMATS+1] = {
|
const char* const sndfile_file_endings_strings[SNDFILE_HEADER_FORMATS+1] = {
|
||||||
N_(".wav"),
|
N_(".wav"),
|
||||||
N_(".aiff"),
|
N_(".aiff"),
|
||||||
N_(".raw"),
|
N_(".caf"),
|
||||||
N_(".paf"),
|
|
||||||
N_(".au"),
|
|
||||||
N_(".ircam"),
|
|
||||||
N_(".w64"),
|
N_(".w64"),
|
||||||
|
N_(".raw"),
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
|
|
||||||
int sndfile_header_formats[SNDFILE_HEADER_FORMATS] = {
|
int sndfile_header_formats[SNDFILE_HEADER_FORMATS] = {
|
||||||
SF_FORMAT_WAV,
|
SF_FORMAT_WAV,
|
||||||
SF_FORMAT_AIFF,
|
SF_FORMAT_AIFF,
|
||||||
SF_FORMAT_RAW,
|
SF_FORMAT_CAF,
|
||||||
SF_FORMAT_PAF,
|
SF_FORMAT_W64,
|
||||||
SF_FORMAT_AU,
|
SF_FORMAT_RAW
|
||||||
SF_FORMAT_IRCAM,
|
|
||||||
SF_FORMAT_W64
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const char * const sndfile_bitdepth_formats_strings[SNDFILE_BITDEPTH_FORMATS+1] = {
|
const char * const sndfile_bitdepth_formats_strings[SNDFILE_BITDEPTH_FORMATS+1] = {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue