2 * Copyright (C) 2007-2009 David Robillard <d@drobilla.net>
3 * Copyright (C) 2007-2017 Paul Davis <paul@linuxaudiosystems.com>
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20 #ifndef __ardour_gtk_processor_selection_h__
21 #define __ardour_gtk_processor_selection_h__
25 #include "pbd/signals.h"
26 #include "pbd/xml++.h"
28 class XMLProcessorSelection {
30 XMLProcessorSelection() : node (0) {}
31 ~XMLProcessorSelection() { if (node) { delete node; } }
33 void set (XMLNode* n) {
40 void add (XMLNode* newchild) {
42 node = new XMLNode ("add");
44 node->add_child_nocopy (*newchild);
54 bool empty () const { return node == 0 || node->children().empty(); }
56 const XMLNode& get_node() const { return *node; }
62 class ProcessorSelection : public PBD::ScopedConnectionList, public sigc::trackable
65 ProcessorSelection () {}
67 XMLProcessorSelection processors;
68 sigc::signal<void> ProcessorsChanged;
74 void set (XMLNode* node);
75 void add (XMLNode* node);
77 void clear_processors ();
80 ProcessorSelection& operator= (const ProcessorSelection& other);
81 ProcessorSelection (ProcessorSelection const&);
84 bool operator==(const ProcessorSelection& a, const ProcessorSelection& b);
86 #endif /* __ardour_gtk_processor_selection_h__ */