convenient API to access track and region selection

This commit is contained in:
Robin Gareus
2016-04-10 18:57:52 +02:00
parent 9609ef7764
commit 2b943ea36c
5 changed files with 34 additions and 0 deletions

View File

@@ -223,21 +223,27 @@ LuaInstance::register_classes (lua_State* L)
.addFunction ("start", &RegionSelection::start)
.addFunction ("end_frame", &RegionSelection::end_frame)
.addFunction ("n_midi_regions", &RegionSelection::n_midi_regions)
.addFunction ("regionlist", &RegionSelection::regionlist) // XXX check windows binding (libardour)
.endClass ()
#if 0
.beginClass <AxisView> ("AxisView")
.endClass ()
.deriveClass <TimeAxisView, AxisView> ("TimeAxisView")
.endClass ()
.deriveClass <RouteTimeAxisView, TimeAxisView> ("RouteTimeAxisView")
.endClass ()
#endif
.beginClass <Selection> ("Selection")
.addFunction ("clear", &Selection::clear)
.addFunction ("clear_all", &Selection::clear_all)
.addData ("tracks", &Selection::tracks)
.addData ("regions", &Selection::regions)
.endClass ()
.beginClass <TrackViewList> ("TrackViewList")
.addFunction ("routelist", &TrackViewList::routelist) // XXX check windows binding (libardour)
.endClass ()
.deriveClass <TrackSelection, TrackViewList> ("TrackSelection")

View File

@@ -303,3 +303,13 @@ RegionSelection::n_midi_regions () const
return count;
}
ARDOUR::RegionList
RegionSelection::regionlist () const
{
ARDOUR::RegionList rl;
for (const_iterator r = begin (); r != end (); ++r) {
rl.push_back ((*r)->region ());
}
return rl;
}

View File

@@ -66,6 +66,8 @@ class RegionSelection : public std::list<RegionView*>
std::set<boost::shared_ptr<ARDOUR::Playlist> > playlists () const;
std::list<PBD::ID> pending;
ARDOUR::RegionList regionlist () const;
private:
void remove_it (RegionView*);

View File

@@ -19,6 +19,7 @@
#include <algorithm>
#include "track_view_list.h"
#include "route_time_axis.h"
using namespace std;
@@ -51,3 +52,16 @@ TrackViewList::add (TrackViewList const & t)
return added;
}
ARDOUR::RouteList
TrackViewList::routelist () const
{
ARDOUR::RouteList rl;
for (TrackViewList::const_iterator i = begin (); i != end (); ++i) {
RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*i);
if (rtv) {
rl.push_back (rtv->route ());
}
}
return rl;
}

View File

@@ -20,6 +20,7 @@
#ifndef __ardour_gtk_track_view_list_h__
#define __ardour_gtk_track_view_list_h__
#include "ardour/types.h"
#include <list>
#include <set>
@@ -37,6 +38,7 @@ public:
bool contains (TimeAxisView const *) const;
TrackViewList filter_to_unique_playlists ();
ARDOUR::RouteList routelist () const;
};
#endif