convenient API to access track and region selection
authorRobin Gareus <robin@gareus.org>
Sun, 10 Apr 2016 16:57:52 +0000 (18:57 +0200)
committerRobin Gareus <robin@gareus.org>
Sun, 10 Apr 2016 18:56:53 +0000 (20:56 +0200)
gtk2_ardour/luainstance.cc
gtk2_ardour/region_selection.cc
gtk2_ardour/region_selection.h
gtk2_ardour/track_view_list.cc
gtk2_ardour/track_view_list.h

index 9e29d59602d59632870bc824f1ca3b5a1a3a4421..d8ec0a20f2bcf32f37fca3b7cc02b7963619a51d 100644 (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")
index 1536dd61e4e7ad1b8bfdfa1b5bbff437d8ab981b..2a3a3074595ba3544ed43c7c210552b2a6921b8b 100644 (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;
+}
index 062557eb9bbaeb43b1ac4aac921bd142cb31f011..3bbbe8c3071bdd5ca8b360e50170c501ddcdb924 100644 (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*);
 
index cc29a57521476f6ce5231867d34cec8611cb10f5..a89565c067030df9e2fc14ef702d4d7b23cb4165 100644 (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;
+}
index 24f26465ef3c334676a5f8fc454ba56f23618099..227cb1605bd6c0043e5d99019a40851227430839 100644 (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