[longomatch] Add a new prerences dialog



commit e056c83479e7ce15899d384cf68238627da3c955
Author: Andoni Morales Alastruey <ylatuya gmail com>
Date:   Tue Jun 25 14:43:14 2013 +0200

    Add a new prerences dialog

 LongoMatch.Core/Handlers/Handlers.cs               |    1 +
 LongoMatch.Core/Interfaces/GUI/IGUIToolkit.cs      |    1 +
 LongoMatch.Core/Interfaces/GUI/IMainWindow.cs      |    1 +
 .../Gui/Component/GeneralPreferencesPanel.cs       |   79 +++
 .../Gui/Component/VideoPreferencesPanel.cs         |  103 ++++
 LongoMatch.GUI/Gui/Dialog/PropertiesEditor.cs      |   75 +++
 LongoMatch.GUI/Gui/GUIToolkit.cs                   |    8 +
 LongoMatch.GUI/Gui/MainWindow.cs                   |    9 +
 LongoMatch.GUI/LongoMatch.GUI.mdp                  |    6 +
 LongoMatch.GUI/Makefile.am                         |    6 +
 ...oMatch.Gui.Component.GeneralPreferencesPanel.cs |   54 ++
 ...ongoMatch.Gui.Component.ProjectDetailsWidget.cs |   76 ++--
 ...ngoMatch.Gui.Component.VideoPreferencesPanel.cs |  210 +++++++
 .../LongoMatch.Gui.Dialog.PropertiesEditor.cs      |   97 ++++
 ...LongoMatch.Gui.Dialog.VideoEditionProperties.cs |    6 +-
 .../gtk-gui/LongoMatch.Gui.MainWindow.cs           |   10 +-
 LongoMatch.GUI/gtk-gui/gui.stetic                  |  582 ++++++++++++++++++--
 LongoMatch.GUI/gtk-gui/objects.xml                 |    8 +
 LongoMatch.Services/Services/Core.cs               |    8 +-
 19 files changed, 1248 insertions(+), 92 deletions(-)
---
diff --git a/LongoMatch.Core/Handlers/Handlers.cs b/LongoMatch.Core/Handlers/Handlers.cs
index 6c6b9bb..e666103 100644
--- a/LongoMatch.Core/Handlers/Handlers.cs
+++ b/LongoMatch.Core/Handlers/Handlers.cs
@@ -64,6 +64,7 @@ namespace LongoMatch.Handlers
        public delegate void ManageCategoriesHandler();
        public delegate void ManageProjects();
        public delegate void ManageDatabases();
+       public delegate void EditPreferences();
        
 
        /*Playlist Events*/
diff --git a/LongoMatch.Core/Interfaces/GUI/IGUIToolkit.cs b/LongoMatch.Core/Interfaces/GUI/IGUIToolkit.cs
index d60168e..e2157ec 100644
--- a/LongoMatch.Core/Interfaces/GUI/IGUIToolkit.cs
+++ b/LongoMatch.Core/Interfaces/GUI/IGUIToolkit.cs
@@ -68,6 +68,7 @@ namespace LongoMatch.Interfaces.GUI
                void OpenCategoriesTemplatesManager(ITemplatesService ts);
                void OpenTeamsTemplatesManager(ITeamTemplatesProvider tp);
                void OpenDatabasesManager(IDataBaseManager dm);
+               void OpenPreferencesEditor();
                
                void ManageJobs(IRenderingJobsManager manager);
                
diff --git a/LongoMatch.Core/Interfaces/GUI/IMainWindow.cs b/LongoMatch.Core/Interfaces/GUI/IMainWindow.cs
index b7bc4a6..3094793 100644
--- a/LongoMatch.Core/Interfaces/GUI/IMainWindow.cs
+++ b/LongoMatch.Core/Interfaces/GUI/IMainWindow.cs
@@ -64,6 +64,7 @@ namespace LongoMatch.Interfaces.GUI
                event ManageProjects ManageProjectsEvent;
                event ManageDatabases ManageDatabasesEvent;
                event ApplyCurrentRateHandler ApplyRateEvent;
+               event EditPreferences EditPreferencesEvent;
                
                /* Game Units events */
                event GameUnitHandler GameUnitEvent;
diff --git a/LongoMatch.GUI/Gui/Component/GeneralPreferencesPanel.cs 
b/LongoMatch.GUI/Gui/Component/GeneralPreferencesPanel.cs
new file mode 100644
index 0000000..775c35b
--- /dev/null
+++ b/LongoMatch.GUI/Gui/Component/GeneralPreferencesPanel.cs
@@ -0,0 +1,79 @@
+//
+//  Copyright (C) 2013 Andoni Morales Alastruey
+//
+//  This program is free software; you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation; either version 2 of the License, or
+//  (at your option) any later version.
+//
+//  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 General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program; if not, write to the Free Software
+//  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+using System;
+using Mono.Unix;
+using Gtk;
+using LongoMatch.Common;
+using System.Globalization;
+
+namespace LongoMatch.Gui.Component
+{
+       [System.ComponentModel.ToolboxItem(true)]
+       public partial class GeneralPreferencesPanel : Gtk.Bin
+       {
+       
+               ListStore langsStore;
+               CheckButton autosavecb;
+               
+               public GeneralPreferencesPanel ()
+               {
+                       this.Build ();
+                       FillLangs();
+                       autosavecb  = new CheckButton();
+                       table1.Attach (autosavecb, 1, 2, 1, 2,
+                                      AttachOptions.Shrink,
+                                      AttachOptions.Shrink, 0, 0);
+                       autosavecb.CanFocus = false;
+                       autosavecb.Show();
+                       autosavecb.Active = Config.AutoSave;
+               }
+               
+               void FillLangs () {
+                       int index = 0, active = 0;
+                       
+                       langsStore = new ListStore(typeof(string), typeof(CultureInfo));
+                       langsStore.AppendValues (Catalog.GetString ("Default"), null);
+                       index ++;
+                       
+                       foreach (CultureInfo lang in Gettext.Languages) {
+                               langsStore.AppendValues(lang.DisplayName, lang);
+                               if (lang.Name == Config.Lang)
+                                       active = index;
+                               index ++;
+                       }
+                       langcombobox.Model = langsStore;
+                       langcombobox.Active = active;
+                       langcombobox.Changed += HandleChanged;
+               }
+
+               void HandleChanged (object sender, EventArgs e)
+               {
+                       TreeIter iter;
+                       CultureInfo info;
+                       
+                       langcombobox.GetActiveIter (out iter);
+                       info = (CultureInfo) langsStore.GetValue (iter, 1);
+                       if (info == null) {
+                               Config.Lang = null;
+                       } else {
+                               Config.Lang = info.Name;
+                       }
+               }
+       }
+}
+
diff --git a/LongoMatch.GUI/Gui/Component/VideoPreferencesPanel.cs 
b/LongoMatch.GUI/Gui/Component/VideoPreferencesPanel.cs
new file mode 100644
index 0000000..eaf8f64
--- /dev/null
+++ b/LongoMatch.GUI/Gui/Component/VideoPreferencesPanel.cs
@@ -0,0 +1,103 @@
+//
+//  Copyright (C) 2013 Andoni Morales Alastruey
+//
+//  This program is free software; you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation; either version 2 of the License, or
+//  (at your option) any later version.
+//
+//  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 General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program; if not, write to the Free Software
+//  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+using System;
+using Gtk;
+using LongoMatch.Common;
+using Misc = LongoMatch.Gui.Helpers.Misc;
+
+namespace LongoMatch.Gui.Component
+{
+       [System.ComponentModel.ToolboxItem(true)]
+       public partial class VideoPreferencesPanel : Gtk.Bin
+       {
+               public VideoPreferencesPanel ()
+               {
+                       this.Build ();
+                       Misc.FillImageFormat (renderimagecombo, Config.RenderVideoStandard);
+                       Misc.FillEncodingFormat (renderenccombo, Config.RenderEncodingProfile);
+                       Misc.FillQuality (renderqualcombo, Config.RenderEncodingQuality);
+                       
+                       Misc.FillImageFormat (captureimagecombo, Config.CaptureVideoStandard);
+                       Misc.FillEncodingFormat (captureenccombo, Config.CaptureEncodingProfile);
+                       Misc.FillQuality (capturequalcombo, Config.CaptureEncodingQuality);
+                       
+                       renderimagecombo.Changed += HandleImageChanged;
+                       captureimagecombo.Changed += HandleImageChanged;
+                       
+                       renderenccombo.Changed += HandleEncodingChanged;  
+                       captureenccombo.Changed += HandleEncodingChanged;  
+                       
+                       renderqualcombo.Changed += HandleQualityChanged;
+                       captureimagecombo.Changed += HandleImageChanged;
+               }
+
+               void HandleQualityChanged (object sender, EventArgs e)
+               {
+                       EncodingQuality qual;
+                       ListStore store;
+                       TreeIter iter;
+                       ComboBox combo = sender as ComboBox;
+                       
+                       combo.GetActiveIter (out iter);
+                       store = combo.Model as ListStore;
+                       qual = (EncodingQuality) store.GetValue(iter, 1);
+                       
+                       if (combo == renderqualcombo)
+                               Config.RenderEncodingQuality = qual;
+                       else
+                               Config.CaptureEncodingQuality = qual;
+               }
+
+               void HandleImageChanged (object sender, EventArgs e)
+               {
+                       VideoStandard std;
+                       ListStore store;
+                       TreeIter iter;
+                       ComboBox combo = sender as ComboBox;
+                       
+                       combo.GetActiveIter (out iter);
+                       store = combo.Model as ListStore;
+                       std = (VideoStandard) store.GetValue(iter, 1);
+                       
+                       if (combo == renderimagecombo)
+                               Config.RenderVideoStandard = std;
+                       else
+                               Config.CaptureVideoStandard = std;
+                       
+               }
+
+               void HandleEncodingChanged (object sender, EventArgs e)
+               {
+                       EncodingProfile enc;
+                       ListStore store;
+                       TreeIter iter;
+                       ComboBox combo = sender as ComboBox;
+                       
+                       combo.GetActiveIter (out iter);
+                       store = combo.Model as ListStore;
+                       enc = (EncodingProfile) store.GetValue(iter, 1);
+                       
+                       if (combo == renderenccombo)
+                               Config.RenderEncodingProfile = enc;
+                       else
+                               Config.CaptureEncodingProfile = enc;
+                       
+               }
+       }
+}
+
diff --git a/LongoMatch.GUI/Gui/Dialog/PropertiesEditor.cs b/LongoMatch.GUI/Gui/Dialog/PropertiesEditor.cs
new file mode 100644
index 0000000..d5d7b11
--- /dev/null
+++ b/LongoMatch.GUI/Gui/Dialog/PropertiesEditor.cs
@@ -0,0 +1,75 @@
+//
+//  Copyright (C) 2013 Andoni Morales Alastruey
+//
+//  This program is free software; you can redistribute it and/or modify
+//  it under the terms of the GNU General Public License as published by
+//  the Free Software Foundation; either version 2 of the License, or
+//  (at your option) any later version.
+//
+//  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 General Public License for more details.
+//
+//  You should have received a copy of the GNU General Public License
+//  along with this program; if not, write to the Free Software
+//  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+using System;
+using Gtk;
+using Gdk;
+using Mono.Unix;
+
+using LongoMatch.Gui.Component;
+
+namespace LongoMatch.Gui.Dialog
+{
+       public partial class PropertiesEditor : Gtk.Dialog
+       {
+               Widget selectedPanel;
+               ListStore prefsStore;
+               
+               public PropertiesEditor ()
+               {
+                       this.Build ();
+                       prefsStore = new ListStore(typeof(Gdk.Pixbuf), typeof(string), typeof(Widget));
+                       treeview.AppendColumn ("Icon", new Gtk.CellRendererPixbuf (), "pixbuf", 0);  
+                       treeview.AppendColumn ("Desc", new Gtk.CellRendererText (), "text", 1);
+                       treeview.CursorChanged += HandleCursorChanged;
+                       treeview.Model = prefsStore;
+                       treeview.HeadersVisible = false;
+                       treeview.EnableGridLines = TreeViewGridLines.None;
+                       treeview.EnableTreeLines = false;
+                       AddPanels ();
+                       treeview.SetCursor (new TreePath("0"), null, false);
+               }
+
+               void AddPanels () {
+                       AddPane (Catalog.GetString ("General"), "gtk-preferences",
+                                new GeneralPreferencesPanel());
+                       AddPane (Catalog.GetString ("Video"), "gtk-media-record",
+                                new VideoPreferencesPanel());
+               }
+               
+               void AddPane (string desc, string iconName, Widget pane) {
+                       Pixbuf icon = Stetic.IconLoader.LoadIcon(this, iconName, IconSize.Dialog);
+                       prefsStore.AppendValues(icon, desc, pane);
+               }
+               
+               void HandleCursorChanged (object sender, EventArgs e)
+               {
+                       Widget newPanel;
+                       TreeIter iter;
+                       
+                       if (selectedPanel != null)
+                               propsvbox.Remove(selectedPanel);
+                       
+                       treeview.Selection.GetSelected(out iter);
+                       newPanel = prefsStore.GetValue(iter, 2) as Widget;
+                       newPanel.Visible = true;
+                       propsvbox.PackStart(newPanel, true, true, 0);
+                       selectedPanel = newPanel;
+               }
+       }
+}
+
diff --git a/LongoMatch.GUI/Gui/GUIToolkit.cs b/LongoMatch.GUI/Gui/GUIToolkit.cs
index 22c7dec..f7057ec 100644
--- a/LongoMatch.GUI/Gui/GUIToolkit.cs
+++ b/LongoMatch.GUI/Gui/GUIToolkit.cs
@@ -248,6 +248,14 @@ namespace LongoMatch.Gui
                        pm.Show();
                }
                
+               public void OpenPreferencesEditor()
+               {
+                       PropertiesEditor pe = new PropertiesEditor();
+                       pe.TransientFor = mainWindow as Gtk.Window;
+                       pe.Run();
+                       pe.Destroy();
+               }
+               
                public void OpenDatabasesManager(IDataBaseManager manager)
                {
                        DatabasesManager dm = new DatabasesManager (manager);
diff --git a/LongoMatch.GUI/Gui/MainWindow.cs b/LongoMatch.GUI/Gui/MainWindow.cs
index 139deab..dc47c3f 100644
--- a/LongoMatch.GUI/Gui/MainWindow.cs
+++ b/LongoMatch.GUI/Gui/MainWindow.cs
@@ -85,6 +85,7 @@ namespace LongoMatch.Gui
                public event ManageProjects ManageProjectsEvent;
                public event ManageDatabases ManageDatabasesEvent;
                public event ApplyCurrentRateHandler ApplyRateEvent;
+               public event EditPreferences EditPreferencesEvent;
                
                /* Game Units events */
                public event GameUnitHandler GameUnitEvent;
@@ -319,6 +320,7 @@ namespace LongoMatch.Gui
                        TeamsTemplatesManagerAction.Activated += (o, e) => {EmitManageTeams();};
                        ProjectsManagerAction.Activated += (o, e) => {EmitManageProjects();};
                        DatabasesManagerAction.Activated +=  (o, e) => {EmitManageDatabases();};
+                       PreferencesAction.Activated += (sender, e) => {EmitEditPreferences();};
                }
                
                void DetachPlayer (bool detach) {
@@ -750,6 +752,13 @@ namespace LongoMatch.Gui
                #endregion
                
                #region Events
+               
+               private void EmitEditPreferences ()
+               {
+                       if (EditPreferencesEvent != null)
+                               EditPreferencesEvent();
+               }
+               
                private void EmitPlaySelected(Play play)
                {
                        if (PlaySelectedEvent != null)
diff --git a/LongoMatch.GUI/LongoMatch.GUI.mdp b/LongoMatch.GUI/LongoMatch.GUI.mdp
index 3873bb0..4716362 100644
--- a/LongoMatch.GUI/LongoMatch.GUI.mdp
+++ b/LongoMatch.GUI/LongoMatch.GUI.mdp
@@ -167,6 +167,12 @@
     <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.CoordinatesTagger.cs" 
/>
     <File subtype="Code" buildaction="EmbedAsResource" name="../images/field_background.svg" />
     <File subtype="Code" buildaction="EmbedAsResource" name="../images/goal_background.svg" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Component/GeneralPreferencesPanel.cs" />
+    <File subtype="Code" buildaction="Compile" 
name="gtk-gui/LongoMatch.Gui.Component.GeneralPreferencesPanel.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Dialog/PropertiesEditor.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.PropertiesEditor.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Component/VideoPreferencesPanel.cs" />
+    <File subtype="Code" buildaction="Compile" 
name="gtk-gui/LongoMatch.Gui.Component.VideoPreferencesPanel.cs" />
   </Contents>
   <References>
     <ProjectReference type="Gac" localcopy="True" refto="atk-sharp, Version=2.12.0.0, Culture=neutral, 
PublicKeyToken=35e10195dab3c99f" />
diff --git a/LongoMatch.GUI/Makefile.am b/LongoMatch.GUI/Makefile.am
index 5c86748..3be5c9a 100644
--- a/LongoMatch.GUI/Makefile.am
+++ b/LongoMatch.GUI/Makefile.am
@@ -15,6 +15,7 @@ SOURCES = \
        gtk-gui/LongoMatch.Gui.Component.GameUnitsEditor.cs \
        gtk-gui/LongoMatch.Gui.Component.GameUnitsTagger.cs \
        gtk-gui/LongoMatch.Gui.Component.GameUnitWidget.cs \
+       gtk-gui/LongoMatch.Gui.Component.GeneralPreferencesPanel.cs \
        gtk-gui/LongoMatch.Gui.Component.NotesWidget.cs \
        gtk-gui/LongoMatch.Gui.Component.PlayerProperties.cs \
        gtk-gui/LongoMatch.Gui.Component.PlayersListTreeWidget.cs \
@@ -29,11 +30,13 @@ SOURCES = \
        gtk-gui/LongoMatch.Gui.Component.StringTaggerWidget.cs \
        gtk-gui/LongoMatch.Gui.Component.TaggerWidget.cs \
        gtk-gui/LongoMatch.Gui.Component.TeamTaggerWidget.cs \
+       gtk-gui/LongoMatch.Gui.Component.VideoPreferencesPanel.cs \
        gtk-gui/LongoMatch.Gui.Dialog.BusyDialog.cs \
        gtk-gui/LongoMatch.Gui.Dialog.DatabasesManager.cs \
        gtk-gui/LongoMatch.Gui.Dialog.DrawingTool.cs \
        gtk-gui/LongoMatch.Gui.Dialog.EditCategoryDialog.cs \
        gtk-gui/LongoMatch.Gui.Dialog.EditPlayerDialog.cs \
+       gtk-gui/LongoMatch.Gui.Dialog.PropertiesEditor.cs \
        gtk-gui/LongoMatch.Gui.Dialog.EndCaptureDialog.cs \
        gtk-gui/LongoMatch.Gui.Dialog.EntryDialog.cs \
        gtk-gui/LongoMatch.Gui.Dialog.FramesCaptureProgressDialog.cs \
@@ -70,6 +73,7 @@ SOURCES = \
        Gui/Component/GameUnitTimeScale.cs \
        Gui/Component/GameUnitsTimelineWidget.cs \
        Gui/Component/GameUnitWidget.cs \
+       Gui/Component/GeneralPreferencesPanel.cs \
        Gui/Component/NotesWidget.cs \
        Gui/Component/PlayerProperties.cs \
        Gui/Component/PlayersListTreeWidget.cs \
@@ -89,6 +93,7 @@ SOURCES = \
        Gui/Component/TimeLineWidget.cs \
        Gui/Component/TimeReferenceWidget.cs \
        Gui/Component/TimeScale.cs \
+       Gui/Component/VideoPreferencesPanel.cs \
        Gui/Dialog/About.cs \
        Gui/Dialog/BusyDialog.cs \
        Gui/Dialog/DatabasesManager.cs \
@@ -103,6 +108,7 @@ SOURCES = \
        Gui/Dialog/OpenProjectDialog.cs \
        Gui/Dialog/ProjectSelectionDialog.cs \
        Gui/Dialog/ProjectsManager.cs \
+       Gui/Dialog/PropertiesEditor.cs \
        Gui/Dialog/RenderingJobsDialog.cs \
        Gui/Dialog/ShortcutsHelpDialog.cs \
        Gui/Dialog/SnapshotsDialog.cs \
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.GeneralPreferencesPanel.cs 
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.GeneralPreferencesPanel.cs
new file mode 100644
index 0000000..8ccf727
--- /dev/null
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.GeneralPreferencesPanel.cs
@@ -0,0 +1,54 @@
+
+// This file has been generated by the GUI designer. Do not modify.
+namespace LongoMatch.Gui.Component
+{
+       public partial class GeneralPreferencesPanel
+       {
+               private global::Gtk.Table table1;
+               private global::Gtk.Label label1;
+               private global::Gtk.Label label2;
+               private global::Gtk.ComboBox langcombobox;
+               
+               protected virtual void Build ()
+               {
+                       global::Stetic.Gui.Initialize (this);
+                       // Widget LongoMatch.Gui.Component.GeneralPreferencesPanel
+                       global::Stetic.BinContainer.Attach (this);
+                       this.Name = "LongoMatch.Gui.Component.GeneralPreferencesPanel";
+                       // Container child 
LongoMatch.Gui.Component.GeneralPreferencesPanel.Gtk.Container+ContainerChild
+                       this.table1 = new global::Gtk.Table (((uint)(3)), ((uint)(2)), false);
+                       this.table1.Name = "table1";
+                       this.table1.RowSpacing = ((uint)(6));
+                       this.table1.ColumnSpacing = ((uint)(6));
+                       // Container child table1.Gtk.Table+TableChild
+                       this.label1 = new global::Gtk.Label ();
+                       this.label1.Name = "label1";
+                       this.label1.LabelProp = global::Mono.Unix.Catalog.GetString ("Interface language:");
+                       this.table1.Add (this.label1);
+                       global::Gtk.Table.TableChild w1 = ((global::Gtk.Table.TableChild)(this.table1 
[this.label1]));
+                       w1.YOptions = ((global::Gtk.AttachOptions)(4));
+                       // Container child table1.Gtk.Table+TableChild
+                       this.label2 = new global::Gtk.Label ();
+                       this.label2.Name = "label2";
+                       this.label2.LabelProp = global::Mono.Unix.Catalog.GetString ("Autosave projects");
+                       this.table1.Add (this.label2);
+                       global::Gtk.Table.TableChild w2 = ((global::Gtk.Table.TableChild)(this.table1 
[this.label2]));
+                       w2.TopAttach = ((uint)(1));
+                       w2.BottomAttach = ((uint)(2));
+                       w2.YOptions = ((global::Gtk.AttachOptions)(4));
+                       // Container child table1.Gtk.Table+TableChild
+                       this.langcombobox = global::Gtk.ComboBox.NewText ();
+                       this.langcombobox.Name = "langcombobox";
+                       this.table1.Add (this.langcombobox);
+                       global::Gtk.Table.TableChild w3 = ((global::Gtk.Table.TableChild)(this.table1 
[this.langcombobox]));
+                       w3.LeftAttach = ((uint)(1));
+                       w3.RightAttach = ((uint)(2));
+                       w3.YOptions = ((global::Gtk.AttachOptions)(4));
+                       this.Add (this.table1);
+                       if ((this.Child != null)) {
+                               this.Child.ShowAll ();
+                       }
+                       this.Hide ();
+               }
+       }
+}
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ProjectDetailsWidget.cs 
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ProjectDetailsWidget.cs
index 6fd0cf1..13d2ffd 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ProjectDetailsWidget.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ProjectDetailsWidget.cs
@@ -43,11 +43,11 @@ namespace LongoMatch.Gui.Component
                private global::Gtk.Table table2;
                private global::Gtk.Label device;
                private global::Gtk.ComboBox devicecombobox;
+               private global::Gtk.ComboBox encodingcombobox;
+               private global::Gtk.ComboBox imagecombobox;
                private global::Gtk.Label label2;
                private global::Gtk.ComboBox qualitycombobox;
-               private global::Gtk.ComboBox sizecombobox1;
                private global::Gtk.Label sizelabel;
-               private global::Gtk.ComboBox videoformatcombobox;
                private global::Gtk.Label videoformatlabel;
                private global::Gtk.Label GtkLabel5;
                
@@ -426,11 +426,11 @@ namespace LongoMatch.Gui.Component
                        this.vbox2.Add (this.table1);
                        global::Gtk.Box.BoxChild w42 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.table1]));
                        w42.Position = 0;
+                       w42.Expand = false;
                        // Container child vbox2.Gtk.Box+BoxChild
                        this.expander1 = new global::Gtk.Expander (null);
                        this.expander1.CanFocus = true;
                        this.expander1.Name = "expander1";
-                       this.expander1.Expanded = true;
                        // Container child expander1.Gtk.Container+ContainerChild
                        this.table2 = new global::Gtk.Table (((uint)(4)), ((uint)(2)), false);
                        this.table2.Name = "table2";
@@ -453,59 +453,59 @@ namespace LongoMatch.Gui.Component
                        w44.RightAttach = ((uint)(2));
                        w44.YOptions = ((global::Gtk.AttachOptions)(4));
                        // Container child table2.Gtk.Table+TableChild
-                       this.label2 = new global::Gtk.Label ();
-                       this.label2.Name = "label2";
-                       this.label2.LabelProp = global::Mono.Unix.Catalog.GetString ("Quality:");
-                       this.table2.Add (this.label2);
-                       global::Gtk.Table.TableChild w45 = ((global::Gtk.Table.TableChild)(this.table2 
[this.label2]));
-                       w45.TopAttach = ((uint)(3));
-                       w45.BottomAttach = ((uint)(4));
-                       w45.XOptions = ((global::Gtk.AttachOptions)(4));
+                       this.encodingcombobox = global::Gtk.ComboBox.NewText ();
+                       this.encodingcombobox.Name = "encodingcombobox";
+                       this.table2.Add (this.encodingcombobox);
+                       global::Gtk.Table.TableChild w45 = ((global::Gtk.Table.TableChild)(this.table2 
[this.encodingcombobox]));
+                       w45.TopAttach = ((uint)(1));
+                       w45.BottomAttach = ((uint)(2));
+                       w45.LeftAttach = ((uint)(1));
+                       w45.RightAttach = ((uint)(2));
                        w45.YOptions = ((global::Gtk.AttachOptions)(4));
                        // Container child table2.Gtk.Table+TableChild
-                       this.qualitycombobox = global::Gtk.ComboBox.NewText ();
-                       this.qualitycombobox.Name = "qualitycombobox";
-                       this.table2.Add (this.qualitycombobox);
-                       global::Gtk.Table.TableChild w46 = ((global::Gtk.Table.TableChild)(this.table2 
[this.qualitycombobox]));
+                       this.imagecombobox = global::Gtk.ComboBox.NewText ();
+                       this.imagecombobox.Name = "imagecombobox";
+                       this.table2.Add (this.imagecombobox);
+                       global::Gtk.Table.TableChild w46 = ((global::Gtk.Table.TableChild)(this.table2 
[this.imagecombobox]));
                        w46.TopAttach = ((uint)(2));
                        w46.BottomAttach = ((uint)(3));
                        w46.LeftAttach = ((uint)(1));
                        w46.RightAttach = ((uint)(2));
                        w46.YOptions = ((global::Gtk.AttachOptions)(4));
                        // Container child table2.Gtk.Table+TableChild
-                       this.sizecombobox1 = global::Gtk.ComboBox.NewText ();
-                       this.sizecombobox1.Name = "sizecombobox1";
-                       this.table2.Add (this.sizecombobox1);
-                       global::Gtk.Table.TableChild w47 = ((global::Gtk.Table.TableChild)(this.table2 
[this.sizecombobox1]));
+                       this.label2 = new global::Gtk.Label ();
+                       this.label2.Name = "label2";
+                       this.label2.LabelProp = global::Mono.Unix.Catalog.GetString ("Quality:");
+                       this.table2.Add (this.label2);
+                       global::Gtk.Table.TableChild w47 = ((global::Gtk.Table.TableChild)(this.table2 
[this.label2]));
                        w47.TopAttach = ((uint)(3));
                        w47.BottomAttach = ((uint)(4));
-                       w47.LeftAttach = ((uint)(1));
-                       w47.RightAttach = ((uint)(2));
+                       w47.XOptions = ((global::Gtk.AttachOptions)(4));
                        w47.YOptions = ((global::Gtk.AttachOptions)(4));
                        // Container child table2.Gtk.Table+TableChild
+                       this.qualitycombobox = global::Gtk.ComboBox.NewText ();
+                       this.qualitycombobox.Name = "qualitycombobox";
+                       this.table2.Add (this.qualitycombobox);
+                       global::Gtk.Table.TableChild w48 = ((global::Gtk.Table.TableChild)(this.table2 
[this.qualitycombobox]));
+                       w48.TopAttach = ((uint)(3));
+                       w48.BottomAttach = ((uint)(4));
+                       w48.LeftAttach = ((uint)(1));
+                       w48.RightAttach = ((uint)(2));
+                       w48.YOptions = ((global::Gtk.AttachOptions)(4));
+                       // Container child table2.Gtk.Table+TableChild
                        this.sizelabel = new global::Gtk.Label ();
                        this.sizelabel.Name = "sizelabel";
-                       this.sizelabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Video Size:");
+                       this.sizelabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Image format:");
                        this.table2.Add (this.sizelabel);
-                       global::Gtk.Table.TableChild w48 = ((global::Gtk.Table.TableChild)(this.table2 
[this.sizelabel]));
-                       w48.TopAttach = ((uint)(2));
-                       w48.BottomAttach = ((uint)(3));
-                       w48.XOptions = ((global::Gtk.AttachOptions)(4));
-                       w48.YOptions = ((global::Gtk.AttachOptions)(4));
-                       // Container child table2.Gtk.Table+TableChild
-                       this.videoformatcombobox = global::Gtk.ComboBox.NewText ();
-                       this.videoformatcombobox.Name = "videoformatcombobox";
-                       this.table2.Add (this.videoformatcombobox);
-                       global::Gtk.Table.TableChild w49 = ((global::Gtk.Table.TableChild)(this.table2 
[this.videoformatcombobox]));
-                       w49.TopAttach = ((uint)(1));
-                       w49.BottomAttach = ((uint)(2));
-                       w49.LeftAttach = ((uint)(1));
-                       w49.RightAttach = ((uint)(2));
+                       global::Gtk.Table.TableChild w49 = ((global::Gtk.Table.TableChild)(this.table2 
[this.sizelabel]));
+                       w49.TopAttach = ((uint)(2));
+                       w49.BottomAttach = ((uint)(3));
+                       w49.XOptions = ((global::Gtk.AttachOptions)(4));
                        w49.YOptions = ((global::Gtk.AttachOptions)(4));
                        // Container child table2.Gtk.Table+TableChild
                        this.videoformatlabel = new global::Gtk.Label ();
                        this.videoformatlabel.Name = "videoformatlabel";
-                       this.videoformatlabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Video 
Format:");
+                       this.videoformatlabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Encoding 
format:");
                        this.table2.Add (this.videoformatlabel);
                        global::Gtk.Table.TableChild w50 = ((global::Gtk.Table.TableChild)(this.table2 
[this.videoformatlabel]));
                        w50.TopAttach = ((uint)(1));
@@ -521,8 +521,6 @@ namespace LongoMatch.Gui.Component
                        this.vbox2.Add (this.expander1);
                        global::Gtk.Box.BoxChild w52 = ((global::Gtk.Box.BoxChild)(this.vbox2 
[this.expander1]));
                        w52.Position = 1;
-                       w52.Expand = false;
-                       w52.Fill = false;
                        this.Add (this.vbox2);
                        if ((this.Child != null)) {
                                this.Child.ShowAll ();
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.VideoPreferencesPanel.cs 
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.VideoPreferencesPanel.cs
new file mode 100644
index 0000000..45a8520
--- /dev/null
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.VideoPreferencesPanel.cs
@@ -0,0 +1,210 @@
+
+// This file has been generated by the GUI designer. Do not modify.
+namespace LongoMatch.Gui.Component
+{
+       public partial class VideoPreferencesPanel
+       {
+               private global::Gtk.VBox vbox2;
+               private global::Gtk.Frame frame1;
+               private global::Gtk.Alignment GtkAlignment;
+               private global::Gtk.Table table1;
+               private global::Gtk.Label label1;
+               private global::Gtk.Label label2;
+               private global::Gtk.Label label3;
+               private global::Gtk.ComboBox renderenccombo;
+               private global::Gtk.ComboBox renderimagecombo;
+               private global::Gtk.ComboBox renderqualcombo;
+               private global::Gtk.Label GtkLabel;
+               private global::Gtk.Frame frame2;
+               private global::Gtk.Alignment GtkAlignment1;
+               private global::Gtk.Table table2;
+               private global::Gtk.ComboBox captureenccombo;
+               private global::Gtk.ComboBox captureimagecombo;
+               private global::Gtk.ComboBox capturequalcombo;
+               private global::Gtk.Label label4;
+               private global::Gtk.Label label5;
+               private global::Gtk.Label label6;
+               private global::Gtk.Label GtkLabel1;
+               
+               protected virtual void Build ()
+               {
+                       global::Stetic.Gui.Initialize (this);
+                       // Widget LongoMatch.Gui.Component.VideoPreferencesPanel
+                       global::Stetic.BinContainer.Attach (this);
+                       this.Name = "LongoMatch.Gui.Component.VideoPreferencesPanel";
+                       // Container child 
LongoMatch.Gui.Component.VideoPreferencesPanel.Gtk.Container+ContainerChild
+                       this.vbox2 = new global::Gtk.VBox ();
+                       this.vbox2.Name = "vbox2";
+                       this.vbox2.Spacing = 6;
+                       // Container child vbox2.Gtk.Box+BoxChild
+                       this.frame1 = new global::Gtk.Frame ();
+                       this.frame1.Name = "frame1";
+                       this.frame1.ShadowType = ((global::Gtk.ShadowType)(0));
+                       // Container child frame1.Gtk.Container+ContainerChild
+                       this.GtkAlignment = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
+                       this.GtkAlignment.Name = "GtkAlignment";
+                       this.GtkAlignment.LeftPadding = ((uint)(12));
+                       // Container child GtkAlignment.Gtk.Container+ContainerChild
+                       this.table1 = new global::Gtk.Table (((uint)(3)), ((uint)(2)), false);
+                       this.table1.Name = "table1";
+                       this.table1.RowSpacing = ((uint)(6));
+                       this.table1.ColumnSpacing = ((uint)(6));
+                       // Container child table1.Gtk.Table+TableChild
+                       this.label1 = new global::Gtk.Label ();
+                       this.label1.Name = "label1";
+                       this.label1.Xalign = 0F;
+                       this.label1.LabelProp = global::Mono.Unix.Catalog.GetString ("Image format");
+                       this.table1.Add (this.label1);
+                       global::Gtk.Table.TableChild w1 = ((global::Gtk.Table.TableChild)(this.table1 
[this.label1]));
+                       w1.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w1.YOptions = ((global::Gtk.AttachOptions)(4));
+                       // Container child table1.Gtk.Table+TableChild
+                       this.label2 = new global::Gtk.Label ();
+                       this.label2.Name = "label2";
+                       this.label2.Xalign = 0F;
+                       this.label2.LabelProp = global::Mono.Unix.Catalog.GetString ("Encoding format");
+                       this.table1.Add (this.label2);
+                       global::Gtk.Table.TableChild w2 = ((global::Gtk.Table.TableChild)(this.table1 
[this.label2]));
+                       w2.TopAttach = ((uint)(1));
+                       w2.BottomAttach = ((uint)(2));
+                       w2.YOptions = ((global::Gtk.AttachOptions)(4));
+                       // Container child table1.Gtk.Table+TableChild
+                       this.label3 = new global::Gtk.Label ();
+                       this.label3.Name = "label3";
+                       this.label3.Xalign = 0F;
+                       this.label3.LabelProp = global::Mono.Unix.Catalog.GetString ("Quality");
+                       this.table1.Add (this.label3);
+                       global::Gtk.Table.TableChild w3 = ((global::Gtk.Table.TableChild)(this.table1 
[this.label3]));
+                       w3.TopAttach = ((uint)(2));
+                       w3.BottomAttach = ((uint)(3));
+                       w3.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w3.YOptions = ((global::Gtk.AttachOptions)(4));
+                       // Container child table1.Gtk.Table+TableChild
+                       this.renderenccombo = global::Gtk.ComboBox.NewText ();
+                       this.renderenccombo.Name = "renderenccombo";
+                       this.table1.Add (this.renderenccombo);
+                       global::Gtk.Table.TableChild w4 = ((global::Gtk.Table.TableChild)(this.table1 
[this.renderenccombo]));
+                       w4.TopAttach = ((uint)(1));
+                       w4.BottomAttach = ((uint)(2));
+                       w4.LeftAttach = ((uint)(1));
+                       w4.RightAttach = ((uint)(2));
+                       w4.YOptions = ((global::Gtk.AttachOptions)(4));
+                       // Container child table1.Gtk.Table+TableChild
+                       this.renderimagecombo = global::Gtk.ComboBox.NewText ();
+                       this.renderimagecombo.Name = "renderimagecombo";
+                       this.table1.Add (this.renderimagecombo);
+                       global::Gtk.Table.TableChild w5 = ((global::Gtk.Table.TableChild)(this.table1 
[this.renderimagecombo]));
+                       w5.LeftAttach = ((uint)(1));
+                       w5.RightAttach = ((uint)(2));
+                       w5.YOptions = ((global::Gtk.AttachOptions)(4));
+                       // Container child table1.Gtk.Table+TableChild
+                       this.renderqualcombo = global::Gtk.ComboBox.NewText ();
+                       this.renderqualcombo.Name = "renderqualcombo";
+                       this.table1.Add (this.renderqualcombo);
+                       global::Gtk.Table.TableChild w6 = ((global::Gtk.Table.TableChild)(this.table1 
[this.renderqualcombo]));
+                       w6.TopAttach = ((uint)(2));
+                       w6.BottomAttach = ((uint)(3));
+                       w6.LeftAttach = ((uint)(1));
+                       w6.RightAttach = ((uint)(2));
+                       w6.YOptions = ((global::Gtk.AttachOptions)(4));
+                       this.GtkAlignment.Add (this.table1);
+                       this.frame1.Add (this.GtkAlignment);
+                       this.GtkLabel = new global::Gtk.Label ();
+                       this.GtkLabel.Name = "GtkLabel";
+                       this.GtkLabel.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Rendering</b>");
+                       this.GtkLabel.UseMarkup = true;
+                       this.frame1.LabelWidget = this.GtkLabel;
+                       this.vbox2.Add (this.frame1);
+                       global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.frame1]));
+                       w9.Position = 0;
+                       w9.Expand = false;
+                       // Container child vbox2.Gtk.Box+BoxChild
+                       this.frame2 = new global::Gtk.Frame ();
+                       this.frame2.Name = "frame2";
+                       this.frame2.ShadowType = ((global::Gtk.ShadowType)(0));
+                       // Container child frame2.Gtk.Container+ContainerChild
+                       this.GtkAlignment1 = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
+                       this.GtkAlignment1.Name = "GtkAlignment1";
+                       this.GtkAlignment1.LeftPadding = ((uint)(12));
+                       // Container child GtkAlignment1.Gtk.Container+ContainerChild
+                       this.table2 = new global::Gtk.Table (((uint)(3)), ((uint)(2)), false);
+                       this.table2.Name = "table2";
+                       this.table2.RowSpacing = ((uint)(6));
+                       this.table2.ColumnSpacing = ((uint)(6));
+                       // Container child table2.Gtk.Table+TableChild
+                       this.captureenccombo = global::Gtk.ComboBox.NewText ();
+                       this.captureenccombo.Name = "captureenccombo";
+                       this.table2.Add (this.captureenccombo);
+                       global::Gtk.Table.TableChild w10 = ((global::Gtk.Table.TableChild)(this.table2 
[this.captureenccombo]));
+                       w10.TopAttach = ((uint)(1));
+                       w10.BottomAttach = ((uint)(2));
+                       w10.LeftAttach = ((uint)(1));
+                       w10.RightAttach = ((uint)(2));
+                       w10.YOptions = ((global::Gtk.AttachOptions)(4));
+                       // Container child table2.Gtk.Table+TableChild
+                       this.captureimagecombo = global::Gtk.ComboBox.NewText ();
+                       this.captureimagecombo.Name = "captureimagecombo";
+                       this.table2.Add (this.captureimagecombo);
+                       global::Gtk.Table.TableChild w11 = ((global::Gtk.Table.TableChild)(this.table2 
[this.captureimagecombo]));
+                       w11.LeftAttach = ((uint)(1));
+                       w11.RightAttach = ((uint)(2));
+                       w11.YOptions = ((global::Gtk.AttachOptions)(4));
+                       // Container child table2.Gtk.Table+TableChild
+                       this.capturequalcombo = global::Gtk.ComboBox.NewText ();
+                       this.capturequalcombo.Name = "capturequalcombo";
+                       this.table2.Add (this.capturequalcombo);
+                       global::Gtk.Table.TableChild w12 = ((global::Gtk.Table.TableChild)(this.table2 
[this.capturequalcombo]));
+                       w12.TopAttach = ((uint)(2));
+                       w12.BottomAttach = ((uint)(3));
+                       w12.LeftAttach = ((uint)(1));
+                       w12.RightAttach = ((uint)(2));
+                       w12.YOptions = ((global::Gtk.AttachOptions)(4));
+                       // Container child table2.Gtk.Table+TableChild
+                       this.label4 = new global::Gtk.Label ();
+                       this.label4.Name = "label4";
+                       this.label4.Xalign = 0F;
+                       this.label4.LabelProp = global::Mono.Unix.Catalog.GetString ("Quality");
+                       this.table2.Add (this.label4);
+                       global::Gtk.Table.TableChild w13 = ((global::Gtk.Table.TableChild)(this.table2 
[this.label4]));
+                       w13.TopAttach = ((uint)(2));
+                       w13.BottomAttach = ((uint)(3));
+                       w13.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w13.YOptions = ((global::Gtk.AttachOptions)(4));
+                       // Container child table2.Gtk.Table+TableChild
+                       this.label5 = new global::Gtk.Label ();
+                       this.label5.Name = "label5";
+                       this.label5.Xalign = 0F;
+                       this.label5.LabelProp = global::Mono.Unix.Catalog.GetString ("Encoding format");
+                       this.table2.Add (this.label5);
+                       global::Gtk.Table.TableChild w14 = ((global::Gtk.Table.TableChild)(this.table2 
[this.label5]));
+                       w14.TopAttach = ((uint)(1));
+                       w14.BottomAttach = ((uint)(2));
+                       w14.YOptions = ((global::Gtk.AttachOptions)(4));
+                       // Container child table2.Gtk.Table+TableChild
+                       this.label6 = new global::Gtk.Label ();
+                       this.label6.Name = "label6";
+                       this.label6.Xalign = 0F;
+                       this.label6.LabelProp = global::Mono.Unix.Catalog.GetString ("Image format");
+                       this.table2.Add (this.label6);
+                       global::Gtk.Table.TableChild w15 = ((global::Gtk.Table.TableChild)(this.table2 
[this.label6]));
+                       w15.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w15.YOptions = ((global::Gtk.AttachOptions)(4));
+                       this.GtkAlignment1.Add (this.table2);
+                       this.frame2.Add (this.GtkAlignment1);
+                       this.GtkLabel1 = new global::Gtk.Label ();
+                       this.GtkLabel1.Name = "GtkLabel1";
+                       this.GtkLabel1.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Capture</b>");
+                       this.GtkLabel1.UseMarkup = true;
+                       this.frame2.LabelWidget = this.GtkLabel1;
+                       this.vbox2.Add (this.frame2);
+                       global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.frame2]));
+                       w18.Position = 1;
+                       w18.Expand = false;
+                       this.Add (this.vbox2);
+                       if ((this.Child != null)) {
+                               this.Child.ShowAll ();
+                       }
+                       this.Hide ();
+               }
+       }
+}
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.PropertiesEditor.cs 
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.PropertiesEditor.cs
new file mode 100644
index 0000000..28271ee
--- /dev/null
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.PropertiesEditor.cs
@@ -0,0 +1,97 @@
+
+// This file has been generated by the GUI designer. Do not modify.
+namespace LongoMatch.Gui.Dialog
+{
+       public partial class PropertiesEditor
+       {
+               private global::Gtk.HPaned hpaned1;
+               private global::Gtk.ScrolledWindow scrolledwindow1;
+               private global::Gtk.TreeView treeview;
+               private global::Gtk.HBox hbox1;
+               private global::Gtk.VBox propsvbox;
+               private global::Gtk.Button buttonCancel;
+               private global::Gtk.Button buttonOk;
+               
+               protected virtual void Build ()
+               {
+                       global::Stetic.Gui.Initialize (this);
+                       // Widget LongoMatch.Gui.Dialog.PropertiesEditor
+                       this.Name = "LongoMatch.Gui.Dialog.PropertiesEditor";
+                       this.WindowPosition = ((global::Gtk.WindowPosition)(4));
+                       // Internal child LongoMatch.Gui.Dialog.PropertiesEditor.VBox
+                       global::Gtk.VBox w1 = this.VBox;
+                       w1.Name = "dialog1_VBox";
+                       w1.BorderWidth = ((uint)(2));
+                       // Container child dialog1_VBox.Gtk.Box+BoxChild
+                       this.hpaned1 = new global::Gtk.HPaned ();
+                       this.hpaned1.CanFocus = true;
+                       this.hpaned1.Name = "hpaned1";
+                       this.hpaned1.Position = 164;
+                       // Container child hpaned1.Gtk.Paned+PanedChild
+                       this.scrolledwindow1 = new global::Gtk.ScrolledWindow ();
+                       this.scrolledwindow1.CanFocus = true;
+                       this.scrolledwindow1.Name = "scrolledwindow1";
+                       this.scrolledwindow1.ShadowType = ((global::Gtk.ShadowType)(1));
+                       // Container child scrolledwindow1.Gtk.Container+ContainerChild
+                       this.treeview = new global::Gtk.TreeView ();
+                       this.treeview.CanFocus = true;
+                       this.treeview.Name = "treeview";
+                       this.scrolledwindow1.Add (this.treeview);
+                       this.hpaned1.Add (this.scrolledwindow1);
+                       global::Gtk.Paned.PanedChild w3 = ((global::Gtk.Paned.PanedChild)(this.hpaned1 
[this.scrolledwindow1]));
+                       w3.Resize = false;
+                       // Container child hpaned1.Gtk.Paned+PanedChild
+                       this.hbox1 = new global::Gtk.HBox ();
+                       this.hbox1.Name = "hbox1";
+                       this.hbox1.Spacing = 6;
+                       // Container child hbox1.Gtk.Box+BoxChild
+                       this.propsvbox = new global::Gtk.VBox ();
+                       this.propsvbox.Name = "propsvbox";
+                       this.propsvbox.Spacing = 6;
+                       this.hbox1.Add (this.propsvbox);
+                       global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.hbox1 
[this.propsvbox]));
+                       w4.Position = 0;
+                       this.hpaned1.Add (this.hbox1);
+                       w1.Add (this.hpaned1);
+                       global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(w1 [this.hpaned1]));
+                       w6.Position = 0;
+                       // Internal child LongoMatch.Gui.Dialog.PropertiesEditor.ActionArea
+                       global::Gtk.HButtonBox w7 = this.ActionArea;
+                       w7.Name = "dialog1_ActionArea";
+                       w7.Spacing = 10;
+                       w7.BorderWidth = ((uint)(5));
+                       w7.LayoutStyle = ((global::Gtk.ButtonBoxStyle)(4));
+                       // Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
+                       this.buttonCancel = new global::Gtk.Button ();
+                       this.buttonCancel.CanDefault = true;
+                       this.buttonCancel.CanFocus = true;
+                       this.buttonCancel.Name = "buttonCancel";
+                       this.buttonCancel.UseStock = true;
+                       this.buttonCancel.UseUnderline = true;
+                       this.buttonCancel.Label = "gtk-cancel";
+                       this.AddActionWidget (this.buttonCancel, -6);
+                       global::Gtk.ButtonBox.ButtonBoxChild w8 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w7 
[this.buttonCancel]));
+                       w8.Expand = false;
+                       w8.Fill = false;
+                       // Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
+                       this.buttonOk = new global::Gtk.Button ();
+                       this.buttonOk.CanDefault = true;
+                       this.buttonOk.CanFocus = true;
+                       this.buttonOk.Name = "buttonOk";
+                       this.buttonOk.UseStock = true;
+                       this.buttonOk.UseUnderline = true;
+                       this.buttonOk.Label = "gtk-ok";
+                       this.AddActionWidget (this.buttonOk, -5);
+                       global::Gtk.ButtonBox.ButtonBoxChild w9 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w7 
[this.buttonOk]));
+                       w9.Position = 1;
+                       w9.Expand = false;
+                       w9.Fill = false;
+                       if ((this.Child != null)) {
+                               this.Child.ShowAll ();
+                       }
+                       this.DefaultWidth = 604;
+                       this.DefaultHeight = 353;
+                       this.Show ();
+               }
+       }
+}
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.VideoEditionProperties.cs 
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.VideoEditionProperties.cs
index 4104b3e..fb15c0c 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.VideoEditionProperties.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.VideoEditionProperties.cs
@@ -60,7 +60,7 @@ namespace LongoMatch.Gui.Dialog
                        this.label1 = new global::Gtk.Label ();
                        this.label1.Name = "label1";
                        this.label1.Xalign = 0F;
-                       this.label1.LabelProp = global::Mono.Unix.Catalog.GetString ("Video Quality:");
+                       this.label1.LabelProp = global::Mono.Unix.Catalog.GetString ("Quality:");
                        this.hbox2.Add (this.label1);
                        global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.label1]));
                        w2.Position = 0;
@@ -84,7 +84,7 @@ namespace LongoMatch.Gui.Dialog
                        this.label2 = new global::Gtk.Label ();
                        this.label2.Name = "label2";
                        this.label2.Xalign = 0F;
-                       this.label2.LabelProp = global::Mono.Unix.Catalog.GetString ("Size: ");
+                       this.label2.LabelProp = global::Mono.Unix.Catalog.GetString ("Image format: ");
                        this.hbox4.Add (this.label2);
                        global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.hbox4 [this.label2]));
                        w5.Position = 0;
@@ -108,7 +108,7 @@ namespace LongoMatch.Gui.Dialog
                        this.label3 = new global::Gtk.Label ();
                        this.label3.Name = "label3";
                        this.label3.Xalign = 0F;
-                       this.label3.LabelProp = global::Mono.Unix.Catalog.GetString ("Ouput Format:");
+                       this.label3.LabelProp = global::Mono.Unix.Catalog.GetString ("Encoding Format:");
                        this.hbox5.Add (this.label3);
                        global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.hbox5 [this.label3]));
                        w8.Position = 0;
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.MainWindow.cs 
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.MainWindow.cs
index f8a5156..d9fbb01 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.MainWindow.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.MainWindow.cs
@@ -38,6 +38,7 @@ namespace LongoMatch.Gui
                private global::Gtk.ToggleAction TagSubcategoriesAction;
                private global::Gtk.Action VideoConverterToolAction;
                private global::Gtk.Action DatabasesManagerAction;
+               private global::Gtk.Action PreferencesAction;
                private global::Gtk.VBox vbox1;
                private global::Gtk.VBox menubox;
                private global::Gtk.MenuBar menubar1;
@@ -139,12 +140,12 @@ namespace LongoMatch.Gui
                        this.ImportProjectAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("_Import 
Project");
                        w1.Add (this.ImportProjectAction, "<Control>i");
                        this.ManualTaggingViewAction = new global::Gtk.RadioAction 
("ManualTaggingViewAction", global::Mono.Unix.Catalog.GetString ("Manual tagging view"), null, null, 0);
-                       this.ManualTaggingViewAction.Group = this.TaggingViewAction.Group;
+                       this.ManualTaggingViewAction.Group = this.TimelineViewAction.Group;
                        this.ManualTaggingViewAction.Sensitive = false;
                        this.ManualTaggingViewAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("Free 
Capture Mode");
                        w1.Add (this.ManualTaggingViewAction, "<Control>f");
                        this.GameUnitsViewAction = new global::Gtk.RadioAction ("GameUnitsViewAction", 
global::Mono.Unix.Catalog.GetString ("Game units view"), null, null, 0);
-                       this.GameUnitsViewAction.Group = this.ManualTaggingViewAction.Group;
+                       this.GameUnitsViewAction.Group = this.TimelineViewAction.Group;
                        this.GameUnitsViewAction.Sensitive = false;
                        this.GameUnitsViewAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("Game 
units view");
                        w1.Add (this.GameUnitsViewAction, null);
@@ -176,6 +177,9 @@ namespace LongoMatch.Gui
                        this.DatabasesManagerAction = new global::Gtk.Action ("DatabasesManagerAction", 
global::Mono.Unix.Catalog.GetString ("Databases Manager"), null, null);
                        this.DatabasesManagerAction.ShortLabel = global::Mono.Unix.Catalog.GetString 
("Databases Manager");
                        w1.Add (this.DatabasesManagerAction, null);
+                       this.PreferencesAction = new global::Gtk.Action ("PreferencesAction", 
global::Mono.Unix.Catalog.GetString ("Preferences"), null, null);
+                       this.PreferencesAction.ShortLabel = global::Mono.Unix.Catalog.GetString 
("Preferences");
+                       w1.Add (this.PreferencesAction, null);
                        this.UIManager.InsertActionGroup (w1, 0);
                        this.AddAccelGroup (this.UIManager.AccelGroup);
                        this.Name = "LongoMatch.Gui.MainWindow";
@@ -192,7 +196,7 @@ namespace LongoMatch.Gui
                        this.menubox.Name = "menubox";
                        this.menubox.Spacing = 6;
                        // Container child menubox.Gtk.Box+BoxChild
-                       this.UIManager.AddUiFromString ("<ui><menubar name='menubar1'><menu name='FileAction' 
action='FileAction'><menuitem name='NewPojectAction' action='NewPojectAction'/><menuitem name='openAction' 
action='openAction'/><menuitem name='SaveProjectAction' action='SaveProjectAction'/><menuitem 
name='CloseProjectAction' action='CloseProjectAction'/><separator/><menu name='ImportProjectAction' 
action='ImportProjectAction'/><separator/><menuitem name='QuitAction' action='QuitAction'/></menu><menu 
name='ToolsAction' action='ToolsAction'><menuitem name='ProjectsManagerAction' 
action='ProjectsManagerAction'/><menuitem name='CategoriesTemplatesManagerAction' 
action='CategoriesTemplatesManagerAction'/><menuitem name='TeamsTemplatesManagerAction' 
action='TeamsTemplatesManagerAction'/><menuitem name='DatabasesManagerAction' 
action='DatabasesManagerAction'/><separator/><menu name='ExportProjectAction1' 
action='ExportProjectAction1'><menuitem name='ExportToProjectFileAction' action='ExportTo
 ProjectFileAction'/></menu><separator/><menuitem name='VideoConverterToolAction' 
action='VideoConverterToolAction'/></menu><menu name='ViewAction' action='ViewAction'><menuitem 
name='FullScreenAction' action='FullScreenAction'/><menuitem name='HideAllWidgetsAction' 
action='HideAllWidgetsAction'/><separator/><menuitem name='PlaylistAction' 
action='PlaylistAction'/><separator/><menuitem name='TagSubcategoriesAction' 
action='TagSubcategoriesAction'/><menuitem name='TaggingViewAction' action='TaggingViewAction'/><menuitem 
name='ManualTaggingViewAction' action='ManualTaggingViewAction'/><menuitem name='TimelineViewAction' 
action='TimelineViewAction'/><menuitem name='GameUnitsViewAction' action='GameUnitsViewAction'/></menu><menu 
name='HelpAction' action='HelpAction'><menuitem name='AboutAction' action='AboutAction'/><menuitem 
name='HelpAction1' action='HelpAction1'/><menuitem name='dialogInfoAction' 
action='dialogInfoAction'/></menu></menubar></ui>");
+                       this.UIManager.AddUiFromString ("<ui><menubar name='menubar1'><menu name='FileAction' 
action='FileAction'><menuitem name='NewPojectAction' action='NewPojectAction'/><menuitem name='openAction' 
action='openAction'/><menuitem name='SaveProjectAction' action='SaveProjectAction'/><menuitem 
name='CloseProjectAction' action='CloseProjectAction'/><separator/><menu name='ImportProjectAction' 
action='ImportProjectAction'/><separator/><menuitem name='PreferencesAction' 
action='PreferencesAction'/><separator/><menuitem name='QuitAction' action='QuitAction'/></menu><menu 
name='ToolsAction' action='ToolsAction'><menuitem name='ProjectsManagerAction' 
action='ProjectsManagerAction'/><menuitem name='CategoriesTemplatesManagerAction' 
action='CategoriesTemplatesManagerAction'/><menuitem name='TeamsTemplatesManagerAction' 
action='TeamsTemplatesManagerAction'/><menuitem name='DatabasesManagerAction' 
action='DatabasesManagerAction'/><separator/><menu name='ExportProjectAction1' action='Export
 ProjectAction1'><menuitem name='ExportToProjectFileAction' 
action='ExportToProjectFileAction'/></menu><separator/><menuitem name='VideoConverterToolAction' 
action='VideoConverterToolAction'/></menu><menu name='ViewAction' action='ViewAction'><menuitem 
name='FullScreenAction' action='FullScreenAction'/><menuitem name='HideAllWidgetsAction' 
action='HideAllWidgetsAction'/><separator/><menuitem name='PlaylistAction' 
action='PlaylistAction'/><separator/><menuitem name='TagSubcategoriesAction' 
action='TagSubcategoriesAction'/><menuitem name='TaggingViewAction' action='TaggingViewAction'/><menuitem 
name='ManualTaggingViewAction' action='ManualTaggingViewAction'/><menuitem name='TimelineViewAction' 
action='TimelineViewAction'/><menuitem name='GameUnitsViewAction' action='GameUnitsViewAction'/></menu><menu 
name='HelpAction' action='HelpAction'><menuitem name='AboutAction' action='AboutAction'/><menuitem 
name='HelpAction1' action='HelpAction1'/><menuitem name='dialogInfoAction' action
 ='dialogInfoAction'/></menu></menubar></ui>");
                        this.menubar1 = ((global::Gtk.MenuBar)(this.UIManager.GetWidget ("/menubar1")));
                        this.menubar1.Name = "menubar1";
                        this.menubox.Add (this.menubar1);
diff --git a/LongoMatch.GUI/gtk-gui/gui.stetic b/LongoMatch.GUI/gtk-gui/gui.stetic
index 5a6d223..ba71e3f 100644
--- a/LongoMatch.GUI/gtk-gui/gui.stetic
+++ b/LongoMatch.GUI/gtk-gui/gui.stetic
@@ -17,7 +17,7 @@
       </source>
     </icon-set>
   </icon-factory>
-  <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.ProjectDetailsWidget" design-size="399 334">
+  <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.ProjectDetailsWidget" design-size="402 334">
     <property name="MemberName" />
     <child>
       <widget class="Gtk.VBox" id="vbox2">
@@ -614,13 +614,13 @@
           <packing>
             <property name="Position">0</property>
             <property name="AutoSize">False</property>
+            <property name="Expand">False</property>
           </packing>
         </child>
         <child>
           <widget class="Gtk.Expander" id="expander1">
             <property name="MemberName" />
             <property name="CanFocus">True</property>
-            <property name="Expanded">True</property>
             <child>
               <widget class="Gtk.Table" id="table2">
                 <property name="MemberName" />
@@ -666,17 +666,19 @@
                   </packing>
                 </child>
                 <child>
-                  <widget class="Gtk.Label" id="label2">
+                  <widget class="Gtk.ComboBox" id="encodingcombobox">
                     <property name="MemberName" />
-                    <property name="LabelProp" translatable="yes">Quality:</property>
+                    <property name="IsTextCombo">True</property>
+                    <property name="Items" translatable="yes" />
                   </widget>
                   <packing>
-                    <property name="TopAttach">3</property>
-                    <property name="BottomAttach">4</property>
-                    <property name="AutoSize">True</property>
-                    <property name="XOptions">Fill</property>
+                    <property name="TopAttach">1</property>
+                    <property name="BottomAttach">2</property>
+                    <property name="LeftAttach">1</property>
+                    <property name="RightAttach">2</property>
+                    <property name="AutoSize">False</property>
                     <property name="YOptions">Fill</property>
-                    <property name="XExpand">False</property>
+                    <property name="XExpand">True</property>
                     <property name="XFill">True</property>
                     <property name="XShrink">False</property>
                     <property name="YExpand">False</property>
@@ -685,7 +687,7 @@
                   </packing>
                 </child>
                 <child>
-                  <widget class="Gtk.ComboBox" id="qualitycombobox">
+                  <widget class="Gtk.ComboBox" id="imagecombobox">
                     <property name="MemberName" />
                     <property name="IsTextCombo">True</property>
                     <property name="Items" translatable="yes" />
@@ -706,19 +708,17 @@
                   </packing>
                 </child>
                 <child>
-                  <widget class="Gtk.ComboBox" id="sizecombobox1">
+                  <widget class="Gtk.Label" id="label2">
                     <property name="MemberName" />
-                    <property name="IsTextCombo">True</property>
-                    <property name="Items" translatable="yes" />
+                    <property name="LabelProp" translatable="yes">Quality:</property>
                   </widget>
                   <packing>
                     <property name="TopAttach">3</property>
                     <property name="BottomAttach">4</property>
-                    <property name="LeftAttach">1</property>
-                    <property name="RightAttach">2</property>
-                    <property name="AutoSize">False</property>
+                    <property name="AutoSize">True</property>
+                    <property name="XOptions">Fill</property>
                     <property name="YOptions">Fill</property>
-                    <property name="XExpand">True</property>
+                    <property name="XExpand">False</property>
                     <property name="XFill">True</property>
                     <property name="XShrink">False</property>
                     <property name="YExpand">False</property>
@@ -727,17 +727,19 @@
                   </packing>
                 </child>
                 <child>
-                  <widget class="Gtk.Label" id="sizelabel">
+                  <widget class="Gtk.ComboBox" id="qualitycombobox">
                     <property name="MemberName" />
-                    <property name="LabelProp" translatable="yes">Video Size:</property>
+                    <property name="IsTextCombo">True</property>
+                    <property name="Items" translatable="yes" />
                   </widget>
                   <packing>
-                    <property name="TopAttach">2</property>
-                    <property name="BottomAttach">3</property>
-                    <property name="AutoSize">True</property>
-                    <property name="XOptions">Fill</property>
+                    <property name="TopAttach">3</property>
+                    <property name="BottomAttach">4</property>
+                    <property name="LeftAttach">1</property>
+                    <property name="RightAttach">2</property>
+                    <property name="AutoSize">False</property>
                     <property name="YOptions">Fill</property>
-                    <property name="XExpand">False</property>
+                    <property name="XExpand">True</property>
                     <property name="XFill">True</property>
                     <property name="XShrink">False</property>
                     <property name="YExpand">False</property>
@@ -746,19 +748,17 @@
                   </packing>
                 </child>
                 <child>
-                  <widget class="Gtk.ComboBox" id="videoformatcombobox">
+                  <widget class="Gtk.Label" id="sizelabel">
                     <property name="MemberName" />
-                    <property name="IsTextCombo">True</property>
-                    <property name="Items" translatable="yes" />
+                    <property name="LabelProp" translatable="yes">Image format:</property>
                   </widget>
                   <packing>
-                    <property name="TopAttach">1</property>
-                    <property name="BottomAttach">2</property>
-                    <property name="LeftAttach">1</property>
-                    <property name="RightAttach">2</property>
-                    <property name="AutoSize">False</property>
+                    <property name="TopAttach">2</property>
+                    <property name="BottomAttach">3</property>
+                    <property name="AutoSize">True</property>
+                    <property name="XOptions">Fill</property>
                     <property name="YOptions">Fill</property>
-                    <property name="XExpand">True</property>
+                    <property name="XExpand">False</property>
                     <property name="XFill">True</property>
                     <property name="XShrink">False</property>
                     <property name="YExpand">False</property>
@@ -769,7 +769,7 @@
                 <child>
                   <widget class="Gtk.Label" id="videoformatlabel">
                     <property name="MemberName" />
-                    <property name="LabelProp" translatable="yes">Video Format:</property>
+                    <property name="LabelProp" translatable="yes">Encoding format:</property>
                   </widget>
                   <packing>
                     <property name="TopAttach">1</property>
@@ -800,9 +800,7 @@
           </widget>
           <packing>
             <property name="Position">1</property>
-            <property name="AutoSize">True</property>
-            <property name="Expand">False</property>
-            <property name="Fill">False</property>
+            <property name="AutoSize">False</property>
           </packing>
         </child>
       </widget>
@@ -1815,6 +1813,11 @@
         <property name="Label" translatable="yes">Databases Manager</property>
         <property name="ShortLabel" translatable="yes">Databases Manager</property>
       </action>
+      <action id="PreferencesAction">
+        <property name="Type">Action</property>
+        <property name="Label" translatable="yes">Preferences</property>
+        <property name="ShortLabel" translatable="yes">Preferences</property>
+      </action>
     </action-group>
     <property name="MemberName" />
     <property name="Title" translatable="yes">LongoMatch</property>
@@ -1841,6 +1844,8 @@
                     <node type="Separator" />
                     <node type="Menu" action="ImportProjectAction" />
                     <node type="Separator" />
+                    <node type="Menuitem" action="PreferencesAction" />
+                    <node type="Separator" />
                     <node type="Menuitem" action="QuitAction" />
                   </node>
                   <node type="Menu" action="ToolsAction">
@@ -3155,7 +3160,7 @@ new one.</property>
                   <widget class="Gtk.Label" id="label1">
                     <property name="MemberName" />
                     <property name="Xalign">0</property>
-                    <property name="LabelProp" translatable="yes">Video Quality:</property>
+                    <property name="LabelProp" translatable="yes">Quality:</property>
                   </widget>
                   <packing>
                     <property name="Position">0</property>
@@ -3190,7 +3195,7 @@ new one.</property>
                   <widget class="Gtk.Label" id="label2">
                     <property name="MemberName" />
                     <property name="Xalign">0</property>
-                    <property name="LabelProp" translatable="yes">Size: </property>
+                    <property name="LabelProp" translatable="yes">Image format: </property>
                   </widget>
                   <packing>
                     <property name="Position">0</property>
@@ -3225,7 +3230,7 @@ new one.</property>
                   <widget class="Gtk.Label" id="label3">
                     <property name="MemberName" />
                     <property name="Xalign">0</property>
-                    <property name="LabelProp" translatable="yes">Ouput Format:</property>
+                    <property name="LabelProp" translatable="yes">Encoding Format:</property>
                   </widget>
                   <packing>
                     <property name="Position">0</property>
@@ -7711,4 +7716,501 @@ Defining &lt;b&gt; Game Units &lt;/b&gt; will help you during the analysis to in
       </widget>
     </child>
   </widget>
+  <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.GeneralPreferencesPanel" design-size="300 300">
+    <property name="MemberName" />
+    <property name="Visible">False</property>
+    <child>
+      <widget class="Gtk.Table" id="table1">
+        <property name="MemberName" />
+        <property name="NRows">3</property>
+        <property name="NColumns">2</property>
+        <property name="RowSpacing">6</property>
+        <property name="ColumnSpacing">6</property>
+        <child>
+          <placeholder />
+        </child>
+        <child>
+          <placeholder />
+        </child>
+        <child>
+          <placeholder />
+        </child>
+        <child>
+          <widget class="Gtk.Label" id="label1">
+            <property name="MemberName" />
+            <property name="LabelProp" translatable="yes">Interface language:</property>
+          </widget>
+          <packing>
+            <property name="AutoSize">False</property>
+            <property name="YOptions">Fill</property>
+            <property name="XExpand">True</property>
+            <property name="XFill">True</property>
+            <property name="XShrink">False</property>
+            <property name="YExpand">False</property>
+            <property name="YFill">True</property>
+            <property name="YShrink">False</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="Gtk.Label" id="label2">
+            <property name="MemberName" />
+            <property name="LabelProp" translatable="yes">Autosave projects</property>
+          </widget>
+          <packing>
+            <property name="TopAttach">1</property>
+            <property name="BottomAttach">2</property>
+            <property name="AutoSize">False</property>
+            <property name="YOptions">Fill</property>
+            <property name="XExpand">True</property>
+            <property name="XFill">True</property>
+            <property name="XShrink">False</property>
+            <property name="YExpand">False</property>
+            <property name="YFill">True</property>
+            <property name="YShrink">False</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="Gtk.ComboBox" id="langcombobox">
+            <property name="MemberName" />
+            <property name="IsTextCombo">True</property>
+            <property name="Items" translatable="yes" />
+          </widget>
+          <packing>
+            <property name="LeftAttach">1</property>
+            <property name="RightAttach">2</property>
+            <property name="AutoSize">False</property>
+            <property name="YOptions">Fill</property>
+            <property name="XExpand">True</property>
+            <property name="XFill">True</property>
+            <property name="XShrink">False</property>
+            <property name="YExpand">False</property>
+            <property name="YFill">True</property>
+            <property name="YShrink">False</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+  <widget class="Gtk.Dialog" id="LongoMatch.Gui.Dialog.PropertiesEditor" design-size="604 353">
+    <property name="MemberName" />
+    <property name="WindowPosition">CenterOnParent</property>
+    <property name="Buttons">2</property>
+    <property name="HelpButton">False</property>
+    <child internal-child="VBox">
+      <widget class="Gtk.VBox" id="dialog1_VBox">
+        <property name="MemberName" />
+        <property name="BorderWidth">2</property>
+        <child>
+          <widget class="Gtk.HPaned" id="hpaned1">
+            <property name="MemberName" />
+            <property name="CanFocus">True</property>
+            <property name="Position">164</property>
+            <child>
+              <widget class="Gtk.ScrolledWindow" id="scrolledwindow1">
+                <property name="MemberName" />
+                <property name="CanFocus">True</property>
+                <property name="ShadowType">In</property>
+                <child>
+                  <widget class="Gtk.TreeView" id="treeview">
+                    <property name="MemberName" />
+                    <property name="CanFocus">True</property>
+                  </widget>
+                </child>
+              </widget>
+              <packing>
+                <property name="Resize">False</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="Gtk.HBox" id="hbox1">
+                <property name="MemberName" />
+                <property name="Spacing">6</property>
+                <child>
+                  <widget class="Gtk.VBox" id="propsvbox">
+                    <property name="MemberName" />
+                    <property name="Spacing">6</property>
+                    <child>
+                      <placeholder />
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="Position">0</property>
+                    <property name="AutoSize">True</property>
+                  </packing>
+                </child>
+              </widget>
+            </child>
+          </widget>
+          <packing>
+            <property name="Position">0</property>
+            <property name="AutoSize">True</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+    <child internal-child="ActionArea">
+      <widget class="Gtk.HButtonBox" id="dialog1_ActionArea">
+        <property name="MemberName" />
+        <property name="Spacing">10</property>
+        <property name="BorderWidth">5</property>
+        <property name="Size">2</property>
+        <property name="LayoutStyle">End</property>
+        <child>
+          <widget class="Gtk.Button" id="buttonCancel">
+            <property name="MemberName" />
+            <property name="CanDefault">True</property>
+            <property name="CanFocus">True</property>
+            <property name="UseStock">True</property>
+            <property name="Type">StockItem</property>
+            <property name="StockId">gtk-cancel</property>
+            <property name="ResponseId">-6</property>
+            <property name="label">gtk-cancel</property>
+          </widget>
+          <packing>
+            <property name="Expand">False</property>
+            <property name="Fill">False</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="Gtk.Button" id="buttonOk">
+            <property name="MemberName" />
+            <property name="CanDefault">True</property>
+            <property name="CanFocus">True</property>
+            <property name="UseStock">True</property>
+            <property name="Type">StockItem</property>
+            <property name="StockId">gtk-ok</property>
+            <property name="ResponseId">-5</property>
+            <property name="label">gtk-ok</property>
+          </widget>
+          <packing>
+            <property name="Position">1</property>
+            <property name="Expand">False</property>
+            <property name="Fill">False</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+  <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.VideoPreferencesPanel" design-size="611 293">
+    <property name="MemberName" />
+    <property name="Visible">False</property>
+    <child>
+      <widget class="Gtk.VBox" id="vbox2">
+        <property name="MemberName" />
+        <property name="Spacing">6</property>
+        <child>
+          <widget class="Gtk.Frame" id="frame1">
+            <property name="MemberName" />
+            <property name="ShadowType">None</property>
+            <child>
+              <widget class="Gtk.Alignment" id="GtkAlignment">
+                <property name="MemberName" />
+                <property name="Xalign">0</property>
+                <property name="Yalign">0</property>
+                <property name="LeftPadding">12</property>
+                <child>
+                  <widget class="Gtk.Table" id="table1">
+                    <property name="MemberName" />
+                    <property name="NRows">3</property>
+                    <property name="NColumns">2</property>
+                    <property name="RowSpacing">6</property>
+                    <property name="ColumnSpacing">6</property>
+                    <child>
+                      <widget class="Gtk.Label" id="label1">
+                        <property name="MemberName" />
+                        <property name="Xalign">0</property>
+                        <property name="LabelProp" translatable="yes">Image format</property>
+                      </widget>
+                      <packing>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Label" id="label2">
+                        <property name="MemberName" />
+                        <property name="Xalign">0</property>
+                        <property name="LabelProp" translatable="yes">Encoding format</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">1</property>
+                        <property name="BottomAttach">2</property>
+                        <property name="AutoSize">False</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">True</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Label" id="label3">
+                        <property name="MemberName" />
+                        <property name="Xalign">0</property>
+                        <property name="LabelProp" translatable="yes">Quality</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">2</property>
+                        <property name="BottomAttach">3</property>
+                        <property name="AutoSize">False</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.ComboBox" id="renderenccombo">
+                        <property name="MemberName" />
+                        <property name="IsTextCombo">True</property>
+                        <property name="Items" translatable="yes" />
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">1</property>
+                        <property name="BottomAttach">2</property>
+                        <property name="LeftAttach">1</property>
+                        <property name="RightAttach">2</property>
+                        <property name="AutoSize">False</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">True</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.ComboBox" id="renderimagecombo">
+                        <property name="MemberName" />
+                        <property name="IsTextCombo">True</property>
+                        <property name="Items" translatable="yes" />
+                      </widget>
+                      <packing>
+                        <property name="LeftAttach">1</property>
+                        <property name="RightAttach">2</property>
+                        <property name="AutoSize">False</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">True</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.ComboBox" id="renderqualcombo">
+                        <property name="MemberName" />
+                        <property name="IsTextCombo">True</property>
+                        <property name="Items" translatable="yes" />
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">2</property>
+                        <property name="BottomAttach">3</property>
+                        <property name="LeftAttach">1</property>
+                        <property name="RightAttach">2</property>
+                        <property name="AutoSize">False</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">True</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="Gtk.Label" id="GtkLabel">
+                <property name="MemberName" />
+                <property name="LabelProp" translatable="yes">&lt;b&gt;Rendering&lt;/b&gt;</property>
+                <property name="UseMarkup">True</property>
+              </widget>
+              <packing>
+                <property name="type">label_item</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="Position">0</property>
+            <property name="AutoSize">False</property>
+            <property name="Expand">False</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="Gtk.Frame" id="frame2">
+            <property name="MemberName" />
+            <property name="ShadowType">None</property>
+            <child>
+              <widget class="Gtk.Alignment" id="GtkAlignment1">
+                <property name="MemberName" />
+                <property name="Xalign">0</property>
+                <property name="Yalign">0</property>
+                <property name="LeftPadding">12</property>
+                <child>
+                  <widget class="Gtk.Table" id="table2">
+                    <property name="MemberName" />
+                    <property name="NRows">3</property>
+                    <property name="NColumns">2</property>
+                    <property name="RowSpacing">6</property>
+                    <property name="ColumnSpacing">6</property>
+                    <child>
+                      <widget class="Gtk.ComboBox" id="captureenccombo">
+                        <property name="MemberName" />
+                        <property name="IsTextCombo">True</property>
+                        <property name="Items" translatable="yes" />
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">1</property>
+                        <property name="BottomAttach">2</property>
+                        <property name="LeftAttach">1</property>
+                        <property name="RightAttach">2</property>
+                        <property name="AutoSize">False</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">True</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.ComboBox" id="captureimagecombo">
+                        <property name="MemberName" />
+                        <property name="IsTextCombo">True</property>
+                        <property name="Items" translatable="yes" />
+                      </widget>
+                      <packing>
+                        <property name="LeftAttach">1</property>
+                        <property name="RightAttach">2</property>
+                        <property name="AutoSize">False</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">True</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.ComboBox" id="capturequalcombo">
+                        <property name="MemberName" />
+                        <property name="IsTextCombo">True</property>
+                        <property name="Items" translatable="yes" />
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">2</property>
+                        <property name="BottomAttach">3</property>
+                        <property name="LeftAttach">1</property>
+                        <property name="RightAttach">2</property>
+                        <property name="AutoSize">False</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">True</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Label" id="label4">
+                        <property name="MemberName" />
+                        <property name="Xalign">0</property>
+                        <property name="LabelProp" translatable="yes">Quality</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">2</property>
+                        <property name="BottomAttach">3</property>
+                        <property name="AutoSize">False</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Label" id="label5">
+                        <property name="MemberName" />
+                        <property name="Xalign">0</property>
+                        <property name="LabelProp" translatable="yes">Encoding format</property>
+                      </widget>
+                      <packing>
+                        <property name="TopAttach">1</property>
+                        <property name="BottomAttach">2</property>
+                        <property name="AutoSize">False</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">True</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Label" id="label6">
+                        <property name="MemberName" />
+                        <property name="Xalign">0</property>
+                        <property name="LabelProp" translatable="yes">Image format</property>
+                      </widget>
+                      <packing>
+                        <property name="AutoSize">True</property>
+                        <property name="XOptions">Fill</property>
+                        <property name="YOptions">Fill</property>
+                        <property name="XExpand">False</property>
+                        <property name="XFill">True</property>
+                        <property name="XShrink">False</property>
+                        <property name="YExpand">False</property>
+                        <property name="YFill">True</property>
+                        <property name="YShrink">False</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="Gtk.Label" id="GtkLabel1">
+                <property name="MemberName" />
+                <property name="LabelProp" translatable="yes">&lt;b&gt;Capture&lt;/b&gt;</property>
+                <property name="UseMarkup">True</property>
+              </widget>
+              <packing>
+                <property name="type">label_item</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="Position">1</property>
+            <property name="AutoSize">False</property>
+            <property name="Expand">False</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
 </stetic-interface>
\ No newline at end of file
diff --git a/LongoMatch.GUI/gtk-gui/objects.xml b/LongoMatch.GUI/gtk-gui/objects.xml
index 5d578d5..df3636e 100644
--- a/LongoMatch.GUI/gtk-gui/objects.xml
+++ b/LongoMatch.GUI/gtk-gui/objects.xml
@@ -379,4 +379,12 @@
     <itemgroups />
     <signals />
   </object>
+  <object type="LongoMatch.Gui.Component.GeneralPreferencesPanel" palette-category="General" 
allow-children="false" base-type="Gtk.Bin">
+    <itemgroups />
+    <signals />
+  </object>
+  <object type="LongoMatch.Gui.Component.VideoPreferencesPanel" palette-category="General" 
allow-children="false" base-type="Gtk.Bin">
+    <itemgroups />
+    <signals />
+  </object>
 </objects>
\ No newline at end of file
diff --git a/LongoMatch.Services/Services/Core.cs b/LongoMatch.Services/Services/Core.cs
index ecf7392..abef5cf 100644
--- a/LongoMatch.Services/Services/Core.cs
+++ b/LongoMatch.Services/Services/Core.cs
@@ -103,13 +103,7 @@ namespace LongoMatch.Services
                }
 
                public static void BindEvents(IMainWindow mainWindow) {
-                       /* Connect player events */
-                       /* FIXME:
-                       player.Prev += OnPrev;
-                       player.Next += OnNext;
-                       player.Tick += OnTick;
-                       player.SegmentClosedEvent += OnSegmentClosedEvent;
-                       player.DrawFrame += OnDrawFrame;*/
+                       mainWindow.EditPreferencesEvent += () => {guiToolkit.OpenPreferencesEditor();};
                }
 
                public static void CheckDirs() {


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