add some more Editor Selection lua bindings
authorRobin Gareus <robin@gareus.org>
Mon, 11 Apr 2016 12:06:26 +0000 (14:06 +0200)
committerRobin Gareus <robin@gareus.org>
Mon, 11 Apr 2016 12:06:26 +0000 (14:06 +0200)
gtk2_ardour/luainstance.cc
gtk2_ardour/selection.h

index 32638bf334fad796d3e3279b40dfb36eb35a0fe7..0519aec1ecd51eadaf064b55aa6917b9d1692134 100644 (file)
@@ -33,6 +33,7 @@
 #include "region_selection.h"
 #include "luainstance.h"
 #include "luasignal.h"
+#include "marker.h"
 #include "time_axis_view.h"
 #include "selection.h"
 #include "script_selector.h"
@@ -218,6 +219,25 @@ LuaInstance::register_classes (lua_State* L)
 
        luabridge::getGlobalNamespace (L)
                .beginNamespace ("ArdourUI")
+
+               .beginStdList <ArdourMarker*> ("ArdourMarkerList")
+               .endClass ()
+
+               .beginClass <ArdourMarker> ("ArdourMarker")
+               .addFunction ("name", &ArdourMarker::name)
+               .addFunction ("position", &ArdourMarker::position)
+               .addFunction ("_type", &ArdourMarker::type)
+               .endClass ()
+
+#if 0
+               .beginClass <AxisView> ("AxisView")
+               .endClass ()
+               .deriveClass <TimeAxisView, AxisView> ("TimeAxisView")
+               .endClass ()
+               .deriveClass <RouteTimeAxisView, TimeAxisView> ("RouteTimeAxisView")
+               .endClass ()
+#endif
+
                .beginClass <RegionSelection> ("RegionSelection")
                .addFunction ("clear_all", &RegionSelection::clear_all)
                .addFunction ("start", &RegionSelection::start)
@@ -232,31 +252,31 @@ LuaInstance::register_classes (lua_State* L)
                .addFunction ("length", &TimeSelection::length)
                .endClass ()
 
-#if 0
-               .beginClass <AxisView> ("AxisView")
+               .deriveClass <MarkerSelection, std::list<ArdourMarker*> > ("MarkerSelection")
                .endClass ()
-               .deriveClass <TimeAxisView, AxisView> ("TimeAxisView")
+
+               .beginClass <TrackViewList> ("TrackViewList")
+               .addFunction ("routelist", &TrackViewList::routelist) // XXX check windows binding (libardour)
                .endClass ()
-               .deriveClass <RouteTimeAxisView, TimeAxisView> ("RouteTimeAxisView")
+
+               .deriveClass <TrackSelection, TrackViewList> ("TrackSelection")
                .endClass ()
-#endif
 
                .beginClass <Selection> ("Selection")
                .addFunction ("clear", &Selection::clear)
                .addFunction ("clear_all", &Selection::clear_all)
+               .addFunction ("empty", &Selection::empty)
                .addData ("tracks", &Selection::tracks)
                .addData ("regions", &Selection::regions)
                .addData ("time", &Selection::time)
-               .endClass ()
-
-               .beginClass <TrackViewList> ("TrackViewList")
-               .addFunction ("routelist", &TrackViewList::routelist) // XXX check windows binding (libardour)
-               .endClass ()
-
-               .deriveClass <TrackSelection, TrackViewList> ("TrackSelection")
-               .endClass ()
-
-               .beginClass <ArdourMarker> ("ArdourMarker")
+               .addData ("markers", &Selection::markers)
+#if 0
+               .addData ("lines", &Selection::lines)
+               .addData ("playlists", &Selection::playlists)
+               .addData ("points", &Selection::points)
+               .addData ("midi_regions", &Selection::midi_regions)
+               .addData ("midi_notes", &Selection::midi_notes) // cut buffer only
+#endif
                .endClass ()
 
                .beginClass <PublicEditor> ("Editor")
@@ -403,7 +423,25 @@ LuaInstance::register_classes (lua_State* L)
 
                .addFunction ("access_action", &PublicEditor::access_action)
                .endClass ()
-               .endNamespace ();
+
+               /* ArdourUI enums */
+               .beginNamespace ("MarkerType")
+               .addConst ("Mark", ArdourMarker::Type(ArdourMarker::Mark))
+               .addConst ("Tempo", ArdourMarker::Type(ArdourMarker::Tempo))
+               .addConst ("Meter", ArdourMarker::Type(ArdourMarker::Meter))
+               .addConst ("SessionStart", ArdourMarker::Type(ArdourMarker::SessionStart))
+               .addConst ("SessionEnd", ArdourMarker::Type(ArdourMarker::SessionEnd))
+               .addConst ("RangeStart", ArdourMarker::Type(ArdourMarker::RangeStart))
+               .addConst ("RangeEnd", ArdourMarker::Type(ArdourMarker::RangeEnd))
+               .addConst ("LoopStart", ArdourMarker::Type(ArdourMarker::LoopStart))
+               .addConst ("LoopEnd", ArdourMarker::Type(ArdourMarker::LoopEnd))
+               .addConst ("PunchIn", ArdourMarker::Type(ArdourMarker::PunchIn))
+               .addConst ("PunchOut", ArdourMarker::Type(ArdourMarker::PunchOut))
+               .endNamespace ()
+
+               .endNamespace (); // end ArdourUI
+
+       // Editing Symbols
 
 #undef ZOOMFOCUS
 #undef SNAPTYPE
index aa9510beedc8258322afea80ecbdbf0058667f75..c9f5eddb4fd9e07e60b40278be5dd48edb6f1b55 100644 (file)
@@ -107,6 +107,11 @@ class Selection : public sigc::trackable, public PBD::ScopedConnectionList
        void block_tracks_changed (bool);
 
        void clear ();
+
+       /** check if all selections are empty
+        * @param internal_selection also check object internals (e.g midi notes, automation points), when false only check objects.
+        * @return true if nothing is selected.
+        */
        bool empty (bool internal_selection = false);
 
        void dump_region_layers();