remember plugin-UI type (custom/basic) with session.
authorRobin Gareus <robin@gareus.org>
Tue, 21 May 2013 19:23:10 +0000 (21:23 +0200)
committerRobin Gareus <robin@gareus.org>
Tue, 21 May 2013 19:23:10 +0000 (21:23 +0200)
amend to 3.1-81-g1acf8bd

gtk2_ardour/processor_box.cc
gtk2_ardour/processor_box.h
gtk2_ardour/window_manager.cc

index 9ac57a356c429ef0dc53b4059e62dd61fd7e515b..2f8513fd2a83bc948ce7d2c8c680dbbb98665364 100644 (file)
@@ -2642,6 +2642,38 @@ ProcessorWindowProxy::session_handle()
        return 0;
 }
 
+XMLNode&
+ProcessorWindowProxy::get_state () const
+{
+       XMLNode *node;
+       node = &ProxyBase::get_state();
+       node->add_property (X_("custom-ui"), is_custom? X_("yes") : X_("no"));
+       return *node;
+}
+
+void
+ProcessorWindowProxy::set_state (const XMLNode& node)
+{
+       XMLNodeList children = node.children ();
+       XMLNodeList::const_iterator i = children.begin ();
+       while (i != children.end()) {
+               XMLProperty* prop = (*i)->property (X_("name"));
+               if ((*i)->name() == X_("Window") && prop && prop->value() == _name) {
+                       break;
+               }
+               ++i;
+       }
+
+       if (i != children.end()) {
+               XMLProperty* prop;
+               if ((prop = (*i)->property (X_("custom-ui"))) != 0) {
+                       want_custom = PBD::string_is_affirmative (prop->value ());
+               }
+       }
+
+       ProxyBase::set_state(node);
+}
+
 Gtk::Window*
 ProcessorWindowProxy::get (bool create)
 {
index 7d80abdc68c1ebff17c6e0d4e891add109b59653..d4d1456e09fadfaa33b90f1d52ee844724afa9b4 100644 (file)
@@ -92,6 +92,9 @@ class ProcessorWindowProxy : public WM::ProxyBase
 
     bool marked;
 
+    void set_state (const XMLNode&);
+    XMLNode& get_state () const;
+
   private:
     ProcessorBox* _processor_box;
     boost::weak_ptr<ARDOUR::Processor> _processor;
index 4a3d5f6ce495e523b4a7897956d4a9b5423bc7a6..986e6ade3aa2cb67efb8c42c1b25311aafb18622 100644 (file)
@@ -28,6 +28,7 @@
 #include "ardour_dialog.h"
 #include "ardour_window.h"
 #include "window_manager.h"
+#include "processor_box.h"
 
 #include "i18n.h"
 
@@ -106,7 +107,12 @@ Manager::add_state (XMLNode& root) const
                if (dynamic_cast<ProxyTemporary*> (*i)) {
                        continue;
                }
-               root.add_child_nocopy ((*i)->get_state());
+               if (dynamic_cast<ProcessorWindowProxy*> (*i)) {
+                       ProcessorWindowProxy *pi = dynamic_cast<ProcessorWindowProxy*> (*i);
+                       root.add_child_nocopy (pi->get_state());
+               } else {
+                       root.add_child_nocopy ((*i)->get_state());
+               }
        }
 }