[mistelix] Porting UI from Glade to Builder



commit 539c74cd2b1ec297818f60a9af6e238166eea92b
Author: Jordi Mas <jmas softcatala org>
Date:   Wed Mar 17 18:29:05 2010 +0100

    Porting UI from Glade to Builder

 configure.ac                                       |    1 -
 data/mistelix.exe.config.in                        |    1 +
 po/POTFILES.in                                     |   18 +-
 po/POTFILES.skip                                   |    1 +
 src/Builder/Builder.cs                             |  621 ++++
 src/Builder/BuilderConnectFunc.cs                  |   10 +
 .../GtkBeansSharp.BuilderConnectFuncNative.cs      |   96 +
 src/Builder/ObjectManager.cs                       |   19 +
 src/Builder/README                                 |    3 +
 src/Dialogs/AddSlideDialog.cs                      |   62 +-
 src/Dialogs/AddVideoDialog.cs                      |   15 +-
 src/Dialogs/AudioSelectionDialog.cs                |    9 +-
 src/Dialogs/BuildProjectDialog.cs                  |   35 +-
 src/Dialogs/{GtkDialog.cs => BuilderDialog.cs}     |   51 +-
 src/Dialogs/ButtonPropertiesDialog.cs              |   17 +-
 src/Dialogs/CheckDependenciesDialog.cs             |   25 +-
 src/Dialogs/NewProjectDialog.cs                    |   47 +-
 src/Dialogs/PreferencesDialog.cs                   |   31 +-
 src/Dialogs/ProjectPropertiesDialog.cs             |   67 +-
 src/Dialogs/ThemeSelectionDialog.cs                |   35 +-
 src/Dialogs/ui/AddSlideDialog.ui                   |  372 +++
 src/Dialogs/ui/AddVideoDialog.ui                   |  113 +
 src/Dialogs/ui/AudioSelectionDialog.ui             |  100 +
 src/Dialogs/ui/BuildProjectDialog.ui               |  271 ++
 src/Dialogs/ui/ButtonPropertiesDialog.ui           |  161 +
 src/Dialogs/ui/CheckDependenciesDialog.ui          |  100 +
 src/Dialogs/ui/NewProjectDialog.ui                 |  373 +++
 src/Dialogs/ui/PreferencesDialog.ui                |  402 +++
 src/Dialogs/ui/ProjectPropertiesDialog.ui          |  717 +++++
 src/Dialogs/ui/ThemeSelectionDialog.ui             |  386 +++
 src/Makefile.am                                    |   48 +-
 src/Widgets/AuthoringPaneView.cs                   |    2 +-
 src/Widgets/FileView.cs                            |    2 +
 src/Widgets/ProjectElementView.cs                  |    1 +
 src/Widgets/SlideShowImageView.cs                  |    3 +
 src/Widgets/SlideShowView.cs                       |    2 +-
 src/Widgets/Utils.cs                               |    6 +
 src/mistelix.cs                                    |   65 +-
 src/mistelix.glade                                 | 3373 --------------------
 src/mistelix.ui                                    |  398 +++
 40 files changed, 4441 insertions(+), 3618 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index a906360..000d5ce 100644
--- a/configure.ac
+++ b/configure.ac
@@ -73,7 +73,6 @@ PKG_CHECK_MODULES(MISTELIX_CORE, mono >= $MONO_REQUIRED)
 PKG_CHECK_MODULES(MISTELIX,
 	gtk-sharp-2.0 >= $GTKSHARP_REQUIRED
 	gnome-sharp-2.0 >= $GTKSHARP_REQUIRED
-	glade-sharp-2.0 >= $GTKSHARP_REQUIRED
 	mono-addins >= 0.3
 	mono-addins-setup >= 0.3
 	mono-addins-gui >= 0.3)
diff --git a/data/mistelix.exe.config.in b/data/mistelix.exe.config.in
index 9c3b8bd..d97b739 100644
--- a/data/mistelix.exe.config.in
+++ b/data/mistelix.exe.config.in
@@ -1,4 +1,5 @@
 <configuration>
 	<dllmap dll="libgnome-desktop-2" target="@LIBGNOME_DESKOP_SO_MAP@" />
+	<dllmap dll="libgtk-win32-2.0-0.dll" target="libgtk-x11-2.0.so.0"/>
 </configuration>
 
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 65395c9..e52cf2e 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1,11 +1,11 @@
 [encoding: UTF-8]
 extensions/Effects/Grayscale/Grayscale.cs
 extensions/Effects/SepiaTone/SepiaTone.cs
-extensions/SlideTransitions/Fade/Fade.cs
 extensions/SlideTransitions/BarnDoorWipe/BarnDoorWipeHorizontal.cs
 extensions/SlideTransitions/BarnDoorWipe/BarnDoorWipeVertical.cs
 extensions/SlideTransitions/BarWipe/BarWipeLeft.cs
 extensions/SlideTransitions/BarWipe/BarWipeTop.cs
+extensions/SlideTransitions/Fade/Fade.cs
 extensions/SlideTransitions/StarWipe/StarWipeFivePoint.cs
 extensions/SlideTransitions/StarWipe/StarWipeFourPoint.cs
 extensions/SlideTransitions/StarWipe/StarWipeSixPoint.cs
@@ -24,19 +24,29 @@ src/DataModel/TextPosition.cs
 src/Dialogs/AboutDialog.cs
 src/Dialogs/AddSlideDialog.cs
 src/Dialogs/AudioSelectionDialog.cs
+src/Dialogs/BuildProjectDialog.cs
 src/Dialogs/CheckDependenciesDialog.cs
 src/Dialogs/NewProjectDialog.cs
 src/Dialogs/ProjectPropertiesDialog.cs
 src/Dialogs/ThemeSelectionDialog.cs
+[type: gettext/glade] src/Dialogs/ui/AddSlideDialog.ui
+[type: gettext/glade] src/Dialogs/ui/AddVideoDialog.ui
+[type: gettext/glade] src/Dialogs/ui/AudioSelectionDialog.ui
+[type: gettext/glade] src/Dialogs/ui/BuildProjectDialog.ui
+[type: gettext/glade] src/Dialogs/ui/ButtonPropertiesDialog.ui
+[type: gettext/glade] src/Dialogs/ui/CheckDependenciesDialog.ui
+[type: gettext/glade] src/Dialogs/ui/NewProjectDialog.ui
+[type: gettext/glade] src/Dialogs/ui/PreferencesDialog.ui
+[type: gettext/glade] src/Dialogs/ui/ProjectPropertiesDialog.ui
+[type: gettext/glade] src/Dialogs/ui/ThemeSelectionDialog.ui
 src/mistelix.cs
-src/mistelix.glade
+[type: gettext/glade] src/mistelix.ui
 src/mono-addins-strings.xml
 src/Widgets/AuthoringPaneView.cs
 src/Widgets/BrowseFile.cs
 src/Widgets/DirectoryView.cs
-src/Widgets/Utils.cs
 src/Widgets/ProjectElementView.cs
 src/Widgets/SlideShowImageView.cs
 src/Widgets/SlideShowView.cs
+src/Widgets/Utils.cs
 src/Widgets/WelcomeView.cs
-
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
index 139597f..1ee3c5b 100644
--- a/po/POTFILES.skip
+++ b/po/POTFILES.skip
@@ -1,2 +1,3 @@
+src/Clients/Classical/Builder/Builder.cs
 
 
diff --git a/src/Builder/Builder.cs b/src/Builder/Builder.cs
new file mode 100644
index 0000000..894ed49
--- /dev/null
+++ b/src/Builder/Builder.cs
@@ -0,0 +1,621 @@
+// This file was generated by the Gtk# code generator.
+// Any changes made will be lost if regenerated.
+
+namespace GtkBeans {
+
+	using System;
+	using System.Collections;
+	using System.Runtime.InteropServices;
+
+#region Autogenerated code
+	public class Builder : GLib.Object {
+
+		[Obsolete]
+		protected Builder(GLib.GType gtype) : base(gtype) {}
+		public Builder(IntPtr raw) : base(raw) {}
+
+		[DllImport("libgtk-win32-2.0-0.dll")]
+		static extern IntPtr gtk_builder_new();
+
+		public Builder () : base (IntPtr.Zero)
+		{
+			if (GetType () != typeof (Builder)) {
+				CreateNativeObject (new string [0], new GLib.Value[0]);
+				return;
+			}
+			Raw = gtk_builder_new();
+		}
+
+		[DllImport("libgtk-win32-2.0-0.dll")]
+		static extern IntPtr gtk_builder_get_translation_domain(IntPtr raw);
+
+		[DllImport("libgtk-win32-2.0-0.dll")]
+		static extern void gtk_builder_set_translation_domain(IntPtr raw, IntPtr domain);
+
+		[GLib.Property ("translation-domain")]
+		public string TranslationDomain {
+			get  {
+				IntPtr raw_ret = gtk_builder_get_translation_domain(Handle);
+				string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
+				return ret;
+			}
+			set  {
+				IntPtr native_value = GLib.Marshaller.StringToPtrGStrdup (value);
+				gtk_builder_set_translation_domain(Handle, native_value);
+				GLib.Marshaller.Free (native_value);
+			}
+		}
+
+		[DllImport("libgtk-win32-2.0-0.dll")]
+		static extern unsafe bool gtk_builder_value_from_string(IntPtr raw, IntPtr pspec, IntPtr str1ng, IntPtr value, out IntPtr error);
+
+		public unsafe bool ValueFromString(IntPtr pspec, string str1ng, GLib.Value value) {
+			IntPtr native_str1ng = GLib.Marshaller.StringToPtrGStrdup (str1ng);
+			IntPtr native_value = GLib.Marshaller.StructureToPtrAlloc (value);
+			IntPtr error = IntPtr.Zero;
+			bool raw_ret = gtk_builder_value_from_string(Handle, pspec, native_str1ng, native_value, out error);
+			bool ret = raw_ret;
+			GLib.Marshaller.Free (native_str1ng);
+			value = (GLib.Value) Marshal.PtrToStructure (native_value, typeof (GLib.Value));
+			Marshal.FreeHGlobal (native_value);
+			if (error != IntPtr.Zero) throw new GLib.GException (error);
+			return ret;
+		}
+
+		[DllImport("libgtk-win32-2.0-0.dll")]
+		static extern void gtk_builder_connect_signals_full(IntPtr raw, GtkBeansSharp.BuilderConnectFuncNative func, IntPtr user_data);
+
+		public void ConnectSignalsFull(GtkBeans.BuilderConnectFunc func) {
+			GtkBeansSharp.BuilderConnectFuncWrapper func_wrapper = new GtkBeansSharp.BuilderConnectFuncWrapper (func);
+			gtk_builder_connect_signals_full(Handle, func_wrapper.NativeDelegate, IntPtr.Zero);
+		}
+
+		[DllImport("libgtk-win32-2.0-0.dll")]
+		static extern IntPtr gtk_builder_get_type_from_name(IntPtr raw, IntPtr type_name);
+
+		public GLib.GType GetTypeFromName(string type_name) {
+			IntPtr native_type_name = GLib.Marshaller.StringToPtrGStrdup (type_name);
+			IntPtr raw_ret = gtk_builder_get_type_from_name(Handle, native_type_name);
+			GLib.GType ret = new GLib.GType(raw_ret);
+			GLib.Marshaller.Free (native_type_name);
+			return ret;
+		}
+
+		[DllImport("libgtk-win32-2.0-0.dll")]
+		static extern unsafe uint gtk_builder_add_from_string(IntPtr raw, IntPtr buffer, UIntPtr length, out IntPtr error);
+
+		public unsafe uint AddFromString(string buffer) {
+			IntPtr native_buffer = GLib.Marshaller.StringToPtrGStrdup (buffer);
+			IntPtr error = IntPtr.Zero;
+			uint raw_ret = gtk_builder_add_from_string(Handle, native_buffer, new UIntPtr ((ulong) System.Text.Encoding.UTF8.GetByteCount (buffer)), out error);
+			uint ret = raw_ret;
+			GLib.Marshaller.Free (native_buffer);
+			if (error != IntPtr.Zero) throw new GLib.GException (error);
+			return ret;
+		}
+
+		[DllImport("libgtk-win32-2.0-0.dll")]
+		static extern unsafe uint gtk_builder_add_objects_from_string(IntPtr raw, IntPtr buffer, UIntPtr length, IntPtr object_ids, out IntPtr error);
+
+		public unsafe uint AddObjectsFromString(string buffer, string object_ids) {
+			IntPtr native_buffer = GLib.Marshaller.StringToPtrGStrdup (buffer);
+			IntPtr error = IntPtr.Zero;
+			uint raw_ret = gtk_builder_add_objects_from_string(Handle, native_buffer, new UIntPtr ((ulong) System.Text.Encoding.UTF8.GetByteCount (buffer)), GLib.Marshaller.StringToPtrGStrdup(object_ids), out error);
+			uint ret = raw_ret;
+			GLib.Marshaller.Free (native_buffer);
+			if (error != IntPtr.Zero) throw new GLib.GException (error);
+			return ret;
+		}
+
+		[DllImport("libgtk-win32-2.0-0.dll")]
+		static extern unsafe uint gtk_builder_add_from_file(IntPtr raw, IntPtr filename, out IntPtr error);
+
+		public unsafe uint AddFromFile(string filename) {
+			IntPtr native_filename = GLib.Marshaller.StringToPtrGStrdup (filename);
+			IntPtr error = IntPtr.Zero;
+			uint raw_ret = gtk_builder_add_from_file(Handle, native_filename, out error);
+			uint ret = raw_ret;
+			GLib.Marshaller.Free (native_filename);
+			if (error != IntPtr.Zero) throw new GLib.GException (error);
+			return ret;
+		}
+
+		[DllImport("libgtk-win32-2.0-0.dll")]
+		static extern unsafe bool gtk_builder_value_from_string_type(IntPtr raw, IntPtr type, IntPtr str1ng, IntPtr value, out IntPtr error);
+
+		public unsafe bool ValueFromStringType(GLib.GType type, string str1ng, GLib.Value value) {
+			IntPtr native_str1ng = GLib.Marshaller.StringToPtrGStrdup (str1ng);
+			IntPtr native_value = GLib.Marshaller.StructureToPtrAlloc (value);
+			IntPtr error = IntPtr.Zero;
+			bool raw_ret = gtk_builder_value_from_string_type(Handle, type.Val, native_str1ng, native_value, out error);
+			bool ret = raw_ret;
+			GLib.Marshaller.Free (native_str1ng);
+			value = (GLib.Value) Marshal.PtrToStructure (native_value, typeof (GLib.Value));
+			Marshal.FreeHGlobal (native_value);
+			if (error != IntPtr.Zero) throw new GLib.GException (error);
+			return ret;
+		}
+
+		[DllImport("libgtk-win32-2.0-0.dll")]
+		static extern IntPtr gtk_builder_get_objects(IntPtr raw);
+
+		public GLib.SList Objects { 
+			get {
+				IntPtr raw_ret = gtk_builder_get_objects(Handle);
+				GLib.SList ret = new GLib.SList(raw_ret);
+				return ret;
+			}
+		}
+
+		[DllImport("libgtk-win32-2.0-0.dll")]
+		static extern IntPtr gtk_builder_get_object(IntPtr raw, IntPtr name);
+
+		public GLib.Object GetObject(string name) {
+			IntPtr native_name = GLib.Marshaller.StringToPtrGStrdup (name);
+			IntPtr raw_ret = gtk_builder_get_object(Handle, native_name);
+			GLib.Object ret = GLib.Object.GetObject (raw_ret);
+			GLib.Marshaller.Free (native_name);
+			return ret;
+		}
+
+		[DllImport("libgtk-win32-2.0-0.dll")]
+		static extern int gtk_builder_error_quark();
+
+		public static int ErrorQuark() {
+			int raw_ret = gtk_builder_error_quark();
+			int ret = raw_ret;
+			return ret;
+		}
+
+		[DllImport("libgtk-win32-2.0-0.dll")]
+		static extern void gtk_builder_connect_signals(IntPtr raw, IntPtr user_data);
+
+		public void ConnectSignals(IntPtr user_data) {
+			gtk_builder_connect_signals(Handle, user_data);
+		}
+
+		[DllImport("libgtk-win32-2.0-0.dll")]
+		static extern IntPtr gtk_builder_get_type();
+
+		public static new GLib.GType GType { 
+			get {
+				IntPtr raw_ret = gtk_builder_get_type();
+				GLib.GType ret = new GLib.GType(raw_ret);
+				return ret;
+			}
+		}
+
+		[DllImport("libgtk-win32-2.0-0.dll")]
+		static extern unsafe uint gtk_builder_add_objects_from_file(IntPtr raw, IntPtr filename, IntPtr object_ids, out IntPtr error);
+
+		public unsafe uint AddObjectsFromFile(string filename, string object_ids) {
+			IntPtr native_filename = GLib.Marshaller.StringToPtrGStrdup (filename);
+			IntPtr error = IntPtr.Zero;
+			uint raw_ret = gtk_builder_add_objects_from_file(Handle, native_filename, GLib.Marshaller.StringToPtrGStrdup(object_ids), out error);
+			uint ret = raw_ret;
+			GLib.Marshaller.Free (native_filename);
+			if (error != IntPtr.Zero) throw new GLib.GException (error);
+			return ret;
+		}
+
+
+		static Builder ()
+		{
+			GtkSharp.GtkbeansSharp.ObjectManager.Initialize ();
+		}
+#endregion
+#region Customized extensions
+#line 1 "Builder.custom"
+// Builder.custom - customizations to Gtk.Builder
+//
+// Authors: Stephane Delcroix  <stephane delcroix org>
+// The biggest part of this code is adapted from glade#, by
+//	Ricardo Fernández Pascual <ric users sourceforge net>
+//	Rachel Hestilow <hestilow ximian com>
+//
+// Copyright (c) 2008, 2009 Novell, Inc.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of version 2 of the Lesser GNU General
+// Public License as published by the Free Software Foundation.
+//
+// This program 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
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this program; if not, write to the
+// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+// Boston, MA 02111-1307, USA.
+
+[System.Serializable]
+public class HandlerNotFoundException : SystemException
+{
+	string handler_name;
+	string signal_name;
+	System.Reflection.EventInfo evnt;
+	Type delegate_type;
+
+	public HandlerNotFoundException (string handler_name, string signal_name,
+					 System.Reflection.EventInfo evnt, Type delegate_type)
+		: this (handler_name, signal_name, evnt, delegate_type, null)
+	{
+	}
+
+	public HandlerNotFoundException (string handler_name, string signal_name,
+					 System.Reflection.EventInfo evnt, Type delegate_type, Exception inner)
+		: base ("No handler " + handler_name + " found for signal " + signal_name,
+			inner)
+	{
+		this.handler_name = handler_name;
+		this.signal_name = signal_name;
+		this.evnt = evnt;
+		this.delegate_type = delegate_type;
+	}
+
+	public HandlerNotFoundException (string message, string handler_name, string signal_name,
+					 System.Reflection.EventInfo evnt, Type delegate_type)
+		: base ((message != null) ? message : "No handler " + handler_name + " found for signal " + signal_name,
+			null)
+	{
+		this.handler_name = handler_name;
+		this.signal_name = signal_name;
+		this.evnt = evnt;
+		this.delegate_type = delegate_type;
+	}
+
+	protected HandlerNotFoundException (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context)
+		: base (info, context)
+	{
+		handler_name = info.GetString ("HandlerName");
+		signal_name = info.GetString ("SignalName");
+		evnt = info.GetValue ("Event", typeof (System.Reflection.EventInfo)) as System.Reflection.EventInfo;
+		delegate_type = info.GetValue ("DelegateType", typeof (Type)) as Type;
+	}
+
+	public string HandlerName
+	{
+		get {
+			return handler_name;
+		}
+	}
+
+	public string SignalName
+	{
+		get {
+			return signal_name;
+		}
+	}
+
+	public System.Reflection.EventInfo Event
+	{
+		get {
+			return evnt;
+		}
+	}
+
+	public Type DelegateType
+	{
+		get {
+			return delegate_type;
+		}
+	}
+
+	public override void GetObjectData (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context)
+	{
+		base.GetObjectData (info, context);
+		info.AddValue ("HandlerName", handler_name);
+		info.AddValue ("SignalName", signal_name);
+		info.AddValue ("Event", evnt);
+		info.AddValue ("DelegateType", delegate_type);
+	}
+}
+
+
+[AttributeUsage (AttributeTargets.Field)]
+public class ObjectAttribute : Attribute
+{
+	private string name;
+	private bool specified;
+
+	public ObjectAttribute (string name)
+	{
+		specified = true;
+		this.name = name;
+	}
+
+	public ObjectAttribute ()
+	{
+		specified = false;
+	}
+
+	public string Name
+	{
+		get { return name; }
+	}
+
+	public bool Specified
+	{
+		get { return specified; }
+	}
+}
+
+public IntPtr GetRawObject(string name) {
+	IntPtr native_name = GLib.Marshaller.StringToPtrGStrdup (name);
+	IntPtr raw_ret = gtk_builder_get_object(Handle, native_name);
+	GLib.Marshaller.Free (native_name);
+	return raw_ret;
+}
+
+public Builder (System.IO.Stream s) : this (s, null)
+{
+}
+
+public Builder (System.IO.Stream s, string translation_domain)
+{
+	if (s == null)
+		throw new ArgumentNullException ("s");
+
+	int size = (int) s.Length;
+	byte[] buffer = new byte[size];
+	s.Read (buffer, 0, size);
+	s.Close ();
+
+	AddFromString(System.Text.Encoding.UTF8.GetString (buffer));
+
+	TranslationDomain = translation_domain;
+}
+
+public Builder (string resource_name) : this (resource_name, null)
+{
+}
+
+public Builder (string resource_name, string translation_domain) : this (System.Reflection.Assembly.GetEntryAssembly (), resource_name, translation_domain)
+{
+}
+
+public Builder (System.Reflection.Assembly assembly, string resource_name, string translation_domain) : this ()
+{
+	if (GetType() != typeof (Builder))
+		throw new InvalidOperationException ("Cannot chain to this constructor from subclasses.");
+
+	if (assembly == null)
+		assembly = System.Reflection.Assembly.GetCallingAssembly ();
+
+	System.IO.Stream s = assembly.GetManifestResourceStream (resource_name);
+	if (s == null)
+		throw new ArgumentException ("Cannot get resource file '" + resource_name + "'",
+					     "resource_name");
+
+	int size = (int) s.Length;
+	byte[] buffer = new byte[size];
+	s.Read (buffer, 0, size);
+	s.Close ();
+
+	AddFromString(System.Text.Encoding.UTF8.GetString (buffer));
+
+	TranslationDomain = translation_domain;
+}
+
+public void Autoconnect (object handler)
+{
+	BindFields (handler);
+	(new SignalConnector (this, handler)).ConnectSignals ();
+}
+
+public void Autoconnect (Type handler_class)
+{
+	BindFields (handler_class);
+	(new SignalConnector (this, handler_class)).ConnectSignals ();
+}
+
+class SignalConnector
+{
+	Builder builder;
+	Type handler_type;
+	object handler;
+
+	public SignalConnector (Builder builder, object handler)
+	{
+		this.builder = builder;
+		this.handler = handler;
+		handler_type = handler.GetType ();
+	}
+
+	public SignalConnector (Builder builder, Type handler_type)
+	{
+		this.builder = builder;
+		this.handler = null;
+		this.handler_type = handler_type;		
+	}
+
+	[DllImport("libgtk-win32-2.0-0.dll")]
+	static extern void gtk_builder_connect_signals_full(IntPtr raw, GtkBeansSharp.BuilderConnectFuncNative func, IntPtr user_data);
+
+	public void ConnectSignals() {
+		GtkBeansSharp.BuilderConnectFuncWrapper func_wrapper = new GtkBeansSharp.BuilderConnectFuncWrapper (new GtkBeans.BuilderConnectFunc (ConnectFunc));
+		gtk_builder_connect_signals_full(builder.Handle, func_wrapper.NativeDelegate, IntPtr.Zero);
+	}
+
+	public void ConnectFunc (Builder builder, GLib.Object objekt, string signal_name, string handler_name, GLib.Object connect_object, GLib.ConnectFlags flags)
+	{
+		/* search for the event to connect */
+		System.Reflection.MemberInfo[] evnts = objekt.GetType ().
+			FindMembers (System.Reflection.MemberTypes.Event,
+			     System.Reflection.BindingFlags.Instance
+			     | System.Reflection.BindingFlags.Static
+			     | System.Reflection.BindingFlags.Public
+			     | System.Reflection.BindingFlags.NonPublic,
+			     new System.Reflection.MemberFilter (SignalFilter), signal_name);
+		foreach (System.Reflection.EventInfo ei in evnts) {
+			bool connected = false;
+			System.Reflection.MethodInfo add = ei.GetAddMethod ();
+			System.Reflection.ParameterInfo[] addpi = add.GetParameters ();
+			if (addpi.Length == 1) { /* this should be always true, unless there's something broken */
+				Type delegate_type = addpi[0].ParameterType;
+
+				/* look for an instance method */
+				if (connect_object != null || handler != null)
+					try {
+						Delegate d = Delegate.CreateDelegate (delegate_type, connect_object != null ? connect_object : handler, handler_name);
+						add.Invoke (objekt, new object[] { d } );
+						connected = true;
+					} catch (ArgumentException) { /* ignore if there is not such instance method */
+					}
+
+				/* look for a static method if no instance method has been found */
+				if (!connected && handler_type != null)
+					try  {
+						Delegate d = Delegate.CreateDelegate (delegate_type, handler_type, handler_name);
+						add.Invoke (objekt, new object[] { d } );
+						connected = true;
+					} catch (ArgumentException) { /* ignore if there is not such static method */
+					}
+
+				if (!connected) {
+					string msg = ExplainError (ei.Name, delegate_type, handler_type, handler_name);
+					throw new HandlerNotFoundException (msg, handler_name, signal_name, ei, delegate_type);
+				}
+			}
+		}
+	}
+
+	static bool SignalFilter (System.Reflection.MemberInfo m, object filterCriteria)
+	{
+		string signame = (filterCriteria as string);
+		object[] attrs = m.GetCustomAttributes (typeof (GLib.SignalAttribute), false);
+		if (attrs.Length > 0)
+		{
+			foreach (GLib.SignalAttribute a in attrs)
+			{
+				if (signame == a.CName)
+				{
+					return true;
+				}
+			}
+			return false;
+		}
+		else
+		{
+			/* this tries to match the names when no attibutes are present.
+			   It is only a fallback. */
+			signame = signame.ToLower ().Replace ("_", "");
+			string evname = m.Name.ToLower ();
+			return signame == evname;
+		}
+	}
+
+	static string GetSignature (System.Reflection.MethodInfo method)
+	{
+		if (method == null)
+			return null;
+
+		System.Reflection.ParameterInfo [] parameters = method.GetParameters ();
+		System.Text.StringBuilder sb = new System.Text.StringBuilder ();
+		sb.Append ('(');
+		foreach (System.Reflection.ParameterInfo info in parameters) {
+			sb.Append (info.ParameterType.ToString ());
+			sb.Append (',');
+		}
+		if (sb.Length != 0)
+			sb.Length--;
+
+		sb.Append (')');
+		return sb.ToString ();
+	}
+
+	static string GetSignature (Type delegate_type)
+	{
+		System.Reflection.MethodInfo method = delegate_type.GetMethod ("Invoke");
+		return GetSignature (method);
+	}
+
+	const System.Reflection.BindingFlags flags = System.Reflection.BindingFlags.NonPublic |
+					System.Reflection.BindingFlags.Public |
+					System.Reflection.BindingFlags.Static |
+					System.Reflection.BindingFlags.Instance;
+	static string GetSignature (Type klass, string method_name)
+	{
+		try {
+			System.Reflection.MethodInfo method = klass.GetMethod (method_name, flags);
+			return GetSignature (method);
+		} catch {
+			// May be more than one method with that name and none matches
+			return null;
+		}
+	}
+
+
+	static string ExplainError (string event_name, Type deleg, Type klass, string method)
+	{
+		if (deleg == null || klass == null || method == null)
+			return null;
+
+		System.Text.StringBuilder sb = new System.Text.StringBuilder ();
+		string expected = GetSignature (deleg);
+		string actual = GetSignature (klass, method);
+		if (actual == null)
+			return null;
+			sb.AppendFormat ("The handler for the event {0} should take '{1}', " +
+				"but the signature of the provided handler ('{2}') is '{3}'\n",
+				event_name, expected, method, actual);
+		return sb.ToString ();
+	}
+
+}
+
+
+void BindFields (object target)
+{
+	BindFields (target, target.GetType ());
+}
+
+void BindFields (Type type)
+{
+	BindFields (null, type);
+}
+
+void BindFields (object target, Type type)
+{
+	System.Reflection.BindingFlags flags = System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.DeclaredOnly;
+	if (target != null)
+		flags |= System.Reflection.BindingFlags.Instance;
+	else
+		flags |= System.Reflection.BindingFlags.Static;
+
+	do {
+		System.Reflection.FieldInfo[] fields = type.GetFields (flags);
+		if (fields == null)
+			return;
+
+		foreach (System.Reflection.FieldInfo field in fields)
+		{
+			object[] attrs = field.GetCustomAttributes (typeof (ObjectAttribute), false);
+			if (attrs == null || attrs.Length == 0)
+				continue;
+			// The widget to field binding must be 1:1, so only check
+			// the first attribute.
+			ObjectAttribute attr = (ObjectAttribute) attrs[0];
+			GLib.Object gobject;
+			if (attr.Specified)
+				gobject = GetObject (attr.Name);
+			else
+				gobject = GetObject (field.Name);
+
+			if (gobject != null)
+				try {
+					field.SetValue (target, gobject, flags, null, null);
+				} catch (Exception e) {
+					Console.WriteLine ("Unable to set value for field " + field.Name);
+					throw e;
+				}
+		}
+		type = type.BaseType;
+	}
+	while (type != typeof(object) && type != null);
+}
+
+#endregion
+	}
+}
diff --git a/src/Builder/BuilderConnectFunc.cs b/src/Builder/BuilderConnectFunc.cs
new file mode 100644
index 0000000..ae4b40e
--- /dev/null
+++ b/src/Builder/BuilderConnectFunc.cs
@@ -0,0 +1,10 @@
+// This file was generated by the Gtk# code generator.
+// Any changes made will be lost if regenerated.
+
+namespace GtkBeans {
+
+	using System;
+
+	public delegate void BuilderConnectFunc(GtkBeans.Builder builder, GLib.Object objekt, string signal_name, string handler_name, GLib.Object connect_object, GLib.ConnectFlags flags);
+
+}
diff --git a/src/Builder/GtkBeansSharp.BuilderConnectFuncNative.cs b/src/Builder/GtkBeansSharp.BuilderConnectFuncNative.cs
new file mode 100644
index 0000000..c3bdb7a
--- /dev/null
+++ b/src/Builder/GtkBeansSharp.BuilderConnectFuncNative.cs
@@ -0,0 +1,96 @@
+// This file was generated by the Gtk# code generator.
+// Any changes made will be lost if regenerated.
+
+namespace GtkBeansSharp {
+
+	using System;
+	using System.Runtime.InteropServices;
+
+#region Autogenerated code
+	[GLib.CDeclCallback]
+	internal delegate void BuilderConnectFuncNative(IntPtr builder, IntPtr objekt, IntPtr signal_name, IntPtr handler_name, IntPtr connect_object, int flags, IntPtr user_data);
+
+	internal class BuilderConnectFuncInvoker {
+
+		BuilderConnectFuncNative native_cb;
+		IntPtr __data;
+		GLib.DestroyNotify __notify;
+
+		~BuilderConnectFuncInvoker ()
+		{
+			if (__notify == null)
+				return;
+			__notify (__data);
+		}
+
+		internal BuilderConnectFuncInvoker (BuilderConnectFuncNative native_cb) : this (native_cb, IntPtr.Zero, null) {}
+
+		internal BuilderConnectFuncInvoker (BuilderConnectFuncNative native_cb, IntPtr data) : this (native_cb, data, null) {}
+
+		internal BuilderConnectFuncInvoker (BuilderConnectFuncNative native_cb, IntPtr data, GLib.DestroyNotify notify)
+		{
+			this.native_cb = native_cb;
+			__data = data;
+			__notify = notify;
+		}
+
+		internal GtkBeans.BuilderConnectFunc Handler {
+			get {
+				return new GtkBeans.BuilderConnectFunc(InvokeNative);
+			}
+		}
+
+		void InvokeNative (GtkBeans.Builder builder, GLib.Object objekt, string signal_name, string handler_name, GLib.Object connect_object, GLib.ConnectFlags flags)
+		{
+			IntPtr native_signal_name = GLib.Marshaller.StringToPtrGStrdup (signal_name);
+			IntPtr native_handler_name = GLib.Marshaller.StringToPtrGStrdup (handler_name);
+			native_cb (builder == null ? IntPtr.Zero : builder.Handle, objekt == null ? IntPtr.Zero : objekt.Handle, native_signal_name, native_handler_name, connect_object == null ? IntPtr.Zero : connect_object.Handle, (int) flags, __data);
+			GLib.Marshaller.Free (native_signal_name);
+			GLib.Marshaller.Free (native_handler_name);
+		}
+	}
+
+	internal class BuilderConnectFuncWrapper {
+
+		public void NativeCallback (IntPtr builder, IntPtr objekt, IntPtr signal_name, IntPtr handler_name, IntPtr connect_object, int flags, IntPtr user_data)
+		{
+			try {
+				managed (GLib.Object.GetObject(builder) as GtkBeans.Builder, GLib.Object.GetObject (objekt), GLib.Marshaller.Utf8PtrToString (signal_name), GLib.Marshaller.Utf8PtrToString (handler_name), GLib.Object.GetObject (connect_object), (GLib.ConnectFlags) flags);
+				if (release_on_call)
+					gch.Free ();
+			} catch (Exception e) {
+				GLib.ExceptionManager.RaiseUnhandledException (e, false);
+			}
+		}
+
+		bool release_on_call = false;
+		GCHandle gch;
+
+		public void PersistUntilCalled ()
+		{
+			release_on_call = true;
+			gch = GCHandle.Alloc (this);
+		}
+
+		internal BuilderConnectFuncNative NativeDelegate;
+		GtkBeans.BuilderConnectFunc managed;
+
+		public BuilderConnectFuncWrapper (GtkBeans.BuilderConnectFunc managed)
+		{
+			this.managed = managed;
+			if (managed != null)
+				NativeDelegate = new BuilderConnectFuncNative (NativeCallback);
+		}
+
+		public static GtkBeans.BuilderConnectFunc GetManagedDelegate (BuilderConnectFuncNative native)
+		{
+			if (native == null)
+				return null;
+			BuilderConnectFuncWrapper wrapper = (BuilderConnectFuncWrapper) native.Target;
+			if (wrapper == null)
+				return null;
+			return wrapper.managed;
+		}
+	}
+#endregion
+}
diff --git a/src/Builder/ObjectManager.cs b/src/Builder/ObjectManager.cs
new file mode 100644
index 0000000..706ae8c
--- /dev/null
+++ b/src/Builder/ObjectManager.cs
@@ -0,0 +1,19 @@
+// This file was generated by the Gtk# code generator.
+// Any changes made will be lost if regenerated.
+
+namespace GtkSharp.GtkbeansSharp {
+
+	public class ObjectManager {
+
+		static bool initialized = false;
+		// Call this method from the appropriate module init function.
+		public static void Initialize ()
+		{
+			if (initialized)
+				return;
+
+			initialized = true;
+			GLib.GType.Register (GtkBeans.Builder.GType, typeof (GtkBeans.Builder));
+		}
+	}
+}
diff --git a/src/Builder/README b/src/Builder/README
new file mode 100644
index 0000000..74c55e6
--- /dev/null
+++ b/src/Builder/README
@@ -0,0 +1,3 @@
+This has been generated by gtk-sharp-beans
+
+To be removed when gtk-sharp has been support for Builder 
diff --git a/src/Dialogs/AddSlideDialog.cs b/src/Dialogs/AddSlideDialog.cs
index 812b9cc..b06a619 100644
--- a/src/Dialogs/AddSlideDialog.cs
+++ b/src/Dialogs/AddSlideDialog.cs
@@ -1,5 +1,5 @@
 //
-// Copyright (C) 2008-2009 Jordi Mas i Hernandez, jmas softcatala org
+// Copyright (C) 2008-2010 Jordi Mas i Hernandez, jmas softcatala org
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -22,7 +22,6 @@
 //
 
 using System;
-using Glade;
 using Gtk;
 using Mono.Unix;
 using Cairo;
@@ -65,7 +64,7 @@ namespace Mistelix.Dialogs
 
 		static public ResponseType Run ()
 		{
-			response = dialog.RunNoDestroy ();
+			response = (ResponseType) dialog.Run ();
 			return response;
 		}
 
@@ -81,7 +80,7 @@ namespace Mistelix.Dialogs
 	}
 
 	// UI interface to create new Slideshows
-	public class AddSlideDialog : GtkDialog
+	public class AddSlideDialog : BuilderDialog
 	{
 		public enum ColumnsCombo // Column description within the transitions store
 		{	
@@ -100,23 +99,23 @@ namespace Mistelix.Dialogs
 		Project project;
 		const int COL_DISPLAYNAME = 0;
 
-		[Glade.Widget] Gtk.VBox left_vbox;
-		[Glade.Widget ("scrolledwindow_files")] Gtk.ScrolledWindow scrolledwin_files;
-		[Glade.Widget ("vertical_paned")] Gtk.HPaned vpaned;
-		[Glade.Widget ("vpaned_horizontal")] Gtk.VPaned hpaned;
-		[Glade.Widget ("scrolled_images")] Gtk.ScrolledWindow scrolled_images; // View the slide images
-		[Glade.Widget] Gtk.SpinButton duration_spin;
-		[Glade.Widget] Gtk.ComboBox transition_combo;
-		[Glade.Widget] Gtk.HBox ctrls_hbox;
-		[Glade.Widget] Gtk.Button up_button;
-		[Glade.Widget] Gtk.Button down_button;
-		[Glade.Widget] Gtk.Button preview_button;
-		[Glade.Widget] Gtk.Button audio_button;
-		[Glade.Widget] Gtk.VBox vbox_dir;
-		[Glade.Widget] Gtk.ComboBox textposition_combo;
+		[GtkBeans.Builder.Object] Gtk.VBox left_vbox;
+		[GtkBeans.Builder.Object ("scrolledwindow_files")] Gtk.ScrolledWindow scrolledwin_files;
+		[GtkBeans.Builder.Object ("vertical_paned")] Gtk.HPaned vpaned;
+		[GtkBeans.Builder.Object ("vpaned_horizontal")] Gtk.VPaned hpaned;
+		[GtkBeans.Builder.Object ("scrolled_images")] Gtk.ScrolledWindow scrolled_images; // View the slide images
+		[GtkBeans.Builder.Object] Gtk.SpinButton duration_spin;
+		[GtkBeans.Builder.Object] Gtk.ComboBox transition_combo;
+		[GtkBeans.Builder.Object] Gtk.HBox ctrls_hbox;
+		[GtkBeans.Builder.Object] Gtk.Button up_button;
+		[GtkBeans.Builder.Object] Gtk.Button down_button;
+		[GtkBeans.Builder.Object] Gtk.Button preview_button;
+		[GtkBeans.Builder.Object] Gtk.Button audio_button;
+		[GtkBeans.Builder.Object] Gtk.VBox vbox_dir;
+		[GtkBeans.Builder.Object] Gtk.ComboBox textposition_combo;
 
 		// TODO: Since allows editing probably should be renamed to SlideDialog
-		public AddSlideDialog (Project project) : base ("addslide")		
+		public AddSlideDialog (Project project) : base ("AddSlideDialog.ui", "addslide")
 		{
 			this.project = project;
 			LoadWindowPosition ();
@@ -148,11 +147,18 @@ namespace Mistelix.Dialogs
 			transition_store = new ListStore (typeof (string), typeof (string)); // DisplayName, Name
 			LoadTransitionsIntoCombo ();
 			transition_combo.Model = transition_store;
+
+			CellRenderer transition_cell = new CellRendererText ();
+			transition_combo.PackStart (transition_cell, true);
+			transition_combo.SetCellDataFunc (transition_cell, Utils.ComboBoxCellFunc);
 			transition_store.SetSortFunc (0, new Gtk.TreeIterCompareFunc (TransitionSort));
 			transition_store.SetSortColumnId (0, SortType.Ascending);
 
 			textposition_store = new ListStore (typeof (string), typeof (int)); // DisplayName, int
 			textposition_combo.Model = textposition_store;
+			CellRenderer textposition_cell = new CellRendererText ();
+			textposition_combo.PackStart (textposition_cell, true);
+			textposition_combo.SetCellDataFunc (textposition_cell, Utils.ComboBoxCellFunc);
 			LoadTextPositionsIntoCombo ();
 			
 			SetTransisitionToNone ();
@@ -253,13 +259,13 @@ namespace Mistelix.Dialogs
 
 		void OnSaveSlide (object sender, EventArgs args)
 		{
-			Dialog.Respond (ResponseType.Ok);
+			Respond (ResponseType.Ok);
 		}
 
 		// This is a particular case since the Cancel button is not part of the standard dlg button bar
 		void OnCancel (object sender, EventArgs args)
 		{
-			Dialog.Respond (ResponseType.Cancel);
+			Respond (ResponseType.Cancel);
 		}
 
 		void OnTransitionComboChanged (object sender, EventArgs args)
@@ -371,7 +377,7 @@ namespace Mistelix.Dialogs
 		{
 			SlideShow slide_show = GenerateSlideShow ();
 			SlideShowView slide_show_view = new SlideShowView(slide_show);
-			Dialog.Visible = false;
+			Visible = false;
 			FullScreenWindow full_screen = new FullScreenWindow (slide_show_view);
 		}
 
@@ -395,7 +401,7 @@ namespace Mistelix.Dialogs
 		{
 			file_view.Dispose ();
 			image_view.Dispose ();
-			Dialog.Destroy ();
+			Destroy ();
 		}
 
 		void LoadTextPositionsIntoCombo ()
@@ -424,16 +430,16 @@ namespace Mistelix.Dialogs
 			if (x==-1 && y ==-1 && width == -1 && height == -1)
 				return;
 
-			Dialog.Move (x, y);
-			Dialog.Resize (width, height);
+			Move (x, y);
+			Resize (width, height);
 		}
 
 		void SaveWindowPosition ()
 		{
 			int x, y, width, height;
 
-			Dialog.GetPosition (out x, out y);
-			Dialog.GetSize (out width, out height);
+			GetPosition (out x, out y);
+			GetSize (out width, out height);
 
 			Mistelix.Preferences.SetIntValue (Preferences.SlideWindowX, x);
 			Mistelix.Preferences.SetIntValue (Preferences.SlideWindowY, y);
@@ -447,7 +453,7 @@ namespace Mistelix.Dialogs
 			AudioSelectionDialog dialog = new AudioSelectionDialog ();
 			dialog.Filename = audiofile;
 
-			if (dialog.Run () == ResponseType.Ok) {
+			if (dialog.RunModal () == ResponseType.Ok) {
 				audiofile = dialog.Filename;
 			}
 		}
diff --git a/src/Dialogs/AddVideoDialog.cs b/src/Dialogs/AddVideoDialog.cs
index ebf0b36..bbce38a 100644
--- a/src/Dialogs/AddVideoDialog.cs
+++ b/src/Dialogs/AddVideoDialog.cs
@@ -1,5 +1,5 @@
 //
-// Copyright (C) 2008-2009 Jordi Mas i Hernandez, jmas softcatala org
+// Copyright (C) 2008-2010 Jordi Mas i Hernandez, jmas softcatala org
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -22,7 +22,6 @@
 //
 
 using System;
-using Glade;
 using Gtk;
 using Mono.Unix;
 using System.Collections;
@@ -35,16 +34,16 @@ using Mistelix.Core;
 namespace Mistelix.Dialogs
 {
 	// UI interface to add new videos into the project
-	public class AddVideoDialog : GtkDialog
+	public class AddVideoDialog : BuilderDialog
 	{
 		VideosFileView file_view;
-		[Glade.Widget ("scrolledwindow_files")] Gtk.ScrolledWindow scrolledwin_files;
-		[Glade.Widget ("vpaned_horizontal")] Gtk.VPaned hpaned;
-		[Glade.Widget] Gtk.VBox vbox_dir;
-		[Glade.Widget] Gtk.Button ok_button;
+		[GtkBeans.Builder.Object ("scrolledwindow_files")] Gtk.ScrolledWindow scrolledwin_files;
+		[GtkBeans.Builder.Object ("vpaned_horizontal")] Gtk.VPaned hpaned;
+		[GtkBeans.Builder.Object] Gtk.VBox vbox_dir;
+		[GtkBeans.Builder.Object] Gtk.Button ok_button;
 		List <VideoProjectElement> videos;
 		
-		public AddVideoDialog () : base ("addvideo")
+		public AddVideoDialog () : base ("AddVideoDialog.ui", "addvideo")
 		{
 			file_view = new VideosFileView ();
 			new DirectoryView (vbox_dir, new ChangeDirectoryEventHandler (OnDirectoryChanged),
diff --git a/src/Dialogs/AudioSelectionDialog.cs b/src/Dialogs/AudioSelectionDialog.cs
index bf62ee3..f563516 100644
--- a/src/Dialogs/AudioSelectionDialog.cs
+++ b/src/Dialogs/AudioSelectionDialog.cs
@@ -1,5 +1,5 @@
 //
-// Copyright (C) 2009 Jordi Mas i Hernandez, jmas softcatala org
+// Copyright (C) 2009-2010 Jordi Mas i Hernandez, jmas softcatala org
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -22,7 +22,6 @@
 //
 
 using System;
-using Glade;
 using Gtk;
 using Mono.Unix;
 
@@ -34,16 +33,16 @@ using Mistelix.Transitions;
 namespace Mistelix.Dialogs
 {
 	// Application preferences dialog
-	public class AudioSelectionDialog : GtkDialog
+	public class AudioSelectionDialog : BuilderDialog
 	{
-		[Glade.Widget] Gtk.HBox audiofile_hbox;
+		[GtkBeans.Builder.Object] Gtk.HBox audiofile_hbox;
 
 		Gtk.Button clean_button;	
 		BrowseFile audiofile_browser;
 		string filename;
 		bool no_audio;
 	
-		public AudioSelectionDialog () : base ("audioselection")
+		public AudioSelectionDialog () : base ("AudioSelectionDialog.ui", "audioselection")
 		{			
 			audiofile_browser = new BrowseFile (audiofile_hbox, null, true);
 			audiofile_browser.DefaultDirectory = Mistelix.Preferences.GetStringValue (Preferences.AudioDirectoryKey);
diff --git a/src/Dialogs/BuildProjectDialog.cs b/src/Dialogs/BuildProjectDialog.cs
index 5d062b4..cf2e5f7 100644
--- a/src/Dialogs/BuildProjectDialog.cs
+++ b/src/Dialogs/BuildProjectDialog.cs
@@ -1,5 +1,5 @@
 //
-// Copyright (C) 2008 Jordi Mas i Hernandez, jmas softcatala org
+// Copyright (C) 2008-2010 Jordi Mas i Hernandez, jmas softcatala org
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -22,7 +22,6 @@
 //
 
 using System;
-using Glade;
 using Gtk;
 using Mono.Unix;
 using System.Collections;
@@ -38,34 +37,38 @@ using Mistelix.Backends;
 namespace Mistelix.Dialogs
 {
 	// 
-	public class BuildProjectDialog : GtkDialog
+	public class BuildProjectDialog : BuilderDialog
 	{
 		Project project;
 		Thread thread;
-		readonly object sync = new object ();	
-
-		[Glade.Widget] Gtk.ProgressBar task_bar;
-		[Glade.Widget] Gtk.ProgressBar total_bar;
-		[Glade.Widget] Gtk.TextView status_text;
-		[Glade.Widget] Gtk.TextView textview;
-		[Glade.Widget] Gtk.Button generate_button;
-		[Glade.Widget] Gtk.Label totalprogress_label;
-		[Glade.Widget] Gtk.TextBuffer buffer;
+		Gtk.TextBuffer buffer;
 		Gdk.Color color;
+		readonly object sync = new object ();	
 
-		public BuildProjectDialog (Project project) : base ("buildproject")
+		[GtkBeans.Builder.Object] Gtk.ProgressBar task_bar;
+		[GtkBeans.Builder.Object] Gtk.ProgressBar total_bar;
+		[GtkBeans.Builder.Object] Gtk.TextView status_text;
+		[GtkBeans.Builder.Object] Gtk.TextView textview_intro;
+		[GtkBeans.Builder.Object] Gtk.Button generate_button;
+		[GtkBeans.Builder.Object] Gtk.Label totalprogress_label;
+		
+		public BuildProjectDialog (Project project) : base ("BuildProjectDialog.ui", "buildproject")
 		{
+			Gtk.TextBuffer buffer_intro;
 			this.project = project;
 			buffer = new Gtk.TextBuffer (new Gtk.TextTagTable ());
 			status_text.Buffer = buffer;
 	
 			color = totalprogress_label.Style.Background (StateType.Normal);
-			textview.ModifyBase (Gtk.StateType.Normal, color);
+			buffer_intro = new Gtk.TextBuffer (new Gtk.TextTagTable ());
+			textview_intro.Buffer = buffer_intro;
+			textview_intro.ModifyBase (Gtk.StateType.Normal, color);
+			buffer_intro.Text = Catalog.GetString ("Welcome to the project building process. Press the 'Generate' button to start this process.");			
 		}	
 
 		public void OnProgressTotal (object sender, ProgressEventArgs e)
 		{
-			// Make sure that the call to GTK has been process before we return
+			// Make sure that the call to GTK has been processed before we return
 			Monitor.Enter (sync);
 			Application.Invoke (delegate {
 				Monitor.Enter (sync);
@@ -96,7 +99,7 @@ namespace Mistelix.Dialogs
 			if (thread != null)
 				thread.Abort ();
 
-			Dialog.Respond (ResponseType.Cancel);
+			Respond (ResponseType.Cancel);
 		}
 	
 		void OnGenerate (object sender, EventArgs args)
diff --git a/src/Dialogs/GtkDialog.cs b/src/Dialogs/BuilderDialog.cs
similarity index 61%
rename from src/Dialogs/GtkDialog.cs
rename to src/Dialogs/BuilderDialog.cs
index 6b11dcd..5c08416 100644
--- a/src/Dialogs/GtkDialog.cs
+++ b/src/Dialogs/BuilderDialog.cs
@@ -22,63 +22,40 @@
 //
 
 using System;
-using Glade;
 using Gtk;
-using Mono.Unix;
-using System.Collections;
+using GtkBeans;
 
 namespace Mistelix.Dialogs
 {
-	// GTK.Dialog
-	//
-	// Catch the event OK from Glade to call OnOk 
-	//
-	public class GtkDialog
+	public class BuilderDialog : Gtk.Dialog
 	{
-		Glade.XML xml;
-		Gtk.Dialog dialog;
-		string dialog_name;
-
-		public GtkDialog (string dialog_name)
+		public BuilderDialog (string resourceName, string dialogName) : this (null, resourceName, dialogName)
 		{
-			this.dialog_name = dialog_name;
-			xml = new Glade.XML (null, "mistelix.glade", dialog_name, "mistelix");
-			xml.Autoconnect (this);
-			Dialog.IconName = "mistelix";
-			dialog = null;
 		}
 
-		public virtual ResponseType Run ()
+		public BuilderDialog (System.Reflection.Assembly assembly, string resourceName, string dialogName) : 
+			this (new GtkBeans.Builder (assembly, resourceName, null),dialogName)
 		{
-			ResponseType response = (ResponseType) Dialog.Run ();
-			Destroy ();
-			return response;
 		}
 
-		public ResponseType RunNoDestroy ()
+		public BuilderDialog (GtkBeans.Builder builder, string dialogName) : base (builder.GetRawObject (dialogName))
 		{
-			ResponseType response = (ResponseType) Dialog.Run ();
-			return response;
+			builder.Autoconnect (this);
+			IconName = "mistelix";
 		}
 
-		public Gtk.Dialog Dialog {
-			get {
-				if (dialog == null)
-					dialog = (Gtk.Dialog) xml.GetWidget (dialog_name);
-				
-				return dialog;
-			}
-		}
-
-		public virtual void Destroy ()
+		public virtual ResponseType RunModal ()
 		{
-			Dialog.Destroy ();
-			FreeResources ();
+			ResponseType response = (ResponseType) Run ();
+			Destroy ();
+			return response;
 		}
 
+		// TODO: Why not IDisposable?
 		// Free any resources allocated by this dialog box
 		virtual public void FreeResources ()
 		{
+	
 		}
 	}
 }
diff --git a/src/Dialogs/ButtonPropertiesDialog.cs b/src/Dialogs/ButtonPropertiesDialog.cs
index d6a5a14..4f50801 100644
--- a/src/Dialogs/ButtonPropertiesDialog.cs
+++ b/src/Dialogs/ButtonPropertiesDialog.cs
@@ -1,5 +1,5 @@
 //
-// Copyright (C) 2009 Jordi Mas i Hernandez, jmas softcatala org
+// Copyright (C) 2009-2010 Jordi Mas i Hernandez, jmas softcatala org
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -22,7 +22,6 @@
 //
 
 using System;
-using Glade;
 using Gtk;
 using Gdk;
 using System.Collections.Generic;
@@ -35,7 +34,7 @@ using Mistelix.Core;
 namespace Mistelix.Dialogs
 {
 	// Button properties dialog
-	public class ButtonPropertiesDialog : GtkDialog
+	public class ButtonPropertiesDialog : BuilderDialog
 	{
 		Project project;
 		int button_id;
@@ -45,16 +44,16 @@ namespace Mistelix.Dialogs
 		Dictionary <ThumbnailCollection.ItemTask, Gtk.TreeIter> mapping;
 		BackgroundWorker thumbnailing;
 
-		[Glade.Widget] Gtk.Entry element_entry;
-		[Glade.Widget] Gtk.RadioButton image_radio;
-		[Glade.Widget] Gtk.RadioButton text_radio;
-		[Glade.Widget] Gtk.Button ok_button;
-		[Glade.Widget] Gtk.IconView thumbnails_iconview;
+		[GtkBeans.Builder.Object] Gtk.Entry element_entry;
+		[GtkBeans.Builder.Object] Gtk.RadioButton image_radio;
+		[GtkBeans.Builder.Object] Gtk.RadioButton text_radio;
+		[GtkBeans.Builder.Object] Gtk.Button ok_button;
+		[GtkBeans.Builder.Object] Gtk.IconView thumbnails_iconview;
 
 		const int COL_PIXBUF = 0;
 		const int COL_INDEX = 1;
 
-		public ButtonPropertiesDialog (Project project, int button_id) : base ("buttonproperties")
+		public ButtonPropertiesDialog (Project project, int button_id) : base ("ButtonPropertiesDialog.ui", "buttonproperties")
 		{
 			this.project = project;
 			this.button_id = button_id;
diff --git a/src/Dialogs/CheckDependenciesDialog.cs b/src/Dialogs/CheckDependenciesDialog.cs
index e8789cd..3d04ab0 100644
--- a/src/Dialogs/CheckDependenciesDialog.cs
+++ b/src/Dialogs/CheckDependenciesDialog.cs
@@ -1,5 +1,5 @@
 //
-// Copyright (C) 2009 Jordi Mas i Hernandez, jmas softcatala org
+// Copyright (C) 2009-2010 Jordi Mas i Hernandez, jmas softcatala org
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -21,7 +21,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 using System;
-using Glade;
 using Gtk;
 using Gdk;
 using Mono.Unix;
@@ -35,12 +34,12 @@ using Mistelix.DataModel;
 namespace Mistelix.Dialogs
 {
 	// Check dependencies
-	public class CheckDependenciesDialog : GtkDialog
+	public class CheckDependenciesDialog : BuilderDialog
 	{		
-		[Glade.Widget] Gtk.VBox dependencies_vbox;
-		[Glade.Widget] Gtk.TreeView treeview;
-		[Glade.Widget] Gtk.TextView textview;
-		[Glade.Widget] Gtk.TextView capabilitiesview;
+		[GtkBeans.Builder.Object] Gtk.VBox dependencies_vbox;
+		[GtkBeans.Builder.Object] Gtk.TreeView treeview;
+		[GtkBeans.Builder.Object] Gtk.TextView textview_intro;
+		[GtkBeans.Builder.Object] Gtk.TextView capabilitiesview;
 		Gtk.TextBuffer text_buffer;
 
 		const int COL_STATUS = 0;
@@ -49,17 +48,21 @@ namespace Mistelix.Dialogs
 		ListStore store;
 		Dependencies dependencies;
 
-		public CheckDependenciesDialog (Project project) : base ("dependencies")
+		public CheckDependenciesDialog (Project project) : base ("CheckDependenciesDialog.ui", "dependencies")
 		{
 			text_buffer = new Gtk.TextBuffer (new Gtk.TextTagTable ());
 			capabilitiesview.Buffer = text_buffer;
+
+			Gtk.TextBuffer buffer_intro = new Gtk.TextBuffer (new Gtk.TextTagTable ());
+			textview_intro.Buffer = buffer_intro;
+			buffer_intro.Text = Catalog.GetString ("Mistelix uses a set of external components. Their availability determines Mistelix's capabilities. The following list shows the level of support of your system for Mistelix and if there are actions required.");
 		}
 
 		public Dependencies Dependencies {
 			set { dependencies = value; }
 		}
 
-		public override ResponseType Run ()
+		public override ResponseType RunModal ()
 		{
 			List <Dependencies.Dependency> status;
 			Gdk.Color color;
@@ -102,9 +105,9 @@ namespace Mistelix.Dialogs
 			color = label.Style.Background (StateType.Normal);
 			dependencies_vbox.Remove (label);
 
-			textview.ModifyBase (Gtk.StateType.Normal, color);
+			textview_intro.ModifyBase (Gtk.StateType.Normal, color);
 			capabilitiesview.ModifyBase (Gtk.StateType.Normal, color);
-			return base.Run ();
+			return base.RunModal ();
 		}
 
 	}
diff --git a/src/Dialogs/NewProjectDialog.cs b/src/Dialogs/NewProjectDialog.cs
index 1ef26b2..8c78366 100644
--- a/src/Dialogs/NewProjectDialog.cs
+++ b/src/Dialogs/NewProjectDialog.cs
@@ -1,5 +1,5 @@
 //
-// Copyright (C) 2008-2009 Jordi Mas i Hernandez, jmas softcatala org
+// Copyright (C) 2008-2010 Jordi Mas i Hernandez, jmas softcatala org
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -22,7 +22,6 @@
 //
 
 using System;
-using Glade;
 using Gtk;
 using Mono.Unix;
 using System.Collections;
@@ -35,20 +34,20 @@ using Mistelix.Core;
 namespace Mistelix.Dialogs
 {
 	// New project dialog box
-	public class NewProjectDialog : GtkDialog
+	public class NewProjectDialog : BuilderDialog
 	{
-		[Glade.Widget] Gtk.Entry output_dir;
-		[Glade.Widget] Gtk.Entry name;
-		[Glade.Widget] Gtk.RadioButton slideshows_radio;
-		[Glade.Widget] Gtk.RadioButton dvd_radio;
-		[Glade.Widget] Gtk.Label vformat_label;
-		[Glade.Widget] Gtk.Label aratio_label;
-		[Glade.Widget] Gtk.Label resolution_label;
-		[Glade.Widget] Gtk.Box palradio_vbox;
-		[Glade.Widget] Gtk.Box videoformat_vbox;
-		[Glade.Widget] Gtk.Box aspectratio_vbox;
-		[Glade.Widget] Gtk.ComboBox resolution_combobox;
-		[Glade.Widget] Gtk.Button ok_button;
+		[GtkBeans.Builder.Object] Gtk.Entry output_dir;
+		[GtkBeans.Builder.Object] Gtk.Entry name;
+		[GtkBeans.Builder.Object] Gtk.RadioButton slideshows_radio;
+		[GtkBeans.Builder.Object] Gtk.RadioButton dvd_radio;
+		[GtkBeans.Builder.Object] Gtk.Label vformat_label;
+		[GtkBeans.Builder.Object] Gtk.Label aratio_label;
+		[GtkBeans.Builder.Object] Gtk.Label resolution_label;
+		[GtkBeans.Builder.Object] Gtk.Box palradio_vbox;
+		[GtkBeans.Builder.Object] Gtk.Box videoformat_vbox;
+		[GtkBeans.Builder.Object] Gtk.Box aspectratio_vbox;
+		[GtkBeans.Builder.Object] Gtk.ComboBox resolution_combobox;
+		[GtkBeans.Builder.Object] Gtk.Button ok_button;
 
 		Gtk.RadioButton pal_radio;
 		Gtk.RadioButton ntsc_radio;
@@ -60,7 +59,7 @@ namespace Mistelix.Dialogs
 
 		const int COL_INDEX = 1;
 
-		public NewProjectDialog () : base ("newproject")
+		public NewProjectDialog () : base ("NewProjectDialog.ui", "newproject")
 		{
 			TreeIter iter;
 
@@ -78,7 +77,11 @@ namespace Mistelix.Dialogs
 			AddRadioButton (aspectratio_vbox, sixteenbynine_radio, 10);
 
 			resolution_store = new ListStore (typeof (string), typeof (int)); // DisplayName, index to array
+			CellRenderer resolution_combocell = new CellRendererText ();
 			resolution_combobox.Model = resolution_store;
+			resolution_combobox.PackStart (resolution_combocell, true);
+			resolution_combobox.SetCellDataFunc (resolution_combocell, Utils.ComboBoxCellFunc);
+			
 			LoadResolutionIntoCombo ();
 
 			// Select default item in the combobox list
@@ -165,7 +168,9 @@ namespace Mistelix.Dialogs
 
 		string OutputDirFromName ()
 		{
-			return Path.Combine (Mistelix.Preferences.GetStringValue (Preferences.ProjectsDirectoryKey), name.Text);
+			return System.IO.Path.Combine (
+				Mistelix.Preferences.GetStringValue (Preferences.ProjectsDirectoryKey), 
+				name.Text);
 		}
 
 		void OnOK (object sender, EventArgs args)
@@ -174,7 +179,7 @@ namespace Mistelix.Dialogs
 
 			// if directory doesn't exist ask the user to create it
 			if (!Directory.Exists (output_dir.Text)) {
-				MessageDialog md = new MessageDialog (Dialog, DialogFlags.DestroyWithParent,
+				MessageDialog md = new MessageDialog (this, DialogFlags.DestroyWithParent,
 					MessageType.Question, ButtonsType.YesNo, 
 					Catalog.GetString ("The output directory provided does not exist. Do you want to create it?"));
 
@@ -186,7 +191,7 @@ namespace Mistelix.Dialogs
 						Directory.CreateDirectory (output_dir.Text);
 					}
 					catch (Exception) {
-						MessageDialog mderror = new MessageDialog (Dialog, DialogFlags.DestroyWithParent,
+						MessageDialog mderror = new MessageDialog (this, DialogFlags.DestroyWithParent,
 							MessageType.Error, ButtonsType.Ok, 
 							Catalog.GetString ("Unable to create directory."));
 
@@ -225,13 +230,13 @@ namespace Mistelix.Dialogs
 			else
 				project.Details.AspectRatio = AspectRatio.SixteenByNine;
 	
-			Dialog.Respond (ResponseType.Ok);
+			Respond (ResponseType.Ok);
 		}
 
 
 		void OnCancel (object sender, EventArgs args)
 		{
-			Dialog.Respond (ResponseType.Cancel);
+			Respond (ResponseType.Cancel);
 		}
 
 		void OnBrowse (object o, EventArgs args)
diff --git a/src/Dialogs/PreferencesDialog.cs b/src/Dialogs/PreferencesDialog.cs
index 460ad8f..f3f6e8f 100644
--- a/src/Dialogs/PreferencesDialog.cs
+++ b/src/Dialogs/PreferencesDialog.cs
@@ -22,7 +22,6 @@
 //
 
 using System;
-using Glade;
 using Gtk;
 
 using Mistelix.Widgets;
@@ -33,7 +32,7 @@ using Mistelix.Transitions;
 namespace Mistelix.Dialogs
 {
 	// Application preferences dialog
-	public class PreferencesDialog : GtkDialog
+	public class PreferencesDialog : BuilderDialog
 	{
 		public enum ColumnsCombo // Column description within the transitions store
 		{	
@@ -41,35 +40,45 @@ namespace Mistelix.Dialogs
 			Column_Name
 		}
 
-		[Glade.Widget] Gtk.HBox projectsdir_hbox;
-		[Glade.Widget] Gtk.HBox videosdir_hbox;
-		[Glade.Widget] Gtk.HBox imagesdir_hbox;
-		[Glade.Widget] Gtk.HBox audiodir_hbox;
-		[Glade.Widget] Gtk.ComboBox thumbnail_combo;
-		[Glade.Widget] Gtk.ComboBox transition_combo;
-		[Glade.Widget] Gtk.ComboBox textposition_combo;
-		[Glade.Widget] Gtk.SpinButton duration_spin;
+		[GtkBeans.Builder.Object] Gtk.HBox projectsdir_hbox;
+		[GtkBeans.Builder.Object] Gtk.HBox videosdir_hbox;
+		[GtkBeans.Builder.Object] Gtk.HBox imagesdir_hbox;
+		[GtkBeans.Builder.Object] Gtk.HBox audiodir_hbox;
+		[GtkBeans.Builder.Object] Gtk.ComboBox thumbnail_combo;
+		[GtkBeans.Builder.Object] Gtk.ComboBox transition_combo;
+		[GtkBeans.Builder.Object] Gtk.ComboBox textposition_combo;
+		[GtkBeans.Builder.Object] Gtk.SpinButton duration_spin;
 
 		BrowseFile projectsdir, videosdir, imagesdir, audiodir;
 		ListStore transition_store, thumbnail_store, textposition_store;
 		bool needs_repaint;
 
-		public PreferencesDialog () : base ("preferences")
+		public PreferencesDialog () :base ("PreferencesDialog.ui", "preferences")
 		{
+
 			bool more;
 			TreeIter iter;
 			string effect, selected;
 
 			transition_store = new ListStore (typeof (string), typeof (string)); // DisplayName, Name
+			CellRenderer transition_cell = new CellRendererText ();
 			transition_combo.Model = transition_store;
+			transition_combo.PackStart (transition_cell, true);
+			transition_combo.SetCellDataFunc (transition_cell, Utils.ComboBoxCellFunc);
 			LoadTransitionsIntoCombo ();
 
 			thumbnail_store = new ListStore (typeof (string), typeof (int)); // DisplayName, int
+			CellRenderer thumbnail_cell = new CellRendererText ();
 			thumbnail_combo.Model = thumbnail_store;
+			thumbnail_combo.PackStart (thumbnail_cell, true);
+			thumbnail_combo.SetCellDataFunc (thumbnail_cell, Utils.ComboBoxCellFunc);
 			LoadThumbnailsIntoCombo ();
 
 			textposition_store = new ListStore (typeof (string), typeof (int)); // DisplayName, int
+			CellRenderer textposition_cell = new CellRendererText ();
 			textposition_combo.Model = textposition_store;
+			textposition_combo.PackStart (textposition_cell, true);
+			textposition_combo.SetCellDataFunc (textposition_cell, Utils.ComboBoxCellFunc);
 			LoadTextPositionsIntoCombo ();
 			
 			projectsdir = new BrowseFile (projectsdir_hbox, Mistelix.Preferences.GetStringValue (Preferences.ProjectsDirectoryKey), false);
diff --git a/src/Dialogs/ProjectPropertiesDialog.cs b/src/Dialogs/ProjectPropertiesDialog.cs
index 7c8f0fd..edabecb 100644
--- a/src/Dialogs/ProjectPropertiesDialog.cs
+++ b/src/Dialogs/ProjectPropertiesDialog.cs
@@ -1,5 +1,5 @@
 //
-// Copyright (C) 2009 Jordi Mas i Hernandez, jmas softcatala org
+// Copyright (C) 2009-2010 Jordi Mas i Hernandez, jmas softcatala org
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -21,7 +21,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 using System;
-using Glade;
 using Gtk;
 using Mono.Unix;
 using System.Collections;
@@ -34,35 +33,35 @@ using Mistelix.Core;
 namespace Mistelix.Dialogs
 {
 	// Project properties dialog box
-	public class ProjectPropertiesDialog : GtkDialog
+	public class ProjectPropertiesDialog : BuilderDialog
 	{
-		[Glade.Widget] Gtk.Entry output_dir;
-		[Glade.Widget] Gtk.Entry name;
-		[Glade.Widget] Gtk.RadioButton pal_radio;
-		[Glade.Widget] Gtk.RadioButton ntsc_radio;
-		[Glade.Widget] FontButton fontbuttons_button;
-		[Glade.Widget] ColorButton backbuttons_button;
-		[Glade.Widget] ColorButton forebuttons_button;
-		[Glade.Widget] FontButton fontslides_button;
-		[Glade.Widget] ColorButton backslides_button;
-		[Glade.Widget] ColorButton foreslides_button;
-		[Glade.Widget] Gtk.RadioButton fourbythree_radio;
-		[Glade.Widget] Gtk.RadioButton sixteenbynine_radio;
-		[Glade.Widget] Gtk.Label type_label;
-		[Glade.Widget] Gtk.ComboBox thumbnail_combo;
-		[Glade.Widget] Gtk.Box general_vbox;
-		[Glade.Widget] Gtk.Box vbox25;
-
-		[Glade.Widget] Gtk.Box name_hbox;
-		[Glade.Widget] Gtk.Box output_dir_hbox;
-		[Glade.Widget] Gtk.Box fourbythree_hbox;
-		[Glade.Widget] Gtk.Box sixteenbynine_hbox;
-		[Glade.Widget] Gtk.Box pal_hbox;
-		[Glade.Widget] Gtk.Box ntsc_hbox;
-		[Glade.Widget] Gtk.Box resolution_hbox;
-		[Glade.Widget] Gtk.Notebook notebook;
-		[Glade.Widget] Gtk.ComboBox resolution_combobox;
-		[Glade.Widget] Gtk.Label resolution_label;
+		[GtkBeans.Builder.Object] Gtk.Entry output_dir;
+		[GtkBeans.Builder.Object] Gtk.Entry name;
+		[GtkBeans.Builder.Object] Gtk.RadioButton pal_radio;
+		[GtkBeans.Builder.Object] Gtk.RadioButton ntsc_radio;
+		[GtkBeans.Builder.Object] FontButton fontbuttons_button;
+		[GtkBeans.Builder.Object] ColorButton backbuttons_button;
+		[GtkBeans.Builder.Object] ColorButton forebuttons_button;
+		[GtkBeans.Builder.Object] FontButton fontslides_button;
+		[GtkBeans.Builder.Object] ColorButton backslides_button;
+		[GtkBeans.Builder.Object] ColorButton foreslides_button;
+		[GtkBeans.Builder.Object] Gtk.RadioButton fourbythree_radio;
+		[GtkBeans.Builder.Object] Gtk.RadioButton sixteenbynine_radio;
+		[GtkBeans.Builder.Object] Gtk.Label type_label;
+		[GtkBeans.Builder.Object] Gtk.ComboBox thumbnail_combo;
+		[GtkBeans.Builder.Object] Gtk.Box general_vbox;
+		[GtkBeans.Builder.Object] Gtk.Box vbox25;
+
+		[GtkBeans.Builder.Object] Gtk.Box name_hbox;
+		[GtkBeans.Builder.Object] Gtk.Box output_dir_hbox;
+		[GtkBeans.Builder.Object] Gtk.Box fourbythree_hbox;
+		[GtkBeans.Builder.Object] Gtk.Box sixteenbynine_hbox;
+		[GtkBeans.Builder.Object] Gtk.Box pal_hbox;
+		[GtkBeans.Builder.Object] Gtk.Box ntsc_hbox;
+		[GtkBeans.Builder.Object] Gtk.Box resolution_hbox;
+		[GtkBeans.Builder.Object] Gtk.Notebook notebook;
+		[GtkBeans.Builder.Object] Gtk.ComboBox resolution_combobox;
+		[GtkBeans.Builder.Object] Gtk.Label resolution_label;
 
 		Project project;
 		ListStore thumbnail_store;
@@ -76,7 +75,7 @@ namespace Mistelix.Dialogs
 		const int COL_INDEX = 1; // Store
 		bool dvd_project;
 
-		public ProjectPropertiesDialog (Project project) : base ("projectproperties")
+		public ProjectPropertiesDialog (Project project) : base ("ProjectPropertiesDialog.ui", "projectproperties")
 		{
 			Gtk.Box.BoxChild child;
 			TreeIter iter;
@@ -118,7 +117,10 @@ namespace Mistelix.Dialogs
 				sixteenbynine_radio.Active = project.Details.AspectRatio == AspectRatio.SixteenByNine;
 
 				thumbnail_store = new ListStore (typeof (string), typeof (int)); // DisplayName, int
+				CellRenderer thumbnail_cell = new CellRendererText ();
 				thumbnail_combo.Model = thumbnail_store;
+				thumbnail_combo.PackStart (thumbnail_cell, true);
+				thumbnail_combo.SetCellDataFunc (thumbnail_cell, Utils.ComboBoxCellFunc);
 				LoadThumbnailsIntoCombo ();
 
 				// Default thumbnail size	
@@ -154,7 +156,10 @@ namespace Mistelix.Dialogs
 				notebook.RemovePage (PAGE_DVD); 
 
 				resolution_store = new ListStore (typeof (string), typeof (int)); // DisplayName, index to array
+				CellRenderer resolution_cell = new CellRendererText ();
 				resolution_combobox.Model = resolution_store;
+				resolution_combobox.PackStart (resolution_cell, true);
+				resolution_combobox.SetCellDataFunc (resolution_cell, Utils.ComboBoxCellFunc);
 				LoadResolutionIntoCombo ();
 
 				// Select default item in the combobox list
diff --git a/src/Dialogs/ThemeSelectionDialog.cs b/src/Dialogs/ThemeSelectionDialog.cs
index 3563d81..6570fbd 100644
--- a/src/Dialogs/ThemeSelectionDialog.cs
+++ b/src/Dialogs/ThemeSelectionDialog.cs
@@ -1,5 +1,5 @@
 //
-// Copyright (C) 2008-2009 Jordi Mas i Hernandez, jmas softcatala org
+// Copyright (C) 2008-2010 Jordi Mas i Hernandez, jmas softcatala org
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -21,7 +21,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 using System;
-using Glade;
 using Gtk;
 using Gdk;
 using Mono.Unix;
@@ -36,7 +35,7 @@ using Mistelix.Backends;
 namespace Mistelix.Dialogs
 {	
 	// Browse themes dialog
-	public class ThemeSelectionDialog : GtkDialog
+	public class ThemeSelectionDialog : BuilderDialog
 	{
 		public class MenuBackgroundPreview : DrawingArea
 		{
@@ -184,15 +183,15 @@ namespace Mistelix.Dialogs
 			}
 		}
 		
-		[Glade.Widget] Gtk.TreeView themes_tree;
-		[Glade.Widget] Gtk.HPaned hpaned;
-		[Glade.Widget] Gtk.VBox backpreview_box;
-		[Glade.Widget] Gtk.HBox file_hbox;
-		[Glade.Widget] Gtk.TextView textview;
-		[Glade.Widget] Gtk.Label name_label;
-		[Glade.Widget] Gtk.Label author_label;
-		[Glade.Widget] Gtk.HBox selectbutton_box;
-		[Glade.Widget] Gtk.HBox highlightbutton_box;
+		[GtkBeans.Builder.Object] Gtk.TreeView themes_tree;
+		[GtkBeans.Builder.Object] Gtk.HPaned hpaned;
+		[GtkBeans.Builder.Object] Gtk.VBox backpreview_box;
+		[GtkBeans.Builder.Object] Gtk.HBox file_hbox;
+		[GtkBeans.Builder.Object] Gtk.TextView textview_intro;
+		[GtkBeans.Builder.Object] Gtk.Label name_label;
+		[GtkBeans.Builder.Object] Gtk.Label author_label;
+		[GtkBeans.Builder.Object] Gtk.HBox selectbutton_box;
+		[GtkBeans.Builder.Object] Gtk.HBox highlightbutton_box;
 
 		ListStore store;
 		Project project;
@@ -206,7 +205,7 @@ namespace Mistelix.Dialogs
 		const int COL_DISPLAY_NAME = 0;
 		const int COL_OBJECT = 1;
 
-		public ThemeSelectionDialog (Project project) : base ("themeselection")
+		public ThemeSelectionDialog (Project project) : base ("ThemeSelectionDialog.ui", "themeselection")
 		{
 			this.project = project;
 			hpaned.Position = 200; // W (left)
@@ -220,7 +219,7 @@ namespace Mistelix.Dialogs
 			menu_drawing_area.CustomMenuBackground = project.Details.CustomMenuBackground;
 
 			color = author_label.Style.Background (StateType.Normal);
-			textview.ModifyBase (Gtk.StateType.Normal, color);
+			textview_intro.ModifyBase (Gtk.StateType.Normal, color);
 	
 			Gtk.Button clean_button = new Gtk.Button (Catalog.GetString ("Clean"));
 			clean_button.Clicked += delegate 
@@ -246,6 +245,10 @@ namespace Mistelix.Dialogs
 			{
 				menu_drawing_area.CustomMenuBackground = browse_file.Filename;
 			};
+
+			Gtk.TextBuffer buffer_intro = new Gtk.TextBuffer (new Gtk.TextTagTable ());
+			textview_intro.Buffer = buffer_intro;
+			buffer_intro.Text = Catalog.GetString ("Menu themes define how the main DVD menu looks. Here you define the default background image and the type of buttons. For more information visit: http://www.mistelix.org/Themes";);		
 		}
 
 		void PrepareTree ()
@@ -284,8 +287,8 @@ namespace Mistelix.Dialogs
 				return;
 
 			selected_theme = menu_drawing_area.Theme = (Theme) model.GetValue (iter, COL_OBJECT);
-			selectbutton_drawing_area.ImageFile = Path.Combine (Defines.DATA_DIR, selected_theme.ButtonSelect);
-			highlightbutton_drawing_area.ImageFile = Path.Combine (Defines.DATA_DIR, selected_theme.ButtonHighlight);
+			selectbutton_drawing_area.ImageFile = System.IO.Path.Combine (Defines.DATA_DIR, selected_theme.ButtonSelect);
+			highlightbutton_drawing_area.ImageFile = System.IO.Path.Combine (Defines.DATA_DIR, selected_theme.ButtonHighlight);
 	
 			name_label.Text = selected_theme.Name;
 			author_label.Text = selected_theme.Author;
diff --git a/src/Dialogs/ui/AddSlideDialog.ui b/src/Dialogs/ui/AddSlideDialog.ui
new file mode 100644
index 0000000..0f7f9e3
--- /dev/null
+++ b/src/Dialogs/ui/AddSlideDialog.ui
@@ -0,0 +1,372 @@
+<?xml version="1.0"?>
+<interface>
+  <object class="GtkDialog" id="addslide">
+    <property name="width_request">800</property>
+    <property name="height_request">600</property>
+    <property name="visible">True</property>
+    <property name="title" translatable="yes">Add Slideshow</property>
+    <property name="type_hint">dialog</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <child>
+          <object class="GtkHPaned" id="vertical_paned">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <child>
+              <object class="GtkVBox" id="left_vbox">
+                <property name="visible">True</property>
+                <child>
+                  <object class="GtkVBox" id="vbox16">
+                    <property name="visible">True</property>
+                    <child>
+                      <object class="GtkScrolledWindow" id="scrolled_images">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="hscrollbar_policy">automatic</property>
+                        <property name="vscrollbar_policy">automatic</property>
+                        <child>
+                          <placeholder/>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkVBox" id="vbox17">
+                        <property name="visible">True</property>
+                        <child>
+                          <object class="GtkHBox" id="ctrls_hbox">
+                            <property name="visible">True</property>
+                            <child>
+                              <object class="GtkTable" id="table1">
+                                <property name="visible">True</property>
+                                <property name="n_rows">3</property>
+                                <property name="n_columns">3</property>
+                                <child>
+                                  <object class="GtkLabel" id="label6">
+                                    <property name="visible">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">Duration (seconds):</property>
+                                  </object>
+                                  <packing>
+                                    <property name="x_options">GTK_FILL</property>
+                                    <property name="y_options"/>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkLabel" id="label7">
+                                    <property name="visible">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">Transition type:</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"/>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkSpinButton" id="duration_spin">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="adjustment">adjustment1</property>
+                                    <property name="climb_rate">1</property>
+                                  </object>
+                                  <packing>
+                                    <property name="left_attach">1</property>
+                                    <property name="right_attach">2</property>
+                                    <property name="y_options"/>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkComboBox" id="transition_combo">
+                                    <property name="visible">True</property>
+                                    <signal handler="OnTransitionComboChanged" name="changed"/>
+                                  </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="GtkButton" id="down_button">
+                                    <property name="label">gtk-go-down</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="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"/>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkButton" id="up_button">
+                                    <property name="label">gtk-go-up</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="left_attach">2</property>
+                                    <property name="right_attach">3</property>
+                                    <property name="x_options">GTK_FILL</property>
+                                    <property name="y_options"/>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkLabel" id="label36">
+                                    <property name="visible">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">Text position:</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"/>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkComboBox" id="textposition_combo">
+                                    <property name="visible">True</property>
+                                    <signal handler="OnTextPositionComboChanged" name="changed"/>
+                                  </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">GTK_FILL</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <object class="GtkButton" id="audio_button">
+                                    <property name="label" translatable="yes">Select Audio...</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="receives_default">False</property>
+                                    <property name="use_underline">True</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="x_options">GTK_FILL</property>
+                                    <property name="y_options"/>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <placeholder/>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkHButtonBox" id="hbuttonbox4">
+                            <property name="visible">True</property>
+                            <property name="layout_style">spread</property>
+                            <child>
+                              <object class="GtkButton" id="saveslide">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="can_default">True</property>
+                                <property name="receives_default">False</property>
+                                <signal handler="OnSaveSlide" name="clicked"/>
+                                <child>
+                                  <object class="GtkAlignment" id="alignment1">
+                                    <property name="visible">True</property>
+                                    <property name="xscale">0</property>
+                                    <property name="yscale">0</property>
+                                    <child>
+                                      <object class="GtkHBox" id="hbox6">
+                                        <property name="visible">True</property>
+                                        <property name="spacing">2</property>
+                                        <child>
+                                          <object class="GtkImage" id="image8">
+                                            <property name="visible">True</property>
+                                            <property name="stock">gtk-apply</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="save">
+                                            <property name="visible">True</property>
+                                            <property name="label" translatable="yes">Save</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">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkButton" id="cancel">
+                                <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>
+                                <signal handler="OnCancel" name="clicked"/>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkButton" id="preview_button">
+                                <property name="label" translatable="yes">Preview</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_underline">True</property>
+                                <signal handler="OnSlideShowPreview" name="clicked"/>
+                              </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="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="resize">False</property>
+                <property name="shrink">True</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="right_vbox">
+                <property name="visible">True</property>
+                <child>
+                  <object class="GtkVPaned" id="vpaned_horizontal">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <child>
+                      <object class="GtkVBox" id="vbox_dir">
+                        <property name="visible">True</property>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="resize">False</property>
+                        <property name="shrink">True</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkVBox" id="vbox5">
+                        <property name="visible">True</property>
+                        <child>
+                          <object class="GtkScrolledWindow" id="scrolledwindow_files">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="hscrollbar_policy">automatic</property>
+                            <property name="vscrollbar_policy">automatic</property>
+                            <child>
+                              <placeholder/>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="resize">True</property>
+                        <property name="shrink">True</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="resize">True</property>
+                <property name="shrink">True</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="hbuttonbox2">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/src/Dialogs/ui/AddVideoDialog.ui b/src/Dialogs/ui/AddVideoDialog.ui
new file mode 100644
index 0000000..c3b8266
--- /dev/null
+++ b/src/Dialogs/ui/AddVideoDialog.ui
@@ -0,0 +1,113 @@
+<?xml version="1.0"?>
+<interface>
+  <object class="GtkDialog" id="addvideo">
+    <property name="width_request">800</property>
+    <property name="height_request">600</property>
+    <property name="visible">True</property>
+    <property name="title" translatable="yes">Add Videos</property>
+    <property name="type_hint">dialog</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <child>
+          <object class="GtkVBox" id="right_vbox">
+            <property name="visible">True</property>
+            <child>
+              <object class="GtkVPaned" id="vpaned_horizontal">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <child>
+                  <object class="GtkVBox" id="vbox_dir">
+                    <property name="visible">True</property>
+                    <child>
+                      <placeholder/>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="resize">False</property>
+                    <property name="shrink">True</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVBox" id="vbox5">
+                    <property name="visible">True</property>
+                    <child>
+                      <object class="GtkScrolledWindow" id="scrolledwindow_files">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="hscrollbar_policy">automatic</property>
+                        <property name="vscrollbar_policy">automatic</property>
+                        <child>
+                          <placeholder/>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="resize">True</property>
+                    <property name="shrink">True</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="hbuttonbox2">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="cancel">
+                <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="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="receives_default">False</property>
+                <property name="use_stock">True</property>
+                <signal handler="OnOK" name="clicked"/>
+              </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">cancel</action-widget>
+      <action-widget response="-5">ok_button</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/src/Dialogs/ui/AudioSelectionDialog.ui b/src/Dialogs/ui/AudioSelectionDialog.ui
new file mode 100644
index 0000000..dbccfa9
--- /dev/null
+++ b/src/Dialogs/ui/AudioSelectionDialog.ui
@@ -0,0 +1,100 @@
+<?xml version="1.0"?>
+<interface>
+  <object class="GtkDialog" id="audioselection">
+    <property name="width_request">500</property>
+    <property name="visible">True</property>
+    <property name="title" translatable="yes">Select audio</property>
+    <property name="type_hint">dialog</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox9">
+        <property name="visible">True</property>
+        <child>
+          <object class="GtkVBox" id="vbox39">
+            <property name="visible">True</property>
+            <child>
+              <object class="GtkLabel" id="label53">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="yalign">0</property>
+                <property name="xpad">5</property>
+                <property name="ypad">5</property>
+                <property name="label" translatable="yes">Select an audio file for the slideshow</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHBox" id="audiofile_hbox">
+                <property name="visible">True</property>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+              </object>
+              <packing>
+                <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_area9">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="cancelbutton6">
+                <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="okbutton6">
+                <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="receives_default">False</property>
+                <property name="use_stock">True</property>
+                <signal handler="OnOK" name="clicked"/>
+              </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">cancelbutton6</action-widget>
+      <action-widget response="-5">okbutton6</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/src/Dialogs/ui/BuildProjectDialog.ui b/src/Dialogs/ui/BuildProjectDialog.ui
new file mode 100644
index 0000000..1111147
--- /dev/null
+++ b/src/Dialogs/ui/BuildProjectDialog.ui
@@ -0,0 +1,271 @@
+<?xml version="1.0"?>
+<interface>
+  <!-- interface-requires gtk+ 2.12 -->
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkDialog" id="buildproject">
+    <property name="width_request">450</property>
+    <property name="height_request">300</property>
+    <property name="visible">True</property>
+    <property name="title" translatable="yes">Build Project</property>
+    <property name="type_hint">dialog</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox3">
+        <property name="visible">True</property>
+        <child>
+          <object class="GtkVBox" id="vbox18">
+            <property name="visible">True</property>
+            <property name="orientation">vertical</property>
+            <child>
+              <object class="GtkVBox" id="vbox19">
+                <property name="visible">True</property>
+                <property name="orientation">vertical</property>
+                <child>
+                  <object class="GtkTextView" id="textview_intro">
+                    <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="cursor_visible">False</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkTable" id="table2">
+                    <property name="visible">True</property>
+                    <property name="n_rows">2</property>
+                    <property name="n_columns">2</property>
+                    <child>
+                      <object class="GtkLabel" id="totalprogress_label">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="xpad">5</property>
+                        <property name="label" translatable="yes">Total progress</property>
+                      </object>
+                      <packing>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="y_options"></property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label12">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="xpad">5</property>
+                        <property name="label" translatable="yes">Task progress</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="GtkProgressBar" id="total_bar">
+                        <property name="visible">True</property>
+                        <property name="pulse_step">0.10000000149</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="GtkProgressBar" id="task_bar">
+                        <property name="visible">True</property>
+                        <property name="pulse_step">0.10000000149</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>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkScrolledWindow" id="scrolledwindow1">
+                <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="status_text">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="editable">False</property>
+                    <property name="cursor_visible">False</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHBox" id="hbutton_box">
+                <property name="visible">True</property>
+                <property name="spacing">5</property>
+                <child>
+                  <object class="GtkButton" id="folder_button">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="can_default">True</property>
+                    <property name="receives_default">False</property>
+                    <signal name="clicked" handler="OnOpenFolder"/>
+                    <child>
+                      <object class="GtkAlignment" id="alignment3">
+                        <property name="visible">True</property>
+                        <property name="xscale">0</property>
+                        <property name="yscale">0</property>
+                        <child>
+                          <object class="GtkHBox" id="hbox29">
+                            <property name="visible">True</property>
+                            <property name="spacing">2</property>
+                            <child>
+                              <object class="GtkImage" id="image44">
+                                <property name="visible">True</property>
+                                <property name="stock">gtk-open</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="label71">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes">_Open Destination Folder</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="pack_type">end</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkButton" id="close_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>
+                    <signal name="clicked" handler="OnCancel"/>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="pack_type">end</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkButton" id="generate_button">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="can_default">True</property>
+                    <property name="receives_default">False</property>
+                    <signal name="clicked" handler="OnGenerate"/>
+                    <child>
+                      <object class="GtkAlignment" id="alignment2">
+                        <property name="visible">True</property>
+                        <property name="xscale">0</property>
+                        <property name="yscale">0</property>
+                        <child>
+                          <object class="GtkHBox" id="hbox28">
+                            <property name="visible">True</property>
+                            <property name="spacing">2</property>
+                            <child>
+                              <object class="GtkImage" id="image43">
+                                <property name="visible">True</property>
+                                <property name="stock">gtk-execute</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="label70">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes">_Generate</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="pack_type">end</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</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>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/src/Dialogs/ui/ButtonPropertiesDialog.ui b/src/Dialogs/ui/ButtonPropertiesDialog.ui
new file mode 100644
index 0000000..f3ac165
--- /dev/null
+++ b/src/Dialogs/ui/ButtonPropertiesDialog.ui
@@ -0,0 +1,161 @@
+<?xml version="1.0"?>
+<interface>
+  <object class="GtkDialog" id="buttonproperties">
+    <property name="width_request">500</property>
+    <property name="height_request">400</property>
+    <property name="visible">True</property>
+    <property name="title" translatable="yes">Button Properties</property>
+    <property name="type_hint">dialog</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox6">
+        <property name="visible">True</property>
+        <child>
+          <object class="GtkVBox" id="vbox25">
+            <property name="visible">True</property>
+            <child>
+              <object class="GtkVBox" id="vbox26">
+                <property name="visible">True</property>
+                <child>
+                  <object class="GtkLabel" id="label31">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="yalign">0</property>
+                    <property name="xpad">5</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Show button as&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkRadioButton" id="image_radio">
+                    <property name="label" translatable="yes">Thumbnail image of the item</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="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkHBox" id="thumbanails_vbox">
+                    <property name="visible">True</property>
+                    <child>
+                      <object class="GtkScrolledWindow" id="thumbanails_scrolled">
+                        <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="GtkIconView" id="thumbnails_iconview">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="padding">15</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkRadioButton" id="text_radio">
+                    <property name="label" translatable="yes">Text element</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">image_radio</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">3</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkEntry" id="element_entry">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="invisible_char">&#x25CF;</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">4</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">2</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="cancelbutton4">
+                <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="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="receives_default">False</property>
+                <property name="use_stock">True</property>
+                <signal handler="OnOK" name="clicked"/>
+              </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">cancelbutton4</action-widget>
+      <action-widget response="-5">ok_button</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/src/Dialogs/ui/CheckDependenciesDialog.ui b/src/Dialogs/ui/CheckDependenciesDialog.ui
new file mode 100644
index 0000000..10d1a49
--- /dev/null
+++ b/src/Dialogs/ui/CheckDependenciesDialog.ui
@@ -0,0 +1,100 @@
+<?xml version="1.0"?>
+<interface>
+  <!-- interface-requires gtk+ 2.12 -->
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkDialog" id="dependencies">
+    <property name="visible">True</property>
+    <property name="title" translatable="yes">Check Mistelix's dependencies requirements</property>
+    <property name="resizable">False</property>
+    <property name="window_position">center-always</property>
+    <property name="type_hint">dialog</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox11">
+        <property name="visible">True</property>
+        <property name="orientation">vertical</property>
+        <child>
+          <object class="GtkVBox" id="dependencies_vbox">
+            <property name="visible">True</property>
+            <child>
+              <object class="GtkTextView" id="textview_intro">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="pixels_above_lines">12</property>
+                <property name="pixels_below_lines">12</property>
+                <property name="editable">False</property>
+                <property name="wrap_mode">word</property>
+                <property name="left_margin">2</property>
+                <property name="right_margin">2</property>
+                <property name="cursor_visible">False</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkTreeView" id="treeview">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkTextView" id="capabilitiesview">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="pixels_above_lines">12</property>
+                <property name="pixels_below_lines">12</property>
+                <property name="editable">False</property>
+                <property name="wrap_mode">word</property>
+                <property name="left_margin">2</property>
+                <property name="right_margin">2</property>
+                <property name="cursor_visible">False</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area11">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="closebutton1">
+                <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>
+          </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">closebutton1</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/src/Dialogs/ui/NewProjectDialog.ui b/src/Dialogs/ui/NewProjectDialog.ui
new file mode 100644
index 0000000..ed33449
--- /dev/null
+++ b/src/Dialogs/ui/NewProjectDialog.ui
@@ -0,0 +1,373 @@
+<?xml version="1.0"?>
+<interface>
+  <!-- interface-requires gtk+ 2.12 -->
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkDialog" id="newproject">
+    <property name="visible">True</property>
+    <property name="title" translatable="yes">New Mistelix project</property>
+    <property name="type_hint">dialog</property>
+    <property name="has_separator">False</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox2">
+        <property name="visible">True</property>
+        <child>
+          <object class="GtkVBox" id="vbox9">
+            <property name="visible">True</property>
+            <property name="orientation">vertical</property>
+            <child>
+              <object class="GtkHBox" id="hbox2">
+                <property name="visible">True</property>
+                <child>
+                  <object class="GtkVBox" id="vbox13">
+                    <property name="visible">True</property>
+                    <child>
+                      <object class="GtkLabel" id="label5">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="yalign">0</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Project Name&lt;/b&gt;</property>
+                        <property name="use_markup">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="name">
+                        <property name="width_request">400</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="invisible_char">&#x25CF;</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">0</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHBox" id="hbox3">
+                <property name="visible">True</property>
+                <property name="orientation">vertical</property>
+                <child>
+                  <object class="GtkVBox" id="vbox10">
+                    <property name="visible">True</property>
+                    <child>
+                      <object class="GtkLabel" id="label3">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="yalign">0</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Output Directory&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHBox" id="hbox4">
+                        <property name="visible">True</property>
+                        <child>
+                          <object class="GtkEntry" id="output_dir">
+                            <property name="width_request">400</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="invisible_char">&#x25CF;</property>
+                          </object>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkButton" id="button1">
+                            <property name="label" translatable="yes">Browse...</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="use_underline">True</property>
+                            <signal name="clicked" handler="OnBrowse"/>
+                          </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="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkHButtonBox" id="hbuttonbox3">
+                    <property name="visible">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">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="project_type_vbox">
+                <property name="visible">True</property>
+                <child>
+                  <object class="GtkLabel" id="label30">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="yalign">0</property>
+                    <property name="ypad">5</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Project type&lt;/b&gt;</property>
+                    <property name="use_markup">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="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="theora_project">
+                <property name="visible">True</property>
+                <property name="orientation">vertical</property>
+                <child>
+                  <object class="GtkRadioButton" id="slideshows_radio">
+                    <property name="label" translatable="yes">Slideshows project</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="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkHBox" id="theora_resolution_box">
+                    <property name="visible">True</property>
+                    <child>
+                      <object class="GtkLabel" id="resolution_label">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="yalign">0</property>
+                        <property name="xpad">20</property>
+                        <property name="ypad">5</property>
+                        <property name="label" translatable="yes">Resolution:</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBox" id="resolution_combobox">
+                        <property name="visible">True</property>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">3</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="dvd_box">
+                <property name="visible">True</property>
+                <property name="orientation">vertical</property>
+                <child>
+                  <object class="GtkRadioButton" id="dvd_radio">
+                    <property name="label" translatable="yes">DVD-Video project</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="focus_on_click">False</property>
+                    <property name="draw_indicator">True</property>
+                    <property name="group">slideshows_radio</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkHBox" id="hbox21">
+                    <property name="visible">True</property>
+                    <property name="homogeneous">True</property>
+                    <child>
+                      <object class="GtkVBox" id="videoformat_vbox">
+                        <property name="visible">True</property>
+                        <child>
+                          <object class="GtkLabel" id="vformat_label">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="yalign">0</property>
+                            <property name="xpad">20</property>
+                            <property name="ypad">3</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Video Format&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkVBox" id="aspectratio_vbox">
+                        <property name="visible">True</property>
+                        <child>
+                          <object class="GtkLabel" id="aratio_label">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="yalign">0</property>
+                            <property name="ypad">3</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Aspect Ratio&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">4</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHButtonBox" id="hbuttonbox7">
+                <property name="visible">True</property>
+                <property name="spacing">6</property>
+                <property name="layout_style">end</property>
+                <child>
+                  <object class="GtkButton" id="button4">
+                    <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>
+                    <signal name="clicked" handler="OnCancel"/>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkButton" id="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="receives_default">False</property>
+                    <property name="use_stock">True</property>
+                    <signal name="clicked" handler="OnOK"/>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="padding">3</property>
+                <property name="position">5</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="hbuttonbox6">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/src/Dialogs/ui/PreferencesDialog.ui b/src/Dialogs/ui/PreferencesDialog.ui
new file mode 100644
index 0000000..f813073
--- /dev/null
+++ b/src/Dialogs/ui/PreferencesDialog.ui
@@ -0,0 +1,402 @@
+<?xml version="1.0"?>
+<interface>
+  <object class="GtkAdjustment" id="adjustment">
+    <property name="upper">100</property>
+    <property name="lower">0</property>
+    <property name="page_increment">0</property>
+    <property name="step_increment">1</property>
+    <property name="page_size">0</property>
+    <property name="value">1</property>
+  </object>
+
+  <object class="GtkDialog" id="preferences">
+    <property name="width_request">600</property>
+    <property name="visible">True</property>
+    <property name="title" translatable="yes">Preferences</property>
+    <property name="type_hint">dialog</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox5">
+        <property name="visible">True</property>
+        <child>
+          <object class="GtkVBox" id="vbox20">
+            <property name="visible">True</property>
+            <child>
+              <object class="GtkVBox" id="vbox21">
+                <property name="visible">True</property>
+                <child>
+                  <object class="GtkLabel" id="label13">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">&lt;b&gt;General&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkHBox" id="hbox7">
+                    <property name="visible">True</property>
+                    <child>
+                      <object class="GtkLabel" id="label15">
+                        <property name="visible">True</property>
+                        <property name="xpad">5</property>
+                        <property name="label" translatable="yes">Thumbnails size</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBox" id="thumbnail_combo">
+                        <property name="visible">True</property>
+                        <property name="focus_on_click">False</property>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="vbox22">
+                <property name="visible">True</property>
+                <child>
+                  <object class="GtkLabel" id="label18">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Files and Directories&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkTable" id="table3">
+                    <property name="visible">True</property>
+                    <property name="n_rows">4</property>
+                    <property name="n_columns">2</property>
+                    <child>
+                      <object class="GtkLabel" id="label19">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="xpad">5</property>
+                        <property name="label" translatable="yes">Default projects directory</property>
+                      </object>
+                      <packing>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="y_options"/>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label24">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="xpad">5</property>
+                        <property name="label" translatable="yes">Default videos directory</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"/>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label25">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="xpad">5</property>
+                        <property name="label" translatable="yes">Default images directory</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"/>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label26">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="xpad">5</property>
+                        <property name="label" translatable="yes">Default audio directory</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">3</property>
+                        <property name="bottom_attach">4</property>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="y_options"/>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHBox" id="projectsdir_hbox">
+                        <property name="visible">True</property>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="y_options">GTK_FILL</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHBox" id="videosdir_hbox">
+                        <property name="visible">True</property>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </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="GtkHBox" id="imagesdir_hbox">
+                        <property name="visible">True</property>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </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="x_options">GTK_FILL</property>
+                        <property name="y_options">GTK_FILL</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHBox" id="audiodir_hbox">
+                        <property name="visible">True</property>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">3</property>
+                        <property name="bottom_attach">4</property>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="y_options">GTK_FILL</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHBox" id="hbox12">
+                <property name="visible">True</property>
+                <child>
+                  <object class="GtkVBox" id="vbox23">
+                    <property name="visible">True</property>
+                    <child>
+                      <object class="GtkLabel" id="label17">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Defaults for Slideshows Transitions&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkTable" id="table4">
+                        <property name="visible">True</property>
+                        <property name="n_rows">3</property>
+                        <property name="n_columns">2</property>
+                        <child>
+                          <object class="GtkLabel" id="label27">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="xpad">5</property>
+                            <property name="label" translatable="yes">Default transition effect</property>
+                          </object>
+                          <packing>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"/>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label28">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="xpad">5</property>
+                            <property name="label" translatable="yes">Default time (seconds)</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"/>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label29">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="xpad">5</property>
+                            <property name="label" translatable="yes">Default text position</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"/>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkComboBox" id="transition_combo">
+                            <property name="visible">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="y_options">GTK_FILL</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkSpinButton" id="duration_spin">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="adjustment">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="y_options"/>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkComboBox" id="textposition_combo">
+                            <property name="visible">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="x_options">GTK_FILL</property>
+                            <property name="y_options">GTK_FILL</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">2</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="cancelbutton3">
+                <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="okbutton3">
+                <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="receives_default">False</property>
+                <property name="use_stock">True</property>
+                <signal handler="OnOK" name="clicked"/>
+              </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">cancelbutton3</action-widget>
+      <action-widget response="-5">okbutton3</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/src/Dialogs/ui/ProjectPropertiesDialog.ui b/src/Dialogs/ui/ProjectPropertiesDialog.ui
new file mode 100644
index 0000000..c42429b
--- /dev/null
+++ b/src/Dialogs/ui/ProjectPropertiesDialog.ui
@@ -0,0 +1,717 @@
+<?xml version="1.0"?>
+<interface>
+  <object class="GtkDialog" id="projectproperties">
+    <property name="visible">True</property>
+    <property name="title" translatable="yes">Project Properties</property>
+    <property name="type_hint">dialog</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox10">
+        <property name="visible">True</property>
+        <child>
+          <object class="GtkNotebook" id="notebook">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <child>
+              <object class="GtkVBox" id="general_vbox">
+                <property name="visible">True</property>
+                <child>
+                  <object class="GtkHBox" id="vbox25">
+                    <property name="visible">True</property>
+                    <child>
+                      <object class="GtkVBox" id="vbox41">
+                        <property name="visible">True</property>
+                        <child>
+                          <object class="GtkLabel" id="label57">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="yalign">0</property>
+                            <property name="xpad">12</property>
+                            <property name="ypad">6</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Project Name&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkHBox" id="name_hbox">
+                            <property name="visible">True</property>
+                            <child>
+                              <object class="GtkEntry" id="name">
+                                <property name="width_request">400</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="invisible_char">&#x25CF;</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">0</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="GtkHBox" id="hbox26">
+                    <property name="visible">True</property>
+                    <child>
+                      <object class="GtkVBox" id="vbox42">
+                        <property name="visible">True</property>
+                        <child>
+                          <object class="GtkLabel" id="label58">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="yalign">0</property>
+                            <property name="xpad">12</property>
+                            <property name="ypad">6</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Output Directory&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkHBox" id="hbox27">
+                            <property name="visible">True</property>
+                            <child>
+                              <object class="GtkHBox" id="output_dir_hbox">
+                                <property name="visible">True</property>
+                                <child>
+                                  <object class="GtkEntry" id="output_dir">
+                                    <property name="width_request">400</property>
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="invisible_char">&#x25CF;</property>
+                                  </object>
+                                  <packing>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkButton" id="button3">
+                                <property name="label" translatable="yes">Browse...</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="use_underline">True</property>
+                                <signal handler="OnBrowse" name="clicked"/>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="padding">12</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHButtonBox" id="hbuttonbox5">
+                        <property name="visible">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="fill">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVBox" id="vbox43">
+                    <property name="visible">True</property>
+                    <child>
+                      <object class="GtkLabel" id="label59">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="yalign">0</property>
+                        <property name="xpad">12</property>
+                        <property name="ypad">6</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Slideshow Transitions Properties&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkTable" id="table7">
+                        <property name="visible">True</property>
+                        <property name="n_rows">3</property>
+                        <property name="n_columns">2</property>
+                        <child>
+                          <object class="GtkLabel" id="label60">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="xpad">12</property>
+                            <property name="label" translatable="yes">Font</property>
+                          </object>
+                          <packing>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"/>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label61">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="xpad">12</property>
+                            <property name="label" translatable="yes">Foreground color</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"/>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label62">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="xpad">12</property>
+                            <property name="label" translatable="yes">Background color</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"/>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkFontButton" id="fontslides_button">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="y_options"/>
+                            <property name="x_padding">12</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkColorButton" id="backslides_button">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</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"/>
+                            <property name="x_padding">12</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkColorButton" id="foreslides_button">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</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 name="x_padding">12</property>
+                            <property name="y_padding">6</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="padding">6</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </object>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="label54">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">General</property>
+              </object>
+              <packing>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="dvd_vbox">
+                <property name="visible">True</property>
+                <child>
+                  <object class="GtkVBox" id="vbox45">
+                    <property name="visible">True</property>
+                    <child>
+                      <object class="GtkLabel" id="label63">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="yalign">0</property>
+                        <property name="xpad">12</property>
+                        <property name="ypad">12</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Video Format&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkVBox" id="vbox46">
+                        <property name="visible">True</property>
+                        <child>
+                          <object class="GtkHBox" id="pal_hbox">
+                            <property name="visible">True</property>
+                            <child>
+                              <object class="GtkRadioButton" id="pal_radio">
+                                <property name="label" translatable="yes">PAL (Europe)</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="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkHBox" id="ntsc_hbox">
+                            <property name="visible">True</property>
+                            <child>
+                              <object class="GtkRadioButton" id="ntsc_radio">
+                                <property name="label" translatable="yes">NTSC</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">pal_radio</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVBox" id="vbox47">
+                    <property name="visible">True</property>
+                    <child>
+                      <object class="GtkLabel" id="label64">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="yalign">0</property>
+                        <property name="xpad">12</property>
+                        <property name="ypad">6</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Aspect Ratio&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHBox" id="fourbythree_hbox">
+                        <property name="visible">True</property>
+                        <child>
+                          <object class="GtkRadioButton" id="fourbythree_radio">
+                            <property name="label" translatable="yes">4:3 (TV)</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="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkHBox" id="sixteenbynine_hbox">
+                        <property name="visible">True</property>
+                        <child>
+                          <object class="GtkRadioButton" id="sixteenbynine_radio">
+                            <property name="label" translatable="yes">16:9 (Widescreen)</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">fourbythree_radio</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVBox" id="vbox48">
+                    <property name="visible">True</property>
+                    <child>
+                      <object class="GtkLabel" id="label65">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="yalign">0</property>
+                        <property name="xpad">12</property>
+                        <property name="ypad">6</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Menu Buttons Properties&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="padding">12</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkTable" id="table8">
+                        <property name="visible">True</property>
+                        <property name="n_rows">4</property>
+                        <property name="n_columns">2</property>
+                        <child>
+                          <object class="GtkLabel" id="label66">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="xpad">5</property>
+                            <property name="label" translatable="yes">Font</property>
+                          </object>
+                          <packing>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"/>
+                            <property name="x_padding">12</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label67">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="xpad">5</property>
+                            <property name="label" translatable="yes">Foreground color</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 name="x_padding">12</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label68">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="xpad">5</property>
+                            <property name="label" translatable="yes">Background color</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 name="x_padding">12</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="label69">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="xpad">5</property>
+                            <property name="label" translatable="yes">Image thumbnail size</property>
+                          </object>
+                          <packing>
+                            <property name="top_attach">3</property>
+                            <property name="bottom_attach">4</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options"/>
+                            <property name="x_padding">12</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkColorButton" id="forebuttons_button">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</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 name="x_padding">12</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkColorButton" id="backbuttons_button">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</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"/>
+                            <property name="x_padding">12</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkComboBox" id="thumbnail_combo">
+                            <property name="visible">True</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="top_attach">3</property>
+                            <property name="bottom_attach">4</property>
+                            <property name="x_options">GTK_FILL</property>
+                            <property name="y_options">GTK_FILL</property>
+                            <property name="x_padding">12</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkFontButton" id="fontbuttons_button">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="right_attach">2</property>
+                            <property name="y_options"/>
+                            <property name="x_padding">12</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="padding">5</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </object>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="label55">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">DVD</property>
+              </object>
+              <packing>
+                <property name="position">1</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="theora_vbox">
+                <property name="visible">True</property>
+                <child>
+                  <object class="GtkHBox" id="resolution_hbox">
+                    <property name="visible">True</property>
+                    <child>
+                      <object class="GtkLabel" id="resolution_label">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="yalign">0</property>
+                        <property name="ypad">6</property>
+                        <property name="label" translatable="yes">Resolution:</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkComboBox" id="resolution_combobox">
+                        <property name="visible">True</property>
+                      </object>
+                      <packing>
+                        <property name="padding">12</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="padding">12</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+              </object>
+              <packing>
+                <property name="position">2</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child type="tab">
+              <object class="GtkLabel" id="label56">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">Slideshows</property>
+              </object>
+              <packing>
+                <property name="position">2</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area10">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="cancelbutton7">
+                <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="okbutton7">
+                <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="receives_default">False</property>
+                <property name="use_stock">True</property>
+                <signal handler="OnOK" name="clicked"/>
+              </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">cancelbutton7</action-widget>
+      <action-widget response="-5">okbutton7</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/src/Dialogs/ui/ThemeSelectionDialog.ui b/src/Dialogs/ui/ThemeSelectionDialog.ui
new file mode 100644
index 0000000..0bddecc
--- /dev/null
+++ b/src/Dialogs/ui/ThemeSelectionDialog.ui
@@ -0,0 +1,386 @@
+<?xml version="1.0"?>
+<interface>
+  <object class="GtkDialog" id="themeselection">
+    <property name="width_request">700</property>
+    <property name="height_request">500</property>
+    <property name="visible">True</property>
+    <property name="title" translatable="yes">Select DVD Menu Theme</property>
+    <property name="type_hint">dialog</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox8">
+        <property name="visible">True</property>
+        <child>
+          <object class="GtkVBox" id="vbox31">
+            <property name="visible">True</property>
+            <child>
+              <object class="GtkTextView" id="textview_intro">
+                <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="cursor_visible">False</property>
+                <property name="buffer">textbuffer2</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkHPaned" id="hpaned">
+                <property name="visible">True</property>
+                <property name="can_focus">True</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>
+                    <child>
+                      <object class="GtkTreeView" id="themes_tree">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="resize">False</property>
+                    <property name="shrink">True</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkVBox" id="vbox33">
+                    <property name="visible">True</property>
+                    <child>
+                      <object class="GtkVBox" id="details_box">
+                        <property name="visible">True</property>
+                        <child>
+                          <object class="GtkLabel" id="label43">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="yalign">0</property>
+                            <property name="ypad">5</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Theme details&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkTable" id="table5">
+                            <property name="visible">True</property>
+                            <property name="n_rows">2</property>
+                            <property name="n_columns">2</property>
+                            <child>
+                              <object class="GtkLabel" id="label44">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="yalign">0</property>
+                                <property name="xpad">5</property>
+                                <property name="ypad">5</property>
+                                <property name="label" translatable="yes">Name:</property>
+                              </object>
+                              <packing>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"/>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="name_label">
+                                <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="x_options">GTK_FILL</property>
+                                <property name="y_options"/>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label46">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="yalign">0</property>
+                                <property name="xpad">5</property>
+                                <property name="ypad">5</property>
+                                <property name="label" translatable="yes">Author:</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"/>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="author_label">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="yalign">0</property>
+                                <property name="xpad">5</property>
+                                <property name="ypad">5</property>
+                                <property name="single_line_mode">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"/>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkVBox" id="preview_box">
+                        <property name="visible">True</property>
+                        <child>
+                          <object class="GtkLabel" id="label48">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="yalign">0</property>
+                            <property name="ypad">5</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Background&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkVBox" id="backpreview_box">
+                            <property name="visible">True</property>
+                            <child>
+                              <placeholder/>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkHBox" id="hbox19">
+                            <property name="visible">True</property>
+                            <child>
+                              <object class="GtkLabel" id="label49">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="yalign">0</property>
+                                <property name="xpad">5</property>
+                                <property name="ypad">5</property>
+                                <property name="label" translatable="yes">Custom background:</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">0</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkVBox" id="vbox38">
+                                <property name="visible">True</property>
+                                <child>
+                                  <object class="GtkHBox" id="file_hbox">
+                                    <property name="visible">True</property>
+                                    <child>
+                                      <placeholder/>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkVBox" id="buttons_box">
+                        <property name="visible">True</property>
+                        <child>
+                          <object class="GtkLabel" id="label50">
+                            <property name="visible">True</property>
+                            <property name="xalign">0</property>
+                            <property name="yalign">0</property>
+                            <property name="ypad">5</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Button highlighting&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkTable" id="table6">
+                            <property name="visible">True</property>
+                            <property name="n_rows">2</property>
+                            <property name="n_columns">2</property>
+                            <child>
+                              <object class="GtkLabel" id="label51">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="yalign">0</property>
+                                <property name="xpad">5</property>
+                                <property name="ypad">5</property>
+                                <property name="label" translatable="yes">Highlight button</property>
+                              </object>
+                              <packing>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"/>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkLabel" id="label52">
+                                <property name="visible">True</property>
+                                <property name="xalign">0</property>
+                                <property name="yalign">0</property>
+                                <property name="xpad">5</property>
+                                <property name="ypad">5</property>
+                                <property name="label" translatable="yes">Select button</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"/>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkHBox" id="selectbutton_box">
+                                <property name="visible">True</property>
+                                <child>
+                                  <placeholder/>
+                                </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>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkHBox" id="highlightbutton_box">
+                                <property name="visible">True</property>
+                                <child>
+                                  <placeholder/>
+                                </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>
+                              </packing>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="resize">True</property>
+                    <property name="shrink">True</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <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_area8">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="cancelbutton5">
+                <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="okbutton5">
+                <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="receives_default">False</property>
+                <property name="use_stock">True</property>
+                <signal handler="OnOK" name="clicked"/>
+              </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">cancelbutton5</action-widget>
+      <action-widget response="-5">okbutton5</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/src/Makefile.am b/src/Makefile.am
index 0b28c40..f009ef1 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -25,7 +25,7 @@ MISTELIX_CSDISTFILES =				\
 	$(srcdir)/Widgets/PixbufImageSurface.cs	\
 	$(srcdir)/Widgets/SlideShowView.cs	\
 	$(srcdir)/Widgets/ExtendedMenu.cs	\
-	$(srcdir)/Dialogs/GtkDialog.cs	\
+	$(srcdir)/Dialogs/BuilderDialog.cs	\
 	$(srcdir)/Dialogs/AddSlideDialog.cs	\
 	$(srcdir)/Dialogs/AddVideoDialog.cs	\
 	$(srcdir)/Dialogs/NewProjectDialog.cs	\
@@ -83,20 +83,41 @@ MISTELIX_CSDISTFILES =				\
 	$(srcdir)/Widgets/DataMenuItem.cs \
 	$(srcdir)/DataModel/Task.cs \
 	$(srcdir)/Core/TaskDispatcher.cs \
-	$(srcdir)/DataModel/ThumbnailCollection.cs
+	$(srcdir)/DataModel/ThumbnailCollection.cs	\
+	$(srcdir)/Builder/Builder.cs			\
+	$(srcdir)/Builder/BuilderConnectFunc.cs 	\
+	$(srcdir)/Builder/GtkBeansSharp.BuilderConnectFuncNative.cs \
+	$(srcdir)/Builder/ObjectManager.cs
+
 
 ASSEMBLIES = \
 	 $(MISTELIX_LIBS)    		\
 	-r:Mono.Cairo.dll		\
 	-r:Mono.Posix
 
-RESOURCES =										\
--resource:$(srcdir)/mistelix.glade  \
--resource:$(top_srcdir)/data/mistelix.svg  \
--resource:$(top_srcdir)/data/mistelix.png  \
--resource:$(top_srcdir)/data/button-slideshow.svg \
--resource:$(top_srcdir)/data/button-dvd.svg  \
--resource:$(srcdir)/mistelix.addin.xml
+RESOURCES = \
+	$(srcdir)/mistelix.ui	\
+	$(srcdir)/Dialogs/ui/AddVideoDialog.ui \
+	$(srcdir)/Dialogs/ui/AudioSelectionDialog.ui \
+	$(srcdir)/Dialogs/ui/BuildProjectDialog.ui \
+	$(srcdir)/Dialogs/ui/ButtonPropertiesDialog.ui \
+	$(srcdir)/Dialogs/ui/CheckDependenciesDialog.ui \
+	$(srcdir)/Dialogs/ui/NewProjectDialog.ui \
+	$(srcdir)/Dialogs/ui/PreferencesDialog.ui \
+	$(srcdir)/Dialogs/ui/ProjectPropertiesDialog.ui \
+	$(srcdir)/Dialogs/ui/ThemeSelectionDialog.ui	\
+	$(srcdir)/Dialogs/ui/AddSlideDialog.ui \
+	$(srcdir)/mistelix.addin.xml
+
+RES = 	\
+	$(top_srcdir)/data/mistelix.svg  \
+	$(top_srcdir)/data/mistelix.png  \
+	$(top_srcdir)/data/button-slideshow.svg \
+	$(top_srcdir)/data/button-dvd.svg \
+	$(RESOURCES)
+
+
+RES_CSFLAGS = $(foreach res, $(RES), -resource:$(res))
 
 mistelixdir = $(libdir)/mistelix
 mistelix_SCRIPTS = mistelix.exe  
@@ -106,15 +127,14 @@ bin_SCRIPTS = mistelix
 MISTELIX_CSFILES = $(MISTELIX_CSDISTFILES)	\
 	Defines.cs
 
-mistelix.exe: $(MISTELIX_CSFILES) mistelix.glade
-	$(CSC) -target:winexe -out:$@ $(EXTRAFLAGS) $(MISTELIX_CSFILES) $(ASSEMBLIES) $(RESOURCES)
+mistelix.exe: $(MISTELIX_CSFILES) $(RESOURCES)
+	$(CSC) -target:winexe -out:$@ $(EXTRAFLAGS) $(MISTELIX_CSFILES) $(ASSEMBLIES) $(RES_CSFLAGS)
 
 all: mistelix.exe
 
 EXTRA_DIST =					\
-	mistelix.glade \
-	$(srcdir)/mistelix.addin.xml	\
-	$(srcdir)/mono-addins-strings.xml \
+	$(srcdir)/mono-addins-strings.xml 	\
+	$(RESOURCES)				\
 	$(MISTELIX_CSDISTFILES)			
 
 
diff --git a/src/Widgets/AuthoringPaneView.cs b/src/Widgets/AuthoringPaneView.cs
index 2b47b8c..31098b5 100644
--- a/src/Widgets/AuthoringPaneView.cs
+++ b/src/Widgets/AuthoringPaneView.cs
@@ -317,7 +317,7 @@ namespace Mistelix.Widgets
 		void ShowButtonProperties (int button)
 		{
 			ButtonPropertiesDialog dialog = new ButtonPropertiesDialog (project, button);
-			if (dialog.Run () == ResponseType.Ok) {
+			if (dialog.RunModal () == ResponseType.Ok) {
 				// Can change the button ShowAs
 				QueueDraw (); 
 			}
diff --git a/src/Widgets/FileView.cs b/src/Widgets/FileView.cs
index aa22ceb..68e11b4 100644
--- a/src/Widgets/FileView.cs
+++ b/src/Widgets/FileView.cs
@@ -106,6 +106,7 @@ namespace Mistelix.Widgets
 
 		public override void Dispose ()
 		{
+			Console.WriteLine ("FileView.Dispose");
 			Dispose (true);
 			System.GC.SuppressFinalize (this);
 		}
@@ -120,6 +121,7 @@ namespace Mistelix.Widgets
 				thumbnailing.Dispose ();
 			}
 			def_image.Dispose ();
+			store.Dispose ();
 		}
 
 		public void LoadElements ()
diff --git a/src/Widgets/ProjectElementView.cs b/src/Widgets/ProjectElementView.cs
index 10327b0..6883d0a 100644
--- a/src/Widgets/ProjectElementView.cs
+++ b/src/Widgets/ProjectElementView.cs
@@ -102,6 +102,7 @@ namespace Mistelix.Widgets
 			Logger.Debug ("ProjectElementView.Disposing");
 			ClearElements ();
 			def_image.Dispose ();
+			store.Dispose ();
 
 			if (thumbnailing != null)
 				thumbnailing.Dispose ();
diff --git a/src/Widgets/SlideShowImageView.cs b/src/Widgets/SlideShowImageView.cs
index 4ffa1e6..8cdb0b0 100644
--- a/src/Widgets/SlideShowImageView.cs
+++ b/src/Widgets/SlideShowImageView.cs
@@ -149,6 +149,7 @@ namespace Mistelix.Widgets
 			thumbnailing.Dispose ();
 
 			((IDisposable)def_image).Dispose ();
+			store.Dispose ();
 		}
 
 		public void LoadSlideShow (SlideShow slideshow)
@@ -654,6 +655,8 @@ namespace Mistelix.Widgets
 	
 				next_id++;
 			}
+			
+			store.Dispose ();
 			Model = store = new_model;
 
 			if (thumbnailing.IsBusy == false)
diff --git a/src/Widgets/SlideShowView.cs b/src/Widgets/SlideShowView.cs
index 1fe6a60..5485ae2 100644
--- a/src/Widgets/SlideShowView.cs
+++ b/src/Widgets/SlideShowView.cs
@@ -71,7 +71,7 @@ namespace Mistelix.Widgets
 				slide_show_view.Destroy ();
 				args.RetVal = true;
 				this.Destroy ();
-				AddSlideDialogRunner.Dialog.Dialog.Visible = true;
+				AddSlideDialogRunner.Dialog.Visible = true;
 				AddSlideDialogRunner.Run ();
 				AddSlideDialogRunner.ProcessResponse ();
 				break;
diff --git a/src/Widgets/Utils.cs b/src/Widgets/Utils.cs
index ab05fbd..8c1cebc 100644
--- a/src/Widgets/Utils.cs
+++ b/src/Widgets/Utils.cs
@@ -94,5 +94,11 @@ namespace Mistelix.Widgets
 			((IDisposable)cr).Dispose ();
 			return image;
 		}
+
+		static public void ComboBoxCellFunc (CellLayout cell_layout, CellRenderer cell, TreeModel tree_model, TreeIter iter)
+		{
+			string name = (string)tree_model.GetValue (iter, 0);
+			(cell as CellRendererText).Text = name;
+		}
 	}
 }
diff --git a/src/mistelix.cs b/src/mistelix.cs
index d4d2df1..a3536f6 100644
--- a/src/mistelix.cs
+++ b/src/mistelix.cs
@@ -1,5 +1,5 @@
 //
-// Copyright (C) 2008-2009 Jordi Mas i Hernandez, jmas softcatala org
+// Copyright (C) 2008-2010 Jordi Mas i Hernandez, jmas softcatala org
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -46,25 +46,25 @@ namespace Mistelix
 	//
 	class Mistelix : Program
 	{
-		[Glade.Widget ("mistelix")] Gtk.Window app_window;
-		[Glade.Widget ("vertical_paned")] Gtk.HPaned vpaned;
-		[Glade.Widget ("vpaned_horizontal")] Gtk.VPaned hpaned;
-		[Glade.Widget ("scrolledwindow_elements")] Gtk.ScrolledWindow scrolledwin_elements;
-		[Glade.Widget] Gtk.VBox left_vbox;
-
-		[Glade.Widget] Gtk.MenuItem save_project;
-		[Glade.Widget] Gtk.MenuItem save_as;
-		[Glade.Widget] Gtk.MenuItem build;
-		[Glade.Widget] Gtk.MenuItem theme_browser;
-		[Glade.Widget] Gtk.MenuItem project_properties;
-		[Glade.Widget] Gtk.Button videos_button;
-		[Glade.Widget] Gtk.Button slideshows_button;
-		[Glade.Widget] Gtk.CheckMenuItem safearea_menuitem;
-		[Glade.Widget] Gtk.MenuItem add_slideshow;
-		[Glade.Widget] Gtk.MenuItem add_videos;
-		[Glade.Widget] Gtk.VBox rightpaned_vbox;
-		[Glade.Widget] Gtk.VBox buttons_vbox;
-		[Glade.Widget] Gtk.MenuItem recent_menuitem;
+		[GtkBeans.Builder.Object ("mistelix")] Gtk.Window app_window;
+		[GtkBeans.Builder.Object ("vertical_paned")] Gtk.HPaned vpaned;
+		[GtkBeans.Builder.Object ("vpaned_horizontal")] Gtk.VPaned hpaned;
+		[GtkBeans.Builder.Object ("scrolledwindow_elements")] Gtk.ScrolledWindow scrolledwin_elements;
+		[GtkBeans.Builder.Object] Gtk.VBox left_vbox;
+
+		[GtkBeans.Builder.Object] Gtk.Action save_project;
+		[GtkBeans.Builder.Object] Gtk.Action save_as;
+		[GtkBeans.Builder.Object] Gtk.Action build;
+		[GtkBeans.Builder.Object] Gtk.Action theme_browser;
+		[GtkBeans.Builder.Object] Gtk.Action project_properties;
+		[GtkBeans.Builder.Object] Gtk.Button videos_button;
+		[GtkBeans.Builder.Object] Gtk.Button slideshows_button;
+		[GtkBeans.Builder.Object] Gtk.ToggleAction safearea_menuitem;
+		[GtkBeans.Builder.Object] Gtk.Action add_slideshow;
+		[GtkBeans.Builder.Object] Gtk.Action add_videos;
+		[GtkBeans.Builder.Object] Gtk.VBox rightpaned_vbox;
+		[GtkBeans.Builder.Object] Gtk.VBox buttons_vbox;
+		[GtkBeans.Builder.Object] Gtk.Action recent_menuitem;
 		ExtendedMenu recent_submenu;
 
 		AuthoringPaneView authoring_view;
@@ -103,8 +103,8 @@ namespace Mistelix
 
 			Catalog.Init ("mistelix", Defines.GNOME_LOCALE_DIR);
 
-			Glade.XML gXML = new Glade.XML (null, "mistelix.glade", "mistelix", null);
-			gXML.Autoconnect (this);
+			GtkBeans.Builder builder = new GtkBeans.Builder ("mistelix.ui");
+			builder.Autoconnect (this);
 
 			foreach (TypeExtensionNode node in AddinManager.GetExtensionNodes ("/Mistelix/SlideTransitions"))
 				Logger.Info ("Extension:" + node.CreateInstance ());
@@ -122,8 +122,8 @@ namespace Mistelix
 			if (preferences.GetBoolValue (Preferences.SafeAreaKey) == true)
 				safearea_menuitem.Active = true;
 
-			recent_submenu = new ExtendedMenu ();
-			recent_menuitem.Submenu = recent_submenu;
+			//recent_submenu = new ExtendedMenu ();
+			//recent_menuitem.Submenu = recent_submenu;
 
 			app_window.IconName = "mistelix";
 			hpaned.Position = 30; // H (right), controls position of top "Project elements" button bar
@@ -213,7 +213,7 @@ namespace Mistelix
 		{
 			AddVideoDialog dialog = new AddVideoDialog ();
 
-			if (dialog.Run () == ResponseType.Ok) {
+			if (dialog.RunModal () == ResponseType.Ok) {
 				foreach (VideoProjectElement video in dialog.Videos) {
 					project.AddElement (video);
 					element_view.AddElement (video);
@@ -240,7 +240,7 @@ namespace Mistelix
 		void OnPreferences (object sender, EventArgs args)
 		{
 			PreferencesDialog dialog = new PreferencesDialog ();
-			if (dialog.Run () != ResponseType.Ok)
+			if (dialog.RunModal () != ResponseType.Ok)
 				return;
 
 			if (dialog.NeedsRepaint) {
@@ -366,7 +366,7 @@ namespace Mistelix
 			}
 
 			BuildProjectDialog build_dialog = new BuildProjectDialog (project);
-			build_dialog.Run ();
+			build_dialog.RunModal ();
 		}
 
 		void OnNewProject (object sender, EventArgs args)
@@ -377,7 +377,7 @@ namespace Mistelix
 		void NewProject (ProjectType type)
 		{	
 			NewProjectDialog dialog = new NewProjectDialog (type);
-			if (dialog.Run () == ResponseType.Ok) {
+			if (dialog.RunModal () == ResponseType.Ok) {
 				project = authoring_view.Project = element_view.Project = dialog.NewProject;
 				SensitiveToProjectContext ();
 				element_view.LoadElements ();
@@ -399,7 +399,7 @@ namespace Mistelix
 		void OnThemeBrowser (object sender, EventArgs args)
 		{
 			ThemeSelectionDialog dialog = new ThemeSelectionDialog (project);
-			if (dialog.Run () == ResponseType.Ok) {
+			if (dialog.RunModal () == ResponseType.Ok) {
 				authoring_view.UpdateTheme ();
 			}
 		}
@@ -546,7 +546,7 @@ namespace Mistelix
 		{
 			ProjectPropertiesDialog dialog = new ProjectPropertiesDialog (project);
 
-			if (dialog.Run () != ResponseType.Ok)
+			if (dialog.RunModal () != ResponseType.Ok)
 				return;
 
 			// Properties dlg can change default font, colours and menu thumbnails
@@ -565,7 +565,7 @@ namespace Mistelix
 		void OnCheckDependencies (object sender, EventArgs args)
 		{
 			CheckDependenciesDialog dialog = new CheckDependenciesDialog (project);
-			dialog.Run ();
+			dialog.RunModal ();
 		}
 
 		void UpdateWindowTitle ()
@@ -587,6 +587,8 @@ namespace Mistelix
 
 		void OnRecentFiles (object sender,EventArgs args)
 		{
+
+#if _PENDING_OF_REFACTORING
 			recent_submenu = new ExtendedMenu ();
 			recent_menuitem.Submenu = recent_submenu;
 
@@ -605,6 +607,7 @@ namespace Mistelix
 				item.Show ();
 				item.Activated += OnRecentMenuItem;
 			}
+#endif
 		}
 
 		void OnRecentMenuItem (object sender, EventArgs args)
diff --git a/src/mistelix.ui b/src/mistelix.ui
new file mode 100644
index 0000000..c50d017
--- /dev/null
+++ b/src/mistelix.ui
@@ -0,0 +1,398 @@
+<?xml version="1.0"?>
+<interface>
+  <object class="GtkAdjustment" id="adjustment1">
+    <property name="upper">100</property>
+    <property name="lower">0</property>
+    <property name="page_increment">0</property>
+    <property name="step_increment">1</property>
+    <property name="page_size">0</property>
+    <property name="value">1</property>
+  </object>
+  <object class="GtkAdjustment" id="adjustment2">
+    <property name="upper">100</property>
+    <property name="lower">0</property>
+    <property name="page_increment">0</property>
+    <property name="step_increment">1</property>
+    <property name="page_size">0</property>
+    <property name="value">1</property>
+  </object>
+  <object class="GtkTextBuffer" id="textbuffer1">
+    <property name="text">Welcome to the project building process. Press the 'Generate' button to start this process.</property>
+  </object>
+  <object class="GtkTextBuffer" id="textbuffer2">
+    <property name="text">Menu themes define how the main DVD menu looks. Here you define the default background image and the type of buttons. For more information visit: http://www.mistelix.org/Themes</property>
+  </object>
+  <object class="GtkTextBuffer" id="textbuffer3">
+    <property name="text">Mistelix uses a set of external components. Their availability determines Mistelix's capabilities. The following list shows the level of support of your system for Mistelix and if there are actions required.</property>
+  </object>
+  <object class="GtkUIManager" id="uimanager1">
+    <child>
+      <object class="GtkActionGroup" id="actiongroup1">
+        <child>
+          <object class="GtkAction" id="menuitem4">
+            <property name="name">menuitem4</property>
+            <property name="label" translatable="yes">_File</property>
+          </object>
+        </child>
+        <child>
+          <object class="GtkAction" id="new_project">
+            <property name="stock_id">gtk-new</property>
+            <property name="name">new_project</property>
+            <property name="label" translatable="yes">New Project...</property>
+            <signal handler="OnNewProject" name="activate"/>
+          </object>
+        </child>
+        <child>
+          <object class="GtkAction" id="open_project">
+            <property name="stock_id">gtk-open</property>
+            <property name="name">open_project</property>
+            <property name="label" translatable="yes">Open Project...</property>
+            <signal handler="OnOpenProject" name="activate"/>
+          </object>
+        </child>
+        <child>
+          <object class="GtkAction" id="save_project">
+            <property name="stock_id">gtk-save</property>
+            <property name="name">save_project</property>
+            <property name="label" translatable="yes">_Save Project</property>
+            <signal handler="OnSaveProject" name="activate"/>
+          </object>
+        </child>
+        <child>
+          <object class="GtkAction" id="save_as">
+            <property name="stock_id">gtk-save-as</property>
+            <property name="name">save_as</property>
+            <property name="label" translatable="yes">Save _As Project...</property>
+            <signal handler="OnSaveAs" name="activate"/>
+          </object>
+        </child>
+        <child>
+          <object class="GtkAction" id="recent_menuitem">
+            <property name="name">recent_menuitem</property>
+            <property name="label" translatable="yes">Recent _Files</property>
+            <signal handler="OnRecentFiles" name="activate"/>
+          </object>
+        </child>
+        <child>
+          <object class="GtkAction" id="close">
+            <property name="stock_id">gtk-close</property>
+            <property name="name">close</property>
+            <signal handler="OnClose" name="activate"/>
+          </object>
+        </child>
+        <child>
+          <object class="GtkAction" id="quit1">
+            <property name="stock_id">gtk-quit</property>
+            <property name="name">quit1</property>
+            <signal handler="OnQuit" name="activate"/>
+          </object>
+        </child>
+        <child>
+          <object class="GtkAction" id="menuitem5">
+            <property name="name">menuitem5</property>
+            <property name="label" translatable="yes">_Edit</property>
+          </object>
+        </child>
+        <child>
+          <object class="GtkAction" id="theme_browser">
+            <property name="name">theme_browser</property>
+            <property name="label" translatable="yes">Select DVD Menu Theme...</property>
+            <signal handler="OnThemeBrowser" name="activate"/>
+          </object>
+        </child>
+        <child>
+          <object class="GtkAction" id="preferences">
+            <property name="stock_id">gtk-preferences</property>
+            <property name="name">preferences</property>
+            <property name="label" translatable="yes">Preferences</property>
+            <signal handler="OnPreferences" name="activate"/>
+          </object>
+        </child>
+        <child>
+          <object class="GtkAction" id="manage_extensions">
+            <property name="name">manage_extensions</property>
+            <property name="label" translatable="yes">Manage Extensions</property>
+            <signal handler="OnManageExtensions" name="activate"/>
+          </object>
+        </child>
+        <child>
+          <object class="GtkAction" id="menuitem6">
+            <property name="name">menuitem6</property>
+            <property name="label" translatable="yes">_View</property>
+          </object>
+        </child>
+        <child>
+          <object class="GtkToggleAction" id="safearea_menuitem">
+            <property name="name">safearea_menuitem</property>
+            <property name="label" translatable="yes">Show TV Safe Area</property>
+            <signal handler="OnViewSafeArea" name="activate"/>
+          </object>
+        </child>
+        <child>
+          <object class="GtkAction" id="dvd1">
+            <property name="name">dvd1</property>
+            <property name="label" translatable="yes">_Project</property>
+          </object>
+        </child>
+        <child>
+          <object class="GtkAction" id="add_slideshow">
+            <property name="name">add_slideshow</property>
+            <property name="label" translatable="yes">Add Slideshow...</property>
+            <signal handler="OnAddSlideShow" name="activate"/>
+          </object>
+        </child>
+        <child>
+          <object class="GtkAction" id="add_videos">
+            <property name="name">add_videos</property>
+            <property name="label" translatable="yes">Add Videos...</property>
+            <signal handler="OnAddVideos" name="activate"/>
+          </object>
+        </child>
+        <child>
+          <object class="GtkAction" id="project_properties">
+            <property name="name">project_properties</property>
+            <property name="label" translatable="yes">Properties</property>
+            <signal handler="OnProjectProperties" name="activate"/>
+          </object>
+        </child>
+        <child>
+          <object class="GtkAction" id="build">
+            <property name="name">build</property>
+            <property name="label" translatable="yes">Build...</property>
+            <signal handler="OnBuildProject" name="activate"/>
+          </object>
+          <accelerator key="F5"/>
+        </child>
+        <child>
+          <object class="GtkAction" id="menuitem7">
+            <property name="name">menuitem7</property>
+            <property name="label" translatable="yes">_Help</property>
+          </object>
+        </child>
+        <child>
+          <object class="GtkAction" id="dependencies_item">
+            <property name="name">dependencies_item</property>
+            <property name="label" translatable="yes">Check Mistelix's Dependencies Requirements</property>
+            <signal handler="OnCheckDependencies" name="activate"/>
+          </object>
+        </child>
+        <child>
+          <object class="GtkAction" id="mistelix's_on-line_documentation">
+            <property name="name">mistelix's_on-line_documentation</property>
+            <property name="label" translatable="yes">Mistelix's On-line Documentation</property>
+            <signal handler="OnDocumentation" name="activate"/>
+          </object>
+        </child>
+        <child>
+          <object class="GtkAction" id="about">
+            <property name="stock_id">gtk-about</property>
+            <property name="name">about</property>
+            <property name="label" translatable="yes">_About</property>
+            <signal handler="OnAbout" name="activate"/>
+          </object>
+        </child>
+      </object>
+    </child>
+    <ui>
+      <menubar name="menubar1">
+        <menu action="menuitem4">
+          <menuitem action="new_project"/>
+          <menuitem action="open_project"/>
+          <menuitem action="save_project"/>
+          <menuitem action="save_as"/>
+          <menuitem action="recent_menuitem"/>
+          <separator/>
+          <menuitem action="close"/>
+          <menuitem action="quit1"/>
+        </menu>
+        <menu action="menuitem5">
+          <menuitem action="theme_browser"/>
+          <menuitem action="preferences"/>
+          <menuitem action="manage_extensions"/>
+        </menu>
+        <menu action="menuitem6">
+          <menuitem action="safearea_menuitem"/>
+        </menu>
+        <menu action="dvd1">
+          <menuitem action="add_slideshow"/>
+          <menuitem action="add_videos"/>
+          <separator/>
+          <menuitem action="project_properties"/>
+          <separator/>
+          <menuitem action="build"/>
+        </menu>
+        <menu action="menuitem7">
+          <menuitem action="dependencies_item"/>
+          <menuitem action="mistelix's_on-line_documentation"/>
+          <menuitem action="about"/>
+        </menu>
+      </menubar>
+    </ui>
+  </object>
+  <!-- interface-requires gtk+ 2.6 -->
+  <!-- interface-naming-policy toplevel-contextual -->
+  <object class="GtkWindow" id="mistelix">
+    <property name="visible">True</property>
+    <property name="title">Mistelix</property>
+    <signal handler="OnDeleteWindow" name="delete_event"/>
+    <child>
+      <object class="GtkVBox" id="vbox1">
+        <property name="visible">True</property>
+        <child>
+          <object class="GtkMenuBar" constructor="uimanager1" id="menubar1">
+            <property name="visible">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkHPaned" id="vertical_paned">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <child>
+              <object class="GtkVBox" id="left_vbox">
+                <property name="visible">True</property>
+                <child>
+                  <placeholder/>
+                </child>
+              </object>
+              <packing>
+                <property name="resize">False</property>
+                <property name="shrink">True</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkVBox" id="right_vbox">
+                <property name="visible">True</property>
+                <child>
+                  <object class="GtkVPaned" id="vpaned_horizontal">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <child>
+                      <object class="GtkVBox" id="buttons_vbox">
+                        <property name="visible">True</property>
+                        <child>
+                          <object class="GtkVBox" id="vbox6">
+                            <property name="visible">True</property>
+                            <child>
+                              <object class="GtkVBox" id="vbox7">
+                                <property name="visible">True</property>
+                                <child>
+                                  <object class="GtkHBox" id="hbox1">
+                                    <property name="visible">True</property>
+                                    <child>
+                                      <object class="GtkLabel" id="label1">
+                                        <property name="visible">True</property>
+                                        <property name="label" translatable="yes">&lt;b&gt;Project elements&lt;/b&gt;</property>
+                                        <property name="use_markup">True</property>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">5</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkButton" id="videos_button">
+                                        <property name="label" translatable="yes">Add Videos</property>
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <property name="use_underline">True</property>
+                                        <signal handler="OnAddVideos" name="clicked"/>
+                                      </object>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="padding">20</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <object class="GtkButton" id="slideshows_button">
+                                        <property name="label" translatable="yes">Add Slideshow</property>
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <property name="use_underline">True</property>
+                                        <signal handler="OnAddSlideShow" name="clicked"/>
+                                      </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="position">0</property>
+                                  </packing>
+                                </child>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="position">0</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="resize">False</property>
+                        <property name="shrink">True</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkVBox" id="rightpaned_vbox">
+                        <property name="visible">True</property>
+                        <child>
+                          <object class="GtkScrolledWindow" id="scrolledwindow_elements">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="hscrollbar_policy">automatic</property>
+                            <property name="vscrollbar_policy">automatic</property>
+                            <child>
+                              <placeholder/>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="resize">True</property>
+                        <property name="shrink">True</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="resize">True</property>
+                <property name="shrink">True</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]