[mistelix] Porting UI from Glade to Builder
- From: Jordi Mas <jmas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mistelix] Porting UI from Glade to Builder
- Date: Wed, 17 Mar 2010 17:28:34 +0000 (UTC)
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"><b>Show button as</b></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">●</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"><b>Project Name</b></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">●</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"><b>Output Directory</b></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">●</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"><b>Project type</b></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"><b>Video Format</b></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"><b>Aspect Ratio</b></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"><b>General</b></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"><b>Files and Directories</b></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"><b>Defaults for Slideshows Transitions</b></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"><b>Project Name</b></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">●</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"><b>Output Directory</b></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">●</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"><b>Slideshow Transitions Properties</b></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"><b>Video Format</b></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"><b>Aspect Ratio</b></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"><b>Menu Buttons Properties</b></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"><b>Theme details</b></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"><b>Background</b></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"><b>Button highlighting</b></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"><b>Project elements</b></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]