More complete (but still incomplete) LV2 persist implementation.
[ardour.git] / libs / ardour / vst_plugin.cc
index edcb6654357ed5ebf1204ce2e5432cec528e5097..e77fc483ed0fd2e6155c1718fe76f2c08622b8f7 100644 (file)
@@ -440,11 +440,19 @@ VSTPlugin::do_remove_preset (string name)
 {
        if (_plugin->flags & 32 /* effFlagsProgramsChunks */) {
 
-               /* XXX: TODO */
-               
-               error << _("no support for presets using chunks at this time")
-                     << endmsg;
-               return;
+               XMLTree* t = presets_tree ();
+               if (t == 0) {
+                       return;
+               }
+
+               t->root()->remove_nodes_and_delete (X_("label"), name);
+
+               sys::path f = ARDOUR::user_config_directory ();
+               f /= "presets";
+               f /= "vst";
+
+               t->write (f.to_string ());
+               delete t;
        }
 }
 
@@ -648,8 +656,11 @@ VSTPlugin::get_presets ()
                
                if (vst_version >= 2) {
                        char buf[256];
-                       _plugin->dispatcher (_plugin, 29, i, 0, buf, 0);
-                       r.label = buf;
+                       if (_plugin->dispatcher (_plugin, 29, i, 0, buf, 0) == 1) {
+                               r.label = buf;
+                       } else {
+                               r.label = string_compose (_("Preset %1"), i);
+                       }
                } else {
                        r.label = string_compose (_("Preset %1"), i);
                }