summaryrefslogtreecommitdiff
path: root/share/scripts/remove_unknown_procs.lua
diff options
context:
space:
mode:
Diffstat (limited to 'share/scripts/remove_unknown_procs.lua')
-rw-r--r--share/scripts/remove_unknown_procs.lua44
1 files changed, 44 insertions, 0 deletions
diff --git a/share/scripts/remove_unknown_procs.lua b/share/scripts/remove_unknown_procs.lua
new file mode 100644
index 0000000000..044e85b3b8
--- /dev/null
+++ b/share/scripts/remove_unknown_procs.lua
@@ -0,0 +1,44 @@
+ardour { ["type"] = "EditorAction", name = "Remove Unknown Plugins",
+ license = "MIT",
+ author = "Ardour Team",
+ description = [[Remove all unknown plugins/processors from all tracks and busses]]
+}
+
+function factory (params) return function ()
+ -- iterate over all tracks and busses (aka routes)
+ for route in Session:get_routes ():iter () do
+ -- route is-a http://manual.ardour.org/lua-scripting/class_reference/#ARDOUR:Route
+ local i = 0;
+ -- we need to iterate one-by one, removing a processor invalidates the list
+ repeat
+ proc = route:nth_processor (i)
+ -- proc is a http://manual.ardour.org/lua-scripting/class_reference/#ARDOUR:Processor
+ -- try cast it to http://manual.ardour.org/lua-scripting/class_reference/#ARDOUR:UnknownProcessor
+ if not proc:isnil () and not proc:to_unknownprocessor ():isnil () then
+ route:remove_processor (proc, nil, true)
+ else
+ i = i + 1
+ end
+ until proc:isnil ()
+ end
+end end
+
+
+function icon (params) return function (ctx, width, height, fg)
+ local txt = Cairo.PangoLayout (ctx, "ArdourMono ".. math.ceil (math.min (width, height) * .5) .. "px")
+ txt:set_text ("Fx")
+ local tw, th = txt:get_pixel_size ()
+ ctx:move_to (.5 * (width - tw), .5 * (height - th))
+ txt:layout_cairo_path (ctx)
+
+ ctx:set_source_rgba (ARDOUR.LuaAPI.color_to_rgba (fg))
+ ctx:set_line_width (3)
+ ctx:stroke_preserve ()
+
+ ctx:set_source_rgba (.8, .2, .2, 1)
+ ctx:set_line_width (2)
+ ctx:stroke_preserve ()
+
+ ctx:set_source_rgba (0, 0, 0, 1)
+ ctx:fill ()
+end end