summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2008-01-09 18:26:47 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2008-01-09 18:26:47 +0000
commit9c88023faf6d63806fa747eda541294f22a1e5f3 (patch)
tree0e7891587cf986aa9c2b4bd0de6587982a1c4c32
parentb007f7fe621e8390b41df5a725fbb697d3d69fb9 (diff)
make separate work with/without selected tracks; make align-regions-*-relative work correctly; make waveform muted color show correctly
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2855 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--gtk2_ardour/audio_region_view.cc14
-rw-r--r--gtk2_ardour/editor.cc9
-rw-r--r--gtk2_ardour/editor.h2
-rw-r--r--gtk2_ardour/editor_canvas_events.cc3
-rw-r--r--gtk2_ardour/editor_ops.cc80
-rw-r--r--gtk2_ardour/editor_selection.cc68
-rw-r--r--gtk2_ardour/new_session_dialog.cc8
-rw-r--r--gtk2_ardour/redirect_box.cc4
-rw-r--r--gtk2_ardour/tempo_dialog.h2
-rw-r--r--libs/ardour/audioregion.cc2
-rw-r--r--libs/ardour/session_butler.cc3
-rw-r--r--libs/gtkmm2ext/fastmeter.cc2
-rw-r--r--libs/rubberband/src/Resampler.cpp3
-rw-r--r--libs/rubberband/src/StretcherProcess.cpp2
-rw-r--r--svn_revision.h2
15 files changed, 160 insertions, 44 deletions
diff --git a/gtk2_ardour/audio_region_view.cc b/gtk2_ardour/audio_region_view.cc
index 10fdba8974..a818fc0407 100644
--- a/gtk2_ardour/audio_region_view.cc
+++ b/gtk2_ardour/audio_region_view.cc
@@ -51,7 +51,7 @@
#include "i18n.h"
-#define MUTED_ALPHA 0x50
+#define MUTED_ALPHA 10
using namespace sigc;
using namespace ARDOUR;
@@ -1185,14 +1185,22 @@ AudioRegionView::set_frame_color ()
UINT_TO_RGBA(ARDOUR_UI::config()->canvasvar_FrameBase.get(), &r, &g, &b, &a);
for (vector<ArdourCanvas::WaveView*>::iterator w = waves.begin(); w != waves.end(); ++w) {
- (*w)->property_wave_color() = RGBA_TO_UINT(r, g, b, fill_opacity ? fill_opacity : a);// Lets still use the theme's opacity value if Opaque is not set
+ if (_region->muted()) {
+ (*w)->property_wave_color() = RGBA_TO_UINT(r, g, b, MUTED_ALPHA);
+ } else {
+ (*w)->property_wave_color() = RGBA_TO_UINT(r, g, b, fill_opacity ? fill_opacity : a);// Lets still use the theme's opacity value if Opaque is not set
+ }
}
} else {
UINT_TO_RGBA(ARDOUR_UI::config()->canvasvar_FrameBase.get(), &r, &g, &b, &a);
frame->property_fill_color_rgba() = RGBA_TO_UINT(r, g, b, fill_opacity ? fill_opacity : a);
for (vector<ArdourCanvas::WaveView*>::iterator w = waves.begin(); w != waves.end(); ++w) {
- (*w)->property_wave_color() = ARDOUR_UI::config()->canvasvar_WaveForm.get();
+ if (_region->muted()) {
+ (*w)->property_wave_color() = UINT_RGBA_CHANGE_A(ARDOUR_UI::config()->canvasvar_WaveForm.get(), MUTED_ALPHA);
+ } else {
+ (*w)->property_wave_color() = ARDOUR_UI::config()->canvasvar_WaveForm.get();
+ }
}
}
}
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index 8beb3d77bc..6ef9e2863a 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -4114,10 +4114,15 @@ struct EditorOrderTimeAxisSorter {
};
void
-Editor::sort_track_selection ()
+Editor::sort_track_selection (TrackSelection* sel)
{
EditorOrderTimeAxisSorter cmp;
- selection->tracks.sort (cmp);
+
+ if (sel) {
+ sel->sort (cmp);
+ } else {
+ selection->tracks.sort (cmp);
+ }
}
nframes64_t
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h
index 3f772f5ff0..599b7d5815 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -461,7 +461,7 @@ class Editor : public PublicEditor
CrossfadeView* clicked_crossfadeview;
ControlPoint* clicked_control_point;
- void sort_track_selection ();
+ void sort_track_selection (TrackSelection* sel = 0);
void get_relevant_audio_tracks (std::set<AudioTimeAxisView*>& relevant_tracks);
void get_equivalent_regions (RegionView* rv, std::vector<RegionView*>&);
diff --git a/gtk2_ardour/editor_canvas_events.cc b/gtk2_ardour/editor_canvas_events.cc
index e5ef336fd0..fc0a52a042 100644
--- a/gtk2_ardour/editor_canvas_events.cc
+++ b/gtk2_ardour/editor_canvas_events.cc
@@ -169,12 +169,9 @@ Editor::track_canvas_scroll_event (GdkEventScroll *event)
bool
Editor::time_canvas_scroll (GdkEventScroll* ev)
{
- int x, y;
- double wx, wy;
nframes_t xdelta;
int direction = ev->direction;
- retry:
switch (direction) {
case GDK_SCROLL_UP:
temporal_zoom_step (true);
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index faf1ff41db..59e3e39cdd 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -2574,10 +2574,34 @@ Editor::separate_regions_between (const TimeSelection& ts)
bool in_command = false;
boost::shared_ptr<Playlist> playlist;
RegionSelection new_selection;
+ TrackSelection tmptracks;
+
+ if (selection->tracks.empty()) {
- sort_track_selection ();
+ /* use tracks with selected regions */
- for (TrackSelection::iterator i = selection->tracks.begin(); i != selection->tracks.end(); ++i) {
+ for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) {
+ TimeAxisView* tv = &(*i)->get_time_axis_view();
+
+ if (find (tmptracks.begin(), tmptracks.end(), tv) == tmptracks.end()) {
+ tmptracks.push_back (tv);
+ }
+ }
+
+ if (tmptracks.empty()) {
+ /* no regions selected: use all tracks */
+ tmptracks = track_views;
+ }
+
+ } else {
+
+ tmptracks = selection->tracks;
+
+ }
+
+ sort_track_selection (&tmptracks);
+
+ for (TrackSelection::iterator i = tmptracks.begin(); i != tmptracks.end(); ++i) {
AudioTimeAxisView* atv;
@@ -3003,29 +3027,59 @@ Editor::align_selection_relative (RegionPoint point, nframes_t position, const R
switch (point) {
case Start:
- pos = r->first_frame ();
+ pos = position;
+ if (position > r->position()) {
+ distance = position - r->position();
+ dir = 1;
+ } else {
+ distance = r->position() - position;
+ dir = -1;
+ }
break;
-
+
case End:
- pos = r->last_frame();
+ if (position > r->last_frame()) {
+ distance = position - r->last_frame();
+ pos = r->position() + distance;
+ dir = 1;
+ } else {
+ distance = r->last_frame() - position;
+ pos = r->position() - distance;
+ dir = -1;
+ }
break;
case SyncPoint:
- pos = r->adjust_to_sync (r->first_frame());
+ pos = r->adjust_to_sync (position);
+ if (pos > r->position()) {
+ distance = pos - r->position();
+ dir = 1;
+ } else {
+ distance = r->position() - pos;
+ dir = -1;
+ }
break;
}
- if (pos > position) {
- distance = pos - position;
- dir = -1;
- } else {
- distance = position - pos;
- dir = 1;
+ if (pos == r->position()) {
+ return;
}
begin_reversible_command (_("align selection (relative)"));
- for (RegionSelection::const_iterator i = rs.begin(); i != rs.end(); ++i) {
+ /* move first one specially */
+
+ XMLNode &before = r->playlist()->get_state();
+ r->set_position (pos, this);
+ XMLNode &after = r->playlist()->get_state();
+ session->add_command(new MementoCommand<Playlist>(*(r->playlist()), &before, &after));
+
+ /* move rest by the same amount */
+
+ RegionSelection::const_iterator i = rs.begin();
+ ++i;
+
+ for (; i != rs.end(); ++i) {
boost::shared_ptr<Region> region ((*i)->region());
diff --git a/gtk2_ardour/editor_selection.cc b/gtk2_ardour/editor_selection.cc
index 1ae304316b..f1248fb13a 100644
--- a/gtk2_ardour/editor_selection.cc
+++ b/gtk2_ardour/editor_selection.cc
@@ -840,7 +840,7 @@ void
Editor::select_all (Selection::Operation op)
{
list<Selectable *> touched;
-
+
for (TrackViewList::iterator iter = track_views.begin(); iter != track_views.end(); ++iter) {
if ((*iter)->hidden()) {
continue;
@@ -1023,7 +1023,15 @@ Editor::select_all_selectables_using_time_selection ()
return;
}
- for (TrackViewList::iterator iter = selection->tracks.begin(); iter != selection->tracks.end(); ++iter) {
+ TrackSelection* ts;
+
+ if (selection->tracks.empty()) {
+ ts = &track_views;
+ } else {
+ ts = &selection->tracks;
+ }
+
+ for (TrackViewList::iterator iter = ts->begin(); iter != ts->end(); ++iter) {
if ((*iter)->hidden()) {
continue;
}
@@ -1046,7 +1054,16 @@ Editor::select_all_selectables_using_punch()
return;
}
- for (TrackViewList::iterator iter = track_views.begin(); iter != track_views.end(); ++iter) {
+
+ TrackSelection* ts;
+
+ if (selection->tracks.empty()) {
+ ts = &track_views;
+ } else {
+ ts = &selection->tracks;
+ }
+
+ for (TrackViewList::iterator iter = ts->begin(); iter != ts->end(); ++iter) {
if ((*iter)->hidden()) {
continue;
}
@@ -1068,7 +1085,16 @@ Editor::select_all_selectables_using_loop()
return;
}
- for (TrackViewList::iterator iter = track_views.begin(); iter != track_views.end(); ++iter) {
+
+ TrackSelection* ts;
+
+ if (selection->tracks.empty()) {
+ ts = &track_views;
+ } else {
+ ts = &selection->tracks;
+ }
+
+ for (TrackViewList::iterator iter = ts->begin(); iter != ts->end(); ++iter) {
if ((*iter)->hidden()) {
continue;
}
@@ -1101,7 +1127,16 @@ Editor::select_all_selectables_using_cursor (Cursor *cursor, bool after)
}
}
- for (TrackViewList::iterator iter = track_views.begin(); iter != track_views.end(); ++iter) {
+
+ TrackSelection* ts;
+
+ if (selection->tracks.empty()) {
+ ts = &track_views;
+ } else {
+ ts = &selection->tracks;
+ }
+
+ for (TrackViewList::iterator iter = ts->begin(); iter != ts->end(); ++iter) {
if ((*iter)->hidden()) {
continue;
}
@@ -1132,7 +1167,16 @@ Editor::select_all_selectables_using_edit (bool after)
}
}
- for (TrackViewList::iterator iter = track_views.begin(); iter != track_views.end(); ++iter) {
+
+ TrackSelection* ts;
+
+ if (selection->tracks.empty()) {
+ ts = &track_views;
+ } else {
+ ts = &selection->tracks;
+ }
+
+ for (TrackViewList::iterator iter = ts->begin(); iter != ts->end(); ++iter) {
if ((*iter)->hidden()) {
continue;
}
@@ -1152,8 +1196,16 @@ Editor::select_all_selectables_between (bool within)
if (!get_edit_op_range (start, end)) {
return;
}
-
- for (TrackViewList::iterator iter = track_views.begin(); iter != track_views.end(); ++iter) {
+
+ TrackSelection* ts;
+
+ if (selection->tracks.empty()) {
+ ts = &track_views;
+ } else {
+ ts = &selection->tracks;
+ }
+
+ for (TrackViewList::iterator iter = ts->begin(); iter != ts->end(); ++iter) {
if ((*iter)->hidden()) {
continue;
}
diff --git a/gtk2_ardour/new_session_dialog.cc b/gtk2_ardour/new_session_dialog.cc
index a112ebfe40..7a3482e850 100644
--- a/gtk2_ardour/new_session_dialog.cc
+++ b/gtk2_ardour/new_session_dialog.cc
@@ -812,9 +812,11 @@ void
NewSessionDialog::file_chosen ()
{
switch (which_page()) {
- case NewPage:
- case EnginePage:
- return;
+ case OpenPage:
+ break;
+ case NewPage:
+ case EnginePage:
+ return;
}
m_treeview->get_selection()->unselect_all();
diff --git a/gtk2_ardour/redirect_box.cc b/gtk2_ardour/redirect_box.cc
index f3193d6924..579334bab9 100644
--- a/gtk2_ardour/redirect_box.cc
+++ b/gtk2_ardour/redirect_box.cc
@@ -415,7 +415,7 @@ RedirectBox::weird_plugin_dialog (Plugin& p, uint32_t streams, boost::shared_ptr
/* i hate this kind of code */
- if (streams > p.get_info()->n_inputs) {
+ if (streams > (unsigned)p.get_info()->n_inputs) {
label.set_text (string_compose (_(
"You attempted to add a plugin (%1).\n"
"The plugin has %2 inputs\n"
@@ -427,7 +427,7 @@ RedirectBox::weird_plugin_dialog (Plugin& p, uint32_t streams, boost::shared_ptr
p.name(),
p.get_info()->n_inputs,
streams));
- } else if (streams < p.get_info()->n_inputs) {
+ } else if (streams < (unsigned)p.get_info()->n_inputs) {
label.set_text (string_compose (_(
"You attempted to add a plugin (%1).\n"
"The plugin has %2 inputs\n"
diff --git a/gtk2_ardour/tempo_dialog.h b/gtk2_ardour/tempo_dialog.h
index a92f26f8e3..47baa0cd42 100644
--- a/gtk2_ardour/tempo_dialog.h
+++ b/gtk2_ardour/tempo_dialog.h
@@ -39,10 +39,10 @@ struct TempoDialog : public ArdourDialog
{
Gtk::ComboBoxText note_types;
vector<string> strings;
- Gtk::Frame note_frame;
Gtk::Adjustment bpm_adjustment;
Gtk::SpinButton bpm_spinner;
Gtk::Frame bpm_frame;
+ Gtk::Frame note_frame;
Gtk::VBox vpacker;
Gtk::Button ok_button;
Gtk::Button cancel_button;
diff --git a/libs/ardour/audioregion.cc b/libs/ardour/audioregion.cc
index 28e3d5a6d9..61ccc203b0 100644
--- a/libs/ardour/audioregion.cc
+++ b/libs/ardour/audioregion.cc
@@ -711,8 +711,6 @@ AudioRegion::set_live_state (const XMLNode& node, Change& what_changed, bool sen
uint32_t old_flags = _flags;
- cerr << _name << " setting live state\n";
-
if ((prop = node.property ("flags")) != 0) {
_flags = Flag (string_2_enum (prop->value(), _flags));
diff --git a/libs/ardour/session_butler.cc b/libs/ardour/session_butler.cc
index eba5e65525..78d2cbdc9b 100644
--- a/libs/ardour/session_butler.cc
+++ b/libs/ardour/session_butler.cc
@@ -257,8 +257,7 @@ Session::butler_thread_work ()
IO* io = ds->io();
- if (ds->io() && !ds->io()->active()) {
- cerr << "Skip inactive diskstream " << ds->io()->name() << endl;
+ if (io && !io->active()) {
continue;
}
diff --git a/libs/gtkmm2ext/fastmeter.cc b/libs/gtkmm2ext/fastmeter.cc
index 7ada5a5a8c..8e81954000 100644
--- a/libs/gtkmm2ext/fastmeter.cc
+++ b/libs/gtkmm2ext/fastmeter.cc
@@ -98,7 +98,7 @@ Glib::RefPtr<Gdk::Pixbuf> FastMeter::request_vertical_meter(int width, int heigh
if (height > max_v_pixbuf_size)
height = max_v_pixbuf_size;
- int index = height - 1;
+ //int index = height - 1;
//if (v_pixbuf_cache == 0) {
// v_pixbuf_cache = (Glib::RefPtr<Gdk::Pixbuf>*) malloc(sizeof(Glib::RefPtr<Gdk::Pixbuf>) * max_v_pixbuf_size);
diff --git a/libs/rubberband/src/Resampler.cpp b/libs/rubberband/src/Resampler.cpp
index 731ac4ee38..2196856abd 100644
--- a/libs/rubberband/src/Resampler.cpp
+++ b/libs/rubberband/src/Resampler.cpp
@@ -117,7 +117,8 @@ Resampler::D::resample(float **in, float **out, size_t incount, float ratio,
data.src_ratio = ratio;
data.end_of_input = (final ? 1 : 0);
- int err = src_process(m_src, &data);
+ int err = 0;
+ err = src_process(m_src, &data);
//!!! check err, respond appropriately
diff --git a/libs/rubberband/src/StretcherProcess.cpp b/libs/rubberband/src/StretcherProcess.cpp
index 1e8e7d1afb..3ea4bee53e 100644
--- a/libs/rubberband/src/StretcherProcess.cpp
+++ b/libs/rubberband/src/StretcherProcess.cpp
@@ -710,7 +710,7 @@ RubberBandStretcher::Impl::writeChunk(size_t channel, size_t shiftIncrement, boo
cerr << "writeChunk(" << channel << ", " << shiftIncrement << ", " << last << ")" << endl;
}
- for (int i = 0; i < shiftIncrement; ++i) {
+ for (unsigned int i = 0; i < shiftIncrement; ++i) {
if (cd.windowAccumulator[i] > 0.f) {
cd.accumulator[i] /= cd.windowAccumulator[i];
}
diff --git a/svn_revision.h b/svn_revision.h
index 001a238553..1eb1b6f02d 100644
--- a/svn_revision.h
+++ b/svn_revision.h
@@ -1,4 +1,4 @@
#ifndef __ardour_svn_revision_h__
#define __ardour_svn_revision_h__
-static const char* ardour_svn_revision = "2853";
+static const char* ardour_svn_revision = "2854";
#endif