summaryrefslogtreecommitdiff
path: root/gtk2_ardour/selection.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2006-03-08 02:50:53 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2006-03-08 02:50:53 +0000
commit0d2c8771a7b0f70fe4cf21cfdcfca709470787c2 (patch)
treed39ee0545b79178894d5216b2c87956e8bedc14c /gtk2_ardour/selection.cc
parentbe60137cfb31ef1266f5132a9fd465c01ce074a9 (diff)
fix for deferred saves by StateManager-derivatives; changes to new/copy/clear playlist ops (not finished), TRUE/FALSE -> true/false in editor_mouse.cc
git-svn-id: svn://localhost/trunk/ardour2@358 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/selection.cc')
-rw-r--r--gtk2_ardour/selection.cc89
1 files changed, 30 insertions, 59 deletions
diff --git a/gtk2_ardour/selection.cc b/gtk2_ardour/selection.cc
index d6efce7264..82e8bbb682 100644
--- a/gtk2_ardour/selection.cc
+++ b/gtk2_ardour/selection.cc
@@ -152,94 +152,65 @@ Selection::clear_lines ()
void
Selection::toggle (Redirect* r)
{
- if (find (redirects.begin(), redirects.end(), r) == redirects.end()) {
+ RedirectSelection::iterator i;
+
+ if ((i = find (redirects.begin(), redirects.end(), r)) == redirects.end()) {
redirects.push_back (r);
- RedirectsChanged();
+ } else {
+ redirects.erase (i);
}
+ RedirectsChanged();
+
}
void
Selection::toggle (Playlist* pl)
{
- if (find (playlists.begin(), playlists.end(), pl) == playlists.end()) {
+ PlaylistSelection::iterator i;
+
+ if ((i = find (playlists.begin(), playlists.end(), pl)) == playlists.end()) {
pl->ref ();
playlists.push_back(pl);
- PlaylistsChanged ();
- }
-}
-
-void
-Selection::toggle (const list<Playlist*>& pllist)
-{
- bool changed = false;
-
- for (list<Playlist*>::const_iterator i = pllist.begin(); i != pllist.end(); ++i) {
- if (find (playlists.begin(), playlists.end(), (*i)) == playlists.end()) {
- (*i)->ref ();
- playlists.push_back (*i);
- changed = true;
- }
- }
-
- if (changed) {
- PlaylistsChanged ();
+ } else {
+ playlists.erase (i);
}
-}
-
-void
-Selection::toggle (const list<TimeAxisView*>& track_list)
-{
- bool changed = false;
- for (list<TimeAxisView*>::const_iterator i = track_list.begin(); i != track_list.end(); ++i) {
- if (find (tracks.begin(), tracks.end(), (*i)) == tracks.end()) {
- void (Selection::*pmf)(TimeAxisView*) = &Selection::remove;
- (*i)->GoingAway.connect (sigc::bind (mem_fun (*this, pmf), (*i)));
- tracks.push_back (*i);
- changed = true;
- }
- }
-
- if (changed) {
- TracksChanged ();
- }
+ PlaylistsChanged ();
}
void
Selection::toggle (TimeAxisView* track)
{
- if (find (tracks.begin(), tracks.end(), track) == tracks.end()) {
+ TrackSelection::iterator i;
+
+ if ((i = find (tracks.begin(), tracks.end(), track)) == tracks.end()) {
void (Selection::*pmf)(TimeAxisView*) = &Selection::remove;
track->GoingAway.connect (sigc::bind (mem_fun (*this, pmf), track));
tracks.push_back (track);
- TracksChanged();
+ } else {
+ tracks.erase (i);
}
+
+ TracksChanged();
}
void
Selection::toggle (AudioRegionView* r)
{
- if (find (audio_regions.begin(), audio_regions.end(), r) == audio_regions.end()) {
- audio_regions.add (r);
- RegionsChanged ();
- }
-}
+ AudioRegionSelection::iterator i;
-void
-Selection::toggle (vector<AudioRegionView*>& v)
-{
- bool changed = false;
+ cerr << "about to toggle a regionview\n";
- for (vector<AudioRegionView*>::iterator i = v.begin(); i != v.end(); ++i) {
- if (find (audio_regions.begin(), audio_regions.end(), (*i)) == audio_regions.end()) {
- audio_regions.add ((*i));
- changed = true;
- }
+ if ((i = find (audio_regions.begin(), audio_regions.end(), r)) == audio_regions.end()) {
+ audio_regions.add (r);
+ cerr << "\tadded\n";
+ } else {
+ audio_regions.erase (i);
+ cerr << "\tremoved\n";
}
- if (changed) {
- RegionsChanged ();
- }
+ RegionsChanged ();
+ cerr << "done\n";
}
long