From 4999a7199470ee751d710cfca2a39b4fdc561a82 Mon Sep 17 00:00:00 2001
From: David Robillard <d@drobilla.net>
Date: Fri, 20 May 2011 03:27:08 +0000
Subject: Remove dependency on glade and glademm (migrate to GtkBuilder).

git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@3295 a436a847-0d15-0410-975c-d299462d15a1
---
 src/gui/App.cpp                   |   12 +-
 src/gui/App.hpp                   |    6 +-
 src/gui/BreadCrumbs.hpp           |    6 +-
 src/gui/ConnectWindow.cpp         |    4 +-
 src/gui/ConnectWindow.hpp         |    7 +-
 src/gui/ControlPanel.cpp          |   18 +-
 src/gui/ControlPanel.hpp          |   13 +-
 src/gui/Controls.cpp              |   18 +-
 src/gui/Controls.hpp              |   20 +-
 src/gui/GladeFactory.cpp          |   83 -
 src/gui/GladeFactory.hpp          |   45 -
 src/gui/LoadPatchWindow.cpp       |    4 +-
 src/gui/LoadPatchWindow.hpp       |    9 +-
 src/gui/LoadPluginWindow.cpp      |    4 +-
 src/gui/LoadPluginWindow.hpp      |   11 +-
 src/gui/LoadRemotePatchWindow.cpp |    4 +-
 src/gui/LoadRemotePatchWindow.hpp |    9 +-
 src/gui/MessagesWindow.cpp        |    9 +-
 src/gui/MessagesWindow.hpp        |   10 +-
 src/gui/NewSubpatchWindow.cpp     |    4 +-
 src/gui/NewSubpatchWindow.hpp     |   10 +-
 src/gui/NodeControlWindow.cpp     |    4 +-
 src/gui/NodeControlWindow.hpp     |    3 +-
 src/gui/NodeMenu.cpp              |    3 +-
 src/gui/NodeMenu.hpp              |    3 +-
 src/gui/NodeModule.cpp            |    4 +-
 src/gui/ObjectMenu.cpp            |    3 +-
 src/gui/ObjectMenu.hpp            |    8 +-
 src/gui/PatchCanvas.cpp           |    4 +-
 src/gui/PatchPortModule.cpp       |    4 +-
 src/gui/PatchTreeWindow.cpp       |    4 +-
 src/gui/PatchTreeWindow.hpp       |    8 +-
 src/gui/PatchView.cpp             |    8 +-
 src/gui/PatchView.hpp             |    8 +-
 src/gui/PatchWindow.cpp           |    3 +-
 src/gui/PatchWindow.hpp           |    7 +-
 src/gui/Port.cpp                  |    4 +-
 src/gui/PortMenu.cpp              |    4 +-
 src/gui/PortMenu.hpp              |    4 +-
 src/gui/PortPropertiesWindow.cpp  |    4 +-
 src/gui/PortPropertiesWindow.hpp  |   10 +-
 src/gui/PropertiesWindow.cpp      |   16 +-
 src/gui/PropertiesWindow.hpp      |   10 +-
 src/gui/RenameWindow.cpp          |   14 +-
 src/gui/RenameWindow.hpp          |    8 +-
 src/gui/UploadPatchWindow.cpp     |    3 +-
 src/gui/UploadPatchWindow.hpp     |   11 +-
 src/gui/WidgetFactory.cpp         |   84 +
 src/gui/WidgetFactory.hpp         |   46 +
 src/gui/Window.hpp                |    1 -
 src/gui/WindowFactory.cpp         |    6 +-
 src/gui/ingen_gui.glade           | 3076 -------------------------------------
 src/gui/ingen_gui.ui              | 2983 +++++++++++++++++++++++++++++++++++
 src/gui/wscript                   |    8 +-
 src/serialisation/Parser.cpp      |    2 +-
 wscript                           |    8 +-
 56 files changed, 3318 insertions(+), 3364 deletions(-)
 delete mode 100644 src/gui/GladeFactory.cpp
 delete mode 100644 src/gui/GladeFactory.hpp
 create mode 100644 src/gui/WidgetFactory.cpp
 create mode 100644 src/gui/WidgetFactory.hpp
 delete mode 100644 src/gui/ingen_gui.glade
 create mode 100644 src/gui/ingen_gui.ui

diff --git a/src/gui/App.cpp b/src/gui/App.cpp
index 9d3fc49a..723c3cd8 100644
--- a/src/gui/App.cpp
+++ b/src/gui/App.cpp
@@ -42,7 +42,7 @@
 #include "LoadPluginWindow.hpp"
 #include "PatchWindow.hpp"
 #include "MessagesWindow.hpp"
-#include "GladeFactory.hpp"
+#include "WidgetFactory.hpp"
 #include "PatchTreeWindow.hpp"
 #include "Configuration.hpp"
 #include "ConnectWindow.hpp"
@@ -78,15 +78,15 @@ App::App(Ingen::Shared::World* world)
 	, _world(world)
 	, _enable_signal(true)
 {
-	Glib::RefPtr<Gnome::Glade::Xml> glade_xml = GladeFactory::new_glade_reference();
+	Glib::RefPtr<Gtk::Builder> xml = WidgetFactory::create();
 
 	Glib::set_application_name("Ingen");
 	gtk_window_set_default_icon_name("ingen");
 
-	glade_xml->get_widget_derived("connect_win", _connect_window);
-	glade_xml->get_widget_derived("messages_win", _messages_window);
-	glade_xml->get_widget_derived("patch_tree_win", _patch_tree_window);
-	glade_xml->get_widget("about_win", _about_dialog);
+	xml->get_widget_derived("connect_win", _connect_window);
+	xml->get_widget_derived("messages_win", _messages_window);
+	xml->get_widget_derived("patch_tree_win", _patch_tree_window);
+	xml->get_widget("about_win", _about_dialog);
 	_about_dialog->property_program_name() = "Ingen";
 	_about_dialog->property_logo_icon_name() = "ingen";
 
diff --git a/src/gui/App.hpp b/src/gui/App.hpp
index 82eab2f3..ca5c590f 100644
--- a/src/gui/App.hpp
+++ b/src/gui/App.hpp
@@ -22,11 +22,13 @@
 #include <string>
 #include <map>
 #include <utility>
-#include <libgnomecanvasmm.h>
+
 #include <gtkmm.h>
-#include <libglademm.h>
+#include <libgnomecanvasmm.h>
+
 #include "raul/SharedPtr.hpp"
 #include "raul/Deletable.hpp"
+
 #include "shared/World.hpp"
 
 namespace Ingen {
diff --git a/src/gui/BreadCrumbs.hpp b/src/gui/BreadCrumbs.hpp
index c716e33e..700ac226 100644
--- a/src/gui/BreadCrumbs.hpp
+++ b/src/gui/BreadCrumbs.hpp
@@ -19,12 +19,14 @@
 #define INGEN_GUI_BREADCRUMBS_HPP
 
 #include <list>
+
 #include <gtkmm.h>
-#include <libglademm/xml.h>
-#include <libglademm.h>
+
 #include "raul/Path.hpp"
 #include "raul/SharedPtr.hpp"
+
 #include "client/PatchModel.hpp"
+
 #include "PatchView.hpp"
 
 namespace Ingen {
diff --git a/src/gui/ConnectWindow.cpp b/src/gui/ConnectWindow.cpp
index c07eef71..eb98bb6b 100644
--- a/src/gui/ConnectWindow.cpp
+++ b/src/gui/ConnectWindow.cpp
@@ -54,8 +54,8 @@ namespace Raul { class Deletable; }
 namespace Ingen {
 namespace GUI {
 
-ConnectWindow::ConnectWindow(BaseObjectType*                        cobject,
-                             const Glib::RefPtr<Gnome::Glade::Xml>& xml)
+ConnectWindow::ConnectWindow(BaseObjectType*                   cobject,
+                             const Glib::RefPtr<Gtk::Builder>& xml)
 	: Dialog(cobject)
 	, _xml(xml)
 	, _mode(CONNECT_REMOTE)
diff --git a/src/gui/ConnectWindow.hpp b/src/gui/ConnectWindow.hpp
index 92f29f16..44d4c925 100644
--- a/src/gui/ConnectWindow.hpp
+++ b/src/gui/ConnectWindow.hpp
@@ -25,8 +25,6 @@
 #endif
 
 #include <gtkmm.h>
-#include <libglademm/xml.h>
-#include <libglademm.h>
 
 #include "raul/SharedPtr.hpp"
 
@@ -47,7 +45,8 @@ class App;
 class ConnectWindow : public Dialog
 {
 public:
-	ConnectWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& xml);
+	ConnectWindow(BaseObjectType*                   cobject,
+	              const Glib::RefPtr<Gtk::Builder>& xml);
 
 	void set_connected_to(SharedPtr<ServerInterface> engine);
 	void start(Ingen::Shared::World* world);
@@ -77,7 +76,7 @@ private:
 	bool gtk_callback();
 	void quit();
 
-	const Glib::RefPtr<Gnome::Glade::Xml> _xml;
+	const Glib::RefPtr<Gtk::Builder> _xml;
 
 	Mode    _mode;
 	int32_t _ping_id;
diff --git a/src/gui/ControlPanel.cpp b/src/gui/ControlPanel.cpp
index 59309ab4..c87f7c5d 100644
--- a/src/gui/ControlPanel.cpp
+++ b/src/gui/ControlPanel.cpp
@@ -24,7 +24,7 @@
 #include "App.hpp"
 #include "ControlPanel.hpp"
 #include "Controls.hpp"
-#include "GladeFactory.hpp"
+#include "WidgetFactory.hpp"
 
 using namespace std;
 using namespace Raul;
@@ -32,8 +32,8 @@ using namespace Raul;
 namespace Ingen {
 namespace GUI {
 
-ControlPanel::ControlPanel(BaseObjectType*                        cobject,
-                           const Glib::RefPtr<Gnome::Glade::Xml>& xml)
+ControlPanel::ControlPanel(BaseObjectType*                   cobject,
+                           const Glib::RefPtr<Gtk::Builder>& xml)
 	: Gtk::HBox(cobject)
 	, _callback_enabled(true)
 {
@@ -89,21 +89,21 @@ ControlPanel::add_port(SharedPtr<const PortModel> pm)
 	if (pm->is_input()) {
 		if (pm->is_toggle()) {
 			ToggleControl* tc;
-			Glib::RefPtr<Gnome::Glade::Xml> xml
-					= GladeFactory::new_glade_reference("toggle_control");
+			Glib::RefPtr<Gtk::Builder> xml
+					= WidgetFactory::create("toggle_control");
 			xml->get_widget_derived("toggle_control", tc);
 			control = tc;
 		} else if (pm->is_a(PortType::CONTROL)
 				|| pm->supports(App::instance().uris().atom_Float32)) {
 			SliderControl* sc;
-			Glib::RefPtr<Gnome::Glade::Xml> xml
-					= GladeFactory::new_glade_reference("control_strip");
+			Glib::RefPtr<Gtk::Builder> xml
+					= WidgetFactory::create("control_strip");
 			xml->get_widget_derived("control_strip", sc);
 			control = sc;
 		} else if (pm->supports(App::instance().uris().atom_String)) {
 			StringControl* sc;
-			Glib::RefPtr<Gnome::Glade::Xml> xml
-					= GladeFactory::new_glade_reference("string_control");
+			Glib::RefPtr<Gtk::Builder> xml
+					= WidgetFactory::create("string_control");
 			xml->get_widget_derived("string_control", sc);
 			control = sc;
 		}
diff --git a/src/gui/ControlPanel.hpp b/src/gui/ControlPanel.hpp
index cff7e946..a657b8d2 100644
--- a/src/gui/ControlPanel.hpp
+++ b/src/gui/ControlPanel.hpp
@@ -18,13 +18,12 @@
 #ifndef INGEN_GUI_CONTROLPANEL_HPP
 #define INGEN_GUI_CONTROLPANEL_HPP
 
-#include <vector>
 #include <string>
-#include <utility> // for pair<>
-#include <sigc++/sigc++.h>
+#include <utility>
+#include <vector>
+
 #include <gtkmm.h>
-#include <libglademm/xml.h>
-#include <libglademm.h>
+
 #include "Controls.hpp"
 
 namespace Raul { class Path; }
@@ -47,8 +46,8 @@ namespace GUI {
  */
 class ControlPanel : public Gtk::HBox {
 public:
-	ControlPanel(BaseObjectType*                        cobject,
-	             const Glib::RefPtr<Gnome::Glade::Xml>& glade_xml);
+	ControlPanel(BaseObjectType*                   cobject,
+	             const Glib::RefPtr<Gtk::Builder>& xml);
 	virtual ~ControlPanel();
 
 	void init(SharedPtr<const NodeModel> node, uint32_t poly);
diff --git a/src/gui/Controls.cpp b/src/gui/Controls.cpp
index b9362ed7..af4a139e 100644
--- a/src/gui/Controls.cpp
+++ b/src/gui/Controls.cpp
@@ -26,7 +26,7 @@
 #include "App.hpp"
 #include "ControlPanel.hpp"
 #include "Controls.hpp"
-#include "GladeFactory.hpp"
+#include "WidgetFactory.hpp"
 #include "PortPropertiesWindow.hpp"
 
 using namespace std;
@@ -38,13 +38,14 @@ namespace GUI {
 
 // ////////////////////// Control ///////////////////////////////// //
 
-Control::Control(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& glade_xml)
+Control::Control(BaseObjectType*                   cobject,
+                 const Glib::RefPtr<Gtk::Builder>& xml)
 	: Gtk::VBox(cobject)
 	, _control_panel(NULL)
 	, _enable_signal(false)
 	, _name_label(NULL)
 {
-	Glib::RefPtr<Gnome::Glade::Xml> menu_xml = GladeFactory::new_glade_reference("port_control_menu");
+	Glib::RefPtr<Gtk::Builder> menu_xml = WidgetFactory::create("port_control_menu");
 	menu_xml->get_widget("port_control_menu", _menu);
 	menu_xml->get_widget("port_control_menu_properties", _menu_properties);
 
@@ -105,7 +106,7 @@ Control::set_label(const string& name)
 void
 Control::menu_properties()
 {
-	Glib::RefPtr<Gnome::Glade::Xml> xml = GladeFactory::new_glade_reference();
+	Glib::RefPtr<Gtk::Builder> xml = WidgetFactory::create();
 
 	PortPropertiesWindow* window;
 	xml->get_widget_derived("port_properties_win", window);
@@ -114,7 +115,8 @@ Control::menu_properties()
 
 // ////////////////// SliderControl ////////////////////// //
 
-SliderControl::SliderControl(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& xml)
+SliderControl::SliderControl(BaseObjectType*                   cobject,
+                             const Glib::RefPtr<Gtk::Builder>& xml)
 	: Control(cobject, xml)
 	, _enabled(true)
 {
@@ -289,7 +291,8 @@ SliderControl::slider_pressed(GdkEvent* ev)
 
 // ///////////// ToggleControl ////////////// //
 
-ToggleControl::ToggleControl(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& xml)
+ToggleControl::ToggleControl(BaseObjectType*                   cobject,
+                             const Glib::RefPtr<Gtk::Builder>& xml)
 	: Control(cobject, xml)
 {
 	xml->get_widget("toggle_control_name_label", _name_label);
@@ -347,7 +350,8 @@ ToggleControl::toggled()
 
 // ///////////// StringControl ////////////// //
 
-StringControl::StringControl(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& xml)
+StringControl::StringControl(BaseObjectType*                   cobject,
+                             const Glib::RefPtr<Gtk::Builder>& xml)
 	: Control(cobject, xml)
 {
 	xml->get_widget("string_control_name_label", _name_label);
diff --git a/src/gui/Controls.hpp b/src/gui/Controls.hpp
index c64f7062..66969393 100644
--- a/src/gui/Controls.hpp
+++ b/src/gui/Controls.hpp
@@ -19,12 +19,13 @@
 #define INGEN_GUI_CONTROLS_HPP
 
 #include <cassert>
+
 #include <gtkmm.h>
-#include <libglademm/xml.h>
-#include <libglademm.h>
-#include "client/PortModel.hpp"
+
 #include "raul/SharedPtr.hpp"
 
+#include "client/PortModel.hpp"
+
 namespace Ingen { namespace Client { class PortModel; } }
 
 namespace Ingen {
@@ -39,7 +40,8 @@ class ControlPanel;
 class Control : public Gtk::VBox
 {
 public:
-	Control(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& glade_xml);
+	Control(BaseObjectType*                   cobject,
+	        const Glib::RefPtr<Gtk::Builder>& xml);
 	virtual ~Control();
 
 	virtual void init(ControlPanel* panel, SharedPtr<const Client::PortModel> pm);
@@ -73,7 +75,9 @@ protected:
 class SliderControl : public Control
 {
 public:
-	SliderControl(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& glade_xml);
+	SliderControl(BaseObjectType*                   cobject,
+	              const Glib::RefPtr<Gtk::Builder>& xml);
+
 	void init(ControlPanel* panel, SharedPtr<const Client::PortModel> pm);
 
 	void set_min(float val);
@@ -105,7 +109,8 @@ private:
 class ToggleControl : public Control
 {
 public:
-	ToggleControl(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& xml);
+	ToggleControl(BaseObjectType*                   cobject,
+	              const Glib::RefPtr<Gtk::Builder>& xml);
 
 	void init(ControlPanel* panel, SharedPtr<const Client::PortModel> pm);
 
@@ -123,7 +128,8 @@ private:
 class StringControl : public Control
 {
 public:
-	StringControl(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& xml);
+	StringControl(BaseObjectType*                   cobject,
+	              const Glib::RefPtr<Gtk::Builder>& xml);
 
 	void init(ControlPanel* panel, SharedPtr<const Client::PortModel> pm);
 
diff --git a/src/gui/GladeFactory.cpp b/src/gui/GladeFactory.cpp
deleted file mode 100644
index b13129db..00000000
--- a/src/gui/GladeFactory.cpp
+++ /dev/null
@@ -1,83 +0,0 @@
-/* This file is part of Ingen.
- * Copyright 2007-2011 David Robillard <http://drobilla.net>
- *
- * Ingen is free software; you can redistribute it and/or modify it under the
- * terms of the GNU General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option) any later
- * version.
- *
- * Ingen is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "GladeFactory.hpp"
-#include <fstream>
-#include "raul/log.hpp"
-#include "ingen-config.h"
-#include "shared/runtime_paths.hpp"
-
-using namespace std;
-using namespace Raul;
-
-namespace Ingen {
-namespace GUI {
-
-Glib::ustring GladeFactory::glade_filename = "";
-
-inline static bool
-is_readable(const std::string& filename)
-{
-	std::ifstream fs(filename.c_str());
-	const bool fail = fs.fail();
-	fs.close();
-	return !fail;
-}
-
-void
-GladeFactory::find_glade_file()
-{
-	// Try file in bundle (directory where executable resides)
-	glade_filename = Shared::bundle_file_path("ingen_gui.glade");
-	if (is_readable(glade_filename))
-		return;
-
-	// Try ENGINE_GLADE_PATH from the environment
-	const char* const env_path = getenv("INGEN_GLADE_PATH");
-	if (env_path && is_readable(env_path)) {
-		glade_filename = env_path;
-		return;
-	}
-
-	// Try the default system installed path
-	glade_filename = Shared::data_file_path("ingen_gui.glade");
-	if (is_readable(glade_filename))
-		return;
-
-	error << "[GladeFactory] Unable to find ingen_gui.glade in " << INGEN_DATA_DIR << endl;
-	throw std::runtime_error("Unable to find glade file");
-}
-
-Glib::RefPtr<Gnome::Glade::Xml>
-GladeFactory::new_glade_reference(const string& toplevel_widget)
-{
-	if (glade_filename.empty())
-		find_glade_file();
-
-	try {
-		if (toplevel_widget.empty())
-			return Gnome::Glade::Xml::create(glade_filename);
-		else
-			return Gnome::Glade::Xml::create(glade_filename, toplevel_widget.c_str());
-	} catch (const Gnome::Glade::XmlError& ex) {
-		error << "[GladeFactory] " << ex.what() << endl;
-		throw ex;
-	}
-}
-
-} // namespace GUI
-} // namespace Ingen
diff --git a/src/gui/GladeFactory.hpp b/src/gui/GladeFactory.hpp
deleted file mode 100644
index 9860c3f8..00000000
--- a/src/gui/GladeFactory.hpp
+++ /dev/null
@@ -1,45 +0,0 @@
-/* This file is part of Ingen.
- * Copyright 2007-2011 David Robillard <http://drobilla.net>
- *
- * Ingen is free software; you can redistribute it and/or modify it under the
- * terms of the GNU General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option) any later
- * version.
- *
- * Ingen is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef INGEN_GUI_GLADEFACTORY_HPP
-#define INGEN_GUI_GLADEFACTORY_HPP
-
-#include <string>
-#include <libglademm/xml.h>
-
-namespace Ingen {
-namespace GUI {
-
-/** Creates glade references, so various objects can create widgets.
- * Purely static.
- *
- * \ingroup GUI
- */
-class GladeFactory {
-public:
-	static Glib::RefPtr<Gnome::Glade::Xml>
-	new_glade_reference(const std::string& toplevel_widget = "");
-
-private:
-	static void find_glade_file();
-	static Glib::ustring glade_filename;
-};
-
-} // namespace GUI
-} // namespace Ingen
-
-#endif // INGEN_GUI_GLADEFACTORY_HPP
diff --git a/src/gui/LoadPatchWindow.cpp b/src/gui/LoadPatchWindow.cpp
index f002e36e..1b5e3c80 100644
--- a/src/gui/LoadPatchWindow.cpp
+++ b/src/gui/LoadPatchWindow.cpp
@@ -40,8 +40,8 @@ using namespace Raul;
 namespace Ingen {
 namespace GUI {
 
-LoadPatchWindow::LoadPatchWindow(BaseObjectType*                        cobject,
-                                 const Glib::RefPtr<Gnome::Glade::Xml>& xml)
+LoadPatchWindow::LoadPatchWindow(BaseObjectType*                   cobject,
+                                 const Glib::RefPtr<Gtk::Builder>& xml)
 	: Gtk::FileChooserDialog(cobject)
 	, _merge_ports(false)
 {
diff --git a/src/gui/LoadPatchWindow.hpp b/src/gui/LoadPatchWindow.hpp
index cc60ef80..cc8b906b 100644
--- a/src/gui/LoadPatchWindow.hpp
+++ b/src/gui/LoadPatchWindow.hpp
@@ -18,10 +18,12 @@
 #ifndef INGEN_GUI_LOADSUBPATCHWINDOW_HPP
 #define INGEN_GUI_LOADSUBPATCHWINDOW_HPP
 
-#include <libglademm/xml.h>
 #include <gtkmm.h>
+
 #include "raul/SharedPtr.hpp"
+
 #include "ingen/GraphObject.hpp"
+
 using namespace Ingen::Shared;
 
 namespace Ingen {
@@ -33,14 +35,15 @@ namespace GUI {
 
 /** 'Add Subpatch' window.
  *
- * Loaded by glade as a derived object.
+ * Loaded from XML as a derived object.
  *
  * \ingroup GUI
  */
 class LoadPatchWindow : public Gtk::FileChooserDialog
 {
 public:
-	LoadPatchWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& xml);
+	LoadPatchWindow(BaseObjectType*                   cobject,
+	                const Glib::RefPtr<Gtk::Builder>& xml);
 
 	void set_patch(SharedPtr<const PatchModel> patch);
 
diff --git a/src/gui/LoadPluginWindow.cpp b/src/gui/LoadPluginWindow.cpp
index b763c0ae..135f63f1 100644
--- a/src/gui/LoadPluginWindow.cpp
+++ b/src/gui/LoadPluginWindow.cpp
@@ -35,8 +35,8 @@ using namespace Raul;
 namespace Ingen {
 namespace GUI {
 
-LoadPluginWindow::LoadPluginWindow(BaseObjectType*                        cobject,
-                                   const Glib::RefPtr<Gnome::Glade::Xml>& xml)
+LoadPluginWindow::LoadPluginWindow(BaseObjectType*                   cobject,
+                                   const Glib::RefPtr<Gtk::Builder>& xml)
 	: Window(cobject)
 	, _name_offset(0)
 	, _has_shown(false)
diff --git a/src/gui/LoadPluginWindow.hpp b/src/gui/LoadPluginWindow.hpp
index 3ba9a590..c637db82 100644
--- a/src/gui/LoadPluginWindow.hpp
+++ b/src/gui/LoadPluginWindow.hpp
@@ -19,14 +19,16 @@
 #define INGEN_GUI_LOADPLUGINWINDOW_HPP
 
 #include <map>
-#include <libglademm/xml.h>
-#include <libglademm.h>
+
 #include <gtkmm.h>
+
 #include "raul/SharedPtr.hpp"
 #include "raul/Table.hpp"
+
 #include "ingen-config.h"
 #include "ingen/GraphObject.hpp"
 #include "client/ClientStore.hpp"
+
 #include "Window.hpp"
 
 using namespace Ingen::Shared;
@@ -41,14 +43,15 @@ namespace GUI {
 
 /** 'Load Plugin' window.
  *
- * Loaded by glade as a derived object.
+ * Loaded from XML as a derived object.
  *
  * \ingroup GUI
  */
 class LoadPluginWindow : public Window
 {
 public:
-	LoadPluginWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& xml);
+	LoadPluginWindow(BaseObjectType*                   cobject,
+	                 const Glib::RefPtr<Gtk::Builder>& xml);
 
 	void set_patch(SharedPtr<const PatchModel> patch);
 	void set_plugins(SharedPtr<const Client::ClientStore::Plugins> plugins);
diff --git a/src/gui/LoadRemotePatchWindow.cpp b/src/gui/LoadRemotePatchWindow.cpp
index 84b304da..0ca984b3 100644
--- a/src/gui/LoadRemotePatchWindow.cpp
+++ b/src/gui/LoadRemotePatchWindow.cpp
@@ -33,8 +33,8 @@ using namespace std;
 namespace Ingen {
 namespace GUI {
 
-LoadRemotePatchWindow::LoadRemotePatchWindow(BaseObjectType*                        cobject,
-                                             const Glib::RefPtr<Gnome::Glade::Xml>& xml)
+LoadRemotePatchWindow::LoadRemotePatchWindow(BaseObjectType*                   cobject,
+                                             const Glib::RefPtr<Gtk::Builder>& xml)
 	: Dialog(cobject)
 {
 	xml->get_widget("load_remote_patch_treeview", _treeview);
diff --git a/src/gui/LoadRemotePatchWindow.hpp b/src/gui/LoadRemotePatchWindow.hpp
index dd0bb116..b6f86892 100644
--- a/src/gui/LoadRemotePatchWindow.hpp
+++ b/src/gui/LoadRemotePatchWindow.hpp
@@ -18,11 +18,14 @@
 #ifndef INGEN_GUI_LOADREMOTEPATCHWINDOW_HPP
 #define INGEN_GUI_LOADREMOTEPATCHWINDOW_HPP
 
-#include <libglademm/xml.h>
 #include <gtkmm.h>
+
 #include "raul/SharedPtr.hpp"
+
 #include "ingen/GraphObject.hpp"
+
 #include "Window.hpp"
+
 using namespace Ingen::Shared;
 
 namespace Ingen {
@@ -55,8 +58,8 @@ public:
 class LoadRemotePatchWindow : public Dialog
 {
 public:
-	LoadRemotePatchWindow(BaseObjectType*                        cobject,
-	                      const Glib::RefPtr<Gnome::Glade::Xml>& xml);
+	LoadRemotePatchWindow(BaseObjectType*                   cobject,
+	                      const Glib::RefPtr<Gtk::Builder>& xml);
 
 	void set_patch(SharedPtr<const PatchModel> patch);
 
diff --git a/src/gui/MessagesWindow.cpp b/src/gui/MessagesWindow.cpp
index d335b4bb..4271fca6 100644
--- a/src/gui/MessagesWindow.cpp
+++ b/src/gui/MessagesWindow.cpp
@@ -22,12 +22,13 @@ namespace Ingen {
 namespace GUI {
 using std::string;
 
-MessagesWindow::MessagesWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& glade_xml)
+MessagesWindow::MessagesWindow(BaseObjectType*                   cobject,
+                               const Glib::RefPtr<Gtk::Builder>& xml)
 	: Window(cobject)
 {
-	glade_xml->get_widget("messages_textview", _textview);
-	glade_xml->get_widget("messages_clear_button", _clear_button);
-	glade_xml->get_widget("messages_close_button", _close_button);
+	xml->get_widget("messages_textview", _textview);
+	xml->get_widget("messages_clear_button", _clear_button);
+	xml->get_widget("messages_close_button", _close_button);
 
 	_clear_button->signal_clicked().connect(sigc::mem_fun(this, &MessagesWindow::clear_clicked));
 	_close_button->signal_clicked().connect(sigc::mem_fun(this, &Window::hide));
diff --git a/src/gui/MessagesWindow.hpp b/src/gui/MessagesWindow.hpp
index c0508f6b..4ef639a2 100644
--- a/src/gui/MessagesWindow.hpp
+++ b/src/gui/MessagesWindow.hpp
@@ -19,8 +19,9 @@
 #define INGEN_GUI_MESSAGESWINDOW_HPP
 
 #include <string>
+
 #include <gtkmm.h>
-#include <libglademm/xml.h>
+
 #include "Window.hpp"
 
 namespace Ingen {
@@ -28,15 +29,16 @@ namespace GUI {
 
 /** Messages Window.
  *
- * Loaded by libglade as a derived object.
- * This is shown when errors occur (ie during patch loading).
+ * Loaded from XML as a derived object.
+ * This is shown when errors occur (e.g. during patch loading).
  *
  * \ingroup GUI
  */
 class MessagesWindow : public Window
 {
 public:
-	MessagesWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& refGlade);
+	MessagesWindow(BaseObjectType*                   cobject,
+	               const Glib::RefPtr<Gtk::Builder>& xml);
 
 	void post(const std::string& str);
 
diff --git a/src/gui/NewSubpatchWindow.cpp b/src/gui/NewSubpatchWindow.cpp
index f2e2227a..4ea7c172 100644
--- a/src/gui/NewSubpatchWindow.cpp
+++ b/src/gui/NewSubpatchWindow.cpp
@@ -29,8 +29,8 @@ using namespace Raul;
 namespace Ingen {
 namespace GUI {
 
-NewSubpatchWindow::NewSubpatchWindow(BaseObjectType*                        cobject,
-                                     const Glib::RefPtr<Gnome::Glade::Xml>& xml)
+NewSubpatchWindow::NewSubpatchWindow(BaseObjectType*                   cobject,
+                                     const Glib::RefPtr<Gtk::Builder>& xml)
 	: Window(cobject)
 {
 	xml->get_widget("new_subpatch_name_entry", _name_entry);
diff --git a/src/gui/NewSubpatchWindow.hpp b/src/gui/NewSubpatchWindow.hpp
index 5da4c314..5e22a0d4 100644
--- a/src/gui/NewSubpatchWindow.hpp
+++ b/src/gui/NewSubpatchWindow.hpp
@@ -18,10 +18,12 @@
 #ifndef INGEN_GUI_NEWSUBPATCHWINDOW_HPP
 #define INGEN_GUI_NEWSUBPATCHWINDOW_HPP
 
-#include <libglademm/xml.h>
 #include <gtkmm.h>
+
 #include "raul/SharedPtr.hpp"
+
 #include "ingen/GraphObject.hpp"
+
 #include "Window.hpp"
 
 namespace Ingen {
@@ -35,15 +37,15 @@ namespace GUI {
 
 /** 'New Subpatch' window.
  *
- * Loaded by glade as a derived object.
+ * Loaded from XML as a derived object.
  *
  * \ingroup GUI
  */
 class NewSubpatchWindow : public Window
 {
 public:
-	NewSubpatchWindow(BaseObjectType*                        cobject,
-	                  const Glib::RefPtr<Gnome::Glade::Xml>& xml);
+	NewSubpatchWindow(BaseObjectType*                   cobject,
+	                  const Glib::RefPtr<Gtk::Builder>& xml);
 
 	void set_patch(SharedPtr<const PatchModel> patch);
 
diff --git a/src/gui/NodeControlWindow.cpp b/src/gui/NodeControlWindow.cpp
index ebee1ad3..a99de9a8 100644
--- a/src/gui/NodeControlWindow.cpp
+++ b/src/gui/NodeControlWindow.cpp
@@ -21,7 +21,7 @@
 #include "client/NodeModel.hpp"
 #include "App.hpp"
 #include "NodeControlWindow.hpp"
-#include "GladeFactory.hpp"
+#include "WidgetFactory.hpp"
 #include "Controls.hpp"
 #include "ControlPanel.hpp"
 #include "PatchWindow.hpp"
@@ -47,7 +47,7 @@ NodeControlWindow::NodeControlWindow(SharedPtr<const NodeModel> node,
 
 	set_title(_node->plugin_model()->human_name() + " - Ingen");
 
-	Glib::RefPtr<Gnome::Glade::Xml> xml = GladeFactory::new_glade_reference("warehouse_win");
+	Glib::RefPtr<Gtk::Builder> xml = WidgetFactory::create("warehouse_win");
 	xml->get_widget_derived("control_panel_vbox", _control_panel);
 
 	show_all_children();
diff --git a/src/gui/NodeControlWindow.hpp b/src/gui/NodeControlWindow.hpp
index 97ec7ba3..30fb0a40 100644
--- a/src/gui/NodeControlWindow.hpp
+++ b/src/gui/NodeControlWindow.hpp
@@ -19,9 +19,10 @@
 #define INGEN_GUI_NODECONTROLWINDOW_HPP
 
 #include <gtkmm.h>
-#include <libglademm.h>
 #include <sigc++/sigc++.h>
+
 #include "raul/SharedPtr.hpp"
+
 #include "Window.hpp"
 
 namespace Ingen { namespace Client {
diff --git a/src/gui/NodeMenu.cpp b/src/gui/NodeMenu.cpp
index 7da1c374..87ad5030 100644
--- a/src/gui/NodeMenu.cpp
+++ b/src/gui/NodeMenu.cpp
@@ -31,7 +31,8 @@ using namespace Ingen::Client;
 namespace Ingen {
 namespace GUI {
 
-NodeMenu::NodeMenu(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& xml)
+NodeMenu::NodeMenu(BaseObjectType*                   cobject,
+                   const Glib::RefPtr<Gtk::Builder>& xml)
 	: ObjectMenu(cobject, xml)
 	, _controls_menuitem(NULL)
 	, _presets_menu(NULL)
diff --git a/src/gui/NodeMenu.hpp b/src/gui/NodeMenu.hpp
index 5a10e021..78ad886f 100644
--- a/src/gui/NodeMenu.hpp
+++ b/src/gui/NodeMenu.hpp
@@ -36,7 +36,8 @@ namespace GUI {
 class NodeMenu : public ObjectMenu
 {
 public:
-	NodeMenu(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& xml);
+	NodeMenu(BaseObjectType*                   cobject,
+	         const Glib::RefPtr<Gtk::Builder>& xml);
 
 	void init(SharedPtr<const NodeModel> node);
 
diff --git a/src/gui/NodeModule.cpp b/src/gui/NodeModule.cpp
index e385c8ec..6e598b27 100644
--- a/src/gui/NodeModule.cpp
+++ b/src/gui/NodeModule.cpp
@@ -26,7 +26,7 @@
 #include "client/PluginModel.hpp"
 #include "client/PluginUI.hpp"
 #include "App.hpp"
-#include "GladeFactory.hpp"
+#include "WidgetFactory.hpp"
 #include "NodeControlWindow.hpp"
 #include "NodeModule.hpp"
 #include "PatchCanvas.hpp"
@@ -78,7 +78,7 @@ NodeModule::~NodeModule()
 void
 NodeModule::create_menu()
 {
-	Glib::RefPtr<Gnome::Glade::Xml> xml = GladeFactory::new_glade_reference();
+	Glib::RefPtr<Gtk::Builder> xml = WidgetFactory::create();
 	xml->get_widget_derived("object_menu", _menu);
 	_menu->init(_node);
 	_menu->signal_embed_gui.connect(
diff --git a/src/gui/ObjectMenu.cpp b/src/gui/ObjectMenu.cpp
index ac0dda5c..2991f2d1 100644
--- a/src/gui/ObjectMenu.cpp
+++ b/src/gui/ObjectMenu.cpp
@@ -29,7 +29,8 @@ using namespace Raul;
 namespace Ingen {
 namespace GUI {
 
-ObjectMenu::ObjectMenu(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& xml)
+ObjectMenu::ObjectMenu(BaseObjectType*                   cobject,
+                       const Glib::RefPtr<Gtk::Builder>& xml)
 	: Gtk::Menu(cobject)
 	, _polyphonic_menuitem(NULL)
 	, _disconnect_menuitem(NULL)
diff --git a/src/gui/ObjectMenu.hpp b/src/gui/ObjectMenu.hpp
index ffac870d..8bd5fc97 100644
--- a/src/gui/ObjectMenu.hpp
+++ b/src/gui/ObjectMenu.hpp
@@ -19,10 +19,13 @@
 #define INGEN_GUI_OBJECTMENU_HPP
 
 #include <string>
+
 #include <gtkmm.h>
-#include <libglademm/xml.h>
+
 #include "raul/SharedPtr.hpp"
+
 #include "client/ObjectModel.hpp"
+
 using Ingen::Client::ObjectModel;
 
 namespace Ingen {
@@ -39,7 +42,8 @@ class PatchCanvas;
 class ObjectMenu : public Gtk::Menu
 {
 public:
-	ObjectMenu(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& xml);
+	ObjectMenu(BaseObjectType*                   cobject,
+	           const Glib::RefPtr<Gtk::Builder>& xml);
 
 	void init(SharedPtr<const ObjectModel> object);
 
diff --git a/src/gui/PatchCanvas.cpp b/src/gui/PatchCanvas.cpp
index 99110eb6..0a0adecd 100644
--- a/src/gui/PatchCanvas.cpp
+++ b/src/gui/PatchCanvas.cpp
@@ -42,7 +42,7 @@
 #include "Connection.hpp"
 #include "NodeModule.hpp"
 #include "SubpatchModule.hpp"
-#include "GladeFactory.hpp"
+#include "WidgetFactory.hpp"
 #include "WindowFactory.hpp"
 #include "ThreadedLoader.hpp"
 #include "ingen-config.h"
@@ -72,7 +72,7 @@ PatchCanvas::PatchCanvas(SharedPtr<const PatchModel> patch, int width, int heigh
 	, _human_names(true)
 	, _show_port_names(true)
 {
-	Glib::RefPtr<Gnome::Glade::Xml> xml = GladeFactory::new_glade_reference();
+	Glib::RefPtr<Gtk::Builder> xml = WidgetFactory::create();
 	xml->get_widget("canvas_menu", _menu);
 
 	xml->get_widget("canvas_menu_add_audio_input", _menu_add_audio_input);
diff --git a/src/gui/PatchPortModule.cpp b/src/gui/PatchPortModule.cpp
index b491e249..224a8f7e 100644
--- a/src/gui/PatchPortModule.cpp
+++ b/src/gui/PatchPortModule.cpp
@@ -24,7 +24,7 @@
 #include "client/NodeModel.hpp"
 #include "App.hpp"
 #include "Configuration.hpp"
-#include "GladeFactory.hpp"
+#include "WidgetFactory.hpp"
 #include "PatchCanvas.hpp"
 #include "PatchWindow.hpp"
 #include "Port.hpp"
@@ -77,7 +77,7 @@ PatchPortModule::create(boost::shared_ptr<PatchCanvas> canvas,
 void
 PatchPortModule::create_menu()
 {
-	Glib::RefPtr<Gnome::Glade::Xml> xml = GladeFactory::new_glade_reference();
+	Glib::RefPtr<Gtk::Builder> xml = WidgetFactory::create();
 	xml->get_widget_derived("object_menu", _menu);
 	_menu->init(_model, true);
 
diff --git a/src/gui/PatchTreeWindow.cpp b/src/gui/PatchTreeWindow.cpp
index f4fb69b6..0e19590f 100644
--- a/src/gui/PatchTreeWindow.cpp
+++ b/src/gui/PatchTreeWindow.cpp
@@ -34,8 +34,8 @@ using namespace Raul;
 namespace Ingen {
 namespace GUI {
 
-PatchTreeWindow::PatchTreeWindow(BaseObjectType*                        cobject,
-                                 const Glib::RefPtr<Gnome::Glade::Xml>& xml)
+PatchTreeWindow::PatchTreeWindow(BaseObjectType*                   cobject,
+                                 const Glib::RefPtr<Gtk::Builder>& xml)
 	: Window(cobject)
 	, _enable_signal(true)
 {
diff --git a/src/gui/PatchTreeWindow.hpp b/src/gui/PatchTreeWindow.hpp
index aed181b5..861913c2 100644
--- a/src/gui/PatchTreeWindow.hpp
+++ b/src/gui/PatchTreeWindow.hpp
@@ -19,7 +19,7 @@
 #define INGEN_GUI_PATCHTREEWINDOW_HPP
 
 #include <gtkmm.h>
-#include <libglademm.h>
+
 #include "Window.hpp"
 
 namespace Raul { class Path; }
@@ -40,7 +40,8 @@ class PatchTreeView;
 class PatchTreeWindow : public Window
 {
 public:
-	PatchTreeWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& refGlade);
+	PatchTreeWindow(BaseObjectType*                   cobject,
+	                const Glib::RefPtr<Gtk::Builder>& xml);
 
 	void init(Client::ClientStore& store);
 
@@ -85,7 +86,8 @@ protected:
 class PatchTreeView : public Gtk::TreeView
 {
 public:
-	PatchTreeView(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& xml)
+	PatchTreeView(BaseObjectType*                   cobject,
+	              const Glib::RefPtr<Gtk::Builder>& xml)
 		: Gtk::TreeView(cobject)
 		, _window(NULL)
 	{}
diff --git a/src/gui/PatchView.cpp b/src/gui/PatchView.cpp
index 4df3d4b7..04d6cf9c 100644
--- a/src/gui/PatchView.cpp
+++ b/src/gui/PatchView.cpp
@@ -28,7 +28,7 @@
 #include "NewSubpatchWindow.hpp"
 #include "NodeControlWindow.hpp"
 #include "PatchTreeWindow.hpp"
-#include "GladeFactory.hpp"
+#include "WidgetFactory.hpp"
 
 using namespace std;
 using namespace Raul;
@@ -36,8 +36,8 @@ using namespace Raul;
 namespace Ingen {
 namespace GUI {
 
-PatchView::PatchView(BaseObjectType*                        cobject,
-                     const Glib::RefPtr<Gnome::Glade::Xml>& xml)
+PatchView::PatchView(BaseObjectType*                   cobject,
+                     const Glib::RefPtr<Gtk::Builder>& xml)
 	: Gtk::Box(cobject)
 	, _breadcrumb_container(NULL)
 	, _enable_signal(true)
@@ -117,7 +117,7 @@ PatchView::set_patch(SharedPtr<const PatchModel> patch)
 SharedPtr<PatchView>
 PatchView::create(SharedPtr<const PatchModel> patch)
 {
-	const Glib::RefPtr<Gnome::Glade::Xml>& xml = GladeFactory::new_glade_reference("patch_view_box");
+	const Glib::RefPtr<Gtk::Builder>& xml = WidgetFactory::create("patch_view_box");
 	PatchView* result = NULL;
 	xml->get_widget_derived("patch_view_box", result);
 	assert(result);
diff --git a/src/gui/PatchView.hpp b/src/gui/PatchView.hpp
index f637ce5d..0d3e0fab 100644
--- a/src/gui/PatchView.hpp
+++ b/src/gui/PatchView.hpp
@@ -19,10 +19,10 @@
 #define INGEN_GUI_PATCHVIEW_HPP
 
 #include <string>
+
 #include <gtkmm.h>
-#include <libglademm/xml.h>
-#include <libglademm.h>
 #include <libgnomecanvasmm.h>
+
 #include "raul/SharedPtr.hpp"
 
 namespace Raul { class Atom; }
@@ -54,8 +54,8 @@ class SubpatchModule;
 class PatchView : public Gtk::Box
 {
 public:
-	PatchView(BaseObjectType*                        cobject,
-	          const Glib::RefPtr<Gnome::Glade::Xml>& glade_xml);
+	PatchView(BaseObjectType*                   cobject,
+	          const Glib::RefPtr<Gtk::Builder>& xml);
 
 	SharedPtr<PatchCanvas>       canvas()               const { return _canvas; }
 	SharedPtr<const PatchModel>  patch()                const { return _patch; }
diff --git a/src/gui/PatchWindow.cpp b/src/gui/PatchWindow.cpp
index 844cac81..0bbeddfa 100644
--- a/src/gui/PatchWindow.cpp
+++ b/src/gui/PatchWindow.cpp
@@ -51,7 +51,8 @@ static const int STATUS_CONTEXT_ENGINE = 0;
 static const int STATUS_CONTEXT_PATCH = 1;
 static const int STATUS_CONTEXT_HOVER = 2;
 
-PatchWindow::PatchWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& xml)
+PatchWindow::PatchWindow(BaseObjectType*                   cobject,
+                         const Glib::RefPtr<Gtk::Builder>& xml)
 	: Window(cobject)
 	, _enable_signal(true)
 	, _position_stored(false)
diff --git a/src/gui/PatchWindow.hpp b/src/gui/PatchWindow.hpp
index 420359a0..65725e06 100644
--- a/src/gui/PatchWindow.hpp
+++ b/src/gui/PatchWindow.hpp
@@ -19,9 +19,9 @@
 #define INGEN_GUI_PATCHWINDOW_HPP
 
 #include <gtkmm.h>
-#include <libglademm/xml.h>
-#include <libglademm.h>
+
 #include "raul/SharedPtr.hpp"
+
 #include "Window.hpp"
 
 namespace Raul { class Atom; class Path; }
@@ -53,7 +53,8 @@ class SubpatchModule;
 class PatchWindow : public Window
 {
 public:
-	PatchWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& glade_xml);
+	PatchWindow(BaseObjectType*                   cobject,
+	            const Glib::RefPtr<Gtk::Builder>& xml);
 	~PatchWindow();
 
 	Gtk::TextView* doc_textview() { return _doc_textview; }
diff --git a/src/gui/Port.cpp b/src/gui/Port.cpp
index 0ebc3418..115afefc 100644
--- a/src/gui/Port.cpp
+++ b/src/gui/Port.cpp
@@ -24,7 +24,7 @@
 #include "client/PortModel.hpp"
 #include "App.hpp"
 #include "Configuration.hpp"
-#include "GladeFactory.hpp"
+#include "WidgetFactory.hpp"
 #include "PatchWindow.hpp"
 #include "Port.hpp"
 #include "PortMenu.hpp"
@@ -126,7 +126,7 @@ void
 Port::create_menu()
 {
 	PortMenu* menu = NULL;
-	Glib::RefPtr<Gnome::Glade::Xml> xml = GladeFactory::new_glade_reference();
+	Glib::RefPtr<Gtk::Builder> xml = WidgetFactory::create();
 	xml->get_widget_derived("object_menu", menu);
 	menu->init(model(), _flipped);
 	set_menu(menu);
diff --git a/src/gui/PortMenu.cpp b/src/gui/PortMenu.cpp
index 7d1e765b..a5d00a3e 100644
--- a/src/gui/PortMenu.cpp
+++ b/src/gui/PortMenu.cpp
@@ -29,8 +29,8 @@
 namespace Ingen {
 namespace GUI {
 
-PortMenu::PortMenu(BaseObjectType*                        cobject,
-                   const Glib::RefPtr<Gnome::Glade::Xml>& xml)
+PortMenu::PortMenu(BaseObjectType*                   cobject,
+                   const Glib::RefPtr<Gtk::Builder>& xml)
 	: ObjectMenu(cobject, xml)
 	, _patch_port(NULL)
 {
diff --git a/src/gui/PortMenu.hpp b/src/gui/PortMenu.hpp
index 2eec5e02..ed06f571 100644
--- a/src/gui/PortMenu.hpp
+++ b/src/gui/PortMenu.hpp
@@ -36,8 +36,8 @@ namespace GUI {
 class PortMenu : public ObjectMenu
 {
 public:
-	PortMenu(BaseObjectType*                        cobject,
-	         const Glib::RefPtr<Gnome::Glade::Xml>& xml);
+	PortMenu(BaseObjectType*                   cobject,
+	         const Glib::RefPtr<Gtk::Builder>& xml);
 
 	void init(SharedPtr<const PortModel> port, bool patch_port=false);
 
diff --git a/src/gui/PortPropertiesWindow.cpp b/src/gui/PortPropertiesWindow.cpp
index 2d317456..cdc4c17a 100644
--- a/src/gui/PortPropertiesWindow.cpp
+++ b/src/gui/PortPropertiesWindow.cpp
@@ -32,8 +32,8 @@ namespace Ingen {
 using namespace Client;
 namespace GUI {
 
-PortPropertiesWindow::PortPropertiesWindow(BaseObjectType*                        cobject,
-                                           const Glib::RefPtr<Gnome::Glade::Xml>& xml)
+PortPropertiesWindow::PortPropertiesWindow(BaseObjectType*                   cobject,
+                                           const Glib::RefPtr<Gtk::Builder>& xml)
 	: Window(cobject)
 	, _initial_min(0.0f)
 	, _initial_max(1.0f)
diff --git a/src/gui/PortPropertiesWindow.hpp b/src/gui/PortPropertiesWindow.hpp
index 3358e1fb..74c26e7b 100644
--- a/src/gui/PortPropertiesWindow.hpp
+++ b/src/gui/PortPropertiesWindow.hpp
@@ -19,9 +19,11 @@
 #define INGEN_GUI_PORTPROPERTIESWINDOW_HPP
 
 #include <gtkmm.h>
-#include <libglademm.h>
+
 #include "raul/SharedPtr.hpp"
+
 #include "client/PortModel.hpp"
+
 #include "Window.hpp"
 
 namespace Ingen {
@@ -29,15 +31,15 @@ namespace GUI {
 
 /** Port properties window.
  *
- * Loaded by libglade as a derived object.
+ * Loaded from XML as a derived object.
  *
  * \ingroup GUI
  */
 class PortPropertiesWindow : public Window
 {
 public:
-	PortPropertiesWindow(BaseObjectType*                        cobject,
-	                     const Glib::RefPtr<Gnome::Glade::Xml>& refGlade);
+	PortPropertiesWindow(BaseObjectType*                   cobject,
+	                     const Glib::RefPtr<Gtk::Builder>& xml);
 
 	void present(SharedPtr<const Client::PortModel> port_model);
 
diff --git a/src/gui/PropertiesWindow.cpp b/src/gui/PropertiesWindow.cpp
index 26436022..2886b9a9 100644
--- a/src/gui/PropertiesWindow.cpp
+++ b/src/gui/PropertiesWindow.cpp
@@ -32,16 +32,16 @@ using namespace Raul;
 namespace Ingen {
 namespace GUI {
 
-PropertiesWindow::PropertiesWindow(BaseObjectType*                        cobject,
-                                   const Glib::RefPtr<Gnome::Glade::Xml>& glade_xml)
+PropertiesWindow::PropertiesWindow(BaseObjectType*                   cobject,
+                                   const Glib::RefPtr<Gtk::Builder>& xml)
 	: Window(cobject)
 {
-	glade_xml->get_widget("properties_vbox", _vbox);
-	glade_xml->get_widget("properties_scrolledwindow", _scrolledwindow);
-	glade_xml->get_widget("properties_table", _table);
-	glade_xml->get_widget("properties_cancel_button", _cancel_button);
-	glade_xml->get_widget("properties_apply_button", _apply_button);
-	glade_xml->get_widget("properties_ok_button", _ok_button);
+	xml->get_widget("properties_vbox", _vbox);
+	xml->get_widget("properties_scrolledwindow", _scrolledwindow);
+	xml->get_widget("properties_table", _table);
+	xml->get_widget("properties_cancel_button", _cancel_button);
+	xml->get_widget("properties_apply_button", _apply_button);
+	xml->get_widget("properties_ok_button", _ok_button);
 
 	_type_choices = Gtk::ListStore::create(_type_cols);
 	for (int i = Raul::Atom::INT; i <= Raul::Atom::BLOB; ++i) {
diff --git a/src/gui/PropertiesWindow.hpp b/src/gui/PropertiesWindow.hpp
index cdde7495..e8e48fc7 100644
--- a/src/gui/PropertiesWindow.hpp
+++ b/src/gui/PropertiesWindow.hpp
@@ -19,9 +19,11 @@
 #define INGEN_GUI_PROPERTIES_WINDOW_HPP
 
 #include <gtkmm.h>
-#include <libglademm.h>
+
 #include "raul/SharedPtr.hpp"
+
 #include "client/NodeModel.hpp"
+
 #include "Window.hpp"
 
 using namespace Ingen::Client;
@@ -31,15 +33,15 @@ namespace GUI {
 
 /** Object properties window.
  *
- * Loaded by libglade as a derived object.
+ * Loaded from XML as a derived object.
  *
  * \ingroup GUI
  */
 class PropertiesWindow : public Window
 {
 public:
-	PropertiesWindow(BaseObjectType*                        cobject,
-	                 const Glib::RefPtr<Gnome::Glade::Xml>& refGlade);
+	PropertiesWindow(BaseObjectType*                   cobject,
+	                 const Glib::RefPtr<Gtk::Builder>& xml);
 
 	void present(SharedPtr<const ObjectModel> model);
 	void set_object(SharedPtr<const ObjectModel> model);
diff --git a/src/gui/RenameWindow.cpp b/src/gui/RenameWindow.cpp
index 0ca8b7d0..65230c70 100644
--- a/src/gui/RenameWindow.cpp
+++ b/src/gui/RenameWindow.cpp
@@ -30,15 +30,15 @@ using namespace Raul;
 namespace Ingen {
 namespace GUI {
 
-RenameWindow::RenameWindow(BaseObjectType*                        cobject,
-                           const Glib::RefPtr<Gnome::Glade::Xml>& glade_xml)
+RenameWindow::RenameWindow(BaseObjectType*                   cobject,
+                           const Glib::RefPtr<Gtk::Builder>& xml)
 	: Window(cobject)
 {
-	glade_xml->get_widget("rename_symbol_entry", _symbol_entry);
-	glade_xml->get_widget("rename_label_entry", _label_entry);
-	glade_xml->get_widget("rename_message_label", _message_label);
-	glade_xml->get_widget("rename_cancel_button", _cancel_button);
-	glade_xml->get_widget("rename_ok_button", _ok_button);
+	xml->get_widget("rename_symbol_entry", _symbol_entry);
+	xml->get_widget("rename_label_entry", _label_entry);
+	xml->get_widget("rename_message_label", _message_label);
+	xml->get_widget("rename_cancel_button", _cancel_button);
+	xml->get_widget("rename_ok_button", _ok_button);
 
 	_symbol_entry->signal_changed().connect(
 		sigc::mem_fun(this, &RenameWindow::values_changed));
diff --git a/src/gui/RenameWindow.hpp b/src/gui/RenameWindow.hpp
index ede09f4b..d7a09e6d 100644
--- a/src/gui/RenameWindow.hpp
+++ b/src/gui/RenameWindow.hpp
@@ -19,9 +19,11 @@
 #define INGEN_GUI_RENAMEWINDOW_HPP
 
 #include <gtkmm.h>
-#include <libglademm.h>
+
 #include "raul/SharedPtr.hpp"
+
 #include "client/ObjectModel.hpp"
+
 #include "Window.hpp"
 
 using Ingen::Client::ObjectModel;
@@ -36,8 +38,8 @@ namespace GUI {
 class RenameWindow : public Window
 {
 public:
-	RenameWindow(BaseObjectType*                        cobject,
-	             const Glib::RefPtr<Gnome::Glade::Xml>& refGlade);
+	RenameWindow(BaseObjectType*                   cobject,
+	             const Glib::RefPtr<Gtk::Builder>& xml);
 
 	void present(SharedPtr<const ObjectModel> object);
 
diff --git a/src/gui/UploadPatchWindow.cpp b/src/gui/UploadPatchWindow.cpp
index 326aa968..ef014f31 100644
--- a/src/gui/UploadPatchWindow.cpp
+++ b/src/gui/UploadPatchWindow.cpp
@@ -40,7 +40,8 @@ using namespace std;
 namespace Ingen {
 namespace GUI {
 
-UploadPatchWindow::UploadPatchWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& xml)
+UploadPatchWindow::UploadPatchWindow(BaseObjectType*                   cobject,
+                                     const Glib::RefPtr<Gtk::Builder>& xml)
 	: Dialog(cobject)
 	, _thread(NULL)
 	, _progress_pct(0)
diff --git a/src/gui/UploadPatchWindow.hpp b/src/gui/UploadPatchWindow.hpp
index c1a26504..f0dce373 100644
--- a/src/gui/UploadPatchWindow.hpp
+++ b/src/gui/UploadPatchWindow.hpp
@@ -19,13 +19,17 @@
 #define INGEN_GUI_UPLOADPATCHWINDOW_HPP
 
 #include <sstream>
-#include <libglademm/xml.h>
-#include <gtkmm.h>
+
 #include <curl/curl.h>
+
+#include <gtkmm.h>
+
 #include "raul/SharedPtr.hpp"
 #include "raul/Thread.hpp"
 #include "raul/AtomicInt.hpp"
+
 #include "client/PluginModel.hpp"
+
 #include "Window.hpp"
 
 namespace Ingen {
@@ -64,7 +68,8 @@ private:
 class UploadPatchWindow : public Dialog
 {
 public:
-	UploadPatchWindow(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& xml);
+	UploadPatchWindow(BaseObjectType*                   cobject,
+	                  const Glib::RefPtr<Gtk::Builder>& xml);
 
 	void present(SharedPtr<PatchModel> patch);
 
diff --git a/src/gui/WidgetFactory.cpp b/src/gui/WidgetFactory.cpp
new file mode 100644
index 00000000..9579a1e1
--- /dev/null
+++ b/src/gui/WidgetFactory.cpp
@@ -0,0 +1,84 @@
+/* This file is part of Ingen.
+ * Copyright 2007-2011 David Robillard <http://drobilla.net>
+ *
+ * Ingen is free software; you can redistribute it and/or modify it under the
+ * terms of the GNU General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+ *
+ * Ingen is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "WidgetFactory.hpp"
+#include <fstream>
+#include "raul/log.hpp"
+#include "ingen-config.h"
+#include "shared/runtime_paths.hpp"
+
+using namespace std;
+using namespace Raul;
+
+namespace Ingen {
+namespace GUI {
+
+Glib::ustring WidgetFactory::ui_filename = "";
+
+inline static bool
+is_readable(const std::string& filename)
+{
+	std::ifstream fs(filename.c_str());
+	const bool fail = fs.fail();
+	fs.close();
+	return !fail;
+}
+
+void
+WidgetFactory::find_ui_file()
+{
+	// Try file in bundle (directory where executable resides)
+	ui_filename = Shared::bundle_file_path("ingen_gui.ui");
+	if (is_readable(ui_filename))
+		return;
+
+	// Try ENGINE_UI_PATH from the environment
+	const char* const env_path = getenv("INGEN_UI_PATH");
+	if (env_path && is_readable(env_path)) {
+		ui_filename = env_path;
+		return;
+	}
+
+	// Try the default system installed path
+	ui_filename = Shared::data_file_path("ingen_gui.ui");
+	if (is_readable(ui_filename))
+		return;
+
+	error << "[WidgetFactory] Unable to find ingen_gui.ui in "
+	      << INGEN_DATA_DIR << endl;
+	throw std::runtime_error("Unable to find UI file");
+}
+
+Glib::RefPtr<Gtk::Builder>
+WidgetFactory::create(const string& toplevel_widget)
+{
+	if (ui_filename.empty())
+		find_ui_file();
+
+	try {
+		if (toplevel_widget.empty())
+			return Gtk::Builder::create_from_file(ui_filename);
+		else
+			return Gtk::Builder::create_from_file(ui_filename, toplevel_widget.c_str());
+	} catch (const Gtk::BuilderError& ex) {
+		error << "[WidgetFactory] " << ex.what() << endl;
+		throw ex;
+	}
+}
+
+} // namespace GUI
+} // namespace Ingen
diff --git a/src/gui/WidgetFactory.hpp b/src/gui/WidgetFactory.hpp
new file mode 100644
index 00000000..43525246
--- /dev/null
+++ b/src/gui/WidgetFactory.hpp
@@ -0,0 +1,46 @@
+/* This file is part of Ingen.
+ * Copyright 2007-2011 David Robillard <http://drobilla.net>
+ *
+ * Ingen is free software; you can redistribute it and/or modify it under the
+ * terms of the GNU General Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option) any later
+ * version.
+ *
+ * Ingen is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef INGEN_GUI_GLADEFACTORY_HPP
+#define INGEN_GUI_GLADEFACTORY_HPP
+
+#include <string>
+
+#include <gtkmm.h>
+
+namespace Ingen {
+namespace GUI {
+
+/** Loads widgets from an XML description.
+ * Purely static.
+ *
+ * \ingroup GUI
+ */
+class WidgetFactory {
+public:
+	static Glib::RefPtr<Gtk::Builder>
+	create(const std::string& toplevel_widget="");
+
+private:
+	static void find_ui_file();
+	static Glib::ustring ui_filename;
+};
+
+} // namespace GUI
+} // namespace Ingen
+
+#endif // INGEN_GUI_GLADEFACTORY_HPP
diff --git a/src/gui/Window.hpp b/src/gui/Window.hpp
index 59cb8229..cbe72fbb 100644
--- a/src/gui/Window.hpp
+++ b/src/gui/Window.hpp
@@ -19,7 +19,6 @@
 #define INGEN_GUI_WINDOW_HPP
 
 #include <gtkmm.h>
-#include <libglademm.h>
 
 namespace Raul { class Path; }
 
diff --git a/src/gui/WindowFactory.cpp b/src/gui/WindowFactory.cpp
index 56f4dd74..99cf9d1d 100644
--- a/src/gui/WindowFactory.cpp
+++ b/src/gui/WindowFactory.cpp
@@ -19,7 +19,7 @@
 #include "ingen-config.h"
 #include "client/PatchModel.hpp"
 #include "App.hpp"
-#include "GladeFactory.hpp"
+#include "WidgetFactory.hpp"
 #include "LoadPatchWindow.hpp"
 #include "LoadPluginWindow.hpp"
 #include "LoadRemotePatchWindow.hpp"
@@ -47,7 +47,7 @@ WindowFactory::WindowFactory()
 	, _new_subpatch_win(NULL)
 	, _properties_win(NULL)
 {
-	Glib::RefPtr<Gnome::Glade::Xml> xml = GladeFactory::new_glade_reference();
+	Glib::RefPtr<Gtk::Builder> xml = WidgetFactory::create();
 
 	xml->get_widget_derived("load_plugin_win", _load_plugin_win);
 	xml->get_widget_derived("load_patch_win", _load_patch_win);
@@ -169,7 +169,7 @@ WindowFactory::new_patch_window(SharedPtr<const PatchModel> patch,
 {
 	assert( !view || view->patch() == patch);
 
-	Glib::RefPtr<Gnome::Glade::Xml> xml = GladeFactory::new_glade_reference("patch_win");
+	Glib::RefPtr<Gtk::Builder> xml = WidgetFactory::create("patch_win");
 
 	PatchWindow* win = NULL;
 	xml->get_widget_derived("patch_win", win);
diff --git a/src/gui/ingen_gui.glade b/src/gui/ingen_gui.glade
deleted file mode 100644
index ef691f35..00000000
--- a/src/gui/ingen_gui.glade
+++ /dev/null
@@ -1,3076 +0,0 @@
-<?xml version="1.0"?>
-<glade-interface>
-  <!-- interface-requires gtk+ 2.16 -->
-  <!-- interface-naming-policy toplevel-contextual -->
-  <widget class="GtkWindow" id="patch_win">
-    <property name="title" translatable="yes">Ingen</property>
-    <property name="default_width">776</property>
-    <property name="default_height">480</property>
-    <child>
-      <widget class="GtkVBox" id="patch_win_vbox">
-        <property name="visible">True</property>
-        <property name="orientation">vertical</property>
-        <child>
-          <widget class="GtkMenuBar" id="menubar">
-            <property name="visible">True</property>
-            <child>
-              <widget class="GtkMenuItem" id="patch_file_menu">
-                <property name="visible">True</property>
-                <property name="label" translatable="yes">_File</property>
-                <property name="use_underline">True</property>
-                <child>
-                  <widget class="GtkMenu" id="patch_file_menu_menu">
-                    <child>
-                      <widget class="GtkImageMenuItem" id="patch_import_menuitem">
-                        <property name="label">_Import...</property>
-                        <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">Load a patch into the current patch (merge with existing contents).</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">False</property>
-                        <signal name="activate" handler="on_patch_import_menuitem_activate"/>
-                        <accelerator key="I" signal="activate" modifiers="GDK_CONTROL_MASK"/>
-                        <child internal-child="image">
-                          <widget class="GtkImage" id="image1">
-                            <property name="visible">True</property>
-                            <property name="stock">gtk-open</property>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="patch_import_location_menuitem">
-                        <property name="label">Import _Location...</property>
-                        <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">Import a patch from a URI</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">False</property>
-                        <signal name="activate" handler="on_import_location1_activate"/>
-                        <accelerator key="L" signal="activate" modifiers="GDK_CONTROL_MASK"/>
-                        <child internal-child="image">
-                          <widget class="GtkImage" id="image2">
-                            <property name="visible">True</property>
-                            <property name="stock">gtk-open</property>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkSeparatorMenuItem" id="separator9">
-                        <property name="visible">True</property>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="patch_save_menuitem">
-                        <property name="label">gtk-save</property>
-                        <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">Save this patch</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                        <signal name="activate" handler="on_file_save_patch_menuitem_activate"/>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="patch_save_as_menuitem">
-                        <property name="label">Save _As...</property>
-                        <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">Save this patch to a specific file name</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">False</property>
-                        <signal name="activate" handler="on_patch_save_as_menuitem_activate"/>
-                        <accelerator key="S" signal="activate" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK"/>
-                        <child internal-child="image">
-                          <widget class="GtkImage" id="image3">
-                            <property name="visible">True</property>
-                            <property name="stock">gtk-save-as</property>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="patch_upload_menuitem">
-                        <property name="label">_Upload...</property>
-                        <property name="visible">True</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">False</property>
-                        <signal name="activate" handler="on_patch_upload_menuitem_activate"/>
-                        <accelerator key="U" signal="activate" modifiers="GDK_CONTROL_MASK"/>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="patch_draw_menuitem">
-                        <property name="label">_Draw...</property>
-                        <property name="visible">True</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">False</property>
-                        <signal name="activate" handler="on_patch_draw_menuitem_activate"/>
-                        <accelerator key="D" signal="activate" modifiers="GDK_CONTROL_MASK"/>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkSeparatorMenuItem" id="separator11">
-                        <property name="visible">True</property>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="patch_close_menuitem">
-                        <property name="label">gtk-close</property>
-                        <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">Close this window (patch will not be destroyed)</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                        <signal name="activate" handler="on_patch_file_close_menuitem_activate"/>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkSeparatorMenuItem" id="separator6">
-                        <property name="visible">True</property>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="patch_quit_menuitem">
-                        <property name="label">gtk-quit</property>
-                        <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">Quit GUI (engine may continue running)</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                        <signal name="activate" handler="on_patch_file_quit_nokill_menuitem_activate"/>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkMenuItem" id="edit2">
-                <property name="visible">True</property>
-                <property name="label" translatable="yes">_Edit</property>
-                <property name="use_underline">True</property>
-                <child>
-                  <widget class="GtkMenu" id="edit2_menu">
-                    <child>
-                      <widget class="GtkCheckMenuItem" id="patch_edit_controls_menuitem">
-                        <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">Enable editing of connections and dragging of nodes (disable to manipulate controls)</property>
-                        <property name="label" translatable="yes">_Edit connections</property>
-                        <property name="use_underline">True</property>
-                        <property name="active">True</property>
-                        <accelerator key="e" signal="activate"/>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkSeparatorMenuItem" id="menuitem4">
-                        <property name="visible">True</property>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="patch_cut_menuitem">
-                        <property name="label">gtk-cut</property>
-                        <property name="visible">True</property>
-                        <property name="sensitive">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                        <signal name="activate" handler="on_patch_cut_menuitem_activate"/>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="patch_copy_menuitem">
-                        <property name="label">gtk-copy</property>
-                        <property name="visible">True</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                        <signal name="activate" handler="on_patch_copy_menuitem_activate"/>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="patch_paste_menuitem">
-                        <property name="label">gtk-paste</property>
-                        <property name="visible">True</property>
-                        <property name="sensitive">False</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                        <signal name="activate" handler="on_patch_paste_menuitem_activate"/>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="patch_delete_menuitem">
-                        <property name="label">gtk-delete</property>
-                        <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">Delete the selected object(s)</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                        <signal name="activate" handler="on_patch_delete_menuitem_activate"/>
-                        <accelerator key="Delete" signal="activate"/>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="patch_select_all_menuitem">
-                        <property name="label">gtk-select-all</property>
-                        <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">Select all objects in a patch</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                        <signal name="activate" handler="on_patch_select_all_menuitem_activate"/>
-                        <accelerator key="A" signal="activate" modifiers="GDK_CONTROL_MASK"/>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkSeparatorMenuItem" id="menuitem1">
-                        <property name="visible">True</property>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="patch_arrange_menuitem">
-                        <property name="label">Arrange</property>
-                        <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">Automatically arrange canvas</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">False</property>
-                        <accelerator key="G" signal="activate" modifiers="GDK_CONTROL_MASK"/>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkSeparatorMenuItem" id="menuitem2">
-                        <property name="visible">True</property>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="patch_view_control_window_menuitem">
-                        <property name="label">C_ontrols...</property>
-                        <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">View/Edit controls for this patch</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">False</property>
-                        <signal name="activate" handler="on_patch_view_control_window_menuitem_activate"/>
-                        <accelerator key="O" signal="activate" modifiers="GDK_CONTROL_MASK"/>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="patch_properties_menuitem">
-                        <property name="label">gtk-properties</property>
-                        <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">View/Edit properties for this patch</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                        <signal name="activate" handler="on_patch_properties_menuitem_activate"/>
-                        <accelerator key="P" signal="activate" modifiers="GDK_CONTROL_MASK"/>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkMenuItem" id="patch_patch_menu">
-                <property name="visible">True</property>
-                <property name="label" translatable="yes">_View</property>
-                <property name="use_underline">True</property>
-                <child>
-                  <widget class="GtkMenu" id="patch_patch_menu_menu">
-                    <child>
-                      <widget class="GtkCheckMenuItem" id="patch_human_names_menuitem">
-                        <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">Show human readable names instead of identifiers</property>
-                        <property name="label" translatable="yes">_Human names</property>
-                        <property name="use_underline">True</property>
-                        <property name="active">True</property>
-                        <accelerator key="H" signal="activate" modifiers="GDK_CONTROL_MASK"/>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkCheckMenuItem" id="patch_show_port_names_menuitem">
-                        <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">Show labels on ports</property>
-                        <property name="label" translatable="yes">Port _Names</property>
-                        <property name="use_underline">True</property>
-                        <property name="active">True</property>
-                        <accelerator key="n" signal="activate" modifiers="GDK_CONTROL_MASK"/>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkCheckMenuItem" id="patch_status_bar_menuitem">
-                        <property name="visible">True</property>
-                        <property name="label" translatable="yes">_Status Bar</property>
-                        <property name="use_underline">True</property>
-                        <property name="active">True</property>
-                        <accelerator key="b" signal="activate" modifiers="GDK_CONTROL_MASK"/>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkSeparatorMenuItem" id="&lt;separator&gt;">
-                        <property name="visible">True</property>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="patch_zoom_in_menuitem">
-                        <property name="label">gtk-zoom-in</property>
-                        <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">Increase font size</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                        <accelerator key="equal" signal="activate" modifiers="GDK_CONTROL_MASK"/>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="patch_zoom_out_menuitem">
-                        <property name="label">gtk-zoom-out</property>
-                        <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">Decrease font size</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                        <accelerator key="minus" signal="activate" modifiers="GDK_CONTROL_MASK"/>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="patch_zoom_normal_menuitem">
-                        <property name="label">gtk-zoom-100</property>
-                        <property name="visible">True</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                        <accelerator key="0" signal="activate" modifiers="GDK_CONTROL_MASK"/>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkSeparatorMenuItem" id="menuitem3">
-                        <property name="visible">True</property>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="patch_fullscreen_menuitem">
-                        <property name="label">gtk-fullscreen</property>
-                        <property name="visible">True</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                        <signal name="activate" handler="patch_fullscreen_menuitem"/>
-                        <accelerator key="F11" signal="activate"/>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkMenuItem" id="view1">
-                <property name="visible">True</property>
-                <property name="label" translatable="yes">_Windows</property>
-                <property name="use_underline">True</property>
-                <signal name="activate" handler="on_view1_activate"/>
-                <child>
-                  <widget class="GtkMenu" id="view1_menu">
-                    <child>
-                      <widget class="GtkImageMenuItem" id="patch_view_engine_window_menuitem">
-                        <property name="label">_Engine</property>
-                        <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">Connect to, Disconnect from, or Launch Engine</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">False</property>
-                        <signal name="activate" handler="on_patch_view_engine_window_menuitem_activate"/>
-                        <accelerator key="E" signal="activate" modifiers="GDK_CONTROL_MASK"/>
-                        <child internal-child="image">
-                          <widget class="GtkImage" id="image6">
-                            <property name="visible">True</property>
-                            <property name="stock">gtk-execute</property>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="patch_view_patch_tree_window_menuitem">
-                        <property name="label">_Patch Tree</property>
-                        <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">View all patches in the engine as a heirarchial list</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">False</property>
-                        <signal name="activate" handler="on_patch_view_tree_window_menuitem_activate"/>
-                        <accelerator key="T" signal="activate" modifiers="GDK_CONTROL_MASK"/>
-                        <child internal-child="image">
-                          <widget class="GtkImage" id="image5">
-                            <property name="visible">True</property>
-                            <property name="stock">gtk-index</property>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="patch_view_messages_window_menuitem">
-                        <property name="label">_Messages</property>
-                        <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">View error messages from the engine</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">False</property>
-                        <signal name="activate" handler="on_patch_view_messages_window_menuitem_activate"/>
-                        <accelerator key="M" signal="activate" modifiers="GDK_CONTROL_MASK"/>
-                        <child internal-child="image">
-                          <widget class="GtkImage" id="image4">
-                            <property name="visible">True</property>
-                            <property name="stock">gtk-info</property>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkMenuItem" id="help_menu">
-                <property name="visible">True</property>
-                <property name="label" translatable="yes">_Help</property>
-                <property name="use_underline">True</property>
-                <signal name="activate" handler="on_help_menu_activate"/>
-                <child>
-                  <widget class="GtkMenu" id="help_menu_menu">
-                    <child>
-                      <widget class="GtkImageMenuItem" id="right-click_the_canvas_to_add_objects1">
-                        <property name="label">Right-click the canvas to add objects</property>
-                        <property name="visible">True</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">False</property>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="help_e_to_edit_menu_item">
-                        <property name="label">Press 'e' to toggle edit mode</property>
-                        <property name="visible">True</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">False</property>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkSeparatorMenuItem" id="separator13">
-                        <property name="visible">True</property>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkImageMenuItem" id="patch_help_about_menuitem">
-                        <property name="label">gtk-about</property>
-                        <property name="visible">True</property>
-                        <property name="use_underline">True</property>
-                        <property name="use_stock">True</property>
-                        <signal name="activate" handler="on_about1_activate"/>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-            </child>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkHPaned" id="hpaned1">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <child>
-              <widget class="GtkScrolledWindow" id="patch_win_scrolledwin">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="hscrollbar_policy">automatic</property>
-                <property name="vscrollbar_policy">automatic</property>
-                <child>
-                  <widget class="GtkViewport" id="patch_win_viewport">
-                    <property name="visible">True</property>
-                    <property name="resize_mode">queue</property>
-                    <property name="shadow_type">none</property>
-                    <child>
-                      <placeholder/>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-              <packing>
-                <property name="resize">True</property>
-                <property name="shrink">False</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkTextView" id="patch_documentation_textview">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="editable">False</property>
-                <property name="wrap_mode">word</property>
-                <property name="cursor_visible">False</property>
-              </widget>
-              <packing>
-                <property name="resize">False</property>
-                <property name="shrink">True</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkStatusbar" id="patch_win_status_bar">
-            <property name="visible">True</property>
-            <property name="spacing">2</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="GtkWindow" id="load_plugin_win">
-    <property name="border_width">8</property>
-    <property name="title" translatable="yes">Load Plugin - Ingen</property>
-    <property name="window_position">center-on-parent</property>
-    <property name="destroy_with_parent">True</property>
-    <property name="type_hint">dialog</property>
-    <child>
-      <widget class="GtkVBox" id="vbox9">
-        <property name="visible">True</property>
-        <property name="spacing">1</property>
-        <child>
-          <widget class="GtkScrolledWindow" id="scrolledwindow3">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="border_width">2</property>
-            <property name="hscrollbar_policy">automatic</property>
-            <property name="vscrollbar_policy">automatic</property>
-            <child>
-              <widget class="GtkTreeView" id="load_plugin_plugins_treeview">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="border_width">2</property>
-                <property name="reorderable">True</property>
-                <property name="rules_hint">True</property>
-              </widget>
-            </child>
-          </widget>
-          <packing>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkTable" id="table16">
-            <property name="visible">True</property>
-            <property name="n_rows">3</property>
-            <property name="n_columns">3</property>
-            <property name="row_spacing">12</property>
-            <child>
-              <widget class="GtkLabel" id="label66">
-                <property name="visible">True</property>
-                <property name="xalign">1</property>
-                <property name="label" translatable="yes">Node _Symbol:</property>
-                <property name="use_markup">True</property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">load_plugin_name_entry</property>
-              </widget>
-              <packing>
-                <property name="top_attach">2</property>
-                <property name="bottom_attach">3</property>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkHSeparator" id="hseparator1">
-                <property name="visible">True</property>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options">GTK_FILL</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkHSeparator" id="hseparator2">
-                <property name="visible">True</property>
-              </widget>
-              <packing>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options">GTK_FILL</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkHSeparator" id="hseparator3">
-                <property name="visible">True</property>
-              </widget>
-              <packing>
-                <property name="left_attach">2</property>
-                <property name="right_attach">3</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options">GTK_FILL</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkHBox" id="hbox63">
-                <property name="visible">True</property>
-                <child>
-                  <widget class="GtkEntry" id="load_plugin_name_entry">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="tooltip" translatable="yes">Name of new Module</property>
-                  </widget>
-                  <packing>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkCheckButton" id="load_plugin_polyphonic_checkbutton">
-                    <property name="label" translatable="yes">_Polyphonic</property>
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">False</property>
-                    <property name="use_underline">True</property>
-                    <property name="active">True</property>
-                    <property name="draw_indicator">True</property>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="padding">8</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">2</property>
-                <property name="bottom_attach">3</property>
-                <property name="y_options">GTK_FILL</property>
-                <property name="x_padding">6</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkEntry" id="load_plugin_search_entry">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="has_focus">True</property>
-                <property name="tooltip" translatable="yes">Search string to filter plugin list</property>
-                <property name="secondary_icon_stock">gtk-clear</property>
-                <property name="secondary_icon_activatable">True</property>
-                <property name="secondary_icon_sensitive">True</property>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">3</property>
-                <property name="y_options">GTK_FILL</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkComboBox" id="load_plugin_filter_combo">
-                <property name="visible">True</property>
-                <property name="items" translatable="yes">Name contains: </property>
-              </widget>
-              <packing>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkHButtonBox" id="hbuttonbox1">
-                <property name="visible">True</property>
-                <property name="spacing">4</property>
-                <child>
-                  <widget class="GtkButton" id="load_plugin_close_button">
-                    <property name="label">gtk-close</property>
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">True</property>
-                    <property name="use_stock">True</property>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkButton" id="load_plugin_add_button">
-                    <property name="label">gtk-add</property>
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">True</property>
-                    <property name="use_stock">True</property>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="left_attach">2</property>
-                <property name="right_attach">3</property>
-                <property name="top_attach">2</property>
-                <property name="bottom_attach">3</property>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options">GTK_FILL</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="GtkWindow" id="new_subpatch_win">
-    <property name="width_request">320</property>
-    <property name="border_width">8</property>
-    <property name="title" translatable="yes">Create Subpatch - Ingen</property>
-    <property name="resizable">False</property>
-    <property name="window_position">center-on-parent</property>
-    <property name="type_hint">dialog</property>
-    <child>
-      <widget class="GtkVBox" id="vbox4">
-        <property name="visible">True</property>
-        <child>
-          <widget class="GtkTable" id="table1">
-            <property name="visible">True</property>
-            <property name="n_rows">2</property>
-            <property name="n_columns">2</property>
-            <child>
-              <widget class="GtkLabel" id="label8">
-                <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes">_Symbol: </property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">new_subpatch_name_entry</property>
-              </widget>
-              <packing>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND</property>
-                <property name="x_padding">5</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label9">
-                <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes">_Polyphony: </property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">new_subpatch_polyphony_spinbutton</property>
-              </widget>
-              <packing>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options">GTK_EXPAND</property>
-                <property name="x_padding">5</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkSpinButton" id="new_subpatch_polyphony_spinbutton">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="activates_default">True</property>
-                <property name="adjustment">1 0 100 1 10 0</property>
-                <property name="climb_rate">1</property>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options"></property>
-                <property name="y_padding">4</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkEntry" id="new_subpatch_name_entry">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="has_focus">True</property>
-                <property name="activates_default">True</property>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="y_options"></property>
-                <property name="y_padding">4</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkLabel" id="new_subpatch_message_label">
-            <property name="visible">True</property>
-            <property name="wrap">True</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkHButtonBox" id="hbuttonbox5">
-            <property name="visible">True</property>
-            <property name="spacing">4</property>
-            <property name="layout_style">end</property>
-            <child>
-              <widget class="GtkButton" id="new_subpatch_cancel_button">
-                <property name="label">gtk-cancel</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_stock">True</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkButton" id="new_subpatch_ok_button">
-                <property name="label">gtk-ok</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="has_default">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_stock">True</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="position">2</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="GtkFileChooserDialog" id="load_patch_win">
-    <property name="title" translatable="yes">Load Patch - Ingen</property>
-    <property name="window_position">center-on-parent</property>
-    <property name="type_hint">dialog</property>
-    <child internal-child="vbox">
-      <widget class="GtkVBox" id="vbox11">
-        <property name="spacing">24</property>
-        <child>
-          <widget class="GtkAlignment" id="alignment1">
-            <property name="visible">True</property>
-            <property name="xalign">0</property>
-            <property name="xscale">0</property>
-            <child>
-              <widget class="GtkTable" id="table14">
-                <property name="visible">True</property>
-                <property name="n_rows">3</property>
-                <property name="n_columns">3</property>
-                <property name="column_spacing">12</property>
-                <property name="row_spacing">12</property>
-                <child>
-                  <widget class="GtkLabel" id="load_patch_poly_label">
-                    <property name="visible">True</property>
-                    <property name="xalign">0</property>
-                    <property name="label" translatable="yes">Polyphony: </property>
-                    <property name="use_markup">True</property>
-                  </widget>
-                  <packing>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                    <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkRadioButton" id="load_patch_poly_from_file_radio">
-                    <property name="label" translatable="yes">Load from _File</property>
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">False</property>
-                    <property name="has_tooltip">True</property>
-                    <property name="tooltip" translatable="yes">Use the polyphony value stored in the patch file</property>
-                    <property name="use_underline">True</property>
-                    <property name="draw_indicator">True</property>
-                    <property name="group">load_patch_poly_voices_radio</property>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">2</property>
-                    <property name="right_attach">3</property>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                    <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="load_patch_ports_label">
-                    <property name="visible">True</property>
-                    <property name="xalign">0</property>
-                    <property name="label" translatable="yes">Ports: </property>
-                    <property name="use_markup">True</property>
-                  </widget>
-                  <packing>
-                    <property name="top_attach">2</property>
-                    <property name="bottom_attach">3</property>
-                    <property name="y_options">GTK_FILL</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkRadioButton" id="load_patch_insert_ports_radio">
-                    <property name="label" translatable="yes">_Insert new ports</property>
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">False</property>
-                    <property name="has_tooltip">True</property>
-                    <property name="tooltip" translatable="yes">Create new ports for all of the loaded patch's ports</property>
-                    <property name="use_underline">True</property>
-                    <property name="draw_indicator">True</property>
-                    <property name="group">load_patch_merge_ports_radio</property>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">2</property>
-                    <property name="right_attach">3</property>
-                    <property name="top_attach">2</property>
-                    <property name="bottom_attach">3</property>
-                    <property name="y_options">GTK_FILL</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkRadioButton" id="load_patch_merge_ports_radio">
-                    <property name="label" translatable="yes">_Merge with existing ports</property>
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">False</property>
-                    <property name="has_tooltip">True</property>
-                    <property name="tooltip" translatable="yes">Merge current ports and loaded patch's ports wherever possible</property>
-                    <property name="use_underline">True</property>
-                    <property name="active">True</property>
-                    <property name="draw_indicator">True</property>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="top_attach">2</property>
-                    <property name="bottom_attach">3</property>
-                    <property name="y_options">GTK_FILL</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkHBox" id="hbox58">
-                    <property name="visible">True</property>
-                    <property name="spacing">6</property>
-                    <child>
-                      <widget class="GtkRadioButton" id="load_patch_poly_voices_radio">
-                        <property name="label" translatable="yes">_Voices:</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="has_tooltip">True</property>
-                        <property name="tooltip" translatable="yes">Set polyphonic to a specific number of voices</property>
-                        <property name="use_underline">True</property>
-                        <property name="active">True</property>
-                        <property name="draw_indicator">True</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkSpinButton" id="load_patch_poly_spinbutton">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="tooltip" translatable="yes">Specify a custom polyphony value for new patch</property>
-                        <property name="invisible_char">&#x25CF;</property>
-                        <property name="adjustment">1 0 100 1 10 0</property>
-                        <property name="climb_rate">1</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                    <property name="x_options">GTK_FILL</property>
-                    <property name="y_options">GTK_FILL</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="load_patch_symbol_label">
-                    <property name="visible">True</property>
-                    <property name="xalign">0</property>
-                    <property name="label" translatable="yes">_Symbol: </property>
-                    <property name="use_markup">True</property>
-                    <property name="use_underline">True</property>
-                    <property name="mnemonic_widget">load_patch_symbol_entry</property>
-                  </widget>
-                  <packing>
-                    <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkEntry" id="load_patch_symbol_entry">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="tooltip" translatable="yes">Specify the name for the new patch</property>
-                    <property name="invisible_char">&#x25CF;</property>
-                    <property name="activates_default">True</property>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">3</property>
-                    <property name="y_options">GTK_FILL</property>
-                  </packing>
-                </child>
-              </widget>
-            </child>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-        <child internal-child="action_area">
-          <widget class="GtkHButtonBox" id="hbuttonbox1">
-            <property name="visible">True</property>
-            <property name="layout_style">end</property>
-            <child>
-              <widget class="GtkButton" id="load_patch_cancel_button">
-                <property name="label">gtk-cancel</property>
-                <property name="response_id">-6</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_stock">True</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkButton" id="load_patch_ok_button">
-                <property name="label">gtk-open</property>
-                <property name="response_id">-5</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="has_default">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_stock">True</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="GtkWindow" id="warehouse_win">
-    <property name="title" translatable="yes">Warehouse - Ingen</property>
-    <child>
-      <widget class="GtkTable" id="table8">
-        <property name="visible">True</property>
-        <property name="n_rows">6</property>
-        <property name="column_spacing">12</property>
-        <property name="row_spacing">12</property>
-        <child>
-          <widget class="GtkVBox" id="toggle_control">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <child>
-              <widget class="GtkHBox" id="hbox2">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <child>
-                  <widget class="GtkLabel" id="toggle_control_name_label">
-                    <property name="visible">True</property>
-                    <property name="xalign">0</property>
-                    <property name="xpad">4</property>
-                    <property name="label" translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
-                    <property name="use_markup">True</property>
-                    <property name="single_line_mode">True</property>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkAlignment" id="alignment7">
-                    <property name="visible">True</property>
-                    <property name="yalign">1</property>
-                    <property name="yscale">0</property>
-                    <property name="bottom_padding">1</property>
-                    <property name="left_padding">1</property>
-                    <property name="right_padding">4</property>
-                    <child>
-                      <widget class="GtkHSeparator" id="hseparator7">
-                        <property name="visible">True</property>
-                      </widget>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkCheckButton" id="toggle_control_check">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">False</property>
-                    <property name="draw_indicator">True</property>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="position">2</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="top_attach">4</property>
-            <property name="bottom_attach">5</property>
-            <property name="y_padding">8</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkVBox" id="control_panel_vbox">
-            <property name="visible">True</property>
-            <child>
-              <widget class="GtkAlignment" id="alignment6">
-                <property name="visible">True</property>
-                <property name="yalign">0</property>
-                <child>
-                  <widget class="GtkScrolledWindow" id="scrolledwin1">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="hscrollbar_policy">never</property>
-                    <property name="vscrollbar_policy">automatic</property>
-                    <child>
-                      <widget class="GtkViewport" id="viewport1">
-                        <property name="visible">True</property>
-                        <property name="shadow_type">none</property>
-                        <child>
-                          <widget class="GtkVBox" id="control_panel_controls_box">
-                            <property name="visible">True</property>
-                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                          </widget>
-                        </child>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-              <packing>
-                <property name="position">0</property>
-              </packing>
-            </child>
-          </widget>
-        </child>
-        <child>
-          <widget class="GtkVBox" id="patch_view_box">
-            <property name="visible">True</property>
-            <child>
-              <widget class="GtkHBox" id="hbox70">
-                <property name="visible">True</property>
-                <child>
-                  <widget class="GtkToolbar" id="toolbar6">
-                    <property name="visible">True</property>
-                    <property name="toolbar_style">icons</property>
-                    <property name="icon_size">1</property>
-                    <child>
-                      <widget class="GtkToolItem" id="patch_view_breadcrumb_container">
-                        <property name="visible">True</property>
-                        <child>
-                          <placeholder/>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkToolbar" id="patch_view_toolbar">
-                    <property name="visible">True</property>
-                    <property name="toolbar_style">icons</property>
-                    <property name="show_arrow">False</property>
-                    <property name="icon_size">1</property>
-                    <child>
-                      <widget class="GtkToggleToolButton" id="patch_view_process_but">
-                        <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">Enable patch</property>
-                        <property name="use_underline">True</property>
-                        <property name="stock_id">gtk-execute</property>
-                        <property name="active">True</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="homogeneous">True</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkToolItem" id="toolitem7">
-                        <property name="visible">True</property>
-                        <child>
-                          <widget class="GtkImage" id="image1978">
-                            <property name="visible">True</property>
-                            <property name="xpad">4</property>
-                            <property name="stock">gtk-copy</property>
-                          </widget>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkToolItem" id="toolitem10">
-                        <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">Polyphony</property>
-                        <child>
-                          <widget class="GtkSpinButton" id="patch_view_poly_spin">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="tooltip" translatable="yes">Patch polyphony</property>
-                            <property name="adjustment">1 1 512 1 10 0</property>
-                            <property name="climb_rate">1</property>
-                            <property name="numeric">True</property>
-                          </widget>
-                        </child>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkSeparatorToolItem" id="separatortoolitem18">
-                        <property name="visible">True</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkToolButton" id="patch_view_save_but">
-                        <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">Save patch to a file</property>
-                        <property name="stock_id">gtk-save</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="homogeneous">True</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkSeparatorToolItem" id="separatortoolitem22">
-                        <property name="visible">True</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkToolButton" id="patch_view_refresh_but">
-                        <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">Refresh view</property>
-                        <property name="stock_id">gtk-refresh</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="homogeneous">True</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkToolButton" id="patch_view_zoom_normal_but">
-                        <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">Zoom to normal size</property>
-                        <property name="use_underline">True</property>
-                        <property name="stock_id">gtk-zoom-100</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="homogeneous">True</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkToolButton" id="patch_view_zoom_full_but">
-                        <property name="visible">True</property>
-                        <property name="tooltip" translatable="yes">Zoom to contents</property>
-                        <property name="use_underline">True</property>
-                        <property name="stock_id">gtk-zoom-fit</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="homogeneous">True</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkSeparatorToolItem" id="toolbutton1">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkToggleToolButton" id="patch_view_edit_mode_but">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="tooltip" translatable="yes">Edit connections</property>
-                        <property name="label" translatable="yes">Edit</property>
-                        <property name="stock_id">gtk-connect</property>
-                        <property name="active">True</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="homogeneous">True</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkScrolledWindow" id="patch_view_scrolledwindow">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="has_focus">True</property>
-                <property name="is_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="has_default">True</property>
-                <property name="events">GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON1_MOTION_MASK | GDK_BUTTON2_MOTION_MASK | GDK_BUTTON3_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_FOCUS_CHANGE_MASK | GDK_STRUCTURE_MASK | GDK_PROPERTY_CHANGE_MASK | GDK_VISIBILITY_NOTIFY_MASK | GDK_PROXIMITY_IN_MASK | GDK_PROXIMITY_OUT_MASK | GDK_SUBSTRUCTURE_MASK | GDK_SCROLL_MASK</property>
-                <property name="border_width">1</property>
-                <property name="shadow_type">in</property>
-                <child>
-                  <placeholder/>
-                </child>
-              </widget>
-              <packing>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="top_attach">2</property>
-            <property name="bottom_attach">3</property>
-            <property name="x_options">GTK_FILL</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkHSeparator" id="hseparator5">
-            <property name="visible">True</property>
-          </widget>
-          <packing>
-            <property name="top_attach">1</property>
-            <property name="bottom_attach">2</property>
-            <property name="x_options">GTK_FILL</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkVBox" id="control_strip">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <child>
-              <widget class="GtkHBox" id="hbox1">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <child>
-                  <widget class="GtkLabel" id="control_strip_name_label">
-                    <property name="visible">True</property>
-                    <property name="xalign">0</property>
-                    <property name="yalign">1</property>
-                    <property name="xpad">4</property>
-                    <property name="label" translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
-                    <property name="use_markup">True</property>
-                    <property name="single_line_mode">True</property>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkAlignment" id="alignment3">
-                    <property name="visible">True</property>
-                    <property name="yalign">1</property>
-                    <property name="yscale">0</property>
-                    <property name="bottom_padding">1</property>
-                    <property name="left_padding">1</property>
-                    <property name="right_padding">4</property>
-                    <child>
-                      <widget class="GtkHSeparator" id="hseparator6">
-                        <property name="visible">True</property>
-                      </widget>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkSpinButton" id="control_strip_spinner">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="width_chars">12</property>
-                    <property name="adjustment">0 -9.9999999999999999e+45 1.0000000000000001e+63 1 10 0</property>
-                    <property name="digits">4</property>
-                    <property name="numeric">True</property>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="position">2</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkHScale" id="control_strip_slider">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="adjustment">9.0923076923076922e+136 -1e+113 1e+137 0 0 0</property>
-                <property name="digits">63</property>
-                <property name="draw_value">False</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="top_attach">3</property>
-            <property name="bottom_attach">4</property>
-            <property name="y_padding">8</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkVBox" id="string_control">
-            <property name="visible">True</property>
-            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-            <property name="orientation">vertical</property>
-            <child>
-              <widget class="GtkHBox" id="hbox3">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <child>
-                  <widget class="GtkLabel" id="string_control_name_label">
-                    <property name="visible">True</property>
-                    <property name="xalign">0</property>
-                    <property name="xpad">4</property>
-                    <property name="label" translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
-                    <property name="use_markup">True</property>
-                    <property name="single_line_mode">True</property>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkEntry" id="string_control_entry">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="invisible_char">&#x25CF;</property>
-                    <property name="caps_lock_warning">False</property>
-                  </widget>
-                  <packing>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="top_attach">5</property>
-            <property name="bottom_attach">6</property>
-            <property name="y_padding">8</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="GtkWindow" id="messages_win">
-    <property name="width_request">400</property>
-    <property name="height_request">180</property>
-    <property name="border_width">8</property>
-    <property name="title" translatable="yes">Messages - Ingen</property>
-    <child>
-      <widget class="GtkVBox" id="vbox12">
-        <property name="visible">True</property>
-        <property name="spacing">6</property>
-        <child>
-          <widget class="GtkScrolledWindow" id="scrolledwindow2">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="hscrollbar_policy">automatic</property>
-            <property name="vscrollbar_policy">automatic</property>
-            <property name="shadow_type">in</property>
-            <child>
-              <widget class="GtkTextView" id="messages_textview">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="tooltip" translatable="yes">Error messages from the engine since the last time "Clear" was pressed</property>
-                <property name="pixels_above_lines">5</property>
-                <property name="pixels_below_lines">5</property>
-                <property name="editable">False</property>
-                <property name="wrap_mode">word</property>
-                <property name="left_margin">5</property>
-                <property name="right_margin">5</property>
-                <property name="cursor_visible">False</property>
-                <property name="accepts_tab">False</property>
-              </widget>
-            </child>
-          </widget>
-          <packing>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkHButtonBox" id="hbuttonbox8">
-            <property name="visible">True</property>
-            <property name="spacing">6</property>
-            <property name="layout_style">end</property>
-            <child>
-              <widget class="GtkButton" id="messages_clear_button">
-                <property name="label">gtk-clear</property>
-                <property name="visible">True</property>
-                <property name="sensitive">False</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_stock">True</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkButton" id="messages_close_button">
-                <property name="label">gtk-close</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_stock">True</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="GtkWindow" id="config_win">
-    <property name="border_width">8</property>
-    <property name="title" translatable="yes">Configuration - Ingen</property>
-    <child>
-      <widget class="GtkVBox" id="vbox13">
-        <property name="visible">True</property>
-        <property name="spacing">6</property>
-        <child>
-          <widget class="GtkTable" id="table9">
-            <property name="visible">True</property>
-            <property name="n_rows">2</property>
-            <property name="n_columns">2</property>
-            <child>
-              <widget class="GtkLabel" id="label90">
-                <property name="visible">True</property>
-                <property name="label" translatable="yes">&lt;b&gt;Patch Search Path: &lt;/b&gt;</property>
-                <property name="use_markup">True</property>
-              </widget>
-              <packing>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkEntry" id="config_path_entry">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label91">
-                <property name="visible">True</property>
-                <property name="label" translatable="yes">&lt;i&gt;Example:  /foo/bar:/home/john/patches:/usr/share/om/patches&lt;/i&gt;</property>
-                <property name="use_markup">True</property>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label103">
-                <property name="visible">True</property>
-                <property name="xalign">0</property>
-              </widget>
-              <packing>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="fill">False</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkHButtonBox" id="hbuttonbox2">
-            <property name="visible">True</property>
-            <property name="spacing">6</property>
-            <property name="layout_style">end</property>
-            <child>
-              <widget class="GtkButton" id="config_save_button">
-                <property name="label">gtk-save</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">False</property>
-                <property name="tooltip" translatable="yes">Save these settings for future sessions</property>
-                <property name="use_stock">True</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkButton" id="config_cancel_button">
-                <property name="label">gtk-cancel</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_stock">True</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkButton" id="config_ok_button">
-                <property name="label">gtk-ok</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">False</property>
-                <property name="tooltip" translatable="yes">Apply these settings to this session only</property>
-                <property name="use_stock">True</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="GtkWindow" id="rename_win">
-    <property name="width_request">250</property>
-    <property name="title" translatable="yes">Rename</property>
-    <property name="window_position">center-on-parent</property>
-    <property name="destroy_with_parent">True</property>
-    <property name="type_hint">dialog</property>
-    <child>
-      <widget class="GtkVBox" id="vbox1">
-        <property name="visible">True</property>
-        <property name="border_width">5</property>
-        <property name="orientation">vertical</property>
-        <child>
-          <widget class="GtkTable" id="table2">
-            <property name="visible">True</property>
-            <property name="n_rows">2</property>
-            <property name="n_columns">2</property>
-            <property name="row_spacing">8</property>
-            <child>
-              <widget class="GtkLabel" id="label95">
-                <property name="visible">True</property>
-                <property name="label" translatable="yes">_Symbol: </property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">rename_symbol_entry</property>
-              </widget>
-              <packing>
-                <property name="x_options">GTK_FILL</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkEntry" id="rename_label_entry">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="invisible_char">&#x25CF;</property>
-                <property name="activates_default">True</property>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label1">
-                <property name="visible">True</property>
-                <property name="label" translatable="yes">_Label: </property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">rename_label_entry</property>
-              </widget>
-              <packing>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="x_options">GTK_FILL</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkEntry" id="rename_symbol_entry">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="has_focus">True</property>
-                <property name="invisible_char">&#x25CF;</property>
-                <property name="activates_default">True</property>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkLabel" id="rename_message_label">
-            <property name="visible">True</property>
-          </widget>
-          <packing>
-            <property name="padding">12</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkHButtonBox" id="hbuttonbox4">
-            <property name="visible">True</property>
-            <property name="spacing">8</property>
-            <property name="layout_style">end</property>
-            <child>
-              <widget class="GtkButton" id="rename_cancel_button">
-                <property name="label">gtk-cancel</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkButton" id="rename_ok_button">
-                <property name="label">gtk-ok</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="has_default">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_stock">True</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="GtkAboutDialog" id="about_win">
-    <property name="destroy_with_parent">True</property>
-    <property name="type_hint">normal</property>
-    <property name="program_name">Ingen</property>
-    <property name="version">@INGEN_VERSION@</property>
-    <property name="copyright" translatable="yes">Copyright 2005-2011 David Robillard &lt;http://drobilla.net&gt;</property>
-    <property name="website">http://drobilla.net/software/ingen</property>
-    <property name="license" translatable="yes">Licensed under the GNU GPL, Version 2.
-
-See COPYING file included with this distribution, or http://www.gnu.org/licenses/gpl.txt for more information</property>
-    <property name="authors">Author:
-	David Robillard &lt;d@drobilla.net&gt;
-
-Contributors:
-	Lars Luthman - DSSI enhancements, bugfixes
-	Mario Lang - SuperCollider bindings, bugfixes
-	Leonard Ritter - Python bindings
-</property>
-    <property name="translator_credits" translatable="yes" comments="TRANSLATORS: Replace this string with your names, one name per line.">translator-credits</property>
-    <property name="artists">Usability / UI Design:
-	Thorsten Wilms</property>
-    <property name="wrap_license">True</property>
-    <child internal-child="vbox">
-      <widget class="GtkVBox" id="dialog-vbox3">
-        <child internal-child="action_area">
-          <widget class="GtkHButtonBox" id="dialog-action_area3"/>
-          <packing>
-            <property name="expand">False</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="GtkWindow" id="patch_tree_win">
-    <property name="width_request">320</property>
-    <property name="height_request">340</property>
-    <property name="border_width">8</property>
-    <property name="title" translatable="yes">Patches - Ingen</property>
-    <child>
-      <widget class="GtkScrolledWindow" id="scrolledwindow8">
-        <property name="visible">True</property>
-        <property name="can_focus">True</property>
-        <property name="border_width">3</property>
-        <property name="hscrollbar_policy">automatic</property>
-        <property name="vscrollbar_policy">automatic</property>
-        <property name="shadow_type">in</property>
-        <child>
-          <widget class="GtkTreeView" id="patches_treeview">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="tooltip" translatable="yes">All patches loaded in the engine</property>
-            <property name="rules_hint">True</property>
-          </widget>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="GtkDialog" id="connect_win">
-    <property name="border_width">6</property>
-    <property name="title" translatable="yes">Engine - Ingen</property>
-    <property name="resizable">False</property>
-    <property name="type_hint">dialog</property>
-    <child internal-child="vbox">
-      <widget class="GtkVBox" id="dialog-vbox4">
-        <property name="visible">True</property>
-        <property name="spacing">6</property>
-        <child>
-          <widget class="GtkVBox" id="vbox19">
-            <property name="visible">True</property>
-            <child>
-              <widget class="GtkHBox" id="hbox61">
-                <property name="visible">True</property>
-                <child>
-                  <widget class="GtkImage" id="connect_icon">
-                    <property name="visible">True</property>
-                    <property name="xpad">12</property>
-                    <property name="stock">gtk-disconnect</property>
-                    <property name="icon-size">3</property>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkVBox" id="vbox20">
-                    <property name="visible">True</property>
-                    <property name="border_width">5</property>
-                    <property name="homogeneous">True</property>
-                    <child>
-                      <widget class="GtkProgressBar" id="connect_progress_bar">
-                        <property name="visible">True</property>
-                        <property name="pulse_step">0.10000000149</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="connect_progress_label">
-                        <property name="visible">True</property>
-                        <property name="xalign">0</property>
-                        <property name="label" translatable="yes">Not Connected</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkHSeparator" id="hseparator4">
-                <property name="visible">True</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="padding">4</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkTable" id="table18">
-                <property name="visible">True</property>
-                <property name="n_rows">3</property>
-                <property name="n_columns">2</property>
-                <property name="row_spacing">8</property>
-                <child>
-                  <widget class="GtkHBox" id="hbox64">
-                    <property name="visible">True</property>
-                    <child>
-                      <widget class="GtkSpinButton" id="connect_port_spinbutton">
-                        <property name="visible">True</property>
-                        <property name="sensitive">False</property>
-                        <property name="can_focus">True</property>
-                        <property name="adjustment">16180 1 65535 1 10 0</property>
-                        <property name="climb_rate">1</property>
-                        <property name="numeric">True</property>
-                      </widget>
-                      <packing>
-                        <property name="expand">False</property>
-                        <property name="fill">False</property>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                    <property name="y_options">GTK_FILL</property>
-                    <property name="x_padding">8</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkHBox" id="hbox67">
-                    <property name="visible">True</property>
-                    <child>
-                      <widget class="GtkEntry" id="connect_url_entry">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="activates_default">True</property>
-                        <property name="width_chars">28</property>
-                        <property name="text" translatable="yes">osc.udp://localhost:16180</property>
-                      </widget>
-                      <packing>
-                        <property name="position">0</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="x_options">GTK_FILL</property>
-                    <property name="y_options">GTK_FILL</property>
-                    <property name="x_padding">8</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkRadioButton" id="connect_server_radiobutton">
-                    <property name="label" translatable="yes">_Connect to running server at: </property>
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">False</property>
-                    <property name="use_underline">True</property>
-                    <property name="draw_indicator">True</property>
-                  </widget>
-                  <packing>
-                    <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkRadioButton" id="connect_launch_radiobutton">
-                    <property name="label" translatable="yes">_Launch and connect to server on port: </property>
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">False</property>
-                    <property name="use_underline">True</property>
-                    <property name="draw_indicator">True</property>
-                    <property name="group">connect_server_radiobutton</property>
-                  </widget>
-                  <packing>
-                    <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                    <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkRadioButton" id="connect_internal_radiobutton">
-                    <property name="label" translatable="yes">Use _internal engine</property>
-                    <property name="visible">True</property>
-                    <property name="sensitive">False</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">False</property>
-                    <property name="use_underline">True</property>
-                    <property name="draw_indicator">True</property>
-                    <property name="group">connect_server_radiobutton</property>
-                  </widget>
-                  <packing>
-                    <property name="top_attach">2</property>
-                    <property name="bottom_attach">3</property>
-                    <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label131">
-                    <property name="visible">True</property>
-                    <property name="xalign">0</property>
-                  </widget>
-                  <packing>
-                    <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
-                    <property name="top_attach">2</property>
-                    <property name="bottom_attach">3</property>
-                    <property name="x_options">GTK_FILL</property>
-                    <property name="y_options"></property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="position">2</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkHSeparator" id="hseparator1">
-                <property name="visible">True</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="position">3</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkHButtonBox" id="hbuttonbox1">
-                <property name="visible">True</property>
-                <property name="spacing">6</property>
-                <property name="layout_style">start</property>
-                <child>
-                  <widget class="GtkButton" id="connect_deactivate_button">
-                    <property name="label" translatable="yes">D_eactivate</property>
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">True</property>
-                    <property name="use_underline">True</property>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkButton" id="connect_activate_button">
-                    <property name="label" translatable="yes">_Activate</property>
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="receives_default">True</property>
-                    <property name="use_underline">True</property>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="padding">6</property>
-                <property name="position">4</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="position">2</property>
-          </packing>
-        </child>
-        <child internal-child="action_area">
-          <widget class="GtkHButtonBox" id="dialog-action_area4">
-            <property name="visible">True</property>
-            <property name="layout_style">end</property>
-            <child>
-              <widget class="GtkButton" id="connect_quit_button">
-                <property name="label">gtk-quit</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_stock">True</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkButton" id="connect_disconnect_button">
-                <property name="label">gtk-disconnect</property>
-                <property name="response_id">-6</property>
-                <property name="visible">True</property>
-                <property name="sensitive">False</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_stock">True</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkButton" id="connect_connect_button">
-                <property name="label">gtk-connect</property>
-                <property name="response_id">-6</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="has_default">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_stock">True</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="GtkMenu" id="canvas_menu">
-    <property name="visible">True</property>
-    <child>
-      <widget class="GtkCheckMenuItem" id="canvas_menu_edit">
-        <property name="visible">True</property>
-        <property name="tooltip" translatable="yes">Toggle edit mode</property>
-        <property name="label" translatable="yes">_Edit</property>
-        <property name="use_underline">True</property>
-        <property name="active">True</property>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkSeparatorMenuItem" id="menuitem1">
-        <property name="visible">True</property>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkImageMenuItem" id="input1">
-        <property name="label">_Input</property>
-        <property name="visible">True</property>
-        <property name="use_underline">True</property>
-        <property name="use_stock">False</property>
-        <child>
-          <widget class="GtkMenu" id="input1_menu">
-            <child>
-              <widget class="GtkMenuItem" id="canvas_menu_add_audio_input">
-                <property name="visible">True</property>
-                <property name="tooltip" translatable="yes">Add an audio input to this patch</property>
-                <property name="label" translatable="yes">_Audio</property>
-                <property name="use_underline">True</property>
-                <signal name="activate" handler="on_canvas_menu_add_audio_input_activate"/>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkMenuItem" id="canvas_menu_add_control_input">
-                <property name="visible">True</property>
-                <property name="tooltip" translatable="yes">Add a control input (and a control slider for it) to this patch</property>
-                <property name="label" translatable="yes">_Control</property>
-                <property name="use_underline">True</property>
-                <signal name="activate" handler="on_canvas_menu_add_control_input_activate"/>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkMenuItem" id="canvas_menu_add_event_input">
-                <property name="visible">True</property>
-                <property name="tooltip" translatable="yes">Add a generic event input to this patch</property>
-                <property name="label" translatable="yes">_Event</property>
-                <property name="use_underline">True</property>
-                <signal name="activate" handler="on_canvas_menu_add_event_input_activate"/>
-              </widget>
-            </child>
-          </widget>
-        </child>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkImageMenuItem" id="output1">
-        <property name="label">_Output</property>
-        <property name="visible">True</property>
-        <property name="use_underline">True</property>
-        <property name="use_stock">False</property>
-        <child>
-          <widget class="GtkMenu" id="output1_menu">
-            <child>
-              <widget class="GtkMenuItem" id="canvas_menu_add_audio_output">
-                <property name="visible">True</property>
-                <property name="tooltip" translatable="yes">Add an audio output to this patch</property>
-                <property name="label" translatable="yes">_Audio</property>
-                <property name="use_underline">True</property>
-                <signal name="activate" handler="on_canvas_menu_add_audio_output_activate"/>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkMenuItem" id="canvas_menu_add_control_output">
-                <property name="visible">True</property>
-                <property name="tooltip" translatable="yes">Add a control output to this patch</property>
-                <property name="label" translatable="yes">_Control</property>
-                <property name="use_underline">True</property>
-                <signal name="activate" handler="on_canvas_menu_add_control_output_activate"/>
-              </widget>
-            </child>
-            <child>
-              <widget class="GtkMenuItem" id="canvas_menu_add_event_output">
-                <property name="visible">True</property>
-                <property name="tooltip" translatable="yes">Add a generic event output to this patch</property>
-                <property name="label" translatable="yes">_Event</property>
-                <property name="use_underline">True</property>
-                <signal name="activate" handler="on_canvas_menu_add_event_output_activate"/>
-              </widget>
-            </child>
-          </widget>
-        </child>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkImageMenuItem" id="canvas_menu_load_plugin">
-        <property name="label">_Find Plugin...</property>
-        <property name="visible">True</property>
-        <property name="tooltip" translatable="yes">Load a plugin as a child of this patch</property>
-        <property name="use_underline">True</property>
-        <property name="use_stock">False</property>
-        <signal name="activate" handler="on_canvas_menu_add_plugin_activate"/>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkSeparatorMenuItem" id="menuitem2">
-        <property name="visible">True</property>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkImageMenuItem" id="canvas_menu_load_patch">
-        <property name="label">_Load Patch...</property>
-        <property name="visible">True</property>
-        <property name="tooltip" translatable="yes">Load a patch as a child of this patch</property>
-        <property name="use_underline">True</property>
-        <property name="use_stock">False</property>
-        <signal name="activate" handler="on_canvas_menu_load_patch_activate"/>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkImageMenuItem" id="canvas_menu_new_patch">
-        <property name="label">_New Patch...</property>
-        <property name="visible">True</property>
-        <property name="tooltip" translatable="yes">Create a new (empty) patch as a child of this patch</property>
-        <property name="use_underline">True</property>
-        <property name="use_stock">False</property>
-        <signal name="activate" handler="on_canvas_menu_new_patch_activate"/>
-      </widget>
-    </child>
-  </widget>
-  <widget class="GtkDialog" id="load_remote_patch_win">
-    <property name="border_width">8</property>
-    <property name="title" translatable="yes">Download Patch - Ingen</property>
-    <property name="type_hint">dialog</property>
-    <child internal-child="vbox">
-      <widget class="GtkVBox" id="dialog-vbox5">
-        <property name="visible">True</property>
-        <property name="spacing">8</property>
-        <child>
-          <widget class="GtkVBox" id="vbox21">
-            <property name="visible">True</property>
-            <property name="spacing">8</property>
-            <child>
-              <widget class="GtkScrolledWindow" id="load_remote_patch_treeview_sw">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="has_focus">True</property>
-                <property name="hscrollbar_policy">automatic</property>
-                <property name="vscrollbar_policy">automatic</property>
-                <property name="shadow_type">in</property>
-                <child>
-                  <widget class="GtkTreeView" id="load_remote_patch_treeview">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                  </widget>
-                </child>
-              </widget>
-              <packing>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkHBox" id="hbox71">
-                <property name="visible">True</property>
-                <child>
-                  <widget class="GtkLabel" id="label133">
-                    <property name="visible">True</property>
-                    <property name="label" translatable="yes">URI: </property>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkEntry" id="load_remote_patch_uri_entry">
-                    <property name="visible">True</property>
-                    <property name="can_focus">True</property>
-                    <property name="width_chars">78</property>
-                  </widget>
-                  <packing>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="position">2</property>
-          </packing>
-        </child>
-        <child internal-child="action_area">
-          <widget class="GtkHButtonBox" id="dialog-action_area5">
-            <property name="visible">True</property>
-            <property name="layout_style">end</property>
-            <child>
-              <widget class="GtkButton" id="load_remote_patch_cancel_button">
-                <property name="label">gtk-cancel</property>
-                <property name="response_id">-6</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_stock">True</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkButton" id="load_remote_patch_open_button">
-                <property name="label">gtk-open</property>
-                <property name="response_id">-5</property>
-                <property name="visible">True</property>
-                <property name="sensitive">False</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="has_default">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_stock">True</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="GtkDialog" id="upload_patch_win">
-    <property name="border_width">8</property>
-    <property name="title" translatable="yes">Upload Patch - Ingen</property>
-    <property name="resizable">False</property>
-    <property name="type_hint">dialog</property>
-    <child internal-child="vbox">
-      <widget class="GtkVBox" id="dialog-vbox6">
-        <property name="visible">True</property>
-        <property name="spacing">9</property>
-        <child>
-          <widget class="GtkTable" id="table19">
-            <property name="visible">True</property>
-            <property name="n_rows">2</property>
-            <property name="n_columns">2</property>
-            <property name="row_spacing">8</property>
-            <child>
-              <widget class="GtkEntry" id="upload_patch_symbol_entry">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="tooltip" translatable="yes">Enter a short name suitable for use as an identifier or filename.
-
-The first character must be one of _, a-z or A-Z and subsequenct characters can be from _, a-z, A-Z or 0-9.
-</property>
-                <property name="activates_default">True</property>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkEntry" id="upload_patch_short_name_entry">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="tooltip" translatable="yes">Enter a short name for this patch, e.g. "Mega Synth"</property>
-                <property name="activates_default">True</property>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label135">
-                <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes">Symbol: </property>
-              </widget>
-              <packing>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label136">
-                <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes">Short Name: </property>
-              </widget>
-              <packing>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="position">2</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkLabel" id="label137">
-            <property name="visible">True</property>
-            <property name="ypad">4</property>
-            <property name="label" translatable="yes">Succesfully uploaded patches will be available immediately in the remote patch browser.
-
-By uploading patches, you agree to license them under the Creative Commons Attribution-Share Alike 3.0 License.
-
-Thank you for contributing.</property>
-            <property name="wrap">True</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">3</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkProgressBar" id="upload_patch_progress">
-            <property name="visible">True</property>
-            <property name="tooltip" translatable="yes">Upload progress</property>
-            <property name="pulse_step">0.10000000149</property>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">4</property>
-          </packing>
-        </child>
-        <child internal-child="action_area">
-          <widget class="GtkHButtonBox" id="dialog-action_area6">
-            <property name="visible">True</property>
-            <property name="layout_style">end</property>
-            <child>
-              <widget class="GtkButton" id="upload_patch_cancel_button">
-                <property name="label">gtk-close</property>
-                <property name="response_id">-7</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_stock">True</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkButton" id="upload_patch_upload_button">
-                <property name="response_id">-5</property>
-                <property name="visible">True</property>
-                <property name="sensitive">False</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="has_default">True</property>
-                <property name="receives_default">False</property>
-                <child>
-                  <widget class="GtkAlignment" id="alignment5">
-                    <property name="visible">True</property>
-                    <property name="xscale">0</property>
-                    <property name="yscale">0</property>
-                    <child>
-                      <widget class="GtkHBox" id="hbox72">
-                        <property name="visible">True</property>
-                        <property name="spacing">2</property>
-                        <child>
-                          <widget class="GtkImage" id="image2136">
-                            <property name="visible">True</property>
-                            <property name="stock">gtk-ok</property>
-                          </widget>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="GtkLabel" id="label134">
-                            <property name="visible">True</property>
-                            <property name="label" translatable="yes">Upload</property>
-                            <property name="use_underline">True</property>
-                          </widget>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
-                          </packing>
-                        </child>
-                      </widget>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="GtkMenu" id="port_control_menu">
-    <child>
-      <widget class="GtkImageMenuItem" id="port_control_menu_properties">
-        <property name="label">gtk-properties</property>
-        <property name="visible">True</property>
-        <property name="use_underline">True</property>
-        <property name="use_stock">True</property>
-        <signal name="activate" handler="on_port_control_menu_properties_activate"/>
-      </widget>
-    </child>
-  </widget>
-  <widget class="GtkWindow" id="port_properties_win">
-    <property name="border_width">8</property>
-    <property name="title" translatable="yes">Port Properties - Ingen</property>
-    <property name="resizable">False</property>
-    <property name="window_position">mouse</property>
-    <child>
-      <widget class="GtkVBox" id="dialog-vbox7">
-        <property name="visible">True</property>
-        <property name="spacing">8</property>
-        <child>
-          <widget class="GtkTable" id="table20">
-            <property name="visible">True</property>
-            <property name="n_rows">2</property>
-            <property name="n_columns">2</property>
-            <property name="column_spacing">2</property>
-            <property name="row_spacing">4</property>
-            <child>
-              <widget class="GtkSpinButton" id="port_properties_min_spinner">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="adjustment">0 -100000000 100000000 1 10 0</property>
-                <property name="climb_rate">1</property>
-                <property name="digits">5</property>
-                <property name="numeric">True</property>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkSpinButton" id="port_properties_max_spinner">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="adjustment">1 -99999 99999 1 10 0</property>
-                <property name="climb_rate">1</property>
-                <property name="digits">5</property>
-                <property name="numeric">True</property>
-              </widget>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="right_attach">2</property>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label138">
-                <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes">Minimum Value: </property>
-              </widget>
-              <packing>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkLabel" id="label139">
-                <property name="visible">True</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes">Maximum Value: </property>
-              </widget>
-              <packing>
-                <property name="top_attach">1</property>
-                <property name="bottom_attach">2</property>
-                <property name="x_options">GTK_FILL</property>
-                <property name="y_options"></property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="position">2</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkHButtonBox" id="dialog-action_area7">
-            <property name="visible">True</property>
-            <property name="layout_style">end</property>
-            <child>
-              <widget class="GtkButton" id="port_properties_cancel_button">
-                <property name="label">gtk-cancel</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_stock">True</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkButton" id="port_properties_ok_button">
-                <property name="label">gtk-ok</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="has_default">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_stock">True</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="pack_type">end</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="GtkMenu" id="object_menu">
-    <property name="visible">True</property>
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <child>
-      <widget class="GtkCheckMenuItem" id="object_polyphonic_menuitem">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="tooltip" translatable="yes">Expose individual voices</property>
-        <property name="label" translatable="yes">P_olyphonic</property>
-        <property name="use_underline">True</property>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkMenuItem" id="object_learn_menuitem">
-        <property name="visible">True</property>
-        <property name="label" translatable="yes">_Learn</property>
-        <property name="use_underline">True</property>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkMenuItem" id="object_unlearn_menuitem">
-        <property name="visible">True</property>
-        <property name="label" translatable="yes">_Unlearn</property>
-        <property name="use_underline">True</property>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkImageMenuItem" id="object_disconnect_menuitem">
-        <property name="label">Dis_connect</property>
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="tooltip" translatable="yes">Disconnect all connections</property>
-        <property name="use_underline">True</property>
-        <property name="use_stock">False</property>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkImageMenuItem" id="object_rename_menuitem">
-        <property name="label">_Rename...</property>
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="tooltip" translatable="yes">Rename this object</property>
-        <property name="use_underline">True</property>
-        <property name="use_stock">False</property>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkImageMenuItem" id="object_destroy_menuitem">
-        <property name="label">gtk-delete</property>
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="tooltip" translatable="yes">Destroy this object</property>
-        <property name="use_underline">True</property>
-        <property name="use_stock">True</property>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkSeparatorMenuItem" id="separator1">
-        <property name="visible">True</property>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkImageMenuItem" id="object_properties_menuitem">
-        <property name="label">gtk-properties</property>
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="tooltip" translatable="yes">View and edit properties</property>
-        <property name="use_underline">True</property>
-        <property name="use_stock">True</property>
-      </widget>
-    </child>
-  </widget>
-  <widget class="GtkMenu" id="node_menu">
-    <property name="visible">True</property>
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <child>
-      <widget class="GtkImageMenuItem" id="node_controls_menuitem">
-        <property name="label">Con_trols...</property>
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="tooltip" translatable="yes">Manipulate controls in a separate window</property>
-        <property name="use_underline">True</property>
-        <property name="use_stock">False</property>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkImageMenuItem" id="node_popup_gui_menuitem">
-        <property name="label">_GUI...</property>
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="tooltip" translatable="yes">Show this node's custom graphical interface in a separate window</property>
-        <property name="use_underline">True</property>
-        <property name="use_stock">False</property>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkCheckMenuItem" id="node_embed_gui_menuitem">
-        <property name="visible">True</property>
-        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-        <property name="tooltip" translatable="yes">Embed the custom GUI for this plugin in the patch canvas</property>
-        <property name="label" translatable="yes">_Embed GUI</property>
-        <property name="use_underline">True</property>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkImageMenuItem" id="node_randomize_menuitem">
-        <property name="label">R_andomize</property>
-        <property name="visible">True</property>
-        <property name="tooltip" translatable="yes">Set all controls on this node to random values</property>
-        <property name="use_underline">True</property>
-        <property name="use_stock">False</property>
-      </widget>
-    </child>
-  </widget>
-  <widget class="GtkWindow" id="properties_win">
-    <property name="border_width">12</property>
-    <property name="window_position">center-on-parent</property>
-    <child>
-      <widget class="GtkVBox" id="properties_vbox">
-        <property name="visible">True</property>
-        <property name="orientation">vertical</property>
-        <property name="spacing">12</property>
-        <child>
-          <widget class="GtkScrolledWindow" id="properties_scrolledwindow">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="hscrollbar_policy">automatic</property>
-            <property name="vscrollbar_policy">automatic</property>
-            <child>
-              <widget class="GtkViewport" id="viewport1">
-                <property name="visible">True</property>
-                <property name="resize_mode">queue</property>
-                <property name="shadow_type">none</property>
-                <child>
-                  <widget class="GtkTable" id="properties_table">
-                    <property name="visible">True</property>
-                    <property name="n_columns">3</property>
-                    <property name="column_spacing">12</property>
-                    <property name="row_spacing">6</property>
-                    <child>
-                      <placeholder/>
-                    </child>
-                    <child>
-                      <placeholder/>
-                    </child>
-                    <child>
-                      <placeholder/>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-            </child>
-          </widget>
-          <packing>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="GtkHButtonBox" id="properties_buttonbox">
-            <property name="visible">True</property>
-            <property name="spacing">6</property>
-            <property name="layout_style">end</property>
-            <child>
-              <widget class="GtkButton" id="properties_cancel_button">
-                <property name="label">gtk-cancel</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkButton" id="properties_apply_button">
-                <property name="label">gtk-apply</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkButton" id="properties_ok_button">
-                <property name="label">gtk-ok</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="can_default">True</property>
-                <property name="has_default">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_stock">True</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </widget>
-          <packing>
-            <property name="expand">False</property>
-            <property name="pack_type">end</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
-  <widget class="GtkMenu" id="port_menu">
-    <property name="visible">True</property>
-    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <child>
-      <widget class="GtkMenuItem" id="port_set_min_menuitem">
-        <property name="visible">True</property>
-        <property name="label" translatable="yes">Set m_inimum to current value</property>
-        <property name="use_underline">True</property>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkMenuItem" id="port_set_max_menuitem">
-        <property name="visible">True</property>
-        <property name="label" translatable="yes">Set m_aximum to current value</property>
-        <property name="use_underline">True</property>
-      </widget>
-    </child>
-    <child>
-      <widget class="GtkMenuItem" id="port_reset_range_menuitem">
-        <property name="visible">True</property>
-        <property name="tooltip" translatable="yes">Reset range to plugin defaults</property>
-        <property name="label" translatable="yes">R_eset Range</property>
-        <property name="use_underline">True</property>
-      </widget>
-    </child>
-  </widget>
-</glade-interface>
diff --git a/src/gui/ingen_gui.ui b/src/gui/ingen_gui.ui
new file mode 100644
index 00000000..168a6e0b
--- /dev/null
+++ b/src/gui/ingen_gui.ui
@@ -0,0 +1,2983 @@
+<?xml version="1.0"?>
+<interface>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkWindow" id="patch_win">
+    <property name="title" translatable="yes">Ingen</property>
+    <property name="default_width">776</property>
+    <property name="default_height">480</property>
+    <child>
+      <object class="GtkVBox" id="patch_win_vbox">
+        <property name="visible">True</property>
+        <property name="orientation">vertical</property>
+        <child>
+          <object class="GtkMenuBar" id="menubar">
+            <property name="visible">True</property>
+            <child>
+              <object class="GtkMenuItem" id="patch_file_menu">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">_File</property>
+                <property name="use_underline">True</property>
+                <child type="submenu">
+                  <object class="GtkMenu" id="patch_file_menu_menu">
+                    <child>
+                      <object class="GtkImageMenuItem" id="patch_import_menuitem">
+                        <property name="label">_Import...</property>
+                        <property name="visible">True</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">False</property>
+                        <accelerator key="I" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                        <signal name="activate" handler="on_patch_import_menuitem_activate"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="patch_import_location_menuitem">
+                        <property name="label">Import _Location...</property>
+                        <property name="visible">True</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">False</property>
+                        <accelerator key="L" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                        <signal name="activate" handler="on_import_location1_activate"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkSeparatorMenuItem" id="separator9">
+                        <property name="visible">True</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="patch_save_menuitem">
+                        <property name="label">gtk-save</property>
+                        <property name="visible">True</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                        <signal name="activate" handler="on_file_save_patch_menuitem_activate"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="patch_save_as_menuitem">
+                        <property name="label">Save _As...</property>
+                        <property name="visible">True</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">False</property>
+                        <accelerator key="S" signal="activate" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK"/>
+                        <signal name="activate" handler="on_patch_save_as_menuitem_activate"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="patch_upload_menuitem">
+                        <property name="label">_Upload...</property>
+                        <property name="visible">True</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">False</property>
+                        <accelerator key="U" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                        <signal name="activate" handler="on_patch_upload_menuitem_activate"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="patch_draw_menuitem">
+                        <property name="label">_Draw...</property>
+                        <property name="visible">True</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">False</property>
+                        <accelerator key="D" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                        <signal name="activate" handler="on_patch_draw_menuitem_activate"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkSeparatorMenuItem" id="separator11">
+                        <property name="visible">True</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="patch_close_menuitem">
+                        <property name="label">gtk-close</property>
+                        <property name="visible">True</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                        <signal name="activate" handler="on_patch_file_close_menuitem_activate"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkSeparatorMenuItem" id="separator6">
+                        <property name="visible">True</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="patch_quit_menuitem">
+                        <property name="label">gtk-quit</property>
+                        <property name="visible">True</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                        <signal name="activate" handler="on_patch_file_quit_nokill_menuitem_activate"/>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkMenuItem" id="edit2">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">_Edit</property>
+                <property name="use_underline">True</property>
+                <child type="submenu">
+                  <object class="GtkMenu" id="edit2_menu">
+                    <child>
+                      <object class="GtkCheckMenuItem" id="patch_edit_controls_menuitem">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">_Edit connections</property>
+                        <property name="use_underline">True</property>
+                        <property name="active">True</property>
+                        <accelerator key="e" signal="activate"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkSeparatorMenuItem" id="menuitem4">
+                        <property name="visible">True</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="patch_cut_menuitem">
+                        <property name="label">gtk-cut</property>
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                        <signal name="activate" handler="on_patch_cut_menuitem_activate"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="patch_copy_menuitem">
+                        <property name="label">gtk-copy</property>
+                        <property name="visible">True</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                        <signal name="activate" handler="on_patch_copy_menuitem_activate"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="patch_paste_menuitem">
+                        <property name="label">gtk-paste</property>
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                        <signal name="activate" handler="on_patch_paste_menuitem_activate"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="patch_delete_menuitem">
+                        <property name="label">gtk-delete</property>
+                        <property name="visible">True</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                        <accelerator key="Delete" signal="activate"/>
+                        <signal name="activate" handler="on_patch_delete_menuitem_activate"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="patch_select_all_menuitem">
+                        <property name="label">gtk-select-all</property>
+                        <property name="visible">True</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                        <accelerator key="A" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                        <signal name="activate" handler="on_patch_select_all_menuitem_activate"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkSeparatorMenuItem" id="menuitem1">
+                        <property name="visible">True</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="patch_arrange_menuitem">
+                        <property name="label">Arrange</property>
+                        <property name="visible">True</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">False</property>
+                        <accelerator key="G" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkSeparatorMenuItem" id="menuitem2">
+                        <property name="visible">True</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="patch_view_control_window_menuitem">
+                        <property name="label">C_ontrols...</property>
+                        <property name="visible">True</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">False</property>
+                        <accelerator key="O" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                        <signal name="activate" handler="on_patch_view_control_window_menuitem_activate"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="patch_properties_menuitem">
+                        <property name="label">gtk-properties</property>
+                        <property name="visible">True</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                        <accelerator key="P" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                        <signal name="activate" handler="on_patch_properties_menuitem_activate"/>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkMenuItem" id="patch_patch_menu">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">_View</property>
+                <property name="use_underline">True</property>
+                <child type="submenu">
+                  <object class="GtkMenu" id="patch_patch_menu_menu">
+                    <child>
+                      <object class="GtkCheckMenuItem" id="patch_human_names_menuitem">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">_Human names</property>
+                        <property name="use_underline">True</property>
+                        <property name="active">True</property>
+                        <accelerator key="H" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkCheckMenuItem" id="patch_show_port_names_menuitem">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">Port _Names</property>
+                        <property name="use_underline">True</property>
+                        <property name="active">True</property>
+                        <accelerator key="n" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkCheckMenuItem" id="patch_status_bar_menuitem">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">_Status Bar</property>
+                        <property name="use_underline">True</property>
+                        <property name="active">True</property>
+                        <accelerator key="b" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkSeparatorMenuItem" id="&lt;separator&gt;">
+                        <property name="visible">True</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="patch_zoom_in_menuitem">
+                        <property name="label">gtk-zoom-in</property>
+                        <property name="visible">True</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                        <accelerator key="equal" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="patch_zoom_out_menuitem">
+                        <property name="label">gtk-zoom-out</property>
+                        <property name="visible">True</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                        <accelerator key="minus" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="patch_zoom_normal_menuitem">
+                        <property name="label">gtk-zoom-100</property>
+                        <property name="visible">True</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                        <accelerator key="0" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkSeparatorMenuItem" id="menuitem3">
+                        <property name="visible">True</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="patch_fullscreen_menuitem">
+                        <property name="label">gtk-fullscreen</property>
+                        <property name="visible">True</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                        <accelerator key="F11" signal="activate"/>
+                        <signal name="activate" handler="patch_fullscreen_menuitem"/>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkMenuItem" id="view1">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">_Windows</property>
+                <property name="use_underline">True</property>
+                <signal name="activate" handler="on_view1_activate"/>
+                <child type="submenu">
+                  <object class="GtkMenu" id="view1_menu">
+                    <child>
+                      <object class="GtkImageMenuItem" id="patch_view_engine_window_menuitem">
+                        <property name="label">_Engine</property>
+                        <property name="visible">True</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">False</property>
+                        <accelerator key="E" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                        <signal name="activate" handler="on_patch_view_engine_window_menuitem_activate"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="patch_view_patch_tree_window_menuitem">
+                        <property name="label">_Patch Tree</property>
+                        <property name="visible">True</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">False</property>
+                        <accelerator key="T" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                        <signal name="activate" handler="on_patch_view_tree_window_menuitem_activate"/>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="patch_view_messages_window_menuitem">
+                        <property name="label">_Messages</property>
+                        <property name="visible">True</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">False</property>
+                        <accelerator key="M" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+                        <signal name="activate" handler="on_patch_view_messages_window_menuitem_activate"/>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkMenuItem" id="help_menu">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">_Help</property>
+                <property name="use_underline">True</property>
+                <signal name="activate" handler="on_help_menu_activate"/>
+                <child type="submenu">
+                  <object class="GtkMenu" id="help_menu_menu">
+                    <child>
+                      <object class="GtkImageMenuItem" id="right-click_the_canvas_to_add_objects1">
+                        <property name="label">Right-click the canvas to add objects</property>
+                        <property name="visible">True</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">False</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="help_e_to_edit_menu_item">
+                        <property name="label">Press 'e' to toggle edit mode</property>
+                        <property name="visible">True</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">False</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkSeparatorMenuItem" id="separator13">
+                        <property name="visible">True</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkImageMenuItem" id="patch_help_about_menuitem">
+                        <property name="label">gtk-about</property>
+                        <property name="visible">True</property>
+                        <property name="use_underline">True</property>
+                        <property name="use_stock">True</property>
+                        <signal name="activate" handler="on_about1_activate"/>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkHPaned" id="hpaned1">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <child>
+              <object class="GtkScrolledWindow" id="patch_win_scrolledwin">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="hscrollbar_policy">automatic</property>
+                <property name="vscrollbar_policy">automatic</property>
+                <child>
+                  <object class="GtkViewport" id="patch_win_viewport">
+                    <property name="visible">True</property>
+                    <property name="resize_mode">queue</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <placeholder/>
+                    </child>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="resize">True</property>
+                <property name="shrink">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkTextView" id="patch_documentation_textview">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="editable">False</property>
+                <property name="wrap_mode">word</property>
+                <property name="cursor_visible">False</property>
+              </object>
+              <packing>
+                <property name="resize">False</property>
+                <property name="shrink">True</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkStatusbar" id="patch_win_status_bar">
+            <property name="visible">True</property>
+            <property name="spacing">2</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="GtkWindow" id="load_plugin_win">
+    <property name="border_width">8</property>
+    <property name="title" translatable="yes">Load Plugin - Ingen</property>
+    <property name="window_position">center-on-parent</property>
+    <property name="destroy_with_parent">True</property>
+    <property name="type_hint">dialog</property>
+    <child>
+      <object class="GtkVBox" id="vbox9">
+        <property name="visible">True</property>
+        <property name="spacing">1</property>
+        <child>
+          <object class="GtkScrolledWindow" id="scrolledwindow3">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="border_width">2</property>
+            <property name="hscrollbar_policy">automatic</property>
+            <property name="vscrollbar_policy">automatic</property>
+            <child>
+              <object class="GtkTreeView" id="load_plugin_plugins_treeview">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="border_width">2</property>
+                <property name="reorderable">True</property>
+                <property name="rules_hint">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkTable" id="table16">
+            <property name="visible">True</property>
+            <property name="n_rows">3</property>
+            <property name="n_columns">3</property>
+            <property name="row_spacing">12</property>
+            <child>
+              <object class="GtkLabel" id="label66">
+                <property name="visible">True</property>
+                <property name="xalign">1</property>
+                <property name="label" translatable="yes">Node _Symbol:</property>
+                <property name="use_markup">True</property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">load_plugin_name_entry</property>
+              </object>
+              <packing>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHSeparator" id="hseparator1">
+                <property name="visible">True</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options">GTK_FILL</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHSeparator" id="hseparator2">
+                <property name="visible">True</property>
+              </object>
+              <packing>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options">GTK_FILL</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHSeparator" id="hseparator3">
+                <property name="visible">True</property>
+              </object>
+              <packing>
+                <property name="left_attach">2</property>
+                <property name="right_attach">3</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options">GTK_FILL</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHBox" id="hbox63">
+                <property name="visible">True</property>
+                <child>
+                  <object class="GtkEntry" id="load_plugin_name_entry">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkCheckButton" id="load_plugin_polyphonic_checkbutton">
+                    <property name="label" translatable="yes">_Polyphonic</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="use_underline">True</property>
+                    <property name="active">True</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="padding">8</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+                <property name="y_options">GTK_FILL</property>
+                <property name="x_padding">6</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkEntry" id="load_plugin_search_entry">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="has_focus">True</property>
+                <property name="secondary_icon_stock">gtk-clear</property>
+                <property name="secondary_icon_activatable">True</property>
+                <property name="secondary_icon_sensitive">True</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">3</property>
+                <property name="y_options">GTK_FILL</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkComboBox" id="load_plugin_filter_combo">
+                <property name="visible">True</property>
+              </object>
+              <packing>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHButtonBox" id="hbuttonbox1">
+                <property name="visible">True</property>
+                <property name="spacing">4</property>
+                <child>
+                  <object class="GtkButton" id="load_plugin_close_button">
+                    <property name="label">gtk-close</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="use_stock">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkButton" id="load_plugin_add_button">
+                    <property name="label">gtk-add</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="use_stock">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="left_attach">2</property>
+                <property name="right_attach">3</property>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options">GTK_FILL</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="GtkWindow" id="new_subpatch_win">
+    <property name="width_request">320</property>
+    <property name="border_width">8</property>
+    <property name="title" translatable="yes">Create Subpatch - Ingen</property>
+    <property name="resizable">False</property>
+    <property name="window_position">center-on-parent</property>
+    <property name="type_hint">dialog</property>
+    <child>
+      <object class="GtkVBox" id="vbox4">
+        <property name="visible">True</property>
+        <child>
+          <object class="GtkTable" id="table1">
+            <property name="visible">True</property>
+            <property name="n_rows">2</property>
+            <property name="n_columns">2</property>
+            <child>
+              <object class="GtkLabel" id="label8">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">_Symbol: </property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">new_subpatch_name_entry</property>
+              </object>
+              <packing>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND</property>
+                <property name="x_padding">5</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label9">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">_Polyphony: </property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">new_subpatch_polyphony_spinbutton</property>
+              </object>
+              <packing>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options">GTK_EXPAND</property>
+                <property name="x_padding">5</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkSpinButton" id="new_subpatch_polyphony_spinbutton">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="activates_default">True</property>
+                <property name="adjustment"></property>
+                <property name="climb_rate">1</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
+                <property name="y_padding">4</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkEntry" id="new_subpatch_name_entry">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="has_focus">True</property>
+                <property name="activates_default">True</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="y_options"></property>
+                <property name="y_padding">4</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="new_subpatch_message_label">
+            <property name="visible">True</property>
+            <property name="wrap">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkHButtonBox" id="hbuttonbox5">
+            <property name="visible">True</property>
+            <property name="spacing">4</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="new_subpatch_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="new_subpatch_ok_button">
+                <property name="label">gtk-ok</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">2</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="GtkFileChooserDialog" id="load_patch_win">
+    <property name="title" translatable="yes">Load Patch - Ingen</property>
+    <property name="window_position">center-on-parent</property>
+    <property name="type_hint">dialog</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="vbox11">
+        <property name="spacing">24</property>
+        <child>
+          <object class="GtkAlignment" id="alignment1">
+            <property name="visible">True</property>
+            <property name="xalign">0</property>
+            <property name="xscale">0</property>
+            <child>
+              <object class="GtkTable" id="table14">
+                <property name="visible">True</property>
+                <property name="n_rows">3</property>
+                <property name="n_columns">3</property>
+                <property name="column_spacing">12</property>
+                <property name="row_spacing">12</property>
+                <child>
+                  <object class="GtkLabel" id="load_patch_poly_label">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">Polyphony: </property>
+                    <property name="use_markup">True</property>
+                  </object>
+                  <packing>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                    <property name="x_options">GTK_FILL</property>
+                    <property name="y_options"></property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkRadioButton" id="load_patch_poly_from_file_radio">
+                    <property name="label" translatable="yes">Load from _File</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="has_tooltip">True</property>
+                    <property name="use_underline">True</property>
+                    <property name="draw_indicator">True</property>
+                    <property name="group">load_patch_poly_voices_radio</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">2</property>
+                    <property name="right_attach">3</property>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                    <property name="x_options">GTK_FILL</property>
+                    <property name="y_options"></property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="load_patch_ports_label">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">Ports: </property>
+                    <property name="use_markup">True</property>
+                  </object>
+                  <packing>
+                    <property name="top_attach">2</property>
+                    <property name="bottom_attach">3</property>
+                    <property name="y_options">GTK_FILL</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkRadioButton" id="load_patch_insert_ports_radio">
+                    <property name="label" translatable="yes">_Insert new ports</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="has_tooltip">True</property>
+                    <property name="use_underline">True</property>
+                    <property name="draw_indicator">True</property>
+                    <property name="group">load_patch_merge_ports_radio</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">2</property>
+                    <property name="right_attach">3</property>
+                    <property name="top_attach">2</property>
+                    <property name="bottom_attach">3</property>
+                    <property name="y_options">GTK_FILL</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkRadioButton" id="load_patch_merge_ports_radio">
+                    <property name="label" translatable="yes">_Merge with existing ports</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="has_tooltip">True</property>
+                    <property name="use_underline">True</property>
+                    <property name="active">True</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="top_attach">2</property>
+                    <property name="bottom_attach">3</property>
+                    <property name="y_options">GTK_FILL</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkHBox" id="hbox58">
+                    <property name="visible">True</property>
+                    <property name="spacing">6</property>
+                    <child>
+                      <object class="GtkRadioButton" id="load_patch_poly_voices_radio">
+                        <property name="label" translatable="yes">_Voices:</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="has_tooltip">True</property>
+                        <property name="use_underline">True</property>
+                        <property name="active">True</property>
+                        <property name="draw_indicator">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkSpinButton" id="load_patch_poly_spinbutton">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="invisible_char">&#x25CF;</property>
+                        <property name="adjustment"></property>
+                        <property name="climb_rate">1</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                    <property name="x_options">GTK_FILL</property>
+                    <property name="y_options">GTK_FILL</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="load_patch_symbol_label">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">_Symbol: </property>
+                    <property name="use_markup">True</property>
+                    <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">load_patch_symbol_entry</property>
+                  </object>
+                  <packing>
+                    <property name="x_options">GTK_FILL</property>
+                    <property name="y_options"></property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" id="load_patch_symbol_entry">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="invisible_char">&#x25CF;</property>
+                    <property name="activates_default">True</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">3</property>
+                    <property name="y_options">GTK_FILL</property>
+                  </packing>
+                </child>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="hbuttonbox3">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="load_patch_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="load_patch_ok_button">
+                <property name="label">gtk-open</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">load_patch_cancel_button</action-widget>
+      <action-widget response="-5">load_patch_ok_button</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkWindow" id="warehouse_win">
+    <property name="title" translatable="yes">Warehouse - Ingen</property>
+    <child>
+      <object class="GtkTable" id="table8">
+        <property name="visible">True</property>
+        <property name="n_rows">6</property>
+        <property name="column_spacing">12</property>
+        <property name="row_spacing">12</property>
+        <child>
+          <object class="GtkVBox" id="toggle_control">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <child>
+              <object class="GtkHBox" id="hbox2">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <child>
+                  <object class="GtkLabel" id="toggle_control_name_label">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="xpad">4</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                    <property name="single_line_mode">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkAlignment" id="alignment7">
+                    <property name="visible">True</property>
+                    <property name="yalign">1</property>
+                    <property name="yscale">0</property>
+                    <property name="bottom_padding">1</property>
+                    <property name="left_padding">1</property>
+                    <property name="right_padding">4</property>
+                    <child>
+                      <object class="GtkHSeparator" id="hseparator7">
+                        <property name="visible">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkCheckButton" id="toggle_control_check">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="top_attach">4</property>
+            <property name="bottom_attach">5</property>
+            <property name="y_padding">8</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkVBox" id="control_panel_vbox">
+            <property name="visible">True</property>
+            <child>
+              <object class="GtkAlignment" id="alignment6">
+                <property name="visible">True</property>
+                <property name="yalign">0</property>
+                <child>
+                  <object class="GtkScrolledWindow" id="scrolledwin1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="hscrollbar_policy">never</property>
+                    <property name="vscrollbar_policy">automatic</property>
+                    <child>
+                      <object class="GtkViewport" id="viewport1">
+                        <property name="visible">True</property>
+                        <property name="shadow_type">none</property>
+                        <child>
+                          <object class="GtkVBox" id="control_panel_controls_box">
+                            <property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                          </object>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+          </object>
+        </child>
+        <child>
+          <object class="GtkVBox" id="patch_view_box">
+            <property name="visible">True</property>
+            <child>
+              <object class="GtkHBox" id="hbox70">
+                <property name="visible">True</property>
+                <child>
+                  <object class="GtkToolbar" id="toolbar6">
+                    <property name="visible">True</property>
+                    <property name="toolbar_style">icons</property>
+                    <property name="icon_size">1</property>
+                    <child>
+                      <object class="GtkToolItem" id="patch_view_breadcrumb_container">
+                        <property name="visible">True</property>
+                        <child>
+                          <placeholder/>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkToolbar" id="patch_view_toolbar">
+                    <property name="visible">True</property>
+                    <property name="toolbar_style">icons</property>
+                    <property name="show_arrow">False</property>
+                    <property name="icon_size">1</property>
+                    <child>
+                      <object class="GtkToggleToolButton" id="patch_view_process_but">
+                        <property name="visible">True</property>
+                        <property name="use_underline">True</property>
+                        <property name="stock_id">gtk-execute</property>
+                        <property name="active">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="homogeneous">True</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkToolItem" id="toolitem7">
+                        <property name="visible">True</property>
+                        <child>
+                          <object class="GtkImage" id="image1978">
+                            <property name="visible">True</property>
+                            <property name="xpad">4</property>
+                            <property name="stock">gtk-copy</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkToolItem" id="toolitem10">
+                        <property name="visible">True</property>
+                        <child>
+                          <object class="GtkSpinButton" id="patch_view_poly_spin">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="adjustment"></property>
+                            <property name="climb_rate">1</property>
+                            <property name="numeric">True</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkSeparatorToolItem" id="separatortoolitem18">
+                        <property name="visible">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkToolButton" id="patch_view_save_but">
+                        <property name="visible">True</property>
+                        <property name="stock_id">gtk-save</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="homogeneous">True</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkSeparatorToolItem" id="separatortoolitem22">
+                        <property name="visible">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkToolButton" id="patch_view_refresh_but">
+                        <property name="visible">True</property>
+                        <property name="stock_id">gtk-refresh</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="homogeneous">True</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkToolButton" id="patch_view_zoom_normal_but">
+                        <property name="visible">True</property>
+                        <property name="use_underline">True</property>
+                        <property name="stock_id">gtk-zoom-100</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="homogeneous">True</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkToolButton" id="patch_view_zoom_full_but">
+                        <property name="visible">True</property>
+                        <property name="use_underline">True</property>
+                        <property name="stock_id">gtk-zoom-fit</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="homogeneous">True</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkSeparatorToolItem" id="toolbutton1">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkToggleToolButton" id="patch_view_edit_mode_but">
+                        <property name="visible">True</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                        <property name="label" translatable="yes">Edit</property>
+                        <property name="stock_id">gtk-connect</property>
+                        <property name="active">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="homogeneous">True</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkScrolledWindow" id="patch_view_scrolledwindow">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="has_focus">True</property>
+                <property name="is_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="events">GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON1_MOTION_MASK | GDK_BUTTON2_MOTION_MASK | GDK_BUTTON3_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_FOCUS_CHANGE_MASK | GDK_STRUCTURE_MASK | GDK_PROPERTY_CHANGE_MASK | GDK_VISIBILITY_NOTIFY_MASK | GDK_PROXIMITY_IN_MASK | GDK_PROXIMITY_OUT_MASK | GDK_SUBSTRUCTURE_MASK | GDK_SCROLL_MASK</property>
+                <property name="border_width">1</property>
+                <property name="shadow_type">in</property>
+                <child>
+                  <placeholder/>
+                </child>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="top_attach">2</property>
+            <property name="bottom_attach">3</property>
+            <property name="x_options">GTK_FILL</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkHSeparator" id="hseparator5">
+            <property name="visible">True</property>
+          </object>
+          <packing>
+            <property name="top_attach">1</property>
+            <property name="bottom_attach">2</property>
+            <property name="x_options">GTK_FILL</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkVBox" id="control_strip">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <child>
+              <object class="GtkHBox" id="hbox1">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <child>
+                  <object class="GtkLabel" id="control_strip_name_label">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="yalign">1</property>
+                    <property name="xpad">4</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                    <property name="single_line_mode">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkAlignment" id="alignment3">
+                    <property name="visible">True</property>
+                    <property name="yalign">1</property>
+                    <property name="yscale">0</property>
+                    <property name="bottom_padding">1</property>
+                    <property name="left_padding">1</property>
+                    <property name="right_padding">4</property>
+                    <child>
+                      <object class="GtkHSeparator" id="hseparator6">
+                        <property name="visible">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkSpinButton" id="control_strip_spinner">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                    <property name="width_chars">12</property>
+                    <property name="adjustment"></property>
+                    <property name="digits">4</property>
+                    <property name="numeric">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHScale" id="control_strip_slider">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="adjustment"></property>
+                <property name="digits">63</property>
+                <property name="draw_value">False</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="top_attach">3</property>
+            <property name="bottom_attach">4</property>
+            <property name="y_padding">8</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkVBox" id="string_control">
+            <property name="visible">True</property>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+            <property name="orientation">vertical</property>
+            <child>
+              <object class="GtkHBox" id="hbox3">
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <child>
+                  <object class="GtkLabel" id="string_control_name_label">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="xpad">4</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Name&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                    <property name="single_line_mode">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" id="string_control_entry">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="invisible_char">&#x25CF;</property>
+                    <property name="caps_lock_warning">False</property>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="top_attach">5</property>
+            <property name="bottom_attach">6</property>
+            <property name="y_padding">8</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="GtkWindow" id="messages_win">
+    <property name="width_request">400</property>
+    <property name="height_request">180</property>
+    <property name="border_width">8</property>
+    <property name="title" translatable="yes">Messages - Ingen</property>
+    <child>
+      <object class="GtkVBox" id="vbox12">
+        <property name="visible">True</property>
+        <property name="spacing">6</property>
+        <child>
+          <object class="GtkScrolledWindow" id="scrolledwindow2">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="hscrollbar_policy">automatic</property>
+            <property name="vscrollbar_policy">automatic</property>
+            <property name="shadow_type">in</property>
+            <child>
+              <object class="GtkTextView" id="messages_textview">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="pixels_above_lines">5</property>
+                <property name="pixels_below_lines">5</property>
+                <property name="editable">False</property>
+                <property name="wrap_mode">word</property>
+                <property name="left_margin">5</property>
+                <property name="right_margin">5</property>
+                <property name="cursor_visible">False</property>
+                <property name="accepts_tab">False</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkHButtonBox" id="hbuttonbox8">
+            <property name="visible">True</property>
+            <property name="spacing">6</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="messages_clear_button">
+                <property name="label">gtk-clear</property>
+                <property name="visible">True</property>
+                <property name="sensitive">False</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="messages_close_button">
+                <property name="label">gtk-close</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="GtkWindow" id="config_win">
+    <property name="border_width">8</property>
+    <property name="title" translatable="yes">Configuration - Ingen</property>
+    <child>
+      <object class="GtkVBox" id="vbox13">
+        <property name="visible">True</property>
+        <property name="spacing">6</property>
+        <child>
+          <object class="GtkTable" id="table9">
+            <property name="visible">True</property>
+            <property name="n_rows">2</property>
+            <property name="n_columns">2</property>
+            <child>
+              <object class="GtkLabel" id="label90">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">&lt;b&gt;Patch Search Path: &lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+              <packing>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkEntry" id="config_path_entry">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label91">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">&lt;i&gt;Example:  /foo/bar:/home/john/patches:/usr/share/om/patches&lt;/i&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label103">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+              </object>
+              <packing>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="fill">False</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkHButtonBox" id="hbuttonbox2">
+            <property name="visible">True</property>
+            <property name="spacing">6</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="config_save_button">
+                <property name="label">gtk-save</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="config_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="config_ok_button">
+                <property name="label">gtk-ok</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="GtkWindow" id="rename_win">
+    <property name="width_request">250</property>
+    <property name="title" translatable="yes">Rename</property>
+    <property name="window_position">center-on-parent</property>
+    <property name="destroy_with_parent">True</property>
+    <property name="type_hint">dialog</property>
+    <child>
+      <object class="GtkVBox" id="vbox1">
+        <property name="visible">True</property>
+        <property name="border_width">5</property>
+        <property name="orientation">vertical</property>
+        <child>
+          <object class="GtkTable" id="table2">
+            <property name="visible">True</property>
+            <property name="n_rows">2</property>
+            <property name="n_columns">2</property>
+            <property name="row_spacing">8</property>
+            <child>
+              <object class="GtkLabel" id="label95">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">_Symbol: </property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">rename_symbol_entry</property>
+              </object>
+              <packing>
+                <property name="x_options">GTK_FILL</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkEntry" id="rename_label_entry">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="invisible_char">&#x25CF;</property>
+                <property name="activates_default">True</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">_Label: </property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">rename_label_entry</property>
+              </object>
+              <packing>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options">GTK_FILL</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkEntry" id="rename_symbol_entry">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="has_focus">True</property>
+                <property name="invisible_char">&#x25CF;</property>
+                <property name="activates_default">True</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="rename_message_label">
+            <property name="visible">True</property>
+          </object>
+          <packing>
+            <property name="padding">12</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkHButtonBox" id="hbuttonbox4">
+            <property name="visible">True</property>
+            <property name="spacing">8</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="rename_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="rename_ok_button">
+                <property name="label">gtk-ok</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="GtkAboutDialog" id="about_win">
+    <property name="destroy_with_parent">True</property>
+    <property name="type_hint">normal</property>
+    <property name="program_name">Ingen</property>
+    <property name="version">@INGEN_VERSION@</property>
+    <property name="copyright" translatable="yes">Copyright 2005-2011 David Robillard &lt;http://drobilla.net&gt;</property>
+    <property name="website">http://drobilla.net/software/ingen</property>
+    <property name="license" translatable="yes">Licensed under the GNU GPL, Version 2.
+
+See COPYING file included with this distribution, or http://www.gnu.org/licenses/gpl.txt for more information</property>
+    <property name="authors">Author:
+	David Robillard &lt;d@drobilla.net&gt;
+
+Contributors:
+	Lars Luthman - DSSI enhancements, bugfixes
+	Mario Lang - SuperCollider bindings, bugfixes
+	Leonard Ritter - Python bindings
+</property>
+    <property name="translator_credits" translatable="yes" comments="TRANSLATORS: Replace this string with your names, one name per line.">translator-credits</property>
+    <property name="artists">Usability / UI Design:
+	Thorsten Wilms</property>
+    <property name="wrap_license">True</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox3">
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area3"/>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="GtkWindow" id="patch_tree_win">
+    <property name="width_request">320</property>
+    <property name="height_request">340</property>
+    <property name="border_width">8</property>
+    <property name="title" translatable="yes">Patches - Ingen</property>
+    <child>
+      <object class="GtkScrolledWindow" id="scrolledwindow8">
+        <property name="visible">True</property>
+        <property name="can_focus">True</property>
+        <property name="border_width">3</property>
+        <property name="hscrollbar_policy">automatic</property>
+        <property name="vscrollbar_policy">automatic</property>
+        <property name="shadow_type">in</property>
+        <child>
+          <object class="GtkTreeView" id="patches_treeview">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="rules_hint">True</property>
+          </object>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="GtkDialog" id="connect_win">
+    <property name="border_width">6</property>
+    <property name="title" translatable="yes">Engine - Ingen</property>
+    <property name="resizable">False</property>
+    <property name="type_hint">dialog</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox4">
+        <property name="visible">True</property>
+        <property name="spacing">6</property>
+        <child>
+          <object class="GtkVBox" id="vbox19">
+            <property name="visible">True</property>
+            <child>
+              <object class="GtkHBox" id="hbox61">
+                <property name="visible">True</property>
+                <child>
+                  <object class="GtkImage" id="connect_icon">
+                    <property name="visible">True</property>
+                    <property name="xpad">12</property>
+                    <property name="stock">gtk-disconnect</property>
+                    <property name="icon-size">3</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVBox" id="vbox20">
+                    <property name="visible">True</property>
+                    <property name="border_width">5</property>
+                    <property name="homogeneous">True</property>
+                    <child>
+                      <object class="GtkProgressBar" id="connect_progress_bar">
+                        <property name="visible">True</property>
+                        <property name="pulse_step">0.10000000149</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="connect_progress_label">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">Not Connected</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHSeparator" id="hseparator4">
+                <property name="visible">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="padding">4</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkTable" id="table18">
+                <property name="visible">True</property>
+                <property name="n_rows">3</property>
+                <property name="n_columns">2</property>
+                <property name="row_spacing">8</property>
+                <child>
+                  <object class="GtkHBox" id="hbox64">
+                    <property name="visible">True</property>
+                    <child>
+                      <object class="GtkSpinButton" id="connect_port_spinbutton">
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="can_focus">True</property>
+                        <property name="adjustment"></property>
+                        <property name="climb_rate">1</property>
+                        <property name="numeric">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                    <property name="y_options">GTK_FILL</property>
+                    <property name="x_padding">8</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkHBox" id="hbox67">
+                    <property name="visible">True</property>
+                    <child>
+                      <object class="GtkEntry" id="connect_url_entry">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="activates_default">True</property>
+                        <property name="width_chars">28</property>
+                        <property name="text" translatable="yes">osc.udp://localhost:16180</property>
+                      </object>
+                      <packing>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="x_options">GTK_FILL</property>
+                    <property name="y_options">GTK_FILL</property>
+                    <property name="x_padding">8</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkRadioButton" id="connect_server_radiobutton">
+                    <property name="label" translatable="yes">_Connect to running server at: </property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="use_underline">True</property>
+                    <property name="draw_indicator">True</property>
+                  </object>
+                  <packing>
+                    <property name="x_options">GTK_FILL</property>
+                    <property name="y_options"></property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkRadioButton" id="connect_launch_radiobutton">
+                    <property name="label" translatable="yes">_Launch and connect to server on port: </property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="use_underline">True</property>
+                    <property name="draw_indicator">True</property>
+                    <property name="group">connect_server_radiobutton</property>
+                  </object>
+                  <packing>
+                    <property name="top_attach">1</property>
+                    <property name="bottom_attach">2</property>
+                    <property name="x_options">GTK_FILL</property>
+                    <property name="y_options"></property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkRadioButton" id="connect_internal_radiobutton">
+                    <property name="label" translatable="yes">Use _internal engine</property>
+                    <property name="visible">True</property>
+                    <property name="sensitive">False</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="use_underline">True</property>
+                    <property name="draw_indicator">True</property>
+                    <property name="group">connect_server_radiobutton</property>
+                  </object>
+                  <packing>
+                    <property name="top_attach">2</property>
+                    <property name="bottom_attach">3</property>
+                    <property name="x_options">GTK_FILL</property>
+                    <property name="y_options"></property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="label131">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                  </object>
+                  <packing>
+                    <property name="left_attach">1</property>
+                    <property name="right_attach">2</property>
+                    <property name="top_attach">2</property>
+                    <property name="bottom_attach">3</property>
+                    <property name="x_options">GTK_FILL</property>
+                    <property name="y_options"></property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHSeparator" id="hseparator8">
+                <property name="visible">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="position">3</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHButtonBox" id="hbuttonbox6">
+                <property name="visible">True</property>
+                <property name="spacing">6</property>
+                <property name="layout_style">start</property>
+                <child>
+                  <object class="GtkButton" id="connect_deactivate_button">
+                    <property name="label" translatable="yes">D_eactivate</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="use_underline">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkButton" id="connect_activate_button">
+                    <property name="label" translatable="yes">_Activate</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="use_underline">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="padding">6</property>
+                <property name="position">4</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area4">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="connect_quit_button">
+                <property name="label">gtk-quit</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="connect_disconnect_button">
+                <property name="label">gtk-disconnect</property>
+                <property name="visible">True</property>
+                <property name="sensitive">False</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="connect_connect_button">
+                <property name="label">gtk-connect</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="0">connect_quit_button</action-widget>
+      <action-widget response="-6">connect_disconnect_button</action-widget>
+      <action-widget response="-6">connect_connect_button</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkMenu" id="canvas_menu">
+    <property name="visible">True</property>
+    <child>
+      <object class="GtkCheckMenuItem" id="canvas_menu_edit">
+        <property name="visible">True</property>
+        <property name="label" translatable="yes">_Edit</property>
+        <property name="use_underline">True</property>
+        <property name="active">True</property>
+      </object>
+    </child>
+    <child>
+      <object class="GtkSeparatorMenuItem" id="menuitem5">
+        <property name="visible">True</property>
+      </object>
+    </child>
+    <child>
+      <object class="GtkImageMenuItem" id="input1">
+        <property name="label">_Input</property>
+        <property name="visible">True</property>
+        <property name="use_underline">True</property>
+        <property name="use_stock">False</property>
+        <child type="submenu">
+          <object class="GtkMenu" id="input1_menu">
+            <child>
+              <object class="GtkMenuItem" id="canvas_menu_add_audio_input">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">_Audio</property>
+                <property name="use_underline">True</property>
+                <signal name="activate" handler="on_canvas_menu_add_audio_input_activate"/>
+              </object>
+            </child>
+            <child>
+              <object class="GtkMenuItem" id="canvas_menu_add_control_input">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">_Control</property>
+                <property name="use_underline">True</property>
+                <signal name="activate" handler="on_canvas_menu_add_control_input_activate"/>
+              </object>
+            </child>
+            <child>
+              <object class="GtkMenuItem" id="canvas_menu_add_event_input">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">_Event</property>
+                <property name="use_underline">True</property>
+                <signal name="activate" handler="on_canvas_menu_add_event_input_activate"/>
+              </object>
+            </child>
+          </object>
+        </child>
+      </object>
+    </child>
+    <child>
+      <object class="GtkImageMenuItem" id="output1">
+        <property name="label">_Output</property>
+        <property name="visible">True</property>
+        <property name="use_underline">True</property>
+        <property name="use_stock">False</property>
+        <child type="submenu">
+          <object class="GtkMenu" id="output1_menu">
+            <child>
+              <object class="GtkMenuItem" id="canvas_menu_add_audio_output">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">_Audio</property>
+                <property name="use_underline">True</property>
+                <signal name="activate" handler="on_canvas_menu_add_audio_output_activate"/>
+              </object>
+            </child>
+            <child>
+              <object class="GtkMenuItem" id="canvas_menu_add_control_output">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">_Control</property>
+                <property name="use_underline">True</property>
+                <signal name="activate" handler="on_canvas_menu_add_control_output_activate"/>
+              </object>
+            </child>
+            <child>
+              <object class="GtkMenuItem" id="canvas_menu_add_event_output">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">_Event</property>
+                <property name="use_underline">True</property>
+                <signal name="activate" handler="on_canvas_menu_add_event_output_activate"/>
+              </object>
+            </child>
+          </object>
+        </child>
+      </object>
+    </child>
+    <child>
+      <object class="GtkImageMenuItem" id="canvas_menu_load_plugin">
+        <property name="label">_Find Plugin...</property>
+        <property name="visible">True</property>
+        <property name="use_underline">True</property>
+        <property name="use_stock">False</property>
+        <signal name="activate" handler="on_canvas_menu_add_plugin_activate"/>
+      </object>
+    </child>
+    <child>
+      <object class="GtkSeparatorMenuItem" id="menuitem6">
+        <property name="visible">True</property>
+      </object>
+    </child>
+    <child>
+      <object class="GtkImageMenuItem" id="canvas_menu_load_patch">
+        <property name="label">_Load Patch...</property>
+        <property name="visible">True</property>
+        <property name="use_underline">True</property>
+        <property name="use_stock">False</property>
+        <signal name="activate" handler="on_canvas_menu_load_patch_activate"/>
+      </object>
+    </child>
+    <child>
+      <object class="GtkImageMenuItem" id="canvas_menu_new_patch">
+        <property name="label">_New Patch...</property>
+        <property name="visible">True</property>
+        <property name="use_underline">True</property>
+        <property name="use_stock">False</property>
+        <signal name="activate" handler="on_canvas_menu_new_patch_activate"/>
+      </object>
+    </child>
+  </object>
+  <object class="GtkDialog" id="load_remote_patch_win">
+    <property name="border_width">8</property>
+    <property name="title" translatable="yes">Download Patch - Ingen</property>
+    <property name="type_hint">dialog</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox5">
+        <property name="visible">True</property>
+        <property name="spacing">8</property>
+        <child>
+          <object class="GtkVBox" id="vbox21">
+            <property name="visible">True</property>
+            <property name="spacing">8</property>
+            <child>
+              <object class="GtkScrolledWindow" id="load_remote_patch_treeview_sw">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="has_focus">True</property>
+                <property name="hscrollbar_policy">automatic</property>
+                <property name="vscrollbar_policy">automatic</property>
+                <property name="shadow_type">in</property>
+                <child>
+                  <object class="GtkTreeView" id="load_remote_patch_treeview">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHBox" id="hbox71">
+                <property name="visible">True</property>
+                <child>
+                  <object class="GtkLabel" id="label133">
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">URI: </property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" id="load_remote_patch_uri_entry">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="width_chars">78</property>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area5">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="load_remote_patch_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="load_remote_patch_open_button">
+                <property name="label">gtk-open</property>
+                <property name="visible">True</property>
+                <property name="sensitive">False</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-6">load_remote_patch_cancel_button</action-widget>
+      <action-widget response="-5">load_remote_patch_open_button</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkDialog" id="upload_patch_win">
+    <property name="border_width">8</property>
+    <property name="title" translatable="yes">Upload Patch - Ingen</property>
+    <property name="resizable">False</property>
+    <property name="type_hint">dialog</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox6">
+        <property name="visible">True</property>
+        <property name="spacing">9</property>
+        <child>
+          <object class="GtkTable" id="table19">
+            <property name="visible">True</property>
+            <property name="n_rows">2</property>
+            <property name="n_columns">2</property>
+            <property name="row_spacing">8</property>
+            <child>
+              <object class="GtkEntry" id="upload_patch_symbol_entry">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="activates_default">True</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkEntry" id="upload_patch_short_name_entry">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="activates_default">True</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label135">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">Symbol: </property>
+              </object>
+              <packing>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label136">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">Short Name: </property>
+              </object>
+              <packing>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="label137">
+            <property name="visible">True</property>
+            <property name="ypad">4</property>
+            <property name="label" translatable="yes">Succesfully uploaded patches will be available immediately in the remote patch browser.
+
+By uploading patches, you agree to license them under the Creative Commons Attribution-Share Alike 3.0 License.
+
+Thank you for contributing.</property>
+            <property name="wrap">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkProgressBar" id="upload_patch_progress">
+            <property name="visible">True</property>
+            <property name="pulse_step">0.10000000149</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area6">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="upload_patch_cancel_button">
+                <property name="label">gtk-close</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="upload_patch_upload_button">
+                <property name="visible">True</property>
+                <property name="sensitive">False</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">False</property>
+                <child>
+                  <object class="GtkAlignment" id="alignment5">
+                    <property name="visible">True</property>
+                    <property name="xscale">0</property>
+                    <property name="yscale">0</property>
+                    <child>
+                      <object class="GtkHBox" id="hbox72">
+                        <property name="visible">True</property>
+                        <property name="spacing">2</property>
+                        <child>
+                          <object class="GtkImage" id="image2136">
+                            <property name="visible">True</property>
+                            <property name="stock">gtk-ok</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label134">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">Upload</property>
+                            <property name="use_underline">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="-7">upload_patch_cancel_button</action-widget>
+      <action-widget response="-5">upload_patch_upload_button</action-widget>
+    </action-widgets>
+  </object>
+  <object class="GtkMenu" id="port_control_menu">
+    <child>
+      <object class="GtkImageMenuItem" id="port_control_menu_properties">
+        <property name="label">gtk-properties</property>
+        <property name="visible">True</property>
+        <property name="use_underline">True</property>
+        <property name="use_stock">True</property>
+        <signal name="activate" handler="on_port_control_menu_properties_activate"/>
+      </object>
+    </child>
+  </object>
+  <object class="GtkWindow" id="port_properties_win">
+    <property name="border_width">8</property>
+    <property name="title" translatable="yes">Port Properties - Ingen</property>
+    <property name="resizable">False</property>
+    <property name="window_position">mouse</property>
+    <child>
+      <object class="GtkVBox" id="dialog-vbox7">
+        <property name="visible">True</property>
+        <property name="spacing">8</property>
+        <child>
+          <object class="GtkTable" id="table20">
+            <property name="visible">True</property>
+            <property name="n_rows">2</property>
+            <property name="n_columns">2</property>
+            <property name="column_spacing">2</property>
+            <property name="row_spacing">4</property>
+            <child>
+              <object class="GtkSpinButton" id="port_properties_min_spinner">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="adjustment"></property>
+                <property name="climb_rate">1</property>
+                <property name="digits">5</property>
+                <property name="numeric">True</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkSpinButton" id="port_properties_max_spinner">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="adjustment"></property>
+                <property name="climb_rate">1</property>
+                <property name="digits">5</property>
+                <property name="numeric">True</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label138">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">Minimum Value: </property>
+              </object>
+              <packing>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkLabel" id="label139">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">Maximum Value: </property>
+              </object>
+              <packing>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkHButtonBox" id="dialog-action_area7">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="port_properties_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="port_properties_ok_button">
+                <property name="label">gtk-ok</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="GtkMenu" id="object_menu">
+    <property name="visible">True</property>
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <child>
+      <object class="GtkCheckMenuItem" id="object_polyphonic_menuitem">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="label" translatable="yes">P_olyphonic</property>
+        <property name="use_underline">True</property>
+      </object>
+    </child>
+    <child>
+      <object class="GtkMenuItem" id="object_learn_menuitem">
+        <property name="visible">True</property>
+        <property name="label" translatable="yes">_Learn</property>
+        <property name="use_underline">True</property>
+      </object>
+    </child>
+    <child>
+      <object class="GtkMenuItem" id="object_unlearn_menuitem">
+        <property name="visible">True</property>
+        <property name="label" translatable="yes">_Unlearn</property>
+        <property name="use_underline">True</property>
+      </object>
+    </child>
+    <child>
+      <object class="GtkImageMenuItem" id="object_disconnect_menuitem">
+        <property name="label">Dis_connect</property>
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="use_underline">True</property>
+        <property name="use_stock">False</property>
+      </object>
+    </child>
+    <child>
+      <object class="GtkImageMenuItem" id="object_rename_menuitem">
+        <property name="label">_Rename...</property>
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="use_underline">True</property>
+        <property name="use_stock">False</property>
+      </object>
+    </child>
+    <child>
+      <object class="GtkImageMenuItem" id="object_destroy_menuitem">
+        <property name="label">gtk-delete</property>
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="use_underline">True</property>
+        <property name="use_stock">True</property>
+      </object>
+    </child>
+    <child>
+      <object class="GtkSeparatorMenuItem" id="separator1">
+        <property name="visible">True</property>
+      </object>
+    </child>
+    <child>
+      <object class="GtkImageMenuItem" id="object_properties_menuitem">
+        <property name="label">gtk-properties</property>
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="use_underline">True</property>
+        <property name="use_stock">True</property>
+      </object>
+    </child>
+  </object>
+  <object class="GtkMenu" id="node_menu">
+    <property name="visible">True</property>
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <child>
+      <object class="GtkImageMenuItem" id="node_controls_menuitem">
+        <property name="label">Con_trols...</property>
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="use_underline">True</property>
+        <property name="use_stock">False</property>
+      </object>
+    </child>
+    <child>
+      <object class="GtkImageMenuItem" id="node_popup_gui_menuitem">
+        <property name="label">_GUI...</property>
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="use_underline">True</property>
+        <property name="use_stock">False</property>
+      </object>
+    </child>
+    <child>
+      <object class="GtkCheckMenuItem" id="node_embed_gui_menuitem">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="label" translatable="yes">_Embed GUI</property>
+        <property name="use_underline">True</property>
+      </object>
+    </child>
+    <child>
+      <object class="GtkImageMenuItem" id="node_randomize_menuitem">
+        <property name="label">R_andomize</property>
+        <property name="visible">True</property>
+        <property name="use_underline">True</property>
+        <property name="use_stock">False</property>
+      </object>
+    </child>
+  </object>
+  <object class="GtkWindow" id="properties_win">
+    <property name="border_width">12</property>
+    <property name="window_position">center-on-parent</property>
+    <child>
+      <object class="GtkVBox" id="properties_vbox">
+        <property name="visible">True</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">12</property>
+        <child>
+          <object class="GtkScrolledWindow" id="properties_scrolledwindow">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="hscrollbar_policy">automatic</property>
+            <property name="vscrollbar_policy">automatic</property>
+            <child>
+              <object class="GtkViewport" id="viewport2">
+                <property name="visible">True</property>
+                <property name="resize_mode">queue</property>
+                <property name="shadow_type">none</property>
+                <child>
+                  <object class="GtkTable" id="properties_table">
+                    <property name="visible">True</property>
+                    <property name="n_columns">3</property>
+                    <property name="column_spacing">12</property>
+                    <property name="row_spacing">6</property>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkHButtonBox" id="properties_buttonbox">
+            <property name="visible">True</property>
+            <property name="spacing">6</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="properties_cancel_button">
+                <property name="label">gtk-cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="properties_apply_button">
+                <property name="label">gtk-apply</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="properties_ok_button">
+                <property name="label">gtk-ok</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="GtkMenu" id="port_menu">
+    <property name="visible">True</property>
+    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <child>
+      <object class="GtkMenuItem" id="port_set_min_menuitem">
+        <property name="visible">True</property>
+        <property name="label" translatable="yes">Set m_inimum to current value</property>
+        <property name="use_underline">True</property>
+      </object>
+    </child>
+    <child>
+      <object class="GtkMenuItem" id="port_set_max_menuitem">
+        <property name="visible">True</property>
+        <property name="label" translatable="yes">Set m_aximum to current value</property>
+        <property name="use_underline">True</property>
+      </object>
+    </child>
+    <child>
+      <object class="GtkMenuItem" id="port_reset_range_menuitem">
+        <property name="visible">True</property>
+        <property name="label" translatable="yes">R_eset Range</property>
+        <property name="use_underline">True</property>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/src/gui/wscript b/src/gui/wscript
index f5f28499..43a96904 100644
--- a/src/gui/wscript
+++ b/src/gui/wscript
@@ -15,7 +15,6 @@ def build(bld):
             Connection.cpp
             ControlPanel.cpp
             Controls.cpp
-            GladeFactory.cpp
             LoadPatchWindow.cpp
             LoadPluginWindow.cpp
             LoadRemotePatchWindow.cpp
@@ -37,6 +36,7 @@ def build(bld):
             RenameWindow.cpp
             SubpatchModule.cpp
             ThreadedLoader.cpp
+            WidgetFactory.cpp
             Window.cpp
             WindowFactory.cpp
             ingen_gui.cpp
@@ -67,10 +67,10 @@ def build(bld):
             SUIL
     ''')
 
-    # Glade XML UI definition
+    # XML UI definition
     bld(features      = 'subst',
-        source        = 'ingen_gui.glade',
-        target        = '../../ingen_gui.glade',
+        source        = 'ingen_gui.ui',
+        target        = '../../ingen_gui.ui',
         install_path  = '${DATADIR}/ingen',
         chmod         = Utils.O755,
             INGEN_VERSION = bld.env['INGEN_VERSION'])
diff --git a/src/serialisation/Parser.cpp b/src/serialisation/Parser.cpp
index 88b12d6c..5197c175 100644
--- a/src/serialisation/Parser.cpp
+++ b/src/serialisation/Parser.cpp
@@ -43,7 +43,7 @@
 
 #define LOG(s) s << "[Parser] "
 
-#define NS_INGEN "http://drobilla.net/ns/ingen#"
+//#define NS_INGEN "http://drobilla.net/ns/ingen#" // defined in Resource.hpp
 #define NS_LV2   "http://lv2plug.in/ns/lv2core#"
 #define NS_RDF   "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 #define NS_RDFS  "http://www.w3.org/2000/01/rdf-schema#"
diff --git a/wscript b/wscript
index 95b2414c..cfd1284d 100644
--- a/wscript
+++ b/wscript
@@ -58,11 +58,9 @@ def configure(conf):
                       atleast_version='0.3.0', mandatory=False)
     if not Options.options.no_gui:
         autowaf.check_pkg(conf, 'gtkmm-2.4', uselib_store='GTKMM',
-                          atleast_version='2.11.12', mandatory=False)
+                          atleast_version='2.12.0', mandatory=False)
         autowaf.check_pkg(conf, 'gtkmm-2.4', uselib_store='NEW_GTKMM',
                           atleast_version='2.14.0', mandatory=False)
-        autowaf.check_pkg(conf, 'libglademm-2.4', uselib_store='GLADEMM',
-                          atleast_version='2.6.0', mandatory=False)
         autowaf.check_pkg(conf, 'flowcanvas', uselib_store='FLOWCANVAS',
                           atleast_version='0.8.0', mandatory=False)
     if not Options.options.no_http:
@@ -92,9 +90,7 @@ def configure(conf):
 
     autowaf.define(conf, 'INGEN_VERSION', INGEN_VERSION)
 
-    if (not Options.options.no_gui
-            and conf.is_defined('HAVE_GLADEMM')
-            and conf.is_defined('HAVE_FLOWCANVAS')):
+    if not Options.options.no_gui and conf.is_defined('HAVE_FLOWCANVAS'):
         autowaf.define(conf, 'INGEN_BUILD_GUI', 1)
 
     if conf.is_defined('HAVE_JACK'):
-- 
cgit v1.2.1