diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2008-01-09 18:26:47 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2008-01-09 18:26:47 +0000 |
commit | 9c88023faf6d63806fa747eda541294f22a1e5f3 (patch) | |
tree | 0e7891587cf986aa9c2b4bd0de6587982a1c4c32 | |
parent | b007f7fe621e8390b41df5a725fbb697d3d69fb9 (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.cc | 14 | ||||
-rw-r--r-- | gtk2_ardour/editor.cc | 9 | ||||
-rw-r--r-- | gtk2_ardour/editor.h | 2 | ||||
-rw-r--r-- | gtk2_ardour/editor_canvas_events.cc | 3 | ||||
-rw-r--r-- | gtk2_ardour/editor_ops.cc | 80 | ||||
-rw-r--r-- | gtk2_ardour/editor_selection.cc | 68 | ||||
-rw-r--r-- | gtk2_ardour/new_session_dialog.cc | 8 | ||||
-rw-r--r-- | gtk2_ardour/redirect_box.cc | 4 | ||||
-rw-r--r-- | gtk2_ardour/tempo_dialog.h | 2 | ||||
-rw-r--r-- | libs/ardour/audioregion.cc | 2 | ||||
-rw-r--r-- | libs/ardour/session_butler.cc | 3 | ||||
-rw-r--r-- | libs/gtkmm2ext/fastmeter.cc | 2 | ||||
-rw-r--r-- | libs/rubberband/src/Resampler.cpp | 3 | ||||
-rw-r--r-- | libs/rubberband/src/StretcherProcess.cpp | 2 | ||||
-rw-r--r-- | svn_revision.h | 2 |
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 |