summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-04-10 18:57:52 +0200
committerRobin Gareus <robin@gareus.org>2016-04-10 20:56:53 +0200
commit2b943ea36c128819d808087f853977fdd8e5c09d (patch)
treea87684823e1c05c55953006c7b8bddb780f7ed1e
parent9609ef77642cef5654bb245328c2b40992ac2686 (diff)
convenient API to access track and region selection
-rw-r--r--gtk2_ardour/luainstance.cc6
-rw-r--r--gtk2_ardour/region_selection.cc10
-rw-r--r--gtk2_ardour/region_selection.h2
-rw-r--r--gtk2_ardour/track_view_list.cc14
-rw-r--r--gtk2_ardour/track_view_list.h2
5 files changed, 34 insertions, 0 deletions
diff --git a/gtk2_ardour/luainstance.cc b/gtk2_ardour/luainstance.cc
index 9e29d59602..d8ec0a20f2 100644
--- a/gtk2_ardour/luainstance.cc
+++ b/gtk2_ardour/luainstance.cc
@@ -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")
diff --git a/gtk2_ardour/region_selection.cc b/gtk2_ardour/region_selection.cc
index 1536dd61e4..2a3a307459 100644
--- a/gtk2_ardour/region_selection.cc
+++ b/gtk2_ardour/region_selection.cc
@@ -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;
+}
diff --git a/gtk2_ardour/region_selection.h b/gtk2_ardour/region_selection.h
index 062557eb9b..3bbbe8c307 100644
--- a/gtk2_ardour/region_selection.h
+++ b/gtk2_ardour/region_selection.h
@@ -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*);
diff --git a/gtk2_ardour/track_view_list.cc b/gtk2_ardour/track_view_list.cc
index cc29a57521..a89565c067 100644
--- a/gtk2_ardour/track_view_list.cc
+++ b/gtk2_ardour/track_view_list.cc
@@ -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;
+}
diff --git a/gtk2_ardour/track_view_list.h b/gtk2_ardour/track_view_list.h
index 24f26465ef..227cb1605b 100644
--- a/gtk2_ardour/track_view_list.h
+++ b/gtk2_ardour/track_view_list.h
@@ -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