[longomatch] Start with multiple angles supports



commit 11bd894d1b74520edc3e300592db6ee7c090f3ad
Author: Andoni Morales Alastruey <ylatuya gmail com>
Date:   Sat Oct 4 16:56:51 2014 +0200

    Start with multiple angles supports
    
    Everything is setup now to support multiple angles,
    but the media player doesn't not support yet switching
    angles or displaying many at the same time

 LongoMatch.Core/Common/Enums.cs                    |    7 +
 LongoMatch.Core/Interfaces/GUI/IGUIToolkit.cs      |    2 +
 LongoMatch.Core/Interfaces/GUI/IPlayerBin.cs       |    4 +-
 LongoMatch.Core/LongoMatch.Core.csproj             |   11 +-
 LongoMatch.Core/Makefile.am                        |    1 +
 LongoMatch.Core/Store/FrameDrawing.cs              |    5 +
 LongoMatch.Core/Store/MediaFile.cs                 |   35 +-
 LongoMatch.Core/Store/MediaFileSet.cs              |   94 ++
 .../Store/Playlists/PlaylistPlayElement.cs         |   24 +-
 LongoMatch.Core/Store/Project.cs                   |   14 +-
 LongoMatch.Core/Store/ProjectDescription.cs        |   35 +-
 LongoMatch.Core/Store/TimelineEvent.cs             |    7 +
 LongoMatch.Core/StyleConf.cs                       |    2 +
 LongoMatch.Drawing/Widgets/PlaysTimeline.cs        |    2 +-
 LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs         |   74 +-
 LongoMatch.GUI.Multimedia/Gui/PlayerCapturerBin.cs |   12 +-
 .../Gui/Utils/FramesCapturer.cs                    |   87 +-
 LongoMatch.GUI/Gui/Component/MediaFileChooser.cs   |   11 +-
 .../Gui/Component/MediaFileSetSelection.cs         |  122 ++
 .../Gui/Component/PlayersListTreeWidget.cs         |    2 +-
 .../Gui/Component/PlaysListTreeWidget.cs           |    2 +-
 LongoMatch.GUI/Gui/Component/ProjectListWidget.cs  |    5 +-
 LongoMatch.GUI/Gui/Component/ProjectPeriods.cs     |    7 +-
 LongoMatch.GUI/Gui/Component/Timeline.cs           |    4 +-
 LongoMatch.GUI/Gui/GUIToolkit.cs                   |   32 +-
 LongoMatch.GUI/Gui/MainWindow.cs                   |    4 +-
 LongoMatch.GUI/Gui/Menu/PlaysMenu.cs               |    6 +-
 LongoMatch.GUI/Gui/Panel/NewProjectPanel.cs        |   45 +-
 LongoMatch.GUI/Gui/Panel/ProjectsManagerPanel.cs   |   61 +-
 LongoMatch.GUI/LongoMatch.GUI.csproj               |    6 +-
 LongoMatch.GUI/Makefile.am                         |    2 +
 ...ngoMatch.Gui.Component.MediaFileSetSelection.cs |  235 ++++
 .../LongoMatch.Gui.Component.ProjectListWidget.cs  |    1 -
 .../LongoMatch.Gui.Component.ProjectPeriods.cs     |    1 -
 ...ongoMatch.Gui.Component.Stats.CategoryViewer.cs |    2 +-
 .../LongoMatch.Gui.Panel.NewProjectPanel.cs        |  276 ++---
 .../LongoMatch.Gui.Panel.ProjectsManagerPanel.cs   |  490 ++++++--
 LongoMatch.GUI/gtk-gui/gui.stetic                  | 1343 +++++++++++++-------
 LongoMatch.GUI/gtk-gui/objects.xml                 |    4 +
 LongoMatch.Services/Services/EventsManager.cs      |    9 +-
 LongoMatch.Services/Services/PlaylistManager.cs    |    2 +-
 LongoMatch.Services/Services/ProjectsManager.cs    |   32 +-
 .../Services/RenderingJobsManager.cs               |   18 +-
 LongoMatch.Services/Services/ToolsManager.cs       |   42 +-
 data/theme/longomatch-dark.json                    |    1 +
 45 files changed, 2221 insertions(+), 960 deletions(-)
---
diff --git a/LongoMatch.Core/Common/Enums.cs b/LongoMatch.Core/Common/Enums.cs
index 1e3ec47..3fbf69d 100644
--- a/LongoMatch.Core/Common/Enums.cs
+++ b/LongoMatch.Core/Common/Enums.cs
@@ -273,5 +273,12 @@ namespace LongoMatch.Core.Common
                File,
                Directory,
        }
+
+       public enum MediaFileAngle {
+               Angle1,
+               Angle2,
+               Angle3,
+               Angle4,
+       }
 }
 
diff --git a/LongoMatch.Core/Interfaces/GUI/IGUIToolkit.cs b/LongoMatch.Core/Interfaces/GUI/IGUIToolkit.cs
index 75ffc64..07e1180 100644
--- a/LongoMatch.Core/Interfaces/GUI/IGUIToolkit.cs
+++ b/LongoMatch.Core/Interfaces/GUI/IGUIToolkit.cs
@@ -89,6 +89,8 @@ namespace LongoMatch.Core.Interfaces.GUI
                
                EndCaptureResponse EndCapture (string filepath);
 
+               bool SelectMediaFiles (Project project);
+
        }
 }
 
diff --git a/LongoMatch.Core/Interfaces/GUI/IPlayerBin.cs b/LongoMatch.Core/Interfaces/GUI/IPlayerBin.cs
index 04edfb6..8ba29d3 100644
--- a/LongoMatch.Core/Interfaces/GUI/IPlayerBin.cs
+++ b/LongoMatch.Core/Interfaces/GUI/IPlayerBin.cs
@@ -38,7 +38,7 @@ namespace LongoMatch.Core.Interfaces.GUI
                bool Playing { get; }
                IFramesCapturer FramesCapturer {get;set;}
 
-               void Open (MediaFile file);
+               void Open (MediaFileSet fileSet);
                void Close();
                void Play ();
                void Pause ();
@@ -51,7 +51,7 @@ namespace LongoMatch.Core.Interfaces.GUI
                void SeekToPreviousFrame();
                void FramerateUp();
                void FramerateDown();
-               void LoadPlay (MediaFile file, TimelineEvent play, Time seekTime, bool playing);
+               void LoadPlay (MediaFileSet file, TimelineEvent play, Time seekTime, bool playing);
                void LoadPlayListPlay (Playlist playlist, IPlaylistElement play);
                void CloseSegment();
        }
diff --git a/LongoMatch.Core/LongoMatch.Core.csproj b/LongoMatch.Core/LongoMatch.Core.csproj
index 21a4379..d285dad 100644
--- a/LongoMatch.Core/LongoMatch.Core.csproj
+++ b/LongoMatch.Core/LongoMatch.Core.csproj
@@ -8,6 +8,8 @@
     <RootNamespace>LongoMatch.Core</RootNamespace>
     <AssemblyName>LongoMatch.Core</AssemblyName>
     <UseMSBuildEngine>False</UseMSBuildEngine>
+    <ProductVersion>12.0.0</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -126,6 +128,7 @@
     <Compile Include="Store\TimelineEvent.cs" />
     <Compile Include="Stats\EventTypeStats.cs" />
     <Compile Include="Store\Drawables\Circle.cs" />
+    <Compile Include="Store\MediaFileSet.cs" />
   </ItemGroup>
   <ItemGroup>
     <Folder Include="Common\" />
@@ -144,8 +147,12 @@
     <Reference Include="System.Core" />
     <Reference Include="System.Xml" />
     <Reference Include="Mono.Posix" />
-    <Reference Include="gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
-    <Reference Include="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+    <Reference Include="gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
+      <Package>gtk-sharp-2.0</Package>
+    </Reference>
+    <Reference Include="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f">
+      <Package>gtk-sharp-2.0</Package>
+    </Reference>
     <Reference Include="System.Drawing" />
     <Reference Include="Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b9a188c8922137c6">
       <Package>newtonsoft-json</Package>
diff --git a/LongoMatch.Core/Makefile.am b/LongoMatch.Core/Makefile.am
index a422dfc..6567b9c 100644
--- a/LongoMatch.Core/Makefile.am
+++ b/LongoMatch.Core/Makefile.am
@@ -81,6 +81,7 @@ SOURCES = Common/Area.cs \
        Store/FrameDrawing.cs \
        Store/HotKey.cs \
        Store/MediaFile.cs \
+       Store/MediaFileSet.cs \
        Store/PenaltyCard.cs \
        Store/Period.cs \
        Store/PixbufTimeNode.cs \
diff --git a/LongoMatch.Core/Store/FrameDrawing.cs b/LongoMatch.Core/Store/FrameDrawing.cs
index e22d445..1731e56 100644
--- a/LongoMatch.Core/Store/FrameDrawing.cs
+++ b/LongoMatch.Core/Store/FrameDrawing.cs
@@ -70,5 +70,10 @@ namespace LongoMatch.Core.Store
                        set;
                        get;
                }
+
+               public MediaFileAngle Angle {
+                       get;
+                       set;
+               }
        }
 }
diff --git a/LongoMatch.Core/Store/MediaFile.cs b/LongoMatch.Core/Store/MediaFile.cs
index e1a027a..8da7cd5 100644
--- a/LongoMatch.Core/Store/MediaFile.cs
+++ b/LongoMatch.Core/Store/MediaFile.cs
@@ -17,22 +17,22 @@
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 //
 //
-
 using System;
 using Mono.Unix;
-
 using LongoMatch.Core.Common;
 using Newtonsoft.Json;
 
 namespace LongoMatch.Core.Store
 {
-
        [Serializable]
        public class MediaFile
        {
-               public MediaFile() {}
+               public MediaFile ()
+               {
+                       Offset = new Time (0);
+               }
 
-               public MediaFile(string filePath,
+               public MediaFile (string filePath,
                                 long length,
                                 ushort fps,
                                 bool hasAudio,
@@ -57,6 +57,7 @@ namespace LongoMatch.Core.Store
                        Fps = fps;
                        Preview = preview;
                        Par = par;
+                       Offset = new Time (0);
                }
 
                public string FilePath {
@@ -78,7 +79,7 @@ namespace LongoMatch.Core.Store
                        get;
                        set;
                }
-               
+
                public string Container {
                        get;
                        set;
@@ -108,17 +109,29 @@ namespace LongoMatch.Core.Store
                        get;
                        set;
                }
-               
+
                public double Par {
                        get;
                        set;
                }
-               
+
                public Image Preview {
                        get;
                        set;
                }
-               
+
+               public Time Offset {
+                       get;
+                       set;
+               }
+
+               [JsonIgnore]
+               public string ShortDescription {
+                       get {
+                               return String.Format ("{0}x{1} {2}fps", VideoWidth, VideoHeight, Fps);
+                       }
+               }
+
                [JsonIgnore]
                public string Description {
                        get {
@@ -136,5 +149,9 @@ namespace LongoMatch.Core.Store
                                }
                        }
                }
+
+               public bool Exists () {
+                       return System.IO.File.Exists (FilePath);
+               }
        }
 }
diff --git a/LongoMatch.Core/Store/MediaFileSet.cs b/LongoMatch.Core/Store/MediaFileSet.cs
new file mode 100644
index 0000000..7e55c35
--- /dev/null
+++ b/LongoMatch.Core/Store/MediaFileSet.cs
@@ -0,0 +1,94 @@
+//
+//  Copyright (C) 2014 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 System.Linq;
+using System.Collections.Generic;
+using LongoMatch.Core.Common;
+using Newtonsoft.Json;
+
+namespace LongoMatch.Core.Store
+{
+       [JsonObject(MemberSerialization.OptIn)]
+       [Serializable]
+       public class MediaFileSet
+       {
+
+               public MediaFileSet ()
+               {
+                       Files = new Dictionary<MediaFileAngle, MediaFile>();
+                       Files[MediaFileAngle.Angle1] = null;
+                       Files[MediaFileAngle.Angle2] = null;
+                       Files[MediaFileAngle.Angle3] = null;
+                       Files[MediaFileAngle.Angle4] = null;
+               }
+
+               [JsonProperty]
+               Dictionary <MediaFileAngle, MediaFile> Files {
+                       get;
+                       set;
+               }
+
+               public Image Preview {
+                       get {
+                               return Files[MediaFileAngle.Angle1].Preview;
+                       }
+               }
+
+               public Time Duration {
+                       get {
+                               return Files.Values.Max (mf => mf == null ? new Time (0) : mf.Duration);
+                       }
+               }
+
+               public MediaFile GetAngle (MediaFileAngle angle)
+               {
+                       if (Files [angle] != null) {
+                               return Files [angle];
+                       } else {
+                               Log.Warning ("View not found for file set: " + angle);
+                               return null;
+                       }
+               }
+               
+               public void SetAngle (MediaFileAngle angle, MediaFile file)
+               {
+                       Files[angle] = file;
+               }
+
+               public bool CheckFiles ()
+               {
+                       List<MediaFile> files = ActiveFiles;
+                       if (files.Count == 0) {
+                               return false;
+                       }
+                       foreach (MediaFile f in files) {
+                               if (!f.Exists ()) {
+                                       return false;
+                               }
+                       }
+                       return true;
+               }
+
+               public List<MediaFile> ActiveFiles {
+                       get {
+                               return Files.Values.Where(f => f != null).ToList();
+                       }
+               }
+       }
+}
+
diff --git a/LongoMatch.Core/Store/Playlists/PlaylistPlayElement.cs 
b/LongoMatch.Core/Store/Playlists/PlaylistPlayElement.cs
index 3ab650b..ad60d0c 100644
--- a/LongoMatch.Core/Store/Playlists/PlaylistPlayElement.cs
+++ b/LongoMatch.Core/Store/Playlists/PlaylistPlayElement.cs
@@ -16,6 +16,8 @@
 //  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 //
 using System;
+using System.Collections.Generic;
+using System.Linq;
 using Newtonsoft.Json;
 using LongoMatch.Core.Common;
 using LongoMatch.Core.Interfaces;
@@ -25,35 +27,41 @@ namespace LongoMatch.Core.Store.Playlists
        [Serializable]
        public class PlaylistPlayElement: IPlaylistElement
        {
-               public PlaylistPlayElement (TimelineEvent play, MediaFile file=null)
+               public PlaylistPlayElement (TimelineEvent play, MediaFileSet fileset=null)
                {
                        Play = play;
                        Title = play.Name;
                        Rate = play.Rate;
-                       File = file;
+                       Angles = play.ActiveViews.ToList ();
+                       FileSet = fileset;
                }
-               
+
                public TimelineEvent Play {
                        get;
                        set;
                }
-               
+
                public bool Selected {
                        get;
                        set;
                }
-               
+
                public string Title {
                        get;
                        set;
                }
-               
+
                public double Rate {
                        get;
                        set;
                }
-               
-               public MediaFile File {
+
+               public MediaFileSet FileSet {
+                       get;
+                       set;
+               }
+
+               public List<MediaFileAngle> Angles {
                        get;
                        set;
                }
diff --git a/LongoMatch.Core/Store/Project.cs b/LongoMatch.Core/Store/Project.cs
index 0b8390f..a1cf6d7 100644
--- a/LongoMatch.Core/Store/Project.cs
+++ b/LongoMatch.Core/Store/Project.cs
@@ -188,18 +188,6 @@ namespace LongoMatch.Core.Store
                        Periods.Clear();
                        Timers.Clear();
                }
-               
-               public void UpdateMediaFile (MediaFile file)
-               {
-                       Description.SetMediaFile (file);
-                       foreach (Playlist playlist in Playlists) {
-                               foreach (IPlaylistElement play in playlist.Elements) {
-                                       if (play is PlaylistPlayElement) {
-                                               (play as PlaylistPlayElement).File = file;
-                                       }
-                               }
-                       }
-               }
 
                public void UpdateScore () {
                        Description.LocalGoals = GetScore (Team.LOCAL);
@@ -431,7 +419,7 @@ namespace LongoMatch.Core.Store
                        }
                        return null;
                }
-               
+
                public bool Equals(Project project) {
                        if(project == null)
                                return false;
diff --git a/LongoMatch.Core/Store/ProjectDescription.cs b/LongoMatch.Core/Store/ProjectDescription.cs
index 1bea379..ccb7ac2 100644
--- a/LongoMatch.Core/Store/ProjectDescription.cs
+++ b/LongoMatch.Core/Store/ProjectDescription.cs
@@ -41,19 +41,15 @@ namespace LongoMatch.Core.Store
                /// <summary>
                /// Title of the project
                /// </summary>
-               [JsonIgnore]
                public String Title {
-                       get {
-                               if (File == null)
-                                       return "";
-                               return System.IO.Path.GetFileNameWithoutExtension(File.FilePath);
-                       }
+                       get;
+                       set;
                }
 
                /// <summary>
                /// Media file asigned to this project
                /// </summary>
-               public MediaFile File {
+               public MediaFileSet FileSet {
                        get;
                        set;
                }
@@ -130,19 +126,6 @@ namespace LongoMatch.Core.Store
                        set;
                }
                
-               /// <summary>
-               /// String representing the video format like "widhtxheight fps"
-               /// </summary>
-               [JsonIgnore]
-               public String Format {
-                       get {
-                               if (File == null)
-                                       return "";
-                               return String.Format("{0}x{1} {2}fps",
-                                                    File.VideoWidth, File.VideoHeight, File.Fps);
-                       }
-               }
-               
                public DateTime LastModified {
                        get;
                        set;
@@ -151,17 +134,9 @@ namespace LongoMatch.Core.Store
                public int CompareTo(object obj) {
                        if(obj is ProjectDescription) {
                                ProjectDescription project = (ProjectDescription) obj;
-                               
-                               if (File == null || project.File == null)
-                                       return ID.CompareTo(project.ID);
-                               return this.File.FilePath.CompareTo(project.File.FilePath);
+                               return ID.CompareTo(project.ID);
                        }
-                       else
-                               throw new ArgumentException("object is not a ProjectDescription and cannot be 
compared");
-               }
-
-               public void SetMediaFile (MediaFile file) {
-                       File = file;
+                       throw new ArgumentException("object is not a ProjectDescription and cannot be 
compared");
                }
        }
 }
diff --git a/LongoMatch.Core/Store/TimelineEvent.cs b/LongoMatch.Core/Store/TimelineEvent.cs
index e1476cb..a9da6c0 100644
--- a/LongoMatch.Core/Store/TimelineEvent.cs
+++ b/LongoMatch.Core/Store/TimelineEvent.cs
@@ -43,6 +43,8 @@ namespace LongoMatch.Core.Store
                        Tags = new List<Tag> ();
                        Rate = 1.0f;
                        ID = Guid.NewGuid ();
+                       ActiveViews = new List<MediaFileAngle>();
+                       ActiveViews.Add (MediaFileAngle.Angle1);
                }
                #endregion
                #region Properties
@@ -140,6 +142,11 @@ namespace LongoMatch.Core.Store
                        set;
                }
 
+               public List<MediaFileAngle> ActiveViews {
+                       get;
+                       set;
+               }
+
                [JsonIgnore]
                public virtual string Description {
                        get {
diff --git a/LongoMatch.Core/StyleConf.cs b/LongoMatch.Core/StyleConf.cs
index b8b41a5..b86e909 100644
--- a/LongoMatch.Core/StyleConf.cs
+++ b/LongoMatch.Core/StyleConf.cs
@@ -116,6 +116,8 @@ namespace LongoMatch.Core.Common
                public Color PaletteActive { get; set; }
 
                public Color PaletteTool { get; set; }
+               
+               public Color PaletteText { get; set; }
 
                public static StyleConf Load (string filename)
                {
diff --git a/LongoMatch.Drawing/Widgets/PlaysTimeline.cs b/LongoMatch.Drawing/Widgets/PlaysTimeline.cs
index 2eb1d24..7cd7e7a 100644
--- a/LongoMatch.Drawing/Widgets/PlaysTimeline.cs
+++ b/LongoMatch.Drawing/Widgets/PlaysTimeline.cs
@@ -61,7 +61,7 @@ namespace LongoMatch.Drawing.Widgets
                        this.project = project;
                        ClearObjects ();
                        eventsTimelines.Clear ();
-                       duration = project.Description.File.Duration;
+                       duration = project.Description.FileSet.Duration;
                        height = project.EventTypes.Count * StyleConf.TimelineCategoryHeight;
                        widget.Height = height;
                        playsFilter = filter;
diff --git a/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs b/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs
index 384ba5c..5efeb21 100644
--- a/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs
+++ b/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs
@@ -60,7 +60,9 @@ namespace LongoMatch.Gui
                Time length, lastTime;
                bool seeking, IsPlayingPrevState, muted, emitRateScale, readyToSeek;
                bool ignoreTick, stillimageLoaded, delayedOpen;
-               MediaFile file;
+               MediaFileSet fileSet;
+               MediaFile activeFile;
+               MediaFileAngle angle;
                double previousVLevel = 1;
                double[] seeksQueue;
                object[] pendingSeek;
@@ -116,7 +118,7 @@ namespace LongoMatch.Gui
                #region Properties
                public Time CurrentTime {
                        get {
-                               return player.CurrentTime;
+                               return player.CurrentTime - activeFile.Offset;
                        }
                }
 
@@ -160,7 +162,7 @@ namespace LongoMatch.Gui
 
                public bool Opened {
                        get {
-                               return file != null;
+                               return fileSet != null;
                        }
                }
 
@@ -185,12 +187,12 @@ namespace LongoMatch.Gui
                
                #endregion
                #region Public methods
-               public void Open (MediaFile file)
+               public void Open (MediaFileSet fileSet)
                {
                        if (videowindow.Ready) {
-                               Open (file, true);
+                               Open (fileSet, true);
                        } else {
-                               this.file = file;
+                               this.fileSet = fileSet;
                                delayedOpen = true;
                        }
                }
@@ -243,7 +245,7 @@ namespace LongoMatch.Gui
                        if (element is PlaylistPlayElement) {
                                PlaylistPlayElement ple = element as PlaylistPlayElement;
                                TimelineEvent play = ple.Play;
-                               LoadSegment (ple.File, play.Start, play.Stop, play.Start, true, play.Rate);
+                               LoadSegment (ple.FileSet, play.Start, play.Stop, play.Start, true, play.Rate);
                        } else if (element is PlaylistImage) {
                                //LoadStillImage (element as PlaylistImage);
                        } else if (element is PlaylistDrawing) {
@@ -251,13 +253,13 @@ namespace LongoMatch.Gui
                        }
                }
 
-               public void LoadPlay (MediaFile file, TimelineEvent evt, Time seekTime, bool playing)
+               public void LoadPlay (MediaFileSet fileSet, TimelineEvent evt, Time seekTime, bool playing)
                {
                        loadedPlaylist = null;
                        loadedPlaylistElement = null;
                        loadedPlay = evt;
                        if (evt.Start != null && evt.Start != null) {
-                               LoadSegment (file, evt.Start, evt.Stop, seekTime, playing, evt.Rate);
+                               LoadSegment (fileSet, evt.Start, evt.Stop, seekTime, playing, evt.Rate);
                        } else if (evt.EventTime != null) {
                                Seek (evt.EventTime, true);
                        } else {
@@ -279,14 +281,14 @@ namespace LongoMatch.Gui
                public void Seek (Time time, bool accurate)
                {
                        DrawingsVisible = false;
-                       player.Seek (time, accurate);
+                       player.Seek (time + activeFile.Offset, accurate);
                        OnTick ();
                }
 
                public void SeekToNextFrame ()
                {
                        DrawingsVisible = false;
-                       if (player.CurrentTime < segment.Stop) {
+                       if (CurrentTime < segment.Stop) {
                                player.SeekToNextFrame ();
                                OnTick ();
                        }
@@ -295,7 +297,7 @@ namespace LongoMatch.Gui
                public void SeekToPreviousFrame ()
                {
                        DrawingsVisible = false;
-                       if (player.CurrentTime > segment.Start) {
+                       if (CurrentTime > segment.Start) {
                                seeker.Seek (SeekType.StepDown);
                        }
                }
@@ -357,23 +359,27 @@ namespace LongoMatch.Gui
                        }
                }
 
-               void Open (MediaFile file, bool seek, bool force=false)
+               void Open (MediaFileSet fileSet, bool seek, bool force=false)
                {
+                       MediaFile mf;
                        ResetGui ();
                        CloseSegment ();
-                       videowindow.Ratio = (float) (file.VideoWidth * file.Par / file.VideoHeight);
-                       if (file != this.file || force) {
+                       if (fileSet != this.fileSet || force) {
                                readyToSeek = false;
-                               this.file = file;
+                               this.fileSet = fileSet;
+                               angle = MediaFileAngle.Angle1;
+                               activeFile = fileSet.GetAngle (angle);
+                               videowindow.Ratio = (float)(activeFile.VideoWidth * activeFile.Par / 
activeFile.VideoHeight);
                                try {
-                                       Log.Debug ("Opening new file " + file.FilePath);
-                                       player.Open (file.FilePath);
+                                       Log.Debug ("Opening new file " + activeFile.FilePath);
+                                       player.Open (activeFile.FilePath);
                                } catch (Exception ex) {
                                        Log.Exception (ex);
                                        //We handle this error async
                                }
-                       } else if (seek) {
-                               player.Seek (new Time (0), true);
+                       }
+                       if (seek) {
+                               Seek (new Time (0), true);
                        }
                        detachbutton.Sensitive = true;
                }
@@ -416,14 +422,14 @@ namespace LongoMatch.Gui
 
                }
 
-               void LoadSegment (MediaFile file, Time start, Time stop, Time seekTime,
+               void LoadSegment (MediaFileSet fileSet, Time start, Time stop, Time seekTime,
                                  bool playing, float rate = 1)
                {
                        Log.Debug (String.Format ("Update player segment {0} {1} {2}",
                                                  start.ToMSecondsString (),
                                                  stop.ToMSecondsString (), rate));
-                       if (file != this.file) {
-                               Open (file, false);
+                       if (fileSet != this.fileSet) {
+                               Open (fileSet, false);
                        }
                        Pause ();
                        segment.Start = start;
@@ -470,14 +476,11 @@ namespace LongoMatch.Gui
                void LoadPlayDrawing (FrameDrawing drawing)
                {
                        Pause ();
-                       if (FramesCapturer != null) {
-                               LoadImage (FramesCapturer.GetFrame (drawing.Render, true), drawing);
-                       } else {
-                               ignoreTick = true;
-                               player.Seek (drawing.Render, true);
-                               ignoreTick = false;
-                               LoadImage (player.GetCurrentFrame (), drawing);
-                       }
+                       ignoreTick = true;
+                       player.Seek (drawing.Render + activeFile.Offset, true);
+                       ignoreTick = false;
+                       /* FIXME: wait until seek is done */
+                       LoadImage (CurrentFrame, drawing);
                }
 
                void SetScaleValue (int value)
@@ -733,7 +736,7 @@ namespace LongoMatch.Gui
                void OnEndOfStream ()
                {
                        Application.Invoke (delegate {
-                               player.Seek (new Time (0), true);
+                               Seek (new Time (0), true);
                                Pause ();
                        });
                }
@@ -793,7 +796,7 @@ namespace LongoMatch.Gui
 
                void OnVideoboxButtonPressEvent (object o, Gtk.ButtonPressEventArgs args)
                {
-                       if (file == null)
+                       if (fileSet == null)
                                return;
                        /* FIXME: The pointer is grabbed when the event box is clicked.
                         * Make sure to ungrab it in order to avoid clicks outisde the window
@@ -833,7 +836,7 @@ namespace LongoMatch.Gui
                        IntPtr handle = WindowHandle.GetWindowHandle (videowindow.Window.GdkWindow);
                        player.WindowHandle = handle;
                        if (delayedOpen) {
-                               Open (file, true, true);
+                               Open (fileSet, true, true);
                                delayedOpen = false;
                                player.Expose ();
                        }
@@ -854,8 +857,7 @@ namespace LongoMatch.Gui
                        }
                        if (type == SeekType.Accurate || type == SeekType.Keyframe) {
                                player.Rate = (double)rate;
-                               player.Seek (start, type == SeekType.Accurate);
-                               OnTick ();
+                               Seek (start, type == SeekType.Accurate);
                        }
                }
                #endregion
diff --git a/LongoMatch.GUI.Multimedia/Gui/PlayerCapturerBin.cs 
b/LongoMatch.GUI.Multimedia/Gui/PlayerCapturerBin.cs
index 47e8cce..d13d756 100644
--- a/LongoMatch.GUI.Multimedia/Gui/PlayerCapturerBin.cs
+++ b/LongoMatch.GUI.Multimedia/Gui/PlayerCapturerBin.cs
@@ -206,8 +206,8 @@ namespace LongoMatch.Gui
                        }
                }
                
-               public void Open (MediaFile file) {
-                       playerbin.Open (file);
+               public void Open (MediaFileSet fileSet) {
+                       playerbin.Open (fileSet);
                }
                
                public void Play () {
@@ -230,13 +230,13 @@ namespace LongoMatch.Gui
                        playerbin.LoadPlayListPlay (playlist, play);
                }
                
-               public void LoadPlay (MediaFile file, TimelineEvent play, Time seekTime, bool playing) {
+               public void LoadPlay (MediaFileSet fileSet, TimelineEvent play, Time seekTime, bool playing) {
                        if (mode == PlayerOperationMode.PreviewCapturer) {
                                backtolivebutton.Visible = true;
                                ShowPlayer ();
-                               LoadBackgroundPlayer(file);
+                               LoadBackgroundPlayer(fileSet);
                        }
-                       playerbin.LoadPlay (file, play, seekTime, playing);
+                       playerbin.LoadPlay (fileSet, play, seekTime, playing);
                }
                
                public void Seek (Time time, bool accurate) {
@@ -294,7 +294,7 @@ namespace LongoMatch.Gui
                        };
                }
                
-               void LoadBackgroundPlayer (MediaFile file) {
+               void LoadBackgroundPlayer (MediaFileSet file) {
                        if (backLoaded)
                                return;
                                
diff --git a/LongoMatch.GUI.Multimedia/Gui/Utils/FramesCapturer.cs 
b/LongoMatch.GUI.Multimedia/Gui/Utils/FramesCapturer.cs
index e7f1d7e..9dfc95a 100644
--- a/LongoMatch.GUI.Multimedia/Gui/Utils/FramesCapturer.cs
+++ b/LongoMatch.GUI.Multimedia/Gui/Utils/FramesCapturer.cs
@@ -43,22 +43,26 @@ namespace LongoMatch.Video.Utils
                string seriesName;
                string outputDir;
                bool cancel;
+               TimelineEvent evt;
+               MediaFileSet fileSet;
                private const int THUMBNAIL_MAX_HEIGHT=250;
                private const int THUMBNAIL_MAX_WIDTH=300;
 
                public event LongoMatch.Core.Handlers.FramesProgressHandler Progress;
 
-               public FramesSeriesCapturer(string videoFile, Time start, Time stop, uint interval, string 
outputDir)
+               public FramesSeriesCapturer (MediaFileSet fileSet, TimelineEvent evt, uint interval, string 
outputDir)
                {
                        MultimediaFactory mf= new MultimediaFactory();
                        this.capturer=mf.GetFramesCapturer();
-                       this.capturer.Open(videoFile);
-                       this.start= start;
-                       this.stop = stop;
+                       this.fileSet = fileSet;
+                       this.evt = evt;
+                       this.start= evt.Start;
+                       this.stop = evt.Stop;
                        this.interval = interval;
                        this.outputDir = outputDir;
                        this.seriesName = System.IO.Path.GetFileName(outputDir);
-                       this.totalFrames = (int)Math.Floor((double)((stop - start).MSeconds / interval))+1;
+                       this.totalFrames = ((int)Math.Floor((double)((stop - start).MSeconds / interval))+1) 
* evt.ActiveViews.Count;
+                       this.cancel = false;
                }
 
                public void Cancel() {
@@ -70,40 +74,59 @@ namespace LongoMatch.Video.Utils
                        thread.Start();
                }
 
-               public void CaptureFrames() {
+               public void CaptureFrames ()
+               {
                        Time pos;
                        LongoMatch.Core.Common.Image frame;
+                       bool quit = false;
                        int i = 0;
+                       int j = 0;
 
-                       System.IO.Directory.CreateDirectory(outputDir);
-
-                       pos = new Time {MSeconds = start.MSeconds};
-                       if(Progress != null) {
-                               Application.Invoke (delegate {
-                                       Progress(0,totalFrames,null);
-                               });
-                       }
+                       System.IO.Directory.CreateDirectory (outputDir);
 
-                       while(pos <= stop) {
-                               if(!cancel) {
-                                       frame = capturer.GetFrame(pos, true);
-                                       if(frame != null) {
-                                               frame.Save(System.IO.Path.Combine(outputDir,seriesName+"_" + 
i +".png"));
-                                               frame.ScaleInplace(THUMBNAIL_MAX_WIDTH, THUMBNAIL_MAX_HEIGHT);
+                       Log.Debug ("Start frames series capture with interval: " + interval);
+                       Log.Debug ("Total frames to be captured: " + totalFrames);
+                       foreach (MediaFileAngle angle in evt.ActiveViews) {
+                               if (quit) {
+                                       break;
+                               }
+                               Log.Debug ("Start frames series capture for angle " + angle);
+                               MediaFile file = fileSet.GetAngle (angle);
+                               capturer.Open (file.FilePath);
+                               pos = new Time {MSeconds = start.MSeconds};
+                               if(Progress != null) {
+                                       Application.Invoke (delegate {
+                                               Progress(i,totalFrames,null);
+                                       });
+                               }
+                               
+                               j = 0;
+                               while(pos <= stop) {
+                                       Log.Debug ("Capturing fame " + j);
+                                       if(!cancel) {
+                                               frame = capturer.GetFrame(pos + file.Offset, true);
+                                               if(frame != null) {
+                                                       string path = String.Format("{0}_angle{1}_{2}.png", 
seriesName, angle, j);
+                                                       frame.Save(System.IO.Path.Combine(outputDir, path));
+                                                       frame.ScaleInplace(THUMBNAIL_MAX_WIDTH, 
THUMBNAIL_MAX_HEIGHT);
+                                               }
+                                               
+                                               if(Progress != null) {
+                                                       Application.Invoke (delegate {
+                                                               Progress(i+1, totalFrames, frame);
+                                                       });
+                                               }
+                                               pos.MSeconds += (int) interval;
+                                               i++;
+                                               j++;
                                        }
-
-                                       if(Progress != null) {
-                                               Application.Invoke (delegate {
-                                                       Progress(i+1, totalFrames, frame);
-                                               });
+                                       else {
+                                               Log.Debug ("Capture cancelled, deleting output directory");
+                                               System.IO.Directory.Delete(outputDir,true);
+                                               cancel=false;
+                                               quit = true;
+                                               break;
                                        }
-                                       pos.MSeconds += (int) interval;
-                                       i++;
-                               }
-                               else {
-                                       System.IO.Directory.Delete(outputDir,true);
-                                       cancel=false;
-                                       break;
                                }
                        }
                        capturer.Dispose ();
diff --git a/LongoMatch.GUI/Gui/Component/MediaFileChooser.cs 
b/LongoMatch.GUI/Gui/Component/MediaFileChooser.cs
index 157b0d9..9236453 100644
--- a/LongoMatch.GUI/Gui/Component/MediaFileChooser.cs
+++ b/LongoMatch.GUI/Gui/Component/MediaFileChooser.cs
@@ -83,6 +83,11 @@ namespace LongoMatch.Gui.Component
                        if (mediaFile != null) {
                                fileentry.Text = System.IO.Path.GetFileName (mediaFile.FilePath);
                                fileentry.TooltipText = mediaFile.FilePath;
+                               if (mediaFile.Exists ()) {
+                                       fileentry.ModifyText (Gtk.StateType.Normal, Misc.ToGdkColor 
(Config.Style.PaletteText));
+                               } else {
+                                       fileentry.ModifyText (Gtk.StateType.Normal, Misc.ToGdkColor 
(Color.Red1));
+                               }
                        } else if (path != null) {
                                fileentry.Text = System.IO.Path.GetFileName (path);
                                fileentry.TooltipText = path;
@@ -98,7 +103,11 @@ namespace LongoMatch.Gui.Component
                void HandleClicked (object sender, EventArgs e)
                {
                        if (FileChooserMode == FileChooserMode.MediaFile) {
-                               MediaFile = Misc.OpenFile (this);
+                               MediaFile file = Misc.OpenFile (this);
+                               if (MediaFile != null) {
+                                       file.Offset = MediaFile.Offset;
+                               }
+                               MediaFile = file;
                        } else if (FileChooserMode == FileChooserMode.File) {
                                string filename = String.Format ("LongoMatch-{0}.mp4",
                                                                 DateTime.Now.ToShortDateString ().Replace 
('/', '-'));
diff --git a/LongoMatch.GUI/Gui/Component/MediaFileSetSelection.cs 
b/LongoMatch.GUI/Gui/Component/MediaFileSetSelection.cs
new file mode 100644
index 0000000..f148635
--- /dev/null
+++ b/LongoMatch.GUI/Gui/Component/MediaFileSetSelection.cs
@@ -0,0 +1,122 @@
+//
+//  Copyright (C) 2014 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 LongoMatch.Core.Store;
+using LongoMatch.Core.Common;
+using Gtk;
+
+namespace LongoMatch.Gui.Component
+{
+       [System.ComponentModel.ToolboxItem(true)]
+       public partial class MediaFileSetSelection : Gtk.Bin
+       {
+               MediaFileSet fileSet;
+               bool ignoreChanges;
+
+               public MediaFileSetSelection ()
+               {
+                       this.Build ();
+                       mediafilechooser1.ChangedEvent += HandleFileChangedEvent;
+                       mediafilechooser2.ChangedEvent += HandleFileChangedEvent;
+                       mediafilechooser3.ChangedEvent += HandleFileChangedEvent;
+                       mediafilechooser4.ChangedEvent += HandleFileChangedEvent;
+                       delfile2button.Clicked += HandleFileRemoved;
+                       delfile3button.Clicked += HandleFileRemoved;
+                       delfile4button.Clicked += HandleFileRemoved;
+                       filetable.RowSpacing = StyleConf.NewTableHSpacing;
+                       filetable.ColumnSpacing = StyleConf.NewTeamsSpacing; 
+               }
+
+               public MediaFileSet FileSet {
+                       set {
+                               fileSet = value;
+                               UpdateMediaFile (mediafilechooser1);
+                               UpdateMediaFile (mediafilechooser2);
+                               UpdateMediaFile (mediafilechooser3);
+                               UpdateMediaFile (mediafilechooser4);
+                       }
+                       get {
+                               return fileSet;
+                       }
+               }
+
+               void UpdateMediaFile (MediaFileChooser filechooser, MediaFile file = null, bool delete = 
false)
+               {
+                       MediaFileAngle angle = MediaFileAngle.Angle1;
+                       Button delbutton = null;
+
+                       ignoreChanges = true;
+                       if (filechooser == mediafilechooser1) {
+                               angle = MediaFileAngle.Angle1;
+                       } else if (filechooser == mediafilechooser2) {
+                               delbutton = delfile2button;
+                               angle = MediaFileAngle.Angle2;
+                       } else if (filechooser == mediafilechooser3) {
+                               delbutton = delfile3button;
+                               angle = MediaFileAngle.Angle3;
+                       } else if (filechooser == mediafilechooser4) {
+                               delbutton = delfile4button;
+                               angle = MediaFileAngle.Angle4;
+                       }
+                       
+                       if (delete) {
+                               FileSet.SetAngle (angle, null);
+                               filechooser.MediaFile = null;
+                       } else {
+                               if (file == null) {
+                                       filechooser.MediaFile = FileSet.GetAngle (angle);
+                               } else {
+                                       FileSet.SetAngle (angle, file);
+                                       filechooser.MediaFile = file;
+                               }
+                       }
+
+                       if (delbutton != null) {
+                               delbutton.Visible = filechooser.MediaFile != null;
+                       }
+
+
+                       ignoreChanges = false;
+               }
+
+               void HandleFileChangedEvent (object sender, EventArgs e)
+               {
+                       if (ignoreChanges) {
+                               return;
+                       }
+                       MediaFileChooser filechooser = sender as MediaFileChooser;
+                       UpdateMediaFile (filechooser, filechooser.MediaFile);
+               }
+
+               void HandleFileRemoved (object sender, EventArgs e)
+               {
+                       MediaFileChooser filechooser = null;
+
+                       if (sender == delfile2button) {
+                               filechooser = mediafilechooser2;
+                       } else if (sender == delfile3button) {
+                               filechooser = mediafilechooser3;
+                       } else if (sender == delfile4button) {
+                               filechooser = mediafilechooser4;
+                       }
+                       UpdateMediaFile (filechooser, null, true);
+               }
+
+       }
+}
+
diff --git a/LongoMatch.GUI/Gui/Component/PlayersListTreeWidget.cs 
b/LongoMatch.GUI/Gui/Component/PlayersListTreeWidget.cs
index 5bac965..9c185f3 100644
--- a/LongoMatch.GUI/Gui/Component/PlayersListTreeWidget.cs
+++ b/LongoMatch.GUI/Gui/Component/PlayersListTreeWidget.cs
@@ -99,7 +99,7 @@ namespace LongoMatch.Gui.Component
                                
                                playerstreeview.Model.GetIter(out iter, path);
                                element = new PlaylistPlayElement (playerstreeview.Model.GetValue(iter, 0) as 
TimelineEvent,
-                                                                  Project.Description.File);
+                                                                  Project.Description.FileSet);
                                playlist.Elements.Add (element);
                        }
                        
diff --git a/LongoMatch.GUI/Gui/Component/PlaysListTreeWidget.cs 
b/LongoMatch.GUI/Gui/Component/PlaysListTreeWidget.cs
index 88dd4e9..e646608 100644
--- a/LongoMatch.GUI/Gui/Component/PlaysListTreeWidget.cs
+++ b/LongoMatch.GUI/Gui/Component/PlaysListTreeWidget.cs
@@ -170,7 +170,7 @@ namespace LongoMatch.Gui.Component
                                
                                treeview.Model.GetIter(out iter, path);
                                element = new PlaylistPlayElement (treeview.Model.GetValue(iter, 0) as 
TimelineEvent,
-                                                                  project.Description.File);
+                                                                  project.Description.FileSet);
                                playlist.Elements.Add (element);
                        }
                        
diff --git a/LongoMatch.GUI/Gui/Component/ProjectListWidget.cs 
b/LongoMatch.GUI/Gui/Component/ProjectListWidget.cs
index ee5c8f9..a1d2a2c 100644
--- a/LongoMatch.GUI/Gui/Component/ProjectListWidget.cs
+++ b/LongoMatch.GUI/Gui/Component/ProjectListWidget.cs
@@ -79,8 +79,8 @@ namespace LongoMatch.Gui.Component
                        store.Clear ();
                        foreach (ProjectDescription pdesc in projects)
                        {
-                               if (pdesc.File.Preview != null) {
-                                       image = pdesc.File.Preview.Value;
+                               if (pdesc.FileSet.Preview != null) {
+                                       image = pdesc.FileSet.Preview.Value;
                                } else  {
                                        image = Stetic.IconLoader.LoadIcon (this, Gtk.Stock.Harddisk, 
IconSize.Dialog);
                                }
@@ -110,7 +110,6 @@ namespace LongoMatch.Gui.Component
                        ret += String.Format ("\n {0} - {1} ({2}-{3})", project.LocalName,
                                              project.VisitorName, project.LocalGoals,
                                              project.VisitorGoals);
-                       ret += "\n" + project.Format;
                        return ret;
                }
                
diff --git a/LongoMatch.GUI/Gui/Component/ProjectPeriods.cs b/LongoMatch.GUI/Gui/Component/ProjectPeriods.cs
index b31585e..7685d53 100644
--- a/LongoMatch.GUI/Gui/Component/ProjectPeriods.cs
+++ b/LongoMatch.GUI/Gui/Component/ProjectPeriods.cs
@@ -22,6 +22,7 @@ using LongoMatch.Drawing.Widgets;
 using LongoMatch.Drawing.Cairo;
 using Mono.Unix;
 using LongoMatch.Gui.Helpers;
+using LongoMatch.Core.Common;
 
 namespace LongoMatch.Gui.Component
 {
@@ -63,20 +64,22 @@ namespace LongoMatch.Gui.Component
                        set {
                                Time start, pDuration;
                                List<string> gamePeriods;
+                               MediaFile file;
                                
                                playerbin2.ShowControls = false;
                                
                                gamePeriods = value.Dashboard.GamePeriods;
 
+                               file = value.Description.FileSet.GetAngle (MediaFileAngle.Angle1);
                                start = new Time (0);
-                               duration = value.Description.File.Duration;
+                               duration = file.Duration;
                                pDuration = new Time (duration.MSeconds / gamePeriods.Count);
                                List<Period> periods = new List<Period> ();
                                gamePeriods = value.Dashboard.GamePeriods;
                                
                                timerule.Duration = duration;
                                SetZoom ();
-                               playerbin2.Open (value.Description.File);
+                               playerbin2.Open (value.Description.FileSet);
                                
                                foreach (string s in gamePeriods) {
                                        Period period = new Period {Name = s};
diff --git a/LongoMatch.GUI/Gui/Component/Timeline.cs b/LongoMatch.GUI/Gui/Component/Timeline.cs
index 396427c..691951c 100644
--- a/LongoMatch.GUI/Gui/Component/Timeline.cs
+++ b/LongoMatch.GUI/Gui/Component/Timeline.cs
@@ -111,8 +111,8 @@ namespace LongoMatch.Gui.Component
                                timeoutID = GLib.Timeout.Add (TIMEOUT_MS, UpdateTime);
                        }
                        focusscale.Value = 6;
-                       projectFile = project.Description.File;
-                       timerule.Duration = project.Description.File.Duration;
+                       projectFile = project.Description.FileSet.GetAngle (MediaFileAngle.Angle1);
+                       timerule.Duration = project.Description.FileSet.GetAngle 
(MediaFileAngle.Angle1).Duration;
                        timeline.ShowMenuEvent += HandleShowMenu;
                        QueueDraw ();
                }
diff --git a/LongoMatch.GUI/Gui/GUIToolkit.cs b/LongoMatch.GUI/Gui/GUIToolkit.cs
index c7fb768..49707a4 100644
--- a/LongoMatch.GUI/Gui/GUIToolkit.cs
+++ b/LongoMatch.GUI/Gui/GUIToolkit.cs
@@ -215,8 +215,7 @@ namespace LongoMatch.Gui
                                seriesName = sd.SeriesName;
                                sd.Destroy();
                                outDir = System.IO.Path.Combine(snapshotsDir, seriesName);
-                               var fsc = new FramesSeriesCapturer(openedProject.Description.File.FilePath,
-                                                              play.Start, play.Stop, interval, outDir);
+                               var fsc = new FramesSeriesCapturer (openedProject.Description.FileSet, play, 
interval, outDir);
                                var fcpd = new FramesCaptureProgressDialog(fsc);
                                fcpd.TransientFor = mainWindow as Gtk.Window;
                                fcpd.Run();
@@ -374,6 +373,35 @@ namespace LongoMatch.Gui
                        return (EndCaptureResponse)res;
                }
                
+               public bool SelectMediaFiles (Project project)
+               {
+                       bool ret = false;
+                       MediaFileSetSelection fileselector = new MediaFileSetSelection ();
+                       Gtk.Dialog d = new Gtk.Dialog (Catalog.GetString ("Select video files"),
+                                                      mainWindow.Toplevel as Gtk.Window,
+                                                      DialogFlags.Modal | DialogFlags.DestroyWithParent,
+                                                      Gtk.Stock.Cancel, ResponseType.Cancel,
+                                                      Gtk.Stock.Ok, ResponseType.Ok);
+                       fileselector.Show ();
+                       fileselector.FileSet = project.Description.FileSet;
+                       d.VBox.Add (fileselector);
+                       WarningMessage (Catalog.GetString ("Some video files are missing for this project"));
+                       while (d.Run () == (int)ResponseType.Ok) {
+                               if (!fileselector.FileSet.CheckFiles ()) {
+                                       WarningMessage (Catalog.GetString ("Some video files are still 
missing for this project."), d);
+                                       continue;
+                               }
+                               if (fileselector.FileSet.GetAngle (MediaFileAngle.Angle1) == null) {
+                                       WarningMessage (Catalog.GetString ("You need at least 1 video file 
for the main angle"));
+                                       continue;
+                               }
+                               ret = true;
+                               break;
+                       }
+                       d.Destroy ();
+                       return ret;
+               }
+
                public void Quit () {
                        Log.Information ("Quit application");
                        Gtk.Application.Quit ();
diff --git a/LongoMatch.GUI/Gui/MainWindow.cs b/LongoMatch.GUI/Gui/MainWindow.cs
index f28bfdb..90b545a 100644
--- a/LongoMatch.GUI/Gui/MainWindow.cs
+++ b/LongoMatch.GUI/Gui/MainWindow.cs
@@ -116,8 +116,8 @@ namespace LongoMatch.Gui
                        this.projectType = projectType;
                        openedProject = project;
                        if (projectType == ProjectType.FileProject) {
-                               Title = System.IO.Path.GetFileNameWithoutExtension(
-                                       openedProject.Description.File.FilePath) + " - " + 
Constants.SOFTWARE_NAME;
+                               Title = openedProject.Description.Title +
+                                       " - " + Constants.SOFTWARE_NAME;
                        } else {
                                Title = Constants.SOFTWARE_NAME;
                        }
diff --git a/LongoMatch.GUI/Gui/Menu/PlaysMenu.cs b/LongoMatch.GUI/Gui/Menu/PlaysMenu.cs
index bb4dd7b..97248f8 100644
--- a/LongoMatch.GUI/Gui/Menu/PlaysMenu.cs
+++ b/LongoMatch.GUI/Gui/Menu/PlaysMenu.cs
@@ -159,7 +159,7 @@ namespace LongoMatch.Gui.Menus
                                        item.Activated += (sender, e) => {
                                                IEnumerable<IPlaylistElement> elements;
                                                
-                                               elements = plays.Select (p => new PlaylistPlayElement (p, 
project.Description.File));
+                                               elements = plays.Select (p => new PlaylistPlayElement (p, 
project.Description.FileSet));
                                                Config.EventsBroker.EmitAddPlaylistElement (pl, 
elements.ToList());
                                        }; 
                                }
@@ -168,7 +168,7 @@ namespace LongoMatch.Gui.Menus
                                plMenu.Append (item);
                                item.Activated += (sender, e) => {
                                        IEnumerable<IPlaylistElement> elements;
-                                       elements = plays.Select (p => new PlaylistPlayElement (p, 
project.Description.File));
+                                       elements = plays.Select (p => new PlaylistPlayElement (p, 
project.Description.FileSet));
                                        Config.EventsBroker.EmitAddPlaylistElement (null, elements.ToList());
                                }; 
                                
@@ -232,7 +232,7 @@ namespace LongoMatch.Gui.Menus
                {
                        Playlist pl = new Playlist();
                        foreach (TimelineEvent p in plays) {
-                               pl.Elements.Add (new PlaylistPlayElement (p, project.Description.File));
+                               pl.Elements.Add (new PlaylistPlayElement (p, project.Description.FileSet));
                        }
                        Config.EventsBroker.EmitRenderPlaylist (pl);
                }
diff --git a/LongoMatch.GUI/Gui/Panel/NewProjectPanel.cs b/LongoMatch.GUI/Gui/Panel/NewProjectPanel.cs
index ed48066..2897996 100644
--- a/LongoMatch.GUI/Gui/Panel/NewProjectPanel.cs
+++ b/LongoMatch.GUI/Gui/Panel/NewProjectPanel.cs
@@ -33,6 +33,7 @@ using Device = LongoMatch.Core.Common.Device;
 using Color = Gdk.Color;
 using LongoMatch.Drawing.Widgets;
 using LongoMatch.Drawing.Cairo;
+using LongoMatch.Gui.Component;
 
 namespace LongoMatch.Gui.Panel
 {
@@ -50,7 +51,6 @@ namespace LongoMatch.Gui.Panel
                EncodingSettings encSettings;
                List<Device> videoDevices;
                ListStore teams, videoStandardList, encProfileList, qualList;
-               MediaFile mediaFile;
                IMultimediaToolkit mtoolkit;
                IGUIToolkit gtoolkit;
                Color red;
@@ -79,6 +79,7 @@ namespace LongoMatch.Gui.Panel
                        if (project == null) {
                                notebook1.Page = 0;
                                datepicker1.Date = DateTime.Now;
+                               mediafilesetselection1.FileSet = new MediaFileSet ();
                        } else {
                                notebook1.Page = 1;
                                this.project = project;
@@ -110,10 +111,10 @@ namespace LongoMatch.Gui.Panel
                        
                        centerbox.WidthRequest = StyleConf.NewTeamsComboWidth * 2 + StyleConf.NewTeamsSpacing;
                        notebook1.BorderWidth = StyleConf.NewHeaderSpacing;
-                       lefttable.RowSpacing = filetable.RowSpacing =
-                               outputfiletable.RowSpacing = righttable.RowSpacing = 
StyleConf.NewTableHSpacing;
+                       lefttable.RowSpacing = outputfiletable.RowSpacing =
+                               righttable.RowSpacing = StyleConf.NewTableHSpacing;
                        lefttable.ColumnSpacing = righttable.ColumnSpacing = StyleConf.NewTableHSpacing;
-                       filetable.ColumnSpacing = outputfiletable.ColumnSpacing = StyleConf.NewTeamsSpacing; 
+                       outputfiletable.ColumnSpacing = StyleConf.NewTeamsSpacing; 
                        vsimage.WidthRequest = StyleConf.NewTeamsSpacing;
                        hometeamscombobox.WidthRequest = awayteamscombobox.WidthRequest = 
StyleConf.NewTeamsComboWidth;
                        hometeamscombobox.HeightRequest = awayteamscombobox.HeightRequest = 
StyleConf.NewTeamsComboHeight;
@@ -161,9 +162,6 @@ namespace LongoMatch.Gui.Panel
                {
                        urientry.Changed += HandleEntryChanged;
                        tagscombobox.Changed += HandleSportsTemplateChanged;
-                       mediafilechooser1.ChangedEvent += (sender, e) => {
-                               mediaFile = mediafilechooser1.MediaFile;};
-                       capturemediafilechooser.ChangedEvent += HandleEntryChanged;
                }
 
                void FillProjectDetails ()
@@ -176,10 +174,11 @@ namespace LongoMatch.Gui.Panel
                        awayteamscombobox.Sensitive = false;
                        tagscombobox.Visible = false;
                        analysislabel.Visible = false;
-                       filetable.Visible = true;
                        analysisTemplate = project.Dashboard;
                        LoadTemplate (project.LocalTeamTemplate, Team.LOCAL);
                        LoadTemplate (project.VisitorTeamTemplate, Team.VISITOR);
+                       mediafilesetselection1.Visible = true;
+                       mediafilesetselection1.FileSet = project.Description.FileSet;
                }
 
                void FillCategories ()
@@ -207,8 +206,7 @@ namespace LongoMatch.Gui.Panel
                        } else if (projectType == ProjectType.URICaptureProject) {
                                urimode = true;
                        }
-                       filelabel.Visible = filemode;
-                       filetable.Visible = filemode;
+                       mediafilesetselection1.Visible = filemode;
                        outputfiletable.Visible = capturemode || urimode;
                        rcapturetable.Visible = capturemode || urimode;
                        lcapturetable.Visible = capturemode || urimode;
@@ -283,17 +281,17 @@ namespace LongoMatch.Gui.Panel
                bool CreateProject ()
                {
                        TreeIter iter;
+                       MediaFile file;
                        
                        if (projectType == ProjectType.FileProject ||
                                projectType == ProjectType.EditProject) {
-                               if (mediafilechooser1.MediaFile == null) {
-                                       gtoolkit.WarningMessage (Catalog.GetString ("No input video file"));
+                               if (mediafilesetselection1.FileSet.GetAngle (MediaFileAngle.Angle1) == null) {
+                                       gtoolkit.WarningMessage (Catalog.GetString ("You need at least 1 
video file for the main angle"));
                                        return false;
                                }
                        }
 
                        if (project != null) {
-                               project.UpdateMediaFile (mediaFile);
                                return true;
                        }
                        
@@ -320,7 +318,7 @@ namespace LongoMatch.Gui.Panel
                        project.Description.Season = seasonentry.Text;
                        project.Description.LocalName = project.LocalTeamTemplate.TeamName;
                        project.Description.VisitorName = project.VisitorTeamTemplate.TeamName;
-                       project.UpdateMediaFile (mediaFile);
+                       project.Description.FileSet = mediafilesetselection1.FileSet;
                        project.UpdateEventTypes ();
                        
                        encSettings = new EncodingSettings ();
@@ -345,28 +343,30 @@ namespace LongoMatch.Gui.Panel
                        
                        captureSettings.EncodingSettings = encSettings;
 
-                       if (project.Description.File == null) {
-                               MediaFile file = new MediaFile ();
+                       file = project.Description.FileSet.GetAngle (MediaFileAngle.Angle1); 
+                       if (file == null) {
+                               file = new MediaFile ();
                                file.FilePath = capturemediafilechooser.CurrentPath;
                                file.Fps = (ushort)(Config.FPS_N / Config.FPS_D);
                                file.Par = 1;
-                               project.UpdateMediaFile (file);
+                               project.Description.FileSet.SetAngle (MediaFileAngle.Angle1, file);
                        }
+                       
                        if (projectType == ProjectType.CaptureProject) {
                                Device device = videoDevices [devicecombobox.Active];
                                captureSettings.CaptureSourceType = device.DeviceType;
                                captureSettings.DeviceID = device.ID;
                                captureSettings.SourceElement = device.SourceElement;
-                               project.Description.File.VideoHeight = encSettings.VideoStandard.Height;
-                               project.Description.File.VideoWidth = encSettings.VideoStandard.Width;
+                               file.VideoHeight = encSettings.VideoStandard.Height;
+                               file.VideoWidth = encSettings.VideoStandard.Width;
                        } else if (projectType == ProjectType.URICaptureProject) {
                                captureSettings.CaptureSourceType = CaptureSourceType.URI;
                                captureSettings.DeviceID = urientry.Text;
-                               project.Description.File.VideoHeight = encSettings.VideoStandard.Height;
-                               project.Description.File.VideoWidth = encSettings.VideoStandard.Width;
+                               file.VideoHeight = encSettings.VideoStandard.Height;
+                               file.VideoWidth = encSettings.VideoStandard.Width;
                        } else if (projectType == ProjectType.FakeCaptureProject) {
                                captureSettings.CaptureSourceType = CaptureSourceType.None;
-                               project.Description.File.FilePath = Constants.FAKE_PROJECT;
+                               file.FilePath = Constants.FAKE_PROJECT;
                        }
                        return true;
                }
@@ -487,6 +487,7 @@ namespace LongoMatch.Gui.Panel
                        team.List.Swap (p1, p2);
                        teamtagger.Substitute (p1, p2, team);
                }
+               
        }
 }
 
diff --git a/LongoMatch.GUI/Gui/Panel/ProjectsManagerPanel.cs 
b/LongoMatch.GUI/Gui/Panel/ProjectsManagerPanel.cs
index ee3bb4c..657ff92 100644
--- a/LongoMatch.GUI/Gui/Panel/ProjectsManagerPanel.cs
+++ b/LongoMatch.GUI/Gui/Panel/ProjectsManagerPanel.cs
@@ -28,6 +28,7 @@ using LongoMatch.Gui.Helpers;
 using LongoMatch.Core.Interfaces.Multimedia;
 using Mono.Unix;
 using LongoMatch.Video;
+using LongoMatch.Gui.Component;
 
 namespace LongoMatch.Gui.Panel
 {
@@ -64,7 +65,10 @@ namespace LongoMatch.Gui.Panel
                        exportbutton.Clicked += HandleExportClicked;
                        deletebutton.Clicked += HandleDeleteClicked;
                        datepicker.ValueChanged += HandleDateChanged;
-                       mediafilechooser.ChangedEvent += HandleFileChanged;
+                       mediafilechooser1.ChangedEvent += HandleFileChanged;
+                       mediafilechooser2.ChangedEvent += HandleFileChanged;
+                       mediafilechooser3.ChangedEvent += HandleFileChanged;
+                       mediafilechooser4.ChangedEvent += HandleFileChanged;
 
                        notebook1.Page = 0;
                        panelheader1.Title = "PROJECTS MANAGER";
@@ -74,7 +78,7 @@ namespace LongoMatch.Gui.Panel
 
                void LoadProject (Project project) {
                        ProjectDescription pd = project.Description;
-                       MediaFile f = pd.File;
+                       MediaFile f = pd.FileSet.GetAngle (MediaFileAngle.Angle1);
                        TeamTemplate lt = project.LocalTeamTemplate;
                        TeamTemplate vt = project.VisitorTeamTemplate;
                        
@@ -82,16 +86,15 @@ namespace LongoMatch.Gui.Panel
                        competitionentry.Text = pd.Competition;
                        scorelabel.Text = String.Format ("{0} - {1}", pd.LocalGoals, pd.VisitorGoals);
                        datepicker.Date = pd.MatchDate;
-                       mediafilechooser.MediaFile = f;
                        templatelabel.Text = project.Dashboard.Name;
-                       
+       
                        if (f.Preview != null) {
-                               fileimage.Pixbuf = f.Preview.Value;
+                               fileimage1.Pixbuf = f.Preview.Value;
                        } else {
-                               fileimage.Pixbuf = Stetic.IconLoader.LoadIcon (this, Gtk.Stock.Harddisk,
+                               fileimage1.Pixbuf = Stetic.IconLoader.LoadIcon (this, Gtk.Stock.Harddisk,
                                                                               IconSize.Dialog);
                        }
-                       medialabel.Markup = f.Description;
+                       medialabel1.Markup = f.Description;
                        
                        homelabel.Text = lt.TeamName;
                        awaylabel.Text = vt.TeamName;
@@ -109,15 +112,51 @@ namespace LongoMatch.Gui.Panel
                        }
                        
                        loadedProject = project;
+                       
+                       UpdateFile (mediafilechooser1, project.Description.FileSet.GetAngle 
(MediaFileAngle.Angle1),
+                                   MediaFileAngle.Angle1, fileimage1, medialabel1);
+                       UpdateFile (mediafilechooser2, project.Description.FileSet.GetAngle 
(MediaFileAngle.Angle2),
+                                   MediaFileAngle.Angle2, fileimage2, medialabel2);
+                       UpdateFile (mediafilechooser3, project.Description.FileSet.GetAngle 
(MediaFileAngle.Angle3),
+                                   MediaFileAngle.Angle3, fileimage3, medialabel3);
+                       UpdateFile (mediafilechooser4, project.Description.FileSet.GetAngle 
(MediaFileAngle.Angle4),
+                                   MediaFileAngle.Angle4, fileimage4, medialabel4);
+                       
                        descbox.Visible = true;
                }
                
+               void UpdateFile (MediaFileChooser mediafilechooser, MediaFile file, MediaFileAngle view,
+                              Gtk.Image image, Label label)
+               {
+                       if (file != null) {
+                               loadedProject.Description.FileSet.SetAngle (view, file);
+                               image.Pixbuf = file.Preview.Value;
+                               label.Markup = file.Description;
+                       } else {
+                               loadedProject.Description.FileSet.SetAngle (view, null);
+                               image.Pixbuf = null;
+                               label.Markup = null;
+                       }
+               }
+
                void HandleFileChanged (object sender, EventArgs e)
                {
-                       if (mediafilechooser.MediaFile != null && loadedProject != null) {
-                               loadedProject.UpdateMediaFile (mediafilechooser.MediaFile);
-                               fileimage.Pixbuf = loadedProject.Description.File.Preview.Value;
-                               medialabel.Markup = loadedProject.Description.File.Description;
+                       if (loadedProject == null) {
+                               return;
+                       }
+
+                       if (sender == mediafilechooser1) {
+                               UpdateFile (mediafilechooser1, mediafilechooser1.MediaFile,
+                                           MediaFileAngle.Angle1, fileimage1, medialabel1);
+                       } else if (sender == mediafilechooser2) {
+                               UpdateFile (mediafilechooser2, mediafilechooser2.MediaFile,
+                                           MediaFileAngle.Angle2, fileimage2, medialabel2);
+                       } else if (sender == mediafilechooser3) {
+                               UpdateFile (mediafilechooser3, mediafilechooser3.MediaFile,
+                                           MediaFileAngle.Angle3, fileimage3, medialabel3);
+                       } else if (sender == mediafilechooser4) {
+                               UpdateFile (mediafilechooser4, mediafilechooser4.MediaFile,
+                                           MediaFileAngle.Angle4, fileimage4, medialabel4);
                        }
                }
 
diff --git a/LongoMatch.GUI/LongoMatch.GUI.csproj b/LongoMatch.GUI/LongoMatch.GUI.csproj
index 734bf99..0b4ca14 100644
--- a/LongoMatch.GUI/LongoMatch.GUI.csproj
+++ b/LongoMatch.GUI/LongoMatch.GUI.csproj
@@ -20,7 +20,7 @@
     <WarningLevel>4</WarningLevel>
     <AssemblyOriginatorKeyFile>..\..\..\Proyectos\longomatch\LongoMatch</AssemblyOriginatorKeyFile>
     <Execution>
-      <Execution clr-version="Net_2_0" xmlns="" />
+      <Execution clr-version="Net_2_0" />
     </Execution>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
   </PropertyGroup>
@@ -32,7 +32,7 @@
     <WarningLevel>3</WarningLevel>
     <AssemblyOriginatorKeyFile>..\..\..\Proyectos\LongoMatch\LongoMatch.GUI</AssemblyOriginatorKeyFile>
     <Execution>
-      <Execution clr-version="Net_2_0" xmlns="" />
+      <Execution clr-version="Net_2_0" />
     </Execution>
     <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
   </PropertyGroup>
@@ -187,6 +187,8 @@
     <Compile Include="gtk-gui\LongoMatch.Gui.Dialog.SubstitutionsEditor.cs" />
     <Compile Include="Gui\Dialog\EventTypeTagsEditor.cs" />
     <Compile Include="gtk-gui\LongoMatch.Gui.Dialog.EventTypeTagsEditor.cs" />
+    <Compile Include="Gui\Component\MediaFileSetSelection.cs" />
+    <Compile Include="gtk-gui\LongoMatch.Gui.Component.MediaFileSetSelection.cs" />
   </ItemGroup>
   <ItemGroup>
     <EmbeddedResource Include="gtk-gui\gui.stetic">
diff --git a/LongoMatch.GUI/Makefile.am b/LongoMatch.GUI/Makefile.am
index 78a398a..cef6626 100644
--- a/LongoMatch.GUI/Makefile.am
+++ b/LongoMatch.GUI/Makefile.am
@@ -14,6 +14,7 @@ SOURCES = Gui/Cairo.cs \
        Gui/Component/GeneralPreferencesPanel.cs \
        Gui/Component/LiveAnalysisPreferences.cs \
        Gui/Component/MediaFileChooser.cs \
+       Gui/Component/MediaFileSetSelection.cs \
        Gui/Component/NotesWidget.cs \
        Gui/Component/PeriodsRecoder.cs \
        Gui/Component/PlayListWidget.cs \
@@ -91,6 +92,7 @@ SOURCES = Gui/Cairo.cs \
        gtk-gui/LongoMatch.Gui.Component.GeneralPreferencesPanel.cs \
        gtk-gui/LongoMatch.Gui.Component.LiveAnalysisPreferences.cs \
        gtk-gui/LongoMatch.Gui.Component.MediaFileChooser.cs \
+       gtk-gui/LongoMatch.Gui.Component.MediaFileSetSelection.cs \
        gtk-gui/LongoMatch.Gui.Component.NotesWidget.cs \
        gtk-gui/LongoMatch.Gui.Component.PeriodsRecoder.cs \
        gtk-gui/LongoMatch.Gui.Component.PlayListWidget.cs \
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.MediaFileSetSelection.cs 
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.MediaFileSetSelection.cs
new file mode 100644
index 0000000..bda6494
--- /dev/null
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.MediaFileSetSelection.cs
@@ -0,0 +1,235 @@
+
+// This file has been generated by the GUI designer. Do not modify.
+namespace LongoMatch.Gui.Component
+{
+       public partial class MediaFileSetSelection
+       {
+               private global::Gtk.Table filetable;
+               private global::Gtk.Frame frame1;
+               private global::Gtk.Alignment GtkAlignment3;
+               private global::LongoMatch.Gui.Component.MediaFileChooser mediafilechooser1;
+               private global::Gtk.Label GtkLabel3;
+               private global::Gtk.Frame frame2;
+               private global::Gtk.Alignment GtkAlignment2;
+               private global::Gtk.HBox file2box;
+               private global::LongoMatch.Gui.Component.MediaFileChooser mediafilechooser2;
+               private global::Gtk.Button delfile2button;
+               private global::Gtk.Label GtkLabel2;
+               private global::Gtk.Frame frame3;
+               private global::Gtk.Alignment GtkAlignment1;
+               private global::Gtk.HBox file3box;
+               private global::LongoMatch.Gui.Component.MediaFileChooser mediafilechooser3;
+               private global::Gtk.Button delfile3button;
+               private global::Gtk.Label GtkLabel4;
+               private global::Gtk.Frame frame4;
+               private global::Gtk.Alignment GtkAlignment;
+               private global::Gtk.HBox file4box;
+               private global::LongoMatch.Gui.Component.MediaFileChooser mediafilechooser4;
+               private global::Gtk.Button delfile4button;
+               private global::Gtk.Label GtkLabel5;
+
+               protected virtual void Build ()
+               {
+                       global::Stetic.Gui.Initialize (this);
+                       // Widget LongoMatch.Gui.Component.MediaFileSetSelection
+                       global::Stetic.BinContainer.Attach (this);
+                       this.Name = "LongoMatch.Gui.Component.MediaFileSetSelection";
+                       // Container child 
LongoMatch.Gui.Component.MediaFileSetSelection.Gtk.Container+ContainerChild
+                       this.filetable = new global::Gtk.Table (((uint)(2)), ((uint)(2)), true);
+                       this.filetable.Name = "filetable";
+                       this.filetable.RowSpacing = ((uint)(6));
+                       this.filetable.ColumnSpacing = ((uint)(6));
+                       // Container child filetable.Gtk.Table+TableChild
+                       this.frame1 = new global::Gtk.Frame ();
+                       this.frame1.Name = "frame1";
+                       this.frame1.ShadowType = ((global::Gtk.ShadowType)(0));
+                       // Container child frame1.Gtk.Container+ContainerChild
+                       this.GtkAlignment3 = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
+                       this.GtkAlignment3.Name = "GtkAlignment3";
+                       this.GtkAlignment3.LeftPadding = ((uint)(12));
+                       // Container child GtkAlignment3.Gtk.Container+ContainerChild
+                       this.mediafilechooser1 = new global::LongoMatch.Gui.Component.MediaFileChooser ();
+                       this.mediafilechooser1.Events = ((global::Gdk.EventMask)(256));
+                       this.mediafilechooser1.Name = "mediafilechooser1";
+                       this.GtkAlignment3.Add (this.mediafilechooser1);
+                       this.frame1.Add (this.GtkAlignment3);
+                       this.GtkLabel3 = new global::Gtk.Label ();
+                       this.GtkLabel3.Name = "GtkLabel3";
+                       this.GtkLabel3.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Angle 1</b>");
+                       this.GtkLabel3.UseMarkup = true;
+                       this.frame1.LabelWidget = this.GtkLabel3;
+                       this.filetable.Add (this.frame1);
+                       global::Gtk.Table.TableChild w3 = ((global::Gtk.Table.TableChild)(this.filetable 
[this.frame1]));
+                       w3.YOptions = ((global::Gtk.AttachOptions)(4));
+                       // Container child filetable.Gtk.Table+TableChild
+                       this.frame2 = new global::Gtk.Frame ();
+                       this.frame2.Name = "frame2";
+                       this.frame2.ShadowType = ((global::Gtk.ShadowType)(0));
+                       // Container child frame2.Gtk.Container+ContainerChild
+                       this.GtkAlignment2 = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
+                       this.GtkAlignment2.Name = "GtkAlignment2";
+                       this.GtkAlignment2.LeftPadding = ((uint)(12));
+                       // Container child GtkAlignment2.Gtk.Container+ContainerChild
+                       this.file2box = new global::Gtk.HBox ();
+                       this.file2box.Name = "file2box";
+                       // Container child file2box.Gtk.Box+BoxChild
+                       this.mediafilechooser2 = new global::LongoMatch.Gui.Component.MediaFileChooser ();
+                       this.mediafilechooser2.Events = ((global::Gdk.EventMask)(256));
+                       this.mediafilechooser2.Name = "mediafilechooser2";
+                       this.file2box.Add (this.mediafilechooser2);
+                       global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.file2box 
[this.mediafilechooser2]));
+                       w4.Position = 0;
+                       // Container child file2box.Gtk.Box+BoxChild
+                       this.delfile2button = new global::Gtk.Button ();
+                       this.delfile2button.CanFocus = true;
+                       this.delfile2button.Name = "delfile2button";
+                       this.delfile2button.UseUnderline = true;
+                       // Container child delfile2button.Gtk.Container+ContainerChild
+                       global::Gtk.Alignment w5 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+                       // Container child GtkAlignment.Gtk.Container+ContainerChild
+                       global::Gtk.HBox w6 = new global::Gtk.HBox ();
+                       w6.Spacing = 2;
+                       // Container child GtkHBox.Gtk.Container+ContainerChild
+                       global::Gtk.Image w7 = new global::Gtk.Image ();
+                       w7.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-remove", 
global::Gtk.IconSize.Menu);
+                       w6.Add (w7);
+                       // Container child GtkHBox.Gtk.Container+ContainerChild
+                       global::Gtk.Label w9 = new global::Gtk.Label ();
+                       w6.Add (w9);
+                       w5.Add (w6);
+                       this.delfile2button.Add (w5);
+                       this.file2box.Add (this.delfile2button);
+                       global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.file2box 
[this.delfile2button]));
+                       w13.Position = 1;
+                       w13.Expand = false;
+                       w13.Fill = false;
+                       this.GtkAlignment2.Add (this.file2box);
+                       this.frame2.Add (this.GtkAlignment2);
+                       this.GtkLabel2 = new global::Gtk.Label ();
+                       this.GtkLabel2.Name = "GtkLabel2";
+                       this.GtkLabel2.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Angle 2</b>");
+                       this.GtkLabel2.UseMarkup = true;
+                       this.frame2.LabelWidget = this.GtkLabel2;
+                       this.filetable.Add (this.frame2);
+                       global::Gtk.Table.TableChild w16 = ((global::Gtk.Table.TableChild)(this.filetable 
[this.frame2]));
+                       w16.LeftAttach = ((uint)(1));
+                       w16.RightAttach = ((uint)(2));
+                       w16.YOptions = ((global::Gtk.AttachOptions)(4));
+                       // Container child filetable.Gtk.Table+TableChild
+                       this.frame3 = new global::Gtk.Frame ();
+                       this.frame3.Name = "frame3";
+                       this.frame3.ShadowType = ((global::Gtk.ShadowType)(0));
+                       // Container child frame3.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.file3box = new global::Gtk.HBox ();
+                       this.file3box.Name = "file3box";
+                       // Container child file3box.Gtk.Box+BoxChild
+                       this.mediafilechooser3 = new global::LongoMatch.Gui.Component.MediaFileChooser ();
+                       this.mediafilechooser3.Events = ((global::Gdk.EventMask)(256));
+                       this.mediafilechooser3.Name = "mediafilechooser3";
+                       this.file3box.Add (this.mediafilechooser3);
+                       global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.file3box 
[this.mediafilechooser3]));
+                       w17.Position = 0;
+                       // Container child file3box.Gtk.Box+BoxChild
+                       this.delfile3button = new global::Gtk.Button ();
+                       this.delfile3button.CanFocus = true;
+                       this.delfile3button.Name = "delfile3button";
+                       this.delfile3button.UseUnderline = true;
+                       // Container child delfile3button.Gtk.Container+ContainerChild
+                       global::Gtk.Alignment w18 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+                       // Container child GtkAlignment.Gtk.Container+ContainerChild
+                       global::Gtk.HBox w19 = new global::Gtk.HBox ();
+                       w19.Spacing = 2;
+                       // Container child GtkHBox.Gtk.Container+ContainerChild
+                       global::Gtk.Image w20 = new global::Gtk.Image ();
+                       w20.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-remove", 
global::Gtk.IconSize.Menu);
+                       w19.Add (w20);
+                       // Container child GtkHBox.Gtk.Container+ContainerChild
+                       global::Gtk.Label w22 = new global::Gtk.Label ();
+                       w19.Add (w22);
+                       w18.Add (w19);
+                       this.delfile3button.Add (w18);
+                       this.file3box.Add (this.delfile3button);
+                       global::Gtk.Box.BoxChild w26 = ((global::Gtk.Box.BoxChild)(this.file3box 
[this.delfile3button]));
+                       w26.Position = 1;
+                       w26.Expand = false;
+                       w26.Fill = false;
+                       this.GtkAlignment1.Add (this.file3box);
+                       this.frame3.Add (this.GtkAlignment1);
+                       this.GtkLabel4 = new global::Gtk.Label ();
+                       this.GtkLabel4.Name = "GtkLabel4";
+                       this.GtkLabel4.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Angle 3</b>");
+                       this.GtkLabel4.UseMarkup = true;
+                       this.frame3.LabelWidget = this.GtkLabel4;
+                       this.filetable.Add (this.frame3);
+                       global::Gtk.Table.TableChild w29 = ((global::Gtk.Table.TableChild)(this.filetable 
[this.frame3]));
+                       w29.TopAttach = ((uint)(1));
+                       w29.BottomAttach = ((uint)(2));
+                       w29.YOptions = ((global::Gtk.AttachOptions)(4));
+                       // Container child filetable.Gtk.Table+TableChild
+                       this.frame4 = new global::Gtk.Frame ();
+                       this.frame4.Name = "frame4";
+                       this.frame4.ShadowType = ((global::Gtk.ShadowType)(0));
+                       // Container child frame4.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.file4box = new global::Gtk.HBox ();
+                       this.file4box.Name = "file4box";
+                       // Container child file4box.Gtk.Box+BoxChild
+                       this.mediafilechooser4 = new global::LongoMatch.Gui.Component.MediaFileChooser ();
+                       this.mediafilechooser4.Events = ((global::Gdk.EventMask)(256));
+                       this.mediafilechooser4.Name = "mediafilechooser4";
+                       this.file4box.Add (this.mediafilechooser4);
+                       global::Gtk.Box.BoxChild w30 = ((global::Gtk.Box.BoxChild)(this.file4box 
[this.mediafilechooser4]));
+                       w30.Position = 0;
+                       // Container child file4box.Gtk.Box+BoxChild
+                       this.delfile4button = new global::Gtk.Button ();
+                       this.delfile4button.CanFocus = true;
+                       this.delfile4button.Name = "delfile4button";
+                       this.delfile4button.UseUnderline = true;
+                       // Container child delfile4button.Gtk.Container+ContainerChild
+                       global::Gtk.Alignment w31 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+                       // Container child GtkAlignment.Gtk.Container+ContainerChild
+                       global::Gtk.HBox w32 = new global::Gtk.HBox ();
+                       w32.Spacing = 2;
+                       // Container child GtkHBox.Gtk.Container+ContainerChild
+                       global::Gtk.Image w33 = new global::Gtk.Image ();
+                       w33.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-remove", 
global::Gtk.IconSize.Menu);
+                       w32.Add (w33);
+                       // Container child GtkHBox.Gtk.Container+ContainerChild
+                       global::Gtk.Label w35 = new global::Gtk.Label ();
+                       w32.Add (w35);
+                       w31.Add (w32);
+                       this.delfile4button.Add (w31);
+                       this.file4box.Add (this.delfile4button);
+                       global::Gtk.Box.BoxChild w39 = ((global::Gtk.Box.BoxChild)(this.file4box 
[this.delfile4button]));
+                       w39.Position = 1;
+                       w39.Expand = false;
+                       w39.Fill = false;
+                       this.GtkAlignment.Add (this.file4box);
+                       this.frame4.Add (this.GtkAlignment);
+                       this.GtkLabel5 = new global::Gtk.Label ();
+                       this.GtkLabel5.Name = "GtkLabel5";
+                       this.GtkLabel5.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Angle 4</b>");
+                       this.GtkLabel5.UseMarkup = true;
+                       this.frame4.LabelWidget = this.GtkLabel5;
+                       this.filetable.Add (this.frame4);
+                       global::Gtk.Table.TableChild w42 = ((global::Gtk.Table.TableChild)(this.filetable 
[this.frame4]));
+                       w42.TopAttach = ((uint)(1));
+                       w42.BottomAttach = ((uint)(2));
+                       w42.LeftAttach = ((uint)(1));
+                       w42.RightAttach = ((uint)(2));
+                       w42.YOptions = ((global::Gtk.AttachOptions)(4));
+                       this.Add (this.filetable);
+                       if ((this.Child != null)) {
+                               this.Child.ShowAll ();
+                       }
+                       this.Hide ();
+               }
+       }
+}
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ProjectListWidget.cs 
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ProjectListWidget.cs
index 7ec2a23..65d0d7b 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ProjectListWidget.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ProjectListWidget.cs
@@ -51,7 +51,6 @@ namespace LongoMatch.Gui.Component
                        // Container child vbox2.Gtk.Box+BoxChild
                        this.scrolledwindow2 = new global::Gtk.ScrolledWindow ();
                        this.scrolledwindow2.CanFocus = true;
-                       this.scrolledwindow2.Name = "scrolledwindow2";
                        // Container child scrolledwindow2.Gtk.Container+ContainerChild
                        this.iconview = new global::Gtk.IconView ();
                        this.iconview.CanFocus = true;
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ProjectPeriods.cs 
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ProjectPeriods.cs
index 49acab1..bbff674 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ProjectPeriods.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ProjectPeriods.cs
@@ -115,7 +115,6 @@ namespace LongoMatch.Gui.Component
                        this.scrolledwindow2 = new global::Gtk.ScrolledWindow ();
                        this.scrolledwindow2.HeightRequest = 50;
                        this.scrolledwindow2.CanFocus = true;
-                       this.scrolledwindow2.Name = "scrolledwindow2";
                        // Container child scrolledwindow2.Gtk.Container+ContainerChild
                        global::Gtk.Viewport w23 = new global::Gtk.Viewport ();
                        w23.ShadowType = ((global::Gtk.ShadowType)(0));
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.Stats.CategoryViewer.cs 
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.Stats.CategoryViewer.cs
index b1e599a..5aa5c26 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.Stats.CategoryViewer.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.Stats.CategoryViewer.cs
@@ -42,7 +42,7 @@ namespace LongoMatch.Gui.Component.Stats
                        this.notebook1 = new global::Gtk.Notebook ();
                        this.notebook1.CanFocus = true;
                        this.notebook1.Name = "notebook1";
-                       this.notebook1.CurrentPage = 0;
+                       this.notebook1.CurrentPage = 1;
                        // Container child notebook1.Gtk.Notebook+NotebookChild
                        this.vbox1 = new global::Gtk.VBox ();
                        this.vbox1.Name = "vbox1";
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.NewProjectPanel.cs 
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.NewProjectPanel.cs
index 0be8b5e..2fd6175 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.NewProjectPanel.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.NewProjectPanel.cs
@@ -46,21 +46,18 @@ namespace LongoMatch.Gui.Panel
                private global::LongoMatch.Gui.Component.HomeTeamsComboBox hometeamscombobox;
                private global::Gtk.Image vsimage;
                private global::LongoMatch.Gui.Component.AwayTeamsComboBox awayteamscombobox;
-               private global::Gtk.Label filelabel;
-               private global::Gtk.Table filetable;
-               private global::LongoMatch.Gui.Component.MediaFileChooser mediafilechooser1;
-               private global::LongoMatch.Gui.Component.MediaFileChooser mediafilechooser2;
+               private global::LongoMatch.Gui.Component.MediaFileSetSelection mediafilesetselection1;
                private global::Gtk.Table outputfiletable;
                private global::LongoMatch.Gui.Component.MediaFileChooser capturemediafilechooser;
                private global::Gtk.Label outputfilelabel;
                private global::Gtk.HBox hbox10;
                private global::Gtk.Table lcapturetable;
-               private global::Gtk.HBox hbox6;
-               private global::Gtk.Label device;
-               private global::Gtk.Label urilabel;
                private global::Gtk.HBox hbox7;
                private global::Gtk.ComboBox devicecombobox;
                private global::Gtk.Entry urientry;
+               private global::Gtk.HBox hbox8;
+               private global::Gtk.Label device;
+               private global::Gtk.Label urilabel;
                private global::Gtk.ComboBox imagecombobox;
                private global::Gtk.Label sizelabel;
                private global::Gtk.Table rcapturetable;
@@ -103,7 +100,7 @@ namespace LongoMatch.Gui.Panel
                        this.notebook1 = new global::Gtk.Notebook ();
                        this.notebook1.CanFocus = true;
                        this.notebook1.Name = "notebook1";
-                       this.notebook1.CurrentPage = 0;
+                       this.notebook1.CurrentPage = 1;
                        this.notebook1.ShowBorder = false;
                        this.notebook1.Scrollable = true;
                        // Container child notebook1.Gtk.Notebook+NotebookChild
@@ -402,40 +399,15 @@ namespace LongoMatch.Gui.Panel
                        w35.Expand = false;
                        w35.Fill = false;
                        // Container child centerbox.Gtk.Box+BoxChild
-                       this.filelabel = new global::Gtk.Label ();
-                       this.filelabel.Name = "filelabel";
-                       this.filelabel.Xalign = 0F;
-                       this.filelabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Video files");
-                       this.centerbox.Add (this.filelabel);
-                       global::Gtk.Box.BoxChild w36 = ((global::Gtk.Box.BoxChild)(this.centerbox 
[this.filelabel]));
+                       this.mediafilesetselection1 = new 
global::LongoMatch.Gui.Component.MediaFileSetSelection ();
+                       this.mediafilesetselection1.Events = ((global::Gdk.EventMask)(256));
+                       this.mediafilesetselection1.Name = "mediafilesetselection1";
+                       this.centerbox.Add (this.mediafilesetselection1);
+                       global::Gtk.Box.BoxChild w36 = ((global::Gtk.Box.BoxChild)(this.centerbox 
[this.mediafilesetselection1]));
                        w36.Position = 1;
                        w36.Expand = false;
                        w36.Fill = false;
                        // Container child centerbox.Gtk.Box+BoxChild
-                       this.filetable = new global::Gtk.Table (((uint)(2)), ((uint)(2)), false);
-                       this.filetable.Name = "filetable";
-                       this.filetable.RowSpacing = ((uint)(6));
-                       this.filetable.ColumnSpacing = ((uint)(6));
-                       // Container child filetable.Gtk.Table+TableChild
-                       this.mediafilechooser1 = new global::LongoMatch.Gui.Component.MediaFileChooser ();
-                       this.mediafilechooser1.Events = ((global::Gdk.EventMask)(256));
-                       this.mediafilechooser1.Name = "mediafilechooser1";
-                       this.filetable.Add (this.mediafilechooser1);
-                       global::Gtk.Table.TableChild w37 = ((global::Gtk.Table.TableChild)(this.filetable 
[this.mediafilechooser1]));
-                       w37.YOptions = ((global::Gtk.AttachOptions)(4));
-                       // Container child filetable.Gtk.Table+TableChild
-                       this.mediafilechooser2 = new global::LongoMatch.Gui.Component.MediaFileChooser ();
-                       this.mediafilechooser2.Events = ((global::Gdk.EventMask)(256));
-                       this.mediafilechooser2.Name = "mediafilechooser2";
-                       this.filetable.Add (this.mediafilechooser2);
-                       global::Gtk.Table.TableChild w38 = ((global::Gtk.Table.TableChild)(this.filetable 
[this.mediafilechooser2]));
-                       w38.LeftAttach = ((uint)(1));
-                       w38.RightAttach = ((uint)(2));
-                       w38.YOptions = ((global::Gtk.AttachOptions)(4));
-                       this.centerbox.Add (this.filetable);
-                       global::Gtk.Box.BoxChild w39 = ((global::Gtk.Box.BoxChild)(this.centerbox 
[this.filetable]));
-                       w39.Position = 2;
-                       // Container child centerbox.Gtk.Box+BoxChild
                        this.outputfiletable = new global::Gtk.Table (((uint)(1)), ((uint)(2)), false);
                        this.outputfiletable.Name = "outputfiletable";
                        this.outputfiletable.RowSpacing = ((uint)(6));
@@ -445,23 +417,23 @@ namespace LongoMatch.Gui.Panel
                        this.capturemediafilechooser.Events = ((global::Gdk.EventMask)(256));
                        this.capturemediafilechooser.Name = "capturemediafilechooser";
                        this.outputfiletable.Add (this.capturemediafilechooser);
-                       global::Gtk.Table.TableChild w40 = 
((global::Gtk.Table.TableChild)(this.outputfiletable [this.capturemediafilechooser]));
-                       w40.LeftAttach = ((uint)(1));
-                       w40.RightAttach = ((uint)(2));
-                       w40.YOptions = ((global::Gtk.AttachOptions)(4));
+                       global::Gtk.Table.TableChild w37 = 
((global::Gtk.Table.TableChild)(this.outputfiletable [this.capturemediafilechooser]));
+                       w37.LeftAttach = ((uint)(1));
+                       w37.RightAttach = ((uint)(2));
+                       w37.YOptions = ((global::Gtk.AttachOptions)(4));
                        // Container child outputfiletable.Gtk.Table+TableChild
                        this.outputfilelabel = new global::Gtk.Label ();
                        this.outputfilelabel.Name = "outputfilelabel";
                        this.outputfilelabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Output file");
                        this.outputfiletable.Add (this.outputfilelabel);
-                       global::Gtk.Table.TableChild w41 = 
((global::Gtk.Table.TableChild)(this.outputfiletable [this.outputfilelabel]));
-                       w41.XOptions = ((global::Gtk.AttachOptions)(4));
-                       w41.YOptions = ((global::Gtk.AttachOptions)(4));
+                       global::Gtk.Table.TableChild w38 = 
((global::Gtk.Table.TableChild)(this.outputfiletable [this.outputfilelabel]));
+                       w38.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w38.YOptions = ((global::Gtk.AttachOptions)(4));
                        this.centerbox.Add (this.outputfiletable);
-                       global::Gtk.Box.BoxChild w42 = ((global::Gtk.Box.BoxChild)(this.centerbox 
[this.outputfiletable]));
-                       w42.Position = 3;
-                       w42.Expand = false;
-                       w42.Fill = false;
+                       global::Gtk.Box.BoxChild w39 = ((global::Gtk.Box.BoxChild)(this.centerbox 
[this.outputfiletable]));
+                       w39.Position = 2;
+                       w39.Expand = false;
+                       w39.Fill = false;
                        // Container child centerbox.Gtk.Box+BoxChild
                        this.hbox10 = new global::Gtk.HBox ();
                        this.hbox10.Name = "hbox10";
@@ -473,28 +445,6 @@ namespace LongoMatch.Gui.Panel
                        this.lcapturetable.RowSpacing = ((uint)(6));
                        this.lcapturetable.ColumnSpacing = ((uint)(6));
                        // Container child lcapturetable.Gtk.Table+TableChild
-                       this.hbox6 = new global::Gtk.HBox ();
-                       this.hbox6.Name = "hbox6";
-                       this.hbox6.Spacing = 6;
-                       // Container child hbox6.Gtk.Box+BoxChild
-                       this.device = new global::Gtk.Label ();
-                       this.device.Name = "device";
-                       this.device.LabelProp = global::Mono.Unix.Catalog.GetString ("Device");
-                       this.hbox6.Add (this.device);
-                       global::Gtk.Box.BoxChild w43 = ((global::Gtk.Box.BoxChild)(this.hbox6 [this.device]));
-                       w43.Position = 0;
-                       // Container child hbox6.Gtk.Box+BoxChild
-                       this.urilabel = new global::Gtk.Label ();
-                       this.urilabel.Name = "urilabel";
-                       this.urilabel.LabelProp = global::Mono.Unix.Catalog.GetString ("URL");
-                       this.hbox6.Add (this.urilabel);
-                       global::Gtk.Box.BoxChild w44 = ((global::Gtk.Box.BoxChild)(this.hbox6 
[this.urilabel]));
-                       w44.Position = 1;
-                       this.lcapturetable.Add (this.hbox6);
-                       global::Gtk.Table.TableChild w45 = ((global::Gtk.Table.TableChild)(this.lcapturetable 
[this.hbox6]));
-                       w45.XOptions = ((global::Gtk.AttachOptions)(4));
-                       w45.YOptions = ((global::Gtk.AttachOptions)(4));
-                       // Container child lcapturetable.Gtk.Table+TableChild
                        this.hbox7 = new global::Gtk.HBox ();
                        this.hbox7.Name = "hbox7";
                        this.hbox7.Spacing = 6;
@@ -502,8 +452,8 @@ namespace LongoMatch.Gui.Panel
                        this.devicecombobox = global::Gtk.ComboBox.NewText ();
                        this.devicecombobox.Name = "devicecombobox";
                        this.hbox7.Add (this.devicecombobox);
-                       global::Gtk.Box.BoxChild w46 = ((global::Gtk.Box.BoxChild)(this.hbox7 
[this.devicecombobox]));
-                       w46.Position = 0;
+                       global::Gtk.Box.BoxChild w40 = ((global::Gtk.Box.BoxChild)(this.hbox7 
[this.devicecombobox]));
+                       w40.Position = 0;
                        // Container child hbox7.Gtk.Box+BoxChild
                        this.urientry = new global::Gtk.Entry ();
                        this.urientry.CanFocus = true;
@@ -511,40 +461,62 @@ namespace LongoMatch.Gui.Panel
                        this.urientry.IsEditable = true;
                        this.urientry.InvisibleChar = '•';
                        this.hbox7.Add (this.urientry);
-                       global::Gtk.Box.BoxChild w47 = ((global::Gtk.Box.BoxChild)(this.hbox7 
[this.urientry]));
-                       w47.Position = 1;
+                       global::Gtk.Box.BoxChild w41 = ((global::Gtk.Box.BoxChild)(this.hbox7 
[this.urientry]));
+                       w41.Position = 1;
                        this.lcapturetable.Add (this.hbox7);
-                       global::Gtk.Table.TableChild w48 = ((global::Gtk.Table.TableChild)(this.lcapturetable 
[this.hbox7]));
-                       w48.LeftAttach = ((uint)(1));
-                       w48.RightAttach = ((uint)(2));
-                       w48.XOptions = ((global::Gtk.AttachOptions)(4));
-                       w48.YOptions = ((global::Gtk.AttachOptions)(4));
+                       global::Gtk.Table.TableChild w42 = ((global::Gtk.Table.TableChild)(this.lcapturetable 
[this.hbox7]));
+                       w42.LeftAttach = ((uint)(1));
+                       w42.RightAttach = ((uint)(2));
+                       w42.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w42.YOptions = ((global::Gtk.AttachOptions)(4));
+                       // Container child lcapturetable.Gtk.Table+TableChild
+                       this.hbox8 = new global::Gtk.HBox ();
+                       this.hbox8.Name = "hbox8";
+                       this.hbox8.Spacing = 6;
+                       // Container child hbox8.Gtk.Box+BoxChild
+                       this.device = new global::Gtk.Label ();
+                       this.device.Name = "device";
+                       this.device.LabelProp = global::Mono.Unix.Catalog.GetString ("Device");
+                       this.hbox8.Add (this.device);
+                       global::Gtk.Box.BoxChild w43 = ((global::Gtk.Box.BoxChild)(this.hbox8 [this.device]));
+                       w43.Position = 0;
+                       // Container child hbox8.Gtk.Box+BoxChild
+                       this.urilabel = new global::Gtk.Label ();
+                       this.urilabel.Name = "urilabel";
+                       this.urilabel.LabelProp = global::Mono.Unix.Catalog.GetString ("URL");
+                       this.hbox8.Add (this.urilabel);
+                       global::Gtk.Box.BoxChild w44 = ((global::Gtk.Box.BoxChild)(this.hbox8 
[this.urilabel]));
+                       w44.Position = 1;
+                       this.lcapturetable.Add (this.hbox8);
+                       global::Gtk.Table.TableChild w45 = ((global::Gtk.Table.TableChild)(this.lcapturetable 
[this.hbox8]));
+                       w45.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w45.YOptions = ((global::Gtk.AttachOptions)(4));
                        // Container child lcapturetable.Gtk.Table+TableChild
                        this.imagecombobox = global::Gtk.ComboBox.NewText ();
                        this.imagecombobox.Name = "imagecombobox";
                        this.lcapturetable.Add (this.imagecombobox);
-                       global::Gtk.Table.TableChild w49 = ((global::Gtk.Table.TableChild)(this.lcapturetable 
[this.imagecombobox]));
-                       w49.TopAttach = ((uint)(1));
-                       w49.BottomAttach = ((uint)(2));
-                       w49.LeftAttach = ((uint)(1));
-                       w49.RightAttach = ((uint)(2));
-                       w49.XOptions = ((global::Gtk.AttachOptions)(4));
-                       w49.YOptions = ((global::Gtk.AttachOptions)(4));
+                       global::Gtk.Table.TableChild w46 = ((global::Gtk.Table.TableChild)(this.lcapturetable 
[this.imagecombobox]));
+                       w46.TopAttach = ((uint)(1));
+                       w46.BottomAttach = ((uint)(2));
+                       w46.LeftAttach = ((uint)(1));
+                       w46.RightAttach = ((uint)(2));
+                       w46.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w46.YOptions = ((global::Gtk.AttachOptions)(4));
                        // Container child lcapturetable.Gtk.Table+TableChild
                        this.sizelabel = new global::Gtk.Label ();
                        this.sizelabel.Name = "sizelabel";
                        this.sizelabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Size");
                        this.lcapturetable.Add (this.sizelabel);
-                       global::Gtk.Table.TableChild w50 = ((global::Gtk.Table.TableChild)(this.lcapturetable 
[this.sizelabel]));
-                       w50.TopAttach = ((uint)(1));
-                       w50.BottomAttach = ((uint)(2));
-                       w50.XOptions = ((global::Gtk.AttachOptions)(4));
-                       w50.YOptions = ((global::Gtk.AttachOptions)(4));
+                       global::Gtk.Table.TableChild w47 = ((global::Gtk.Table.TableChild)(this.lcapturetable 
[this.sizelabel]));
+                       w47.TopAttach = ((uint)(1));
+                       w47.BottomAttach = ((uint)(2));
+                       w47.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w47.YOptions = ((global::Gtk.AttachOptions)(4));
                        this.hbox10.Add (this.lcapturetable);
-                       global::Gtk.Box.BoxChild w51 = ((global::Gtk.Box.BoxChild)(this.hbox10 
[this.lcapturetable]));
-                       w51.Position = 0;
-                       w51.Expand = false;
-                       w51.Fill = false;
+                       global::Gtk.Box.BoxChild w48 = ((global::Gtk.Box.BoxChild)(this.hbox10 
[this.lcapturetable]));
+                       w48.Position = 0;
+                       w48.Expand = false;
+                       w48.Fill = false;
                        // Container child hbox10.Gtk.Box+BoxChild
                        this.rcapturetable = new global::Gtk.Table (((uint)(2)), ((uint)(2)), false);
                        this.rcapturetable.Name = "rcapturetable";
@@ -554,50 +526,50 @@ namespace LongoMatch.Gui.Panel
                        this.encodingcombobox = global::Gtk.ComboBox.NewText ();
                        this.encodingcombobox.Name = "encodingcombobox";
                        this.rcapturetable.Add (this.encodingcombobox);
-                       global::Gtk.Table.TableChild w52 = ((global::Gtk.Table.TableChild)(this.rcapturetable 
[this.encodingcombobox]));
-                       w52.LeftAttach = ((uint)(1));
-                       w52.RightAttach = ((uint)(2));
-                       w52.YOptions = ((global::Gtk.AttachOptions)(4));
+                       global::Gtk.Table.TableChild w49 = ((global::Gtk.Table.TableChild)(this.rcapturetable 
[this.encodingcombobox]));
+                       w49.LeftAttach = ((uint)(1));
+                       w49.RightAttach = ((uint)(2));
+                       w49.YOptions = ((global::Gtk.AttachOptions)(4));
                        // Container child rcapturetable.Gtk.Table+TableChild
                        this.qualitycombobox = global::Gtk.ComboBox.NewText ();
                        this.qualitycombobox.Name = "qualitycombobox";
                        this.rcapturetable.Add (this.qualitycombobox);
-                       global::Gtk.Table.TableChild w53 = ((global::Gtk.Table.TableChild)(this.rcapturetable 
[this.qualitycombobox]));
-                       w53.TopAttach = ((uint)(1));
-                       w53.BottomAttach = ((uint)(2));
-                       w53.LeftAttach = ((uint)(1));
-                       w53.RightAttach = ((uint)(2));
-                       w53.YOptions = ((global::Gtk.AttachOptions)(4));
+                       global::Gtk.Table.TableChild w50 = ((global::Gtk.Table.TableChild)(this.rcapturetable 
[this.qualitycombobox]));
+                       w50.TopAttach = ((uint)(1));
+                       w50.BottomAttach = ((uint)(2));
+                       w50.LeftAttach = ((uint)(1));
+                       w50.RightAttach = ((uint)(2));
+                       w50.YOptions = ((global::Gtk.AttachOptions)(4));
                        // Container child rcapturetable.Gtk.Table+TableChild
                        this.qualitylabel = new global::Gtk.Label ();
                        this.qualitylabel.Name = "qualitylabel";
                        this.qualitylabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Quality");
                        this.rcapturetable.Add (this.qualitylabel);
-                       global::Gtk.Table.TableChild w54 = ((global::Gtk.Table.TableChild)(this.rcapturetable 
[this.qualitylabel]));
-                       w54.TopAttach = ((uint)(1));
-                       w54.BottomAttach = ((uint)(2));
-                       w54.XOptions = ((global::Gtk.AttachOptions)(4));
-                       w54.YOptions = ((global::Gtk.AttachOptions)(4));
+                       global::Gtk.Table.TableChild w51 = ((global::Gtk.Table.TableChild)(this.rcapturetable 
[this.qualitylabel]));
+                       w51.TopAttach = ((uint)(1));
+                       w51.BottomAttach = ((uint)(2));
+                       w51.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w51.YOptions = ((global::Gtk.AttachOptions)(4));
                        // Container child rcapturetable.Gtk.Table+TableChild
                        this.videoformatlabel = new global::Gtk.Label ();
                        this.videoformatlabel.Name = "videoformatlabel";
                        this.videoformatlabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Format");
                        this.rcapturetable.Add (this.videoformatlabel);
-                       global::Gtk.Table.TableChild w55 = ((global::Gtk.Table.TableChild)(this.rcapturetable 
[this.videoformatlabel]));
-                       w55.XOptions = ((global::Gtk.AttachOptions)(4));
-                       w55.YOptions = ((global::Gtk.AttachOptions)(4));
+                       global::Gtk.Table.TableChild w52 = ((global::Gtk.Table.TableChild)(this.rcapturetable 
[this.videoformatlabel]));
+                       w52.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w52.YOptions = ((global::Gtk.AttachOptions)(4));
                        this.hbox10.Add (this.rcapturetable);
-                       global::Gtk.Box.BoxChild w56 = ((global::Gtk.Box.BoxChild)(this.hbox10 
[this.rcapturetable]));
-                       w56.Position = 1;
+                       global::Gtk.Box.BoxChild w53 = ((global::Gtk.Box.BoxChild)(this.hbox10 
[this.rcapturetable]));
+                       w53.Position = 1;
                        this.centerbox.Add (this.hbox10);
-                       global::Gtk.Box.BoxChild w57 = ((global::Gtk.Box.BoxChild)(this.centerbox 
[this.hbox10]));
-                       w57.Position = 4;
-                       w57.Expand = false;
-                       w57.Fill = false;
+                       global::Gtk.Box.BoxChild w54 = ((global::Gtk.Box.BoxChild)(this.centerbox 
[this.hbox10]));
+                       w54.Position = 3;
+                       w54.Expand = false;
+                       w54.Fill = false;
                        this.topbox.Add (this.centerbox);
-                       global::Gtk.Box.BoxChild w58 = ((global::Gtk.Box.BoxChild)(this.topbox 
[this.centerbox]));
-                       w58.Position = 1;
-                       w58.Fill = false;
+                       global::Gtk.Box.BoxChild w55 = ((global::Gtk.Box.BoxChild)(this.topbox 
[this.centerbox]));
+                       w55.Position = 1;
+                       w55.Fill = false;
                        // Container child topbox.Gtk.Box+BoxChild
                        this.righttable = new global::Gtk.Table (((uint)(3)), ((uint)(2)), true);
                        this.righttable.Name = "righttable";
@@ -608,28 +580,28 @@ namespace LongoMatch.Gui.Panel
                        this.analysislabel.Name = "analysislabel";
                        this.analysislabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Analysis 
Template:");
                        this.righttable.Add (this.analysislabel);
-                       global::Gtk.Table.TableChild w59 = ((global::Gtk.Table.TableChild)(this.righttable 
[this.analysislabel]));
-                       w59.XOptions = ((global::Gtk.AttachOptions)(4));
-                       w59.YOptions = ((global::Gtk.AttachOptions)(4));
+                       global::Gtk.Table.TableChild w56 = ((global::Gtk.Table.TableChild)(this.righttable 
[this.analysislabel]));
+                       w56.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w56.YOptions = ((global::Gtk.AttachOptions)(4));
                        // Container child righttable.Gtk.Table+TableChild
                        this.tagscombobox = global::Gtk.ComboBox.NewText ();
                        this.tagscombobox.Name = "tagscombobox";
                        this.righttable.Add (this.tagscombobox);
-                       global::Gtk.Table.TableChild w60 = ((global::Gtk.Table.TableChild)(this.righttable 
[this.tagscombobox]));
-                       w60.LeftAttach = ((uint)(1));
-                       w60.RightAttach = ((uint)(2));
-                       w60.YOptions = ((global::Gtk.AttachOptions)(0));
+                       global::Gtk.Table.TableChild w57 = ((global::Gtk.Table.TableChild)(this.righttable 
[this.tagscombobox]));
+                       w57.LeftAttach = ((uint)(1));
+                       w57.RightAttach = ((uint)(2));
+                       w57.YOptions = ((global::Gtk.AttachOptions)(0));
                        this.topbox.Add (this.righttable);
-                       global::Gtk.Box.BoxChild w61 = ((global::Gtk.Box.BoxChild)(this.topbox 
[this.righttable]));
-                       w61.Position = 2;
-                       w61.Expand = false;
-                       w61.Fill = false;
+                       global::Gtk.Box.BoxChild w58 = ((global::Gtk.Box.BoxChild)(this.topbox 
[this.righttable]));
+                       w58.Position = 2;
+                       w58.Expand = false;
+                       w58.Fill = false;
                        this.alignment1.Add (this.topbox);
                        this.vbox5.Add (this.alignment1);
-                       global::Gtk.Box.BoxChild w63 = ((global::Gtk.Box.BoxChild)(this.vbox5 
[this.alignment1]));
-                       w63.Position = 0;
-                       w63.Expand = false;
-                       w63.Fill = false;
+                       global::Gtk.Box.BoxChild w60 = ((global::Gtk.Box.BoxChild)(this.vbox5 
[this.alignment1]));
+                       w60.Position = 0;
+                       w60.Expand = false;
+                       w60.Fill = false;
                        // Container child vbox5.Gtk.Box+BoxChild
                        this.vbox6 = new global::Gtk.VBox ();
                        this.vbox6.Name = "vbox6";
@@ -638,16 +610,16 @@ namespace LongoMatch.Gui.Panel
                        this.drawingarea = new global::Gtk.DrawingArea ();
                        this.drawingarea.Name = "drawingarea";
                        this.vbox6.Add (this.drawingarea);
-                       global::Gtk.Box.BoxChild w64 = ((global::Gtk.Box.BoxChild)(this.vbox6 
[this.drawingarea]));
-                       w64.Position = 0;
+                       global::Gtk.Box.BoxChild w61 = ((global::Gtk.Box.BoxChild)(this.vbox6 
[this.drawingarea]));
+                       w61.Position = 0;
                        this.vbox5.Add (this.vbox6);
-                       global::Gtk.Box.BoxChild w65 = ((global::Gtk.Box.BoxChild)(this.vbox5 [this.vbox6]));
-                       w65.Position = 1;
+                       global::Gtk.Box.BoxChild w62 = ((global::Gtk.Box.BoxChild)(this.vbox5 [this.vbox6]));
+                       w62.Position = 1;
                        this.notebook1.Add (this.vbox5);
-                       global::Gtk.Notebook.NotebookChild w66 = 
((global::Gtk.Notebook.NotebookChild)(this.notebook1 [this.vbox5]));
-                       w66.Position = 1;
-                       w66.TabFill = false;
-                       w66.MenuLabel = "";
+                       global::Gtk.Notebook.NotebookChild w63 = 
((global::Gtk.Notebook.NotebookChild)(this.notebook1 [this.vbox5]));
+                       w63.Position = 1;
+                       w63.TabFill = false;
+                       w63.MenuLabel = "";
                        // Notebook tab
                        this.label3 = new global::Gtk.Label ();
                        this.label3.Name = "label3";
@@ -659,8 +631,8 @@ namespace LongoMatch.Gui.Panel
                        this.projectperiods1.Events = ((global::Gdk.EventMask)(256));
                        this.projectperiods1.Name = "projectperiods1";
                        this.notebook1.Add (this.projectperiods1);
-                       global::Gtk.Notebook.NotebookChild w67 = 
((global::Gtk.Notebook.NotebookChild)(this.notebook1 [this.projectperiods1]));
-                       w67.Position = 2;
+                       global::Gtk.Notebook.NotebookChild w64 = 
((global::Gtk.Notebook.NotebookChild)(this.notebook1 [this.projectperiods1]));
+                       w64.Position = 2;
                        // Notebook tab
                        this.label7 = new global::Gtk.Label ();
                        this.label7.Name = "label7";
@@ -668,16 +640,16 @@ namespace LongoMatch.Gui.Panel
                        this.notebook1.SetTabLabel (this.projectperiods1, this.label7);
                        this.label7.ShowAll ();
                        this.vbox3.Add (this.notebook1);
-                       global::Gtk.Box.BoxChild w68 = ((global::Gtk.Box.BoxChild)(this.vbox3 
[this.notebook1]));
-                       w68.Position = 1;
+                       global::Gtk.Box.BoxChild w65 = ((global::Gtk.Box.BoxChild)(this.vbox3 
[this.notebook1]));
+                       w65.Position = 1;
                        this.Add (this.vbox3);
                        if ((this.Child != null)) {
                                this.Child.ShowAll ();
                        }
-                       this.device.Hide ();
-                       this.urilabel.Hide ();
                        this.devicecombobox.Hide ();
                        this.urientry.Hide ();
+                       this.device.Hide ();
+                       this.urilabel.Hide ();
                        this.rcapturetable.Hide ();
                        this.Hide ();
                }
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.ProjectsManagerPanel.cs 
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.ProjectsManagerPanel.cs
index ca48895..1feb359 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.ProjectsManagerPanel.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.ProjectsManagerPanel.cs
@@ -12,6 +12,7 @@ namespace LongoMatch.Gui.Panel
                private global::LongoMatch.Gui.Component.ProjectListWidget projectlistwidget1;
                private global::Gtk.Alignment projectpropertiesalignment;
                private global::Gtk.VBox rbox;
+               private global::Gtk.ScrolledWindow scrolledwindow3;
                private global::Gtk.VBox descbox;
                private global::Gtk.Frame frame5;
                private global::Gtk.Alignment GtkAlignment1;
@@ -42,12 +43,39 @@ namespace LongoMatch.Gui.Panel
                private global::Gtk.Frame frame3;
                private global::Gtk.Alignment GtkAlignment8;
                private global::Gtk.HBox hbox5;
-               private global::Gtk.Image fileimage;
+               private global::Gtk.Image fileimage1;
                private global::Gtk.VBox vbox1;
                private global::Gtk.Alignment mediafilechooseralignment;
-               private global::LongoMatch.Gui.Component.MediaFileChooser mediafilechooser;
-               private global::Gtk.Label medialabel;
+               private global::LongoMatch.Gui.Component.MediaFileChooser mediafilechooser1;
+               private global::Gtk.Label medialabel1;
                private global::Gtk.Label GtkLabel6;
+               private global::Gtk.Frame frame6;
+               private global::Gtk.Alignment GtkAlignment9;
+               private global::Gtk.HBox hbox7;
+               private global::Gtk.Image fileimage2;
+               private global::Gtk.VBox vbox4;
+               private global::Gtk.Alignment mediafilechooseralignment1;
+               private global::LongoMatch.Gui.Component.MediaFileChooser mediafilechooser2;
+               private global::Gtk.Label medialabel2;
+               private global::Gtk.Label GtkLabel7;
+               private global::Gtk.Frame frame7;
+               private global::Gtk.Alignment GtkAlignment10;
+               private global::Gtk.HBox hbox9;
+               private global::Gtk.Image fileimage3;
+               private global::Gtk.VBox vbox5;
+               private global::Gtk.Alignment mediafilechooseralignment2;
+               private global::LongoMatch.Gui.Component.MediaFileChooser mediafilechooser3;
+               private global::Gtk.Label medialabel3;
+               private global::Gtk.Label GtkLabel8;
+               private global::Gtk.Frame frame8;
+               private global::Gtk.Alignment GtkAlignment12;
+               private global::Gtk.HBox hbox11;
+               private global::Gtk.Image fileimage4;
+               private global::Gtk.VBox vbox6;
+               private global::Gtk.Alignment mediafilechooseralignment3;
+               private global::LongoMatch.Gui.Component.MediaFileChooser mediafilechooser4;
+               private global::Gtk.Label medialabel4;
+               private global::Gtk.Label GtkLabel10;
                private global::Gtk.HButtonBox hbuttonbox1;
                private global::Gtk.Button savebutton;
                private global::Gtk.Image savebuttonimage;
@@ -98,6 +126,8 @@ namespace LongoMatch.Gui.Panel
                        this.hbox4.Add (this.projectlistwidget1);
                        global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox4 
[this.projectlistwidget1]));
                        w2.Position = 0;
+                       w2.Expand = false;
+                       w2.Fill = false;
                        // Container child hbox4.Gtk.Box+BoxChild
                        this.projectpropertiesalignment = new global::Gtk.Alignment (0.5F, 0.5F, 1F, 1F);
                        this.projectpropertiesalignment.Name = "projectpropertiesalignment";
@@ -107,6 +137,15 @@ namespace LongoMatch.Gui.Panel
                        this.rbox.Name = "rbox";
                        this.rbox.Spacing = 6;
                        // Container child rbox.Gtk.Box+BoxChild
+                       this.scrolledwindow3 = new global::Gtk.ScrolledWindow ();
+                       this.scrolledwindow3.CanFocus = true;
+                       this.scrolledwindow3.Name = "scrolledwindow3";
+                       this.scrolledwindow3.HscrollbarPolicy = ((global::Gtk.PolicyType)(2));
+                       this.scrolledwindow3.ShadowType = ((global::Gtk.ShadowType)(1));
+                       // Container child scrolledwindow3.Gtk.Container+ContainerChild
+                       global::Gtk.Viewport w3 = new global::Gtk.Viewport ();
+                       w3.ShadowType = ((global::Gtk.ShadowType)(0));
+                       // Container child GtkViewport.Gtk.Container+ContainerChild
                        this.descbox = new global::Gtk.VBox ();
                        this.descbox.Name = "descbox";
                        this.descbox.Spacing = 15;
@@ -140,8 +179,8 @@ namespace LongoMatch.Gui.Panel
                        this.homelabel.UseMarkup = true;
                        this.frame1.LabelWidget = this.homelabel;
                        this.hbox2.Add (this.frame1);
-                       global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.frame1]));
-                       w5.Position = 0;
+                       global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.frame1]));
+                       w6.Position = 0;
                        // Container child hbox2.Gtk.Box+BoxChild
                        this.frame2 = new global::Gtk.Frame ();
                        this.frame2.Name = "frame2";
@@ -160,8 +199,8 @@ namespace LongoMatch.Gui.Panel
                        this.awaylabel.UseMarkup = true;
                        this.frame2.LabelWidget = this.awaylabel;
                        this.hbox2.Add (this.frame2);
-                       global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.frame2]));
-                       w8.Position = 1;
+                       global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.frame2]));
+                       w9.Position = 1;
                        this.GtkAlignment1.Add (this.hbox2);
                        this.frame5.Add (this.GtkAlignment1);
                        this.GtkLabel9 = new global::Gtk.Label ();
@@ -170,10 +209,10 @@ namespace LongoMatch.Gui.Panel
                        this.GtkLabel9.UseMarkup = true;
                        this.frame5.LabelWidget = this.GtkLabel9;
                        this.descbox.Add (this.frame5);
-                       global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.descbox 
[this.frame5]));
-                       w11.Position = 0;
-                       w11.Expand = false;
-                       w11.Fill = false;
+                       global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.descbox 
[this.frame5]));
+                       w12.Position = 0;
+                       w12.Expand = false;
+                       w12.Fill = false;
                        // Container child descbox.Gtk.Box+BoxChild
                        this.frame4 = new global::Gtk.Frame ();
                        this.frame4.Name = "frame4";
@@ -194,79 +233,79 @@ namespace LongoMatch.Gui.Panel
                        this.competitionentry.IsEditable = true;
                        this.competitionentry.InvisibleChar = '●';
                        this.table1.Add (this.competitionentry);
-                       global::Gtk.Table.TableChild w12 = ((global::Gtk.Table.TableChild)(this.table1 
[this.competitionentry]));
-                       w12.LeftAttach = ((uint)(3));
-                       w12.RightAttach = ((uint)(4));
-                       w12.YOptions = ((global::Gtk.AttachOptions)(4));
+                       global::Gtk.Table.TableChild w13 = ((global::Gtk.Table.TableChild)(this.table1 
[this.competitionentry]));
+                       w13.LeftAttach = ((uint)(3));
+                       w13.RightAttach = ((uint)(4));
+                       w13.YOptions = ((global::Gtk.AttachOptions)(4));
                        // Container child table1.Gtk.Table+TableChild
                        this.Competitionlabel = new global::Gtk.Label ();
                        this.Competitionlabel.Name = "Competitionlabel";
                        this.Competitionlabel.Xalign = 1F;
                        this.Competitionlabel.LabelProp = global::Mono.Unix.Catalog.GetString 
("Competition:");
                        this.table1.Add (this.Competitionlabel);
-                       global::Gtk.Table.TableChild w13 = ((global::Gtk.Table.TableChild)(this.table1 
[this.Competitionlabel]));
-                       w13.LeftAttach = ((uint)(2));
-                       w13.RightAttach = ((uint)(3));
-                       w13.XOptions = ((global::Gtk.AttachOptions)(4));
-                       w13.YOptions = ((global::Gtk.AttachOptions)(4));
+                       global::Gtk.Table.TableChild w14 = ((global::Gtk.Table.TableChild)(this.table1 
[this.Competitionlabel]));
+                       w14.LeftAttach = ((uint)(2));
+                       w14.RightAttach = ((uint)(3));
+                       w14.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w14.YOptions = ((global::Gtk.AttachOptions)(4));
                        // Container child table1.Gtk.Table+TableChild
                        this.datepicker = new global::LongoMatch.Gui.Component.DatePicker ();
                        this.datepicker.Events = ((global::Gdk.EventMask)(256));
                        this.datepicker.Name = "datepicker";
                        this.datepicker.Date = new global::System.DateTime (0);
                        this.table1.Add (this.datepicker);
-                       global::Gtk.Table.TableChild w14 = ((global::Gtk.Table.TableChild)(this.table1 
[this.datepicker]));
-                       w14.TopAttach = ((uint)(1));
-                       w14.BottomAttach = ((uint)(2));
-                       w14.LeftAttach = ((uint)(3));
-                       w14.RightAttach = ((uint)(4));
-                       w14.YOptions = ((global::Gtk.AttachOptions)(4));
+                       global::Gtk.Table.TableChild w15 = ((global::Gtk.Table.TableChild)(this.table1 
[this.datepicker]));
+                       w15.TopAttach = ((uint)(1));
+                       w15.BottomAttach = ((uint)(2));
+                       w15.LeftAttach = ((uint)(3));
+                       w15.RightAttach = ((uint)(4));
+                       w15.YOptions = ((global::Gtk.AttachOptions)(4));
                        // Container child table1.Gtk.Table+TableChild
                        this.label11 = new global::Gtk.Label ();
                        this.label11.Name = "label11";
                        this.label11.Xalign = 1F;
                        this.label11.LabelProp = global::Mono.Unix.Catalog.GetString ("Score:");
                        this.table1.Add (this.label11);
-                       global::Gtk.Table.TableChild w15 = ((global::Gtk.Table.TableChild)(this.table1 
[this.label11]));
-                       w15.TopAttach = ((uint)(1));
-                       w15.BottomAttach = ((uint)(2));
-                       w15.XOptions = ((global::Gtk.AttachOptions)(4));
-                       w15.YOptions = ((global::Gtk.AttachOptions)(4));
+                       global::Gtk.Table.TableChild w16 = ((global::Gtk.Table.TableChild)(this.table1 
[this.label11]));
+                       w16.TopAttach = ((uint)(1));
+                       w16.BottomAttach = ((uint)(2));
+                       w16.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w16.YOptions = ((global::Gtk.AttachOptions)(4));
                        // Container child table1.Gtk.Table+TableChild
                        this.label5 = new global::Gtk.Label ();
                        this.label5.Name = "label5";
                        this.label5.Xalign = 1F;
                        this.label5.LabelProp = global::Mono.Unix.Catalog.GetString ("Date:");
                        this.table1.Add (this.label5);
-                       global::Gtk.Table.TableChild w16 = ((global::Gtk.Table.TableChild)(this.table1 
[this.label5]));
-                       w16.TopAttach = ((uint)(1));
-                       w16.BottomAttach = ((uint)(2));
-                       w16.LeftAttach = ((uint)(2));
-                       w16.RightAttach = ((uint)(3));
-                       w16.XOptions = ((global::Gtk.AttachOptions)(4));
-                       w16.YOptions = ((global::Gtk.AttachOptions)(4));
+                       global::Gtk.Table.TableChild w17 = ((global::Gtk.Table.TableChild)(this.table1 
[this.label5]));
+                       w17.TopAttach = ((uint)(1));
+                       w17.BottomAttach = ((uint)(2));
+                       w17.LeftAttach = ((uint)(2));
+                       w17.RightAttach = ((uint)(3));
+                       w17.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w17.YOptions = ((global::Gtk.AttachOptions)(4));
                        // Container child table1.Gtk.Table+TableChild
                        this.label9 = new global::Gtk.Label ();
                        this.label9.Name = "label9";
                        this.label9.Xalign = 1F;
                        this.label9.LabelProp = global::Mono.Unix.Catalog.GetString ("Analysis Template:");
                        this.table1.Add (this.label9);
-                       global::Gtk.Table.TableChild w17 = ((global::Gtk.Table.TableChild)(this.table1 
[this.label9]));
-                       w17.TopAttach = ((uint)(2));
-                       w17.BottomAttach = ((uint)(3));
-                       w17.XOptions = ((global::Gtk.AttachOptions)(4));
-                       w17.YOptions = ((global::Gtk.AttachOptions)(4));
+                       global::Gtk.Table.TableChild w18 = ((global::Gtk.Table.TableChild)(this.table1 
[this.label9]));
+                       w18.TopAttach = ((uint)(2));
+                       w18.BottomAttach = ((uint)(3));
+                       w18.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w18.YOptions = ((global::Gtk.AttachOptions)(4));
                        // Container child table1.Gtk.Table+TableChild
                        this.scorelabel = new global::Gtk.Label ();
                        this.scorelabel.Name = "scorelabel";
                        this.table1.Add (this.scorelabel);
-                       global::Gtk.Table.TableChild w18 = ((global::Gtk.Table.TableChild)(this.table1 
[this.scorelabel]));
-                       w18.TopAttach = ((uint)(1));
-                       w18.BottomAttach = ((uint)(2));
-                       w18.LeftAttach = ((uint)(1));
-                       w18.RightAttach = ((uint)(2));
-                       w18.XOptions = ((global::Gtk.AttachOptions)(4));
-                       w18.YOptions = ((global::Gtk.AttachOptions)(4));
+                       global::Gtk.Table.TableChild w19 = ((global::Gtk.Table.TableChild)(this.table1 
[this.scorelabel]));
+                       w19.TopAttach = ((uint)(1));
+                       w19.BottomAttach = ((uint)(2));
+                       w19.LeftAttach = ((uint)(1));
+                       w19.RightAttach = ((uint)(2));
+                       w19.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w19.YOptions = ((global::Gtk.AttachOptions)(4));
                        // Container child table1.Gtk.Table+TableChild
                        this.seasonentry = new global::Gtk.Entry ();
                        this.seasonentry.CanFocus = true;
@@ -274,31 +313,31 @@ namespace LongoMatch.Gui.Panel
                        this.seasonentry.IsEditable = true;
                        this.seasonentry.InvisibleChar = '●';
                        this.table1.Add (this.seasonentry);
-                       global::Gtk.Table.TableChild w19 = ((global::Gtk.Table.TableChild)(this.table1 
[this.seasonentry]));
-                       w19.LeftAttach = ((uint)(1));
-                       w19.RightAttach = ((uint)(2));
-                       w19.XOptions = ((global::Gtk.AttachOptions)(0));
-                       w19.YOptions = ((global::Gtk.AttachOptions)(4));
+                       global::Gtk.Table.TableChild w20 = ((global::Gtk.Table.TableChild)(this.table1 
[this.seasonentry]));
+                       w20.LeftAttach = ((uint)(1));
+                       w20.RightAttach = ((uint)(2));
+                       w20.XOptions = ((global::Gtk.AttachOptions)(0));
+                       w20.YOptions = ((global::Gtk.AttachOptions)(4));
                        // Container child table1.Gtk.Table+TableChild
                        this.seasonlabel = new global::Gtk.Label ();
                        this.seasonlabel.Name = "seasonlabel";
                        this.seasonlabel.Xalign = 1F;
                        this.seasonlabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Season:");
                        this.table1.Add (this.seasonlabel);
-                       global::Gtk.Table.TableChild w20 = ((global::Gtk.Table.TableChild)(this.table1 
[this.seasonlabel]));
-                       w20.XOptions = ((global::Gtk.AttachOptions)(4));
+                       global::Gtk.Table.TableChild w21 = ((global::Gtk.Table.TableChild)(this.table1 
[this.seasonlabel]));
+                       w21.XOptions = ((global::Gtk.AttachOptions)(4));
                        // Container child table1.Gtk.Table+TableChild
                        this.templatelabel = new global::Gtk.Label ();
                        this.templatelabel.Name = "templatelabel";
                        this.templatelabel.Xalign = 0F;
                        this.table1.Add (this.templatelabel);
-                       global::Gtk.Table.TableChild w21 = ((global::Gtk.Table.TableChild)(this.table1 
[this.templatelabel]));
-                       w21.TopAttach = ((uint)(2));
-                       w21.BottomAttach = ((uint)(3));
-                       w21.LeftAttach = ((uint)(1));
-                       w21.RightAttach = ((uint)(2));
-                       w21.XOptions = ((global::Gtk.AttachOptions)(4));
-                       w21.YOptions = ((global::Gtk.AttachOptions)(4));
+                       global::Gtk.Table.TableChild w22 = ((global::Gtk.Table.TableChild)(this.table1 
[this.templatelabel]));
+                       w22.TopAttach = ((uint)(2));
+                       w22.BottomAttach = ((uint)(3));
+                       w22.LeftAttach = ((uint)(1));
+                       w22.RightAttach = ((uint)(2));
+                       w22.XOptions = ((global::Gtk.AttachOptions)(4));
+                       w22.YOptions = ((global::Gtk.AttachOptions)(4));
                        this.GtkAlignment3.Add (this.table1);
                        this.frame4.Add (this.GtkAlignment3);
                        this.GtkLabel3 = new global::Gtk.Label ();
@@ -307,10 +346,10 @@ namespace LongoMatch.Gui.Panel
                        this.GtkLabel3.UseMarkup = true;
                        this.frame4.LabelWidget = this.GtkLabel3;
                        this.descbox.Add (this.frame4);
-                       global::Gtk.Box.BoxChild w24 = ((global::Gtk.Box.BoxChild)(this.descbox 
[this.frame4]));
-                       w24.Position = 1;
-                       w24.Expand = false;
-                       w24.Fill = false;
+                       global::Gtk.Box.BoxChild w25 = ((global::Gtk.Box.BoxChild)(this.descbox 
[this.frame4]));
+                       w25.Position = 1;
+                       w25.Expand = false;
+                       w25.Fill = false;
                        // Container child descbox.Gtk.Box+BoxChild
                        this.frame3 = new global::Gtk.Frame ();
                        this.frame3.Name = "frame3";
@@ -324,15 +363,15 @@ namespace LongoMatch.Gui.Panel
                        this.hbox5.Name = "hbox5";
                        this.hbox5.Spacing = 6;
                        // Container child hbox5.Gtk.Box+BoxChild
-                       this.fileimage = new global::Gtk.Image ();
-                       this.fileimage.WidthRequest = 100;
-                       this.fileimage.HeightRequest = 100;
-                       this.fileimage.Name = "fileimage";
-                       this.hbox5.Add (this.fileimage);
-                       global::Gtk.Box.BoxChild w25 = ((global::Gtk.Box.BoxChild)(this.hbox5 
[this.fileimage]));
-                       w25.Position = 0;
-                       w25.Expand = false;
-                       w25.Fill = false;
+                       this.fileimage1 = new global::Gtk.Image ();
+                       this.fileimage1.WidthRequest = 100;
+                       this.fileimage1.HeightRequest = 100;
+                       this.fileimage1.Name = "fileimage1";
+                       this.hbox5.Add (this.fileimage1);
+                       global::Gtk.Box.BoxChild w26 = ((global::Gtk.Box.BoxChild)(this.hbox5 
[this.fileimage1]));
+                       w26.Position = 0;
+                       w26.Expand = false;
+                       w26.Fill = false;
                        // Container child hbox5.Gtk.Box+BoxChild
                        this.vbox1 = new global::Gtk.VBox ();
                        this.vbox1.Name = "vbox1";
@@ -341,45 +380,240 @@ namespace LongoMatch.Gui.Panel
                        this.mediafilechooseralignment = new global::Gtk.Alignment (0F, 0.5F, 1F, 1F);
                        this.mediafilechooseralignment.Name = "mediafilechooseralignment";
                        // Container child mediafilechooseralignment.Gtk.Container+ContainerChild
-                       this.mediafilechooser = new global::LongoMatch.Gui.Component.MediaFileChooser ();
-                       this.mediafilechooser.Events = ((global::Gdk.EventMask)(256));
-                       this.mediafilechooser.Name = "mediafilechooser";
-                       this.mediafilechooseralignment.Add (this.mediafilechooser);
+                       this.mediafilechooser1 = new global::LongoMatch.Gui.Component.MediaFileChooser ();
+                       this.mediafilechooser1.Events = ((global::Gdk.EventMask)(256));
+                       this.mediafilechooser1.Name = "mediafilechooser1";
+                       this.mediafilechooseralignment.Add (this.mediafilechooser1);
                        this.vbox1.Add (this.mediafilechooseralignment);
-                       global::Gtk.Box.BoxChild w27 = ((global::Gtk.Box.BoxChild)(this.vbox1 
[this.mediafilechooseralignment]));
-                       w27.Position = 0;
-                       w27.Expand = false;
-                       w27.Fill = false;
+                       global::Gtk.Box.BoxChild w28 = ((global::Gtk.Box.BoxChild)(this.vbox1 
[this.mediafilechooseralignment]));
+                       w28.Position = 0;
+                       w28.Expand = false;
+                       w28.Fill = false;
                        // Container child vbox1.Gtk.Box+BoxChild
-                       this.medialabel = new global::Gtk.Label ();
-                       this.medialabel.Name = "medialabel";
-                       this.medialabel.Xalign = 0F;
-                       this.medialabel.UseMarkup = true;
-                       this.medialabel.Ellipsize = ((global::Pango.EllipsizeMode)(3));
-                       this.medialabel.MaxWidthChars = 50;
-                       this.vbox1.Add (this.medialabel);
-                       global::Gtk.Box.BoxChild w28 = ((global::Gtk.Box.BoxChild)(this.vbox1 
[this.medialabel]));
-                       w28.Position = 1;
-                       this.hbox5.Add (this.vbox1);
-                       global::Gtk.Box.BoxChild w29 = ((global::Gtk.Box.BoxChild)(this.hbox5 [this.vbox1]));
+                       this.medialabel1 = new global::Gtk.Label ();
+                       this.medialabel1.Name = "medialabel1";
+                       this.medialabel1.Xalign = 0F;
+                       this.medialabel1.UseMarkup = true;
+                       this.medialabel1.Ellipsize = ((global::Pango.EllipsizeMode)(3));
+                       this.medialabel1.MaxWidthChars = 50;
+                       this.vbox1.Add (this.medialabel1);
+                       global::Gtk.Box.BoxChild w29 = ((global::Gtk.Box.BoxChild)(this.vbox1 
[this.medialabel1]));
                        w29.Position = 1;
+                       this.hbox5.Add (this.vbox1);
+                       global::Gtk.Box.BoxChild w30 = ((global::Gtk.Box.BoxChild)(this.hbox5 [this.vbox1]));
+                       w30.Position = 1;
                        this.GtkAlignment8.Add (this.hbox5);
                        this.frame3.Add (this.GtkAlignment8);
                        this.GtkLabel6 = new global::Gtk.Label ();
                        this.GtkLabel6.Name = "GtkLabel6";
-                       this.GtkLabel6.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Video file</b>");
+                       this.GtkLabel6.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Main camera 
angle</b>");
                        this.GtkLabel6.UseMarkup = true;
                        this.frame3.LabelWidget = this.GtkLabel6;
                        this.descbox.Add (this.frame3);
-                       global::Gtk.Box.BoxChild w32 = ((global::Gtk.Box.BoxChild)(this.descbox 
[this.frame3]));
-                       w32.Position = 2;
-                       w32.Expand = false;
-                       w32.Fill = false;
-                       this.rbox.Add (this.descbox);
-                       global::Gtk.Box.BoxChild w33 = ((global::Gtk.Box.BoxChild)(this.rbox [this.descbox]));
-                       w33.Position = 0;
+                       global::Gtk.Box.BoxChild w33 = ((global::Gtk.Box.BoxChild)(this.descbox 
[this.frame3]));
+                       w33.Position = 2;
+                       w33.Expand = false;
+                       w33.Fill = false;
+                       // Container child descbox.Gtk.Box+BoxChild
+                       this.frame6 = new global::Gtk.Frame ();
+                       this.frame6.Name = "frame6";
+                       this.frame6.ShadowType = ((global::Gtk.ShadowType)(0));
+                       // Container child frame6.Gtk.Container+ContainerChild
+                       this.GtkAlignment9 = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
+                       this.GtkAlignment9.Name = "GtkAlignment9";
+                       this.GtkAlignment9.LeftPadding = ((uint)(12));
+                       // Container child GtkAlignment9.Gtk.Container+ContainerChild
+                       this.hbox7 = new global::Gtk.HBox ();
+                       this.hbox7.Name = "hbox7";
+                       this.hbox7.Spacing = 6;
+                       // Container child hbox7.Gtk.Box+BoxChild
+                       this.fileimage2 = new global::Gtk.Image ();
+                       this.fileimage2.WidthRequest = 100;
+                       this.fileimage2.HeightRequest = 100;
+                       this.fileimage2.Name = "fileimage2";
+                       this.hbox7.Add (this.fileimage2);
+                       global::Gtk.Box.BoxChild w34 = ((global::Gtk.Box.BoxChild)(this.hbox7 
[this.fileimage2]));
+                       w34.Position = 0;
+                       w34.Expand = false;
+                       w34.Fill = false;
+                       // Container child hbox7.Gtk.Box+BoxChild
+                       this.vbox4 = new global::Gtk.VBox ();
+                       this.vbox4.Name = "vbox4";
+                       this.vbox4.Spacing = 6;
+                       // Container child vbox4.Gtk.Box+BoxChild
+                       this.mediafilechooseralignment1 = new global::Gtk.Alignment (0F, 0.5F, 1F, 1F);
+                       this.mediafilechooseralignment1.Name = "mediafilechooseralignment1";
+                       // Container child mediafilechooseralignment1.Gtk.Container+ContainerChild
+                       this.mediafilechooser2 = new global::LongoMatch.Gui.Component.MediaFileChooser ();
+                       this.mediafilechooser2.Events = ((global::Gdk.EventMask)(256));
+                       this.mediafilechooser2.Name = "mediafilechooser2";
+                       this.mediafilechooseralignment1.Add (this.mediafilechooser2);
+                       this.vbox4.Add (this.mediafilechooseralignment1);
+                       global::Gtk.Box.BoxChild w36 = ((global::Gtk.Box.BoxChild)(this.vbox4 
[this.mediafilechooseralignment1]));
+                       w36.Position = 0;
+                       w36.Expand = false;
+                       w36.Fill = false;
+                       // Container child vbox4.Gtk.Box+BoxChild
+                       this.medialabel2 = new global::Gtk.Label ();
+                       this.medialabel2.Name = "medialabel2";
+                       this.medialabel2.Xalign = 0F;
+                       this.medialabel2.UseMarkup = true;
+                       this.medialabel2.Ellipsize = ((global::Pango.EllipsizeMode)(3));
+                       this.medialabel2.MaxWidthChars = 50;
+                       this.vbox4.Add (this.medialabel2);
+                       global::Gtk.Box.BoxChild w37 = ((global::Gtk.Box.BoxChild)(this.vbox4 
[this.medialabel2]));
+                       w37.Position = 1;
+                       this.hbox7.Add (this.vbox4);
+                       global::Gtk.Box.BoxChild w38 = ((global::Gtk.Box.BoxChild)(this.hbox7 [this.vbox4]));
+                       w38.Position = 1;
+                       this.GtkAlignment9.Add (this.hbox7);
+                       this.frame6.Add (this.GtkAlignment9);
+                       this.GtkLabel7 = new global::Gtk.Label ();
+                       this.GtkLabel7.Name = "GtkLabel7";
+                       this.GtkLabel7.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Camera angle 
2</b>");
+                       this.GtkLabel7.UseMarkup = true;
+                       this.frame6.LabelWidget = this.GtkLabel7;
+                       this.descbox.Add (this.frame6);
+                       global::Gtk.Box.BoxChild w41 = ((global::Gtk.Box.BoxChild)(this.descbox 
[this.frame6]));
+                       w41.Position = 3;
+                       w41.Expand = false;
+                       w41.Fill = false;
+                       // Container child descbox.Gtk.Box+BoxChild
+                       this.frame7 = new global::Gtk.Frame ();
+                       this.frame7.Name = "frame7";
+                       this.frame7.ShadowType = ((global::Gtk.ShadowType)(0));
+                       // Container child frame7.Gtk.Container+ContainerChild
+                       this.GtkAlignment10 = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
+                       this.GtkAlignment10.Name = "GtkAlignment10";
+                       this.GtkAlignment10.LeftPadding = ((uint)(12));
+                       // Container child GtkAlignment10.Gtk.Container+ContainerChild
+                       this.hbox9 = new global::Gtk.HBox ();
+                       this.hbox9.Name = "hbox9";
+                       this.hbox9.Spacing = 6;
+                       // Container child hbox9.Gtk.Box+BoxChild
+                       this.fileimage3 = new global::Gtk.Image ();
+                       this.fileimage3.WidthRequest = 100;
+                       this.fileimage3.HeightRequest = 100;
+                       this.fileimage3.Name = "fileimage3";
+                       this.hbox9.Add (this.fileimage3);
+                       global::Gtk.Box.BoxChild w42 = ((global::Gtk.Box.BoxChild)(this.hbox9 
[this.fileimage3]));
+                       w42.Position = 0;
+                       w42.Expand = false;
+                       w42.Fill = false;
+                       // Container child hbox9.Gtk.Box+BoxChild
+                       this.vbox5 = new global::Gtk.VBox ();
+                       this.vbox5.Name = "vbox5";
+                       this.vbox5.Spacing = 6;
+                       // Container child vbox5.Gtk.Box+BoxChild
+                       this.mediafilechooseralignment2 = new global::Gtk.Alignment (0F, 0.5F, 1F, 1F);
+                       this.mediafilechooseralignment2.Name = "mediafilechooseralignment2";
+                       // Container child mediafilechooseralignment2.Gtk.Container+ContainerChild
+                       this.mediafilechooser3 = new global::LongoMatch.Gui.Component.MediaFileChooser ();
+                       this.mediafilechooser3.Events = ((global::Gdk.EventMask)(256));
+                       this.mediafilechooser3.Name = "mediafilechooser3";
+                       this.mediafilechooseralignment2.Add (this.mediafilechooser3);
+                       this.vbox5.Add (this.mediafilechooseralignment2);
+                       global::Gtk.Box.BoxChild w44 = ((global::Gtk.Box.BoxChild)(this.vbox5 
[this.mediafilechooseralignment2]));
+                       w44.Position = 0;
+                       w44.Expand = false;
+                       w44.Fill = false;
+                       // Container child vbox5.Gtk.Box+BoxChild
+                       this.medialabel3 = new global::Gtk.Label ();
+                       this.medialabel3.Name = "medialabel3";
+                       this.medialabel3.Xalign = 0F;
+                       this.medialabel3.UseMarkup = true;
+                       this.medialabel3.Ellipsize = ((global::Pango.EllipsizeMode)(3));
+                       this.medialabel3.MaxWidthChars = 50;
+                       this.vbox5.Add (this.medialabel3);
+                       global::Gtk.Box.BoxChild w45 = ((global::Gtk.Box.BoxChild)(this.vbox5 
[this.medialabel3]));
+                       w45.Position = 1;
+                       this.hbox9.Add (this.vbox5);
+                       global::Gtk.Box.BoxChild w46 = ((global::Gtk.Box.BoxChild)(this.hbox9 [this.vbox5]));
+                       w46.Position = 1;
+                       this.GtkAlignment10.Add (this.hbox9);
+                       this.frame7.Add (this.GtkAlignment10);
+                       this.GtkLabel8 = new global::Gtk.Label ();
+                       this.GtkLabel8.Name = "GtkLabel8";
+                       this.GtkLabel8.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Camera angle 
3</b>");
+                       this.GtkLabel8.UseMarkup = true;
+                       this.frame7.LabelWidget = this.GtkLabel8;
+                       this.descbox.Add (this.frame7);
+                       global::Gtk.Box.BoxChild w49 = ((global::Gtk.Box.BoxChild)(this.descbox 
[this.frame7]));
+                       w49.Position = 4;
+                       w49.Expand = false;
+                       w49.Fill = false;
+                       // Container child descbox.Gtk.Box+BoxChild
+                       this.frame8 = new global::Gtk.Frame ();
+                       this.frame8.Name = "frame8";
+                       this.frame8.ShadowType = ((global::Gtk.ShadowType)(0));
+                       // Container child frame8.Gtk.Container+ContainerChild
+                       this.GtkAlignment12 = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
+                       this.GtkAlignment12.Name = "GtkAlignment12";
+                       this.GtkAlignment12.LeftPadding = ((uint)(12));
+                       // Container child GtkAlignment12.Gtk.Container+ContainerChild
+                       this.hbox11 = new global::Gtk.HBox ();
+                       this.hbox11.Name = "hbox11";
+                       this.hbox11.Spacing = 6;
+                       // Container child hbox11.Gtk.Box+BoxChild
+                       this.fileimage4 = new global::Gtk.Image ();
+                       this.fileimage4.WidthRequest = 100;
+                       this.fileimage4.HeightRequest = 100;
+                       this.fileimage4.Name = "fileimage4";
+                       this.hbox11.Add (this.fileimage4);
+                       global::Gtk.Box.BoxChild w50 = ((global::Gtk.Box.BoxChild)(this.hbox11 
[this.fileimage4]));
+                       w50.Position = 0;
+                       w50.Expand = false;
+                       w50.Fill = false;
+                       // Container child hbox11.Gtk.Box+BoxChild
+                       this.vbox6 = new global::Gtk.VBox ();
+                       this.vbox6.Name = "vbox6";
+                       this.vbox6.Spacing = 6;
+                       // Container child vbox6.Gtk.Box+BoxChild
+                       this.mediafilechooseralignment3 = new global::Gtk.Alignment (0F, 0.5F, 1F, 1F);
+                       this.mediafilechooseralignment3.Name = "mediafilechooseralignment3";
+                       // Container child mediafilechooseralignment3.Gtk.Container+ContainerChild
+                       this.mediafilechooser4 = new global::LongoMatch.Gui.Component.MediaFileChooser ();
+                       this.mediafilechooser4.Events = ((global::Gdk.EventMask)(256));
+                       this.mediafilechooser4.Name = "mediafilechooser4";
+                       this.mediafilechooseralignment3.Add (this.mediafilechooser4);
+                       this.vbox6.Add (this.mediafilechooseralignment3);
+                       global::Gtk.Box.BoxChild w52 = ((global::Gtk.Box.BoxChild)(this.vbox6 
[this.mediafilechooseralignment3]));
+                       w52.Position = 0;
+                       w52.Expand = false;
+                       w52.Fill = false;
+                       // Container child vbox6.Gtk.Box+BoxChild
+                       this.medialabel4 = new global::Gtk.Label ();
+                       this.medialabel4.Name = "medialabel4";
+                       this.medialabel4.Xalign = 0F;
+                       this.medialabel4.UseMarkup = true;
+                       this.medialabel4.Ellipsize = ((global::Pango.EllipsizeMode)(3));
+                       this.medialabel4.MaxWidthChars = 50;
+                       this.vbox6.Add (this.medialabel4);
+                       global::Gtk.Box.BoxChild w53 = ((global::Gtk.Box.BoxChild)(this.vbox6 
[this.medialabel4]));
+                       w53.Position = 1;
+                       this.hbox11.Add (this.vbox6);
+                       global::Gtk.Box.BoxChild w54 = ((global::Gtk.Box.BoxChild)(this.hbox11 [this.vbox6]));
+                       w54.Position = 1;
+                       this.GtkAlignment12.Add (this.hbox11);
+                       this.frame8.Add (this.GtkAlignment12);
+                       this.GtkLabel10 = new global::Gtk.Label ();
+                       this.GtkLabel10.Name = "GtkLabel10";
+                       this.GtkLabel10.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Camera angle 
4</b>");
+                       this.GtkLabel10.UseMarkup = true;
+                       this.frame8.LabelWidget = this.GtkLabel10;
+                       this.descbox.Add (this.frame8);
+                       global::Gtk.Box.BoxChild w57 = ((global::Gtk.Box.BoxChild)(this.descbox 
[this.frame8]));
+                       w57.Position = 5;
+                       w57.Expand = false;
+                       w57.Fill = false;
+                       w3.Add (this.descbox);
+                       this.scrolledwindow3.Add (w3);
+                       this.rbox.Add (this.scrolledwindow3);
+                       global::Gtk.Box.BoxChild w60 = ((global::Gtk.Box.BoxChild)(this.rbox 
[this.scrolledwindow3]));
+                       w60.Position = 0;
                        // Container child rbox.Gtk.Box+BoxChild
                        this.hbuttonbox1 = new global::Gtk.HButtonBox ();
+                       this.hbuttonbox1.Name = "hbuttonbox1";
                        // Container child hbuttonbox1.Gtk.ButtonBox+ButtonBoxChild
                        this.savebutton = new global::Gtk.Button ();
                        this.savebutton.TooltipMarkup = "Save";
@@ -392,9 +626,9 @@ namespace LongoMatch.Gui.Panel
                        this.savebutton.Add (this.savebuttonimage);
                        this.savebutton.Label = null;
                        this.hbuttonbox1.Add (this.savebutton);
-                       global::Gtk.ButtonBox.ButtonBoxChild w35 = 
((global::Gtk.ButtonBox.ButtonBoxChild)(this.hbuttonbox1 [this.savebutton]));
-                       w35.Expand = false;
-                       w35.Fill = false;
+                       global::Gtk.ButtonBox.ButtonBoxChild w62 = 
((global::Gtk.ButtonBox.ButtonBoxChild)(this.hbuttonbox1 [this.savebutton]));
+                       w62.Expand = false;
+                       w62.Fill = false;
                        // Container child hbuttonbox1.Gtk.ButtonBox+ButtonBoxChild
                        this.exportbutton = new global::Gtk.Button ();
                        this.exportbutton.TooltipMarkup = "Export";
@@ -407,10 +641,10 @@ namespace LongoMatch.Gui.Panel
                        this.exportbutton.Add (this.exportbuttonimage);
                        this.exportbutton.Label = null;
                        this.hbuttonbox1.Add (this.exportbutton);
-                       global::Gtk.ButtonBox.ButtonBoxChild w37 = 
((global::Gtk.ButtonBox.ButtonBoxChild)(this.hbuttonbox1 [this.exportbutton]));
-                       w37.Position = 1;
-                       w37.Expand = false;
-                       w37.Fill = false;
+                       global::Gtk.ButtonBox.ButtonBoxChild w64 = 
((global::Gtk.ButtonBox.ButtonBoxChild)(this.hbuttonbox1 [this.exportbutton]));
+                       w64.Position = 1;
+                       w64.Expand = false;
+                       w64.Fill = false;
                        // Container child hbuttonbox1.Gtk.ButtonBox+ButtonBoxChild
                        this.deletebutton = new global::Gtk.Button ();
                        this.deletebutton.TooltipMarkup = "Delete";
@@ -423,21 +657,19 @@ namespace LongoMatch.Gui.Panel
                        this.deletebutton.Add (this.deletebuttonimage);
                        this.deletebutton.Label = null;
                        this.hbuttonbox1.Add (this.deletebutton);
-                       global::Gtk.ButtonBox.ButtonBoxChild w39 = 
((global::Gtk.ButtonBox.ButtonBoxChild)(this.hbuttonbox1 [this.deletebutton]));
-                       w39.Position = 2;
-                       w39.Expand = false;
-                       w39.Fill = false;
+                       global::Gtk.ButtonBox.ButtonBoxChild w66 = 
((global::Gtk.ButtonBox.ButtonBoxChild)(this.hbuttonbox1 [this.deletebutton]));
+                       w66.Position = 2;
+                       w66.Expand = false;
+                       w66.Fill = false;
                        this.rbox.Add (this.hbuttonbox1);
-                       global::Gtk.Box.BoxChild w40 = ((global::Gtk.Box.BoxChild)(this.rbox 
[this.hbuttonbox1]));
-                       w40.Position = 1;
-                       w40.Expand = false;
-                       w40.Fill = false;
+                       global::Gtk.Box.BoxChild w67 = ((global::Gtk.Box.BoxChild)(this.rbox 
[this.hbuttonbox1]));
+                       w67.Position = 1;
+                       w67.Expand = false;
+                       w67.Fill = false;
                        this.projectpropertiesalignment.Add (this.rbox);
                        this.hbox4.Add (this.projectpropertiesalignment);
-                       global::Gtk.Box.BoxChild w42 = ((global::Gtk.Box.BoxChild)(this.hbox4 
[this.projectpropertiesalignment]));
-                       w42.Position = 1;
-                       w42.Expand = false;
-                       w42.Fill = false;
+                       global::Gtk.Box.BoxChild w69 = ((global::Gtk.Box.BoxChild)(this.hbox4 
[this.projectpropertiesalignment]));
+                       w69.Position = 1;
                        this.notebook1.Add (this.hbox4);
                        // Notebook tab
                        this.label1 = new global::Gtk.Label ();
@@ -445,17 +677,17 @@ namespace LongoMatch.Gui.Panel
                        this.notebook1.SetTabLabel (this.hbox4, this.label1);
                        this.label1.ShowAll ();
                        // Notebook tab
-                       global::Gtk.Label w44 = new global::Gtk.Label ();
-                       w44.Visible = true;
-                       this.notebook1.Add (w44);
+                       global::Gtk.Label w71 = new global::Gtk.Label ();
+                       w71.Visible = true;
+                       this.notebook1.Add (w71);
                        this.label3 = new global::Gtk.Label ();
                        this.label3.Name = "label3";
-                       this.notebook1.SetTabLabel (w44, this.label3);
+                       this.notebook1.SetTabLabel (w71, this.label3);
                        this.label3.ShowAll ();
                        this.contentalignment.Add (this.notebook1);
                        this.vbox3.Add (this.contentalignment);
-                       global::Gtk.Box.BoxChild w46 = ((global::Gtk.Box.BoxChild)(this.vbox3 
[this.contentalignment]));
-                       w46.Position = 1;
+                       global::Gtk.Box.BoxChild w73 = ((global::Gtk.Box.BoxChild)(this.vbox3 
[this.contentalignment]));
+                       w73.Position = 1;
                        this.Add (this.vbox3);
                        if ((this.Child != null)) {
                                this.Child.ShowAll ();
diff --git a/LongoMatch.GUI/gtk-gui/gui.stetic b/LongoMatch.GUI/gtk-gui/gui.stetic
index 1f99dba..c851c1c 100644
--- a/LongoMatch.GUI/gtk-gui/gui.stetic
+++ b/LongoMatch.GUI/gtk-gui/gui.stetic
@@ -6522,7 +6522,7 @@ You can continue with the current capture, cancel it or save your project.
       </widget>
     </child>
   </widget>
-  <widget class="Gtk.Bin" id="LongoMatch.Gui.Panel.NewProjectPanel" design-size="1182 438">
+  <widget class="Gtk.Bin" id="LongoMatch.Gui.Panel.NewProjectPanel" design-size="1206 584">
     <property name="MemberName" />
     <property name="Visible">False</property>
     <child>
@@ -6549,7 +6549,7 @@ You can continue with the current capture, cancel it or save your project.
           <widget class="Gtk.Notebook" id="notebook1">
             <property name="MemberName" />
             <property name="CanFocus">True</property>
-            <property name="CurrentPage">0</property>
+            <property name="CurrentPage">1</property>
             <property name="ShowBorder">False</property>
             <property name="Scrollable">True</property>
             <child>
@@ -6982,10 +6982,9 @@ You can continue with the current capture, cancel it or save your project.
                               </packing>
                             </child>
                             <child>
-                              <widget class="Gtk.Label" id="filelabel">
+                              <widget class="LongoMatch.Gui.Component.MediaFileSetSelection" 
id="mediafilesetselection1">
                                 <property name="MemberName" />
-                                <property name="Xalign">0</property>
-                                <property name="LabelProp" translatable="yes">Video files</property>
+                                <property name="Events">ButtonPressMask</property>
                               </widget>
                               <packing>
                                 <property name="Position">1</property>
@@ -6995,59 +6994,6 @@ You can continue with the current capture, cancel it or save your project.
                               </packing>
                             </child>
                             <child>
-                              <widget class="Gtk.Table" id="filetable">
-                                <property name="MemberName" />
-                                <property name="NRows">2</property>
-                                <property name="NColumns">2</property>
-                                <property name="RowSpacing">6</property>
-                                <property name="ColumnSpacing">6</property>
-                                <child>
-                                  <placeholder />
-                                </child>
-                                <child>
-                                  <placeholder />
-                                </child>
-                                <child>
-                                  <widget class="LongoMatch.Gui.Component.MediaFileChooser" 
id="mediafilechooser1">
-                                    <property name="MemberName" />
-                                    <property name="Events">ButtonPressMask</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="LongoMatch.Gui.Component.MediaFileChooser" 
id="mediafilechooser2">
-                                    <property name="MemberName" />
-                                    <property name="Events">ButtonPressMask</property>
-                                  </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>
-                              <packing>
-                                <property name="Position">2</property>
-                                <property name="AutoSize">True</property>
-                              </packing>
-                            </child>
-                            <child>
                               <widget class="Gtk.Table" id="outputfiletable">
                                 <property name="MemberName" />
                                 <property name="NColumns">2</property>
@@ -7090,7 +7036,7 @@ You can continue with the current capture, cancel it or save your project.
                                 </child>
                               </widget>
                               <packing>
-                                <property name="Position">3</property>
+                                <property name="Position">2</property>
                                 <property name="AutoSize">True</property>
                                 <property name="Expand">False</property>
                                 <property name="Fill">False</property>
@@ -7109,14 +7055,15 @@ You can continue with the current capture, cancel it or save your project.
                                     <property name="RowSpacing">6</property>
                                     <property name="ColumnSpacing">6</property>
                                     <child>
-                                      <widget class="Gtk.HBox" id="hbox6">
+                                      <widget class="Gtk.HBox" id="hbox7">
                                         <property name="MemberName" />
                                         <property name="Spacing">6</property>
                                         <child>
-                                          <widget class="Gtk.Label" id="device">
+                                          <widget class="Gtk.ComboBox" id="devicecombobox">
                                             <property name="MemberName" />
                                             <property name="Visible">False</property>
-                                            <property name="LabelProp" translatable="yes">Device</property>
+                                            <property name="IsTextCombo">True</property>
+                                            <property name="Items" translatable="yes" />
                                           </widget>
                                           <packing>
                                             <property name="Position">0</property>
@@ -7124,10 +7071,12 @@ You can continue with the current capture, cancel it or save your project.
                                           </packing>
                                         </child>
                                         <child>
-                                          <widget class="Gtk.Label" id="urilabel">
+                                          <widget class="Gtk.Entry" id="urientry">
                                             <property name="MemberName" />
                                             <property name="Visible">False</property>
-                                            <property name="LabelProp" translatable="yes">URL</property>
+                                            <property name="CanFocus">True</property>
+                                            <property name="IsEditable">True</property>
+                                            <property name="InvisibleChar">•</property>
                                           </widget>
                                           <packing>
                                             <property name="Position">1</property>
@@ -7136,6 +7085,8 @@ You can continue with the current capture, cancel it or save your project.
                                         </child>
                                       </widget>
                                       <packing>
+                                        <property name="LeftAttach">1</property>
+                                        <property name="RightAttach">2</property>
                                         <property name="AutoSize">True</property>
                                         <property name="XOptions">Fill</property>
                                         <property name="YOptions">Fill</property>
@@ -7148,15 +7099,14 @@ You can continue with the current capture, cancel it or save your project.
                                       </packing>
                                     </child>
                                     <child>
-                                      <widget class="Gtk.HBox" id="hbox7">
+                                      <widget class="Gtk.HBox" id="hbox8">
                                         <property name="MemberName" />
                                         <property name="Spacing">6</property>
                                         <child>
-                                          <widget class="Gtk.ComboBox" id="devicecombobox">
+                                          <widget class="Gtk.Label" id="device">
                                             <property name="MemberName" />
                                             <property name="Visible">False</property>
-                                            <property name="IsTextCombo">True</property>
-                                            <property name="Items" translatable="yes" />
+                                            <property name="LabelProp" translatable="yes">Device</property>
                                           </widget>
                                           <packing>
                                             <property name="Position">0</property>
@@ -7164,12 +7114,10 @@ You can continue with the current capture, cancel it or save your project.
                                           </packing>
                                         </child>
                                         <child>
-                                          <widget class="Gtk.Entry" id="urientry">
+                                          <widget class="Gtk.Label" id="urilabel">
                                             <property name="MemberName" />
                                             <property name="Visible">False</property>
-                                            <property name="CanFocus">True</property>
-                                            <property name="IsEditable">True</property>
-                                            <property name="InvisibleChar">•</property>
+                                            <property name="LabelProp" translatable="yes">URL</property>
                                           </widget>
                                           <packing>
                                             <property name="Position">1</property>
@@ -7178,8 +7126,6 @@ You can continue with the current capture, cancel it or save your project.
                                         </child>
                                       </widget>
                                       <packing>
-                                        <property name="LeftAttach">1</property>
-                                        <property name="RightAttach">2</property>
                                         <property name="AutoSize">True</property>
                                         <property name="XOptions">Fill</property>
                                         <property name="YOptions">Fill</property>
@@ -7332,7 +7278,7 @@ You can continue with the current capture, cancel it or save your project.
                                 </child>
                               </widget>
                               <packing>
-                                <property name="Position">4</property>
+                                <property name="Position">3</property>
                                 <property name="AutoSize">True</property>
                                 <property name="Expand">False</property>
                                 <property name="Fill">False</property>
@@ -8756,7 +8702,7 @@ You can continue with the current capture, cancel it or save your project.
       </widget>
     </child>
   </widget>
-  <widget class="Gtk.Bin" id="LongoMatch.Gui.Panel.ProjectsManagerPanel" design-size="1094 557">
+  <widget class="Gtk.Bin" id="LongoMatch.Gui.Panel.ProjectsManagerPanel" design-size="1214 1035">
     <property name="MemberName" />
     <property name="Visible">False</property>
     <child>
@@ -8796,7 +8742,9 @@ You can continue with the current capture, cancel it or save your project.
                       </widget>
                       <packing>
                         <property name="Position">0</property>
-                        <property name="AutoSize">True</property>
+                        <property name="AutoSize">False</property>
+                        <property name="Expand">False</property>
+                        <property name="Fill">False</property>
                       </packing>
                     </child>
                     <child>
@@ -8809,452 +8757,736 @@ You can continue with the current capture, cancel it or save your project.
                             <property name="Visible">False</property>
                             <property name="Spacing">6</property>
                             <child>
-                              <widget class="Gtk.VBox" id="descbox">
+                              <widget class="Gtk.ScrolledWindow" id="scrolledwindow3">
                                 <property name="MemberName" />
-                                <property name="Visible">False</property>
-                                <property name="Spacing">15</property>
+                                <property name="CanFocus">True</property>
+                                <property name="HscrollbarPolicy">Never</property>
+                                <property name="ShadowType">In</property>
                                 <child>
-                                  <widget class="Gtk.Frame" id="frame5">
+                                  <widget class="Gtk.Viewport" id="GtkViewport">
                                     <property name="MemberName" />
                                     <property name="ShadowType">None</property>
                                     <child>
-                                      <widget class="Gtk.Alignment" id="GtkAlignment1">
+                                      <widget class="Gtk.VBox" id="descbox">
                                         <property name="MemberName" />
-                                        <property name="Xalign">0</property>
-                                        <property name="Yalign">0</property>
-                                        <property name="LeftPadding">12</property>
+                                        <property name="Visible">False</property>
+                                        <property name="Spacing">15</property>
                                         <child>
-                                          <widget class="Gtk.HBox" id="hbox2">
+                                          <widget class="Gtk.Frame" id="frame5">
                                             <property name="MemberName" />
-                                            <property name="Spacing">6</property>
+                                            <property name="ShadowType">None</property>
                                             <child>
-                                              <widget class="Gtk.Frame" id="frame1">
+                                              <widget class="Gtk.Alignment" id="GtkAlignment1">
                                                 <property name="MemberName" />
-                                                <property name="ShadowType">None</property>
+                                                <property name="Xalign">0</property>
+                                                <property name="Yalign">0</property>
+                                                <property name="LeftPadding">12</property>
                                                 <child>
-                                                  <widget class="Gtk.Alignment" id="GtkAlignment2">
+                                                  <widget class="Gtk.HBox" id="hbox2">
                                                     <property name="MemberName" />
-                                                    <property name="Xalign">0</property>
-                                                    <property name="Yalign">0</property>
-                                                    <property name="LeftPadding">12</property>
+                                                    <property name="Spacing">6</property>
                                                     <child>
-                                                      <widget class="Gtk.Image" id="homeimage">
+                                                      <widget class="Gtk.Frame" id="frame1">
                                                         <property name="MemberName" />
+                                                        <property name="ShadowType">None</property>
+                                                        <child>
+                                                          <widget class="Gtk.Alignment" id="GtkAlignment2">
+                                                            <property name="MemberName" />
+                                                            <property name="Xalign">0</property>
+                                                            <property name="Yalign">0</property>
+                                                            <property name="LeftPadding">12</property>
+                                                            <child>
+                                                              <widget class="Gtk.Image" id="homeimage">
+                                                                <property name="MemberName" />
+                                                              </widget>
+                                                            </child>
+                                                          </widget>
+                                                        </child>
+                                                        <child>
+                                                          <widget class="Gtk.Label" id="homelabel">
+                                                            <property name="MemberName" />
+                                                            <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>
+                                                      </packing>
                                                     </child>
-                                                  </widget>
-                                                </child>
-                                                <child>
-                                                  <widget class="Gtk.Label" id="homelabel">
-                                                    <property name="MemberName" />
-                                                    <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>
-                                              </packing>
-                                            </child>
-                                            <child>
-                                              <widget class="Gtk.Frame" id="frame2">
-                                                <property name="MemberName" />
-                                                <property name="ShadowType">None</property>
-                                                <child>
-                                                  <widget class="Gtk.Alignment" id="GtkAlignment11">
-                                                    <property name="MemberName" />
-                                                    <property name="Xalign">0</property>
-                                                    <property name="Yalign">0</property>
-                                                    <property name="LeftPadding">12</property>
                                                     <child>
-                                                      <widget class="Gtk.Image" id="awayimage">
+                                                      <widget class="Gtk.Frame" id="frame2">
                                                         <property name="MemberName" />
+                                                        <property name="ShadowType">None</property>
+                                                        <child>
+                                                          <widget class="Gtk.Alignment" id="GtkAlignment11">
+                                                            <property name="MemberName" />
+                                                            <property name="Xalign">0</property>
+                                                            <property name="Yalign">0</property>
+                                                            <property name="LeftPadding">12</property>
+                                                            <child>
+                                                              <widget class="Gtk.Image" id="awayimage">
+                                                                <property name="MemberName" />
+                                                              </widget>
+                                                            </child>
+                                                          </widget>
+                                                        </child>
+                                                        <child>
+                                                          <widget class="Gtk.Label" id="awaylabel">
+                                                            <property name="MemberName" />
+                                                            <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>
+                                                      </packing>
                                                     </child>
                                                   </widget>
                                                 </child>
-                                                <child>
-                                                  <widget class="Gtk.Label" id="awaylabel">
-                                                    <property name="MemberName" />
-                                                    <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>
-                                              </packing>
                                             </child>
-                                          </widget>
-                                        </child>
-                                      </widget>
-                                    </child>
-                                    <child>
-                                      <widget class="Gtk.Label" id="GtkLabel9">
-                                        <property name="MemberName" />
-                                        <property name="LabelProp" 
translatable="yes">&lt;b&gt;Teams&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">True</property>
-                                    <property name="Expand">False</property>
-                                    <property name="Fill">False</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <widget class="Gtk.Frame" id="frame4">
-                                    <property name="MemberName" />
-                                    <property name="ShadowType">None</property>
-                                    <child>
-                                      <widget class="Gtk.Alignment" id="GtkAlignment3">
-                                        <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">4</property>
-                                            <property name="Homogeneous">True</property>
-                                            <property name="RowSpacing">6</property>
-                                            <property name="ColumnSpacing">6</property>
                                             <child>
-                                              <placeholder />
-                                            </child>
-                                            <child>
-                                              <placeholder />
-                                            </child>
-                                            <child>
-                                              <widget class="Gtk.Entry" id="competitionentry">
+                                              <widget class="Gtk.Label" id="GtkLabel9">
                                                 <property name="MemberName" />
-                                                <property name="CanFocus">True</property>
-                                                <property name="IsEditable">True</property>
-                                                <property name="InvisibleChar">●</property>
-                                              </widget>
-                                              <packing>
-                                                <property name="LeftAttach">3</property>
-                                                <property name="RightAttach">4</property>
-                                                <property name="AutoSize">True</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="Competitionlabel">
-                                                <property name="MemberName" />
-                                                <property name="Xalign">1</property>
-                                                <property name="LabelProp" 
translatable="yes">Competition:</property>
+                                                <property name="LabelProp" 
translatable="yes">&lt;b&gt;Teams&lt;/b&gt;</property>
+                                                <property name="UseMarkup">True</property>
                                               </widget>
                                               <packing>
-                                                <property name="LeftAttach">2</property>
-                                                <property name="RightAttach">3</property>
-                                                <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>
+                                                <property name="type">label_item</property>
                                               </packing>
                                             </child>
+                                          </widget>
+                                          <packing>
+                                            <property name="Position">0</property>
+                                            <property name="AutoSize">True</property>
+                                            <property name="Expand">False</property>
+                                            <property name="Fill">False</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <widget class="Gtk.Frame" id="frame4">
+                                            <property name="MemberName" />
+                                            <property name="ShadowType">None</property>
                                             <child>
-                                              <widget class="LongoMatch.Gui.Component.DatePicker" 
id="datepicker">
+                                              <widget class="Gtk.Alignment" id="GtkAlignment3">
                                                 <property name="MemberName" />
-                                                <property name="Events">ButtonPressMask</property>
-                                                <property name="Date">0</property>
+                                                <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">4</property>
+                                                    <property name="Homogeneous">True</property>
+                                                    <property name="RowSpacing">6</property>
+                                                    <property name="ColumnSpacing">6</property>
+                                                    <child>
+                                                      <placeholder />
+                                                    </child>
+                                                    <child>
+                                                      <placeholder />
+                                                    </child>
+                                                    <child>
+                                                      <widget class="Gtk.Entry" id="competitionentry">
+                                                        <property name="MemberName" />
+                                                        <property name="CanFocus">True</property>
+                                                        <property name="IsEditable">True</property>
+                                                        <property name="InvisibleChar">●</property>
+                                                      </widget>
+                                                      <packing>
+                                                        <property name="LeftAttach">3</property>
+                                                        <property name="RightAttach">4</property>
+                                                        <property name="AutoSize">True</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="Competitionlabel">
+                                                        <property name="MemberName" />
+                                                        <property name="Xalign">1</property>
+                                                        <property name="LabelProp" 
translatable="yes">Competition:</property>
+                                                      </widget>
+                                                      <packing>
+                                                        <property name="LeftAttach">2</property>
+                                                        <property name="RightAttach">3</property>
+                                                        <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="LongoMatch.Gui.Component.DatePicker" 
id="datepicker">
+                                                        <property name="MemberName" />
+                                                        <property name="Events">ButtonPressMask</property>
+                                                        <property name="Date">0</property>
+                                                      </widget>
+                                                      <packing>
+                                                        <property name="TopAttach">1</property>
+                                                        <property name="BottomAttach">2</property>
+                                                        <property name="LeftAttach">3</property>
+                                                        <property name="RightAttach">4</property>
+                                                        <property name="AutoSize">True</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="label11">
+                                                        <property name="MemberName" />
+                                                        <property name="Xalign">1</property>
+                                                        <property name="LabelProp" 
translatable="yes">Score:</property>
+                                                      </widget>
+                                                      <packing>
+                                                        <property name="TopAttach">1</property>
+                                                        <property name="BottomAttach">2</property>
+                                                        <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="label5">
+                                                        <property name="MemberName" />
+                                                        <property name="Xalign">1</property>
+                                                        <property name="LabelProp" 
translatable="yes">Date:</property>
+                                                      </widget>
+                                                      <packing>
+                                                        <property name="TopAttach">1</property>
+                                                        <property name="BottomAttach">2</property>
+                                                        <property name="LeftAttach">2</property>
+                                                        <property name="RightAttach">3</property>
+                                                        <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="label9">
+                                                        <property name="MemberName" />
+                                                        <property name="Xalign">1</property>
+                                                        <property name="LabelProp" 
translatable="yes">Analysis Template:</property>
+                                                      </widget>
+                                                      <packing>
+                                                        <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">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="scorelabel">
+                                                        <property name="MemberName" />
+                                                      </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">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.Entry" id="seasonentry">
+                                                        <property name="MemberName" />
+                                                        <property name="CanFocus">True</property>
+                                                        <property name="IsEditable">True</property>
+                                                        <property name="InvisibleChar">●</property>
+                                                      </widget>
+                                                      <packing>
+                                                        <property name="LeftAttach">1</property>
+                                                        <property name="RightAttach">2</property>
+                                                        <property name="AutoSize">False</property>
+                                                        <property name="XOptions">0</property>
+                                                        <property name="YOptions">Fill</property>
+                                                        <property name="XExpand">False</property>
+                                                        <property name="XFill">False</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="seasonlabel">
+                                                        <property name="MemberName" />
+                                                        <property name="Xalign">1</property>
+                                                        <property name="LabelProp" 
translatable="yes">Season:</property>
+                                                      </widget>
+                                                      <packing>
+                                                        <property name="AutoSize">False</property>
+                                                        <property name="XOptions">Fill</property>
+                                                        <property name="XExpand">False</property>
+                                                        <property name="XFill">True</property>
+                                                        <property name="XShrink">False</property>
+                                                        <property name="YExpand">True</property>
+                                                        <property name="YFill">True</property>
+                                                        <property name="YShrink">False</property>
+                                                      </packing>
+                                                    </child>
+                                                    <child>
+                                                      <widget class="Gtk.Label" id="templatelabel">
+                                                        <property name="MemberName" />
+                                                        <property name="Xalign">0</property>
+                                                      </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">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>
-                                              <packing>
-                                                <property name="TopAttach">1</property>
-                                                <property name="BottomAttach">2</property>
-                                                <property name="LeftAttach">3</property>
-                                                <property name="RightAttach">4</property>
-                                                <property name="AutoSize">True</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="label11">
+                                              <widget class="Gtk.Label" id="GtkLabel3">
                                                 <property name="MemberName" />
-                                                <property name="Xalign">1</property>
-                                                <property name="LabelProp" 
translatable="yes">Score:</property>
+                                                <property name="LabelProp" 
translatable="yes">&lt;b&gt;Project details&lt;/b&gt;</property>
+                                                <property name="UseMarkup">True</property>
                                               </widget>
                                               <packing>
-                                                <property name="TopAttach">1</property>
-                                                <property name="BottomAttach">2</property>
-                                                <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>
+                                                <property name="type">label_item</property>
                                               </packing>
                                             </child>
+                                          </widget>
+                                          <packing>
+                                            <property name="Position">1</property>
+                                            <property name="AutoSize">True</property>
+                                            <property name="Expand">False</property>
+                                            <property name="Fill">False</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <widget class="Gtk.Frame" id="frame3">
+                                            <property name="MemberName" />
+                                            <property name="ShadowType">None</property>
                                             <child>
-                                              <widget class="Gtk.Label" id="label5">
+                                              <widget class="Gtk.Alignment" id="GtkAlignment8">
                                                 <property name="MemberName" />
-                                                <property name="Xalign">1</property>
-                                                <property name="LabelProp" 
translatable="yes">Date:</property>
+                                                <property name="Xalign">0</property>
+                                                <property name="Yalign">0</property>
+                                                <property name="LeftPadding">12</property>
+                                                <child>
+                                                  <widget class="Gtk.HBox" id="hbox5">
+                                                    <property name="MemberName" />
+                                                    <property name="Spacing">6</property>
+                                                    <child>
+                                                      <widget class="Gtk.Image" id="fileimage1">
+                                                        <property name="MemberName" />
+                                                        <property name="WidthRequest">100</property>
+                                                        <property name="HeightRequest">100</property>
+                                                      </widget>
+                                                      <packing>
+                                                        <property name="Position">0</property>
+                                                        <property name="AutoSize">False</property>
+                                                        <property name="Expand">False</property>
+                                                        <property name="Fill">False</property>
+                                                      </packing>
+                                                    </child>
+                                                    <child>
+                                                      <widget class="Gtk.VBox" id="vbox1">
+                                                        <property name="MemberName" />
+                                                        <property name="Spacing">6</property>
+                                                        <child>
+                                                          <widget class="Gtk.Alignment" 
id="mediafilechooseralignment">
+                                                            <property name="MemberName" />
+                                                            <property name="Xalign">0</property>
+                                                            <child>
+                                                              <widget 
class="LongoMatch.Gui.Component.MediaFileChooser" id="mediafilechooser1">
+                                                                <property name="MemberName" />
+                                                                <property 
name="Events">ButtonPressMask</property>
+                                                              </widget>
+                                                            </child>
+                                                          </widget>
+                                                          <packing>
+                                                            <property name="Position">0</property>
+                                                            <property name="AutoSize">True</property>
+                                                            <property name="Expand">False</property>
+                                                            <property name="Fill">False</property>
+                                                          </packing>
+                                                        </child>
+                                                        <child>
+                                                          <widget class="Gtk.Label" id="medialabel1">
+                                                            <property name="MemberName" />
+                                                            <property name="Xalign">0</property>
+                                                            <property name="UseMarkup">True</property>
+                                                            <property name="Ellipsize">End</property>
+                                                            <property name="MaxWidthChars">50</property>
+                                                          </widget>
+                                                          <packing>
+                                                            <property name="Position">1</property>
+                                                            <property name="AutoSize">False</property>
+                                                          </packing>
+                                                        </child>
+                                                      </widget>
+                                                      <packing>
+                                                        <property name="Position">1</property>
+                                                        <property name="AutoSize">False</property>
+                                                      </packing>
+                                                    </child>
+                                                  </widget>
+                                                </child>
                                               </widget>
-                                              <packing>
-                                                <property name="TopAttach">1</property>
-                                                <property name="BottomAttach">2</property>
-                                                <property name="LeftAttach">2</property>
-                                                <property name="RightAttach">3</property>
-                                                <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="label9">
+                                              <widget class="Gtk.Label" id="GtkLabel6">
                                                 <property name="MemberName" />
-                                                <property name="Xalign">1</property>
-                                                <property name="LabelProp" translatable="yes">Analysis 
Template:</property>
+                                                <property name="LabelProp" translatable="yes">&lt;b&gt;Main 
camera angle&lt;/b&gt;</property>
+                                                <property name="UseMarkup">True</property>
                                               </widget>
                                               <packing>
-                                                <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">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>
+                                                <property name="type">label_item</property>
                                               </packing>
                                             </child>
+                                          </widget>
+                                          <packing>
+                                            <property name="Position">2</property>
+                                            <property name="AutoSize">True</property>
+                                            <property name="Expand">False</property>
+                                            <property name="Fill">False</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <widget class="Gtk.Frame" id="frame6">
+                                            <property name="MemberName" />
+                                            <property name="ShadowType">None</property>
                                             <child>
-                                              <widget class="Gtk.Label" id="scorelabel">
+                                              <widget class="Gtk.Alignment" id="GtkAlignment9">
                                                 <property name="MemberName" />
+                                                <property name="Xalign">0</property>
+                                                <property name="Yalign">0</property>
+                                                <property name="LeftPadding">12</property>
+                                                <child>
+                                                  <widget class="Gtk.HBox" id="hbox7">
+                                                    <property name="MemberName" />
+                                                    <property name="Spacing">6</property>
+                                                    <child>
+                                                      <widget class="Gtk.Image" id="fileimage2">
+                                                        <property name="MemberName" />
+                                                        <property name="WidthRequest">100</property>
+                                                        <property name="HeightRequest">100</property>
+                                                      </widget>
+                                                      <packing>
+                                                        <property name="Position">0</property>
+                                                        <property name="AutoSize">False</property>
+                                                        <property name="Expand">False</property>
+                                                        <property name="Fill">False</property>
+                                                      </packing>
+                                                    </child>
+                                                    <child>
+                                                      <widget class="Gtk.VBox" id="vbox4">
+                                                        <property name="MemberName" />
+                                                        <property name="Spacing">6</property>
+                                                        <child>
+                                                          <widget class="Gtk.Alignment" 
id="mediafilechooseralignment1">
+                                                            <property name="MemberName" />
+                                                            <property name="Xalign">0</property>
+                                                            <child>
+                                                              <widget 
class="LongoMatch.Gui.Component.MediaFileChooser" id="mediafilechooser2">
+                                                                <property name="MemberName" />
+                                                                <property 
name="Events">ButtonPressMask</property>
+                                                              </widget>
+                                                            </child>
+                                                          </widget>
+                                                          <packing>
+                                                            <property name="Position">0</property>
+                                                            <property name="AutoSize">True</property>
+                                                            <property name="Expand">False</property>
+                                                            <property name="Fill">False</property>
+                                                          </packing>
+                                                        </child>
+                                                        <child>
+                                                          <widget class="Gtk.Label" id="medialabel2">
+                                                            <property name="MemberName" />
+                                                            <property name="Xalign">0</property>
+                                                            <property name="UseMarkup">True</property>
+                                                            <property name="Ellipsize">End</property>
+                                                            <property name="MaxWidthChars">50</property>
+                                                          </widget>
+                                                          <packing>
+                                                            <property name="Position">1</property>
+                                                            <property name="AutoSize">False</property>
+                                                          </packing>
+                                                        </child>
+                                                      </widget>
+                                                      <packing>
+                                                        <property name="Position">1</property>
+                                                        <property name="AutoSize">False</property>
+                                                      </packing>
+                                                    </child>
+                                                  </widget>
+                                                </child>
                                               </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">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.Entry" id="seasonentry">
+                                              <widget class="Gtk.Label" id="GtkLabel7">
                                                 <property name="MemberName" />
-                                                <property name="CanFocus">True</property>
-                                                <property name="IsEditable">True</property>
-                                                <property name="InvisibleChar">●</property>
+                                                <property name="LabelProp" 
translatable="yes">&lt;b&gt;Camera angle 2&lt;/b&gt;</property>
+                                                <property name="UseMarkup">True</property>
                                               </widget>
                                               <packing>
-                                                <property name="LeftAttach">1</property>
-                                                <property name="RightAttach">2</property>
-                                                <property name="AutoSize">False</property>
-                                                <property name="XOptions">0</property>
-                                                <property name="YOptions">Fill</property>
-                                                <property name="XExpand">False</property>
-                                                <property name="XFill">False</property>
-                                                <property name="XShrink">False</property>
-                                                <property name="YExpand">False</property>
-                                                <property name="YFill">True</property>
-                                                <property name="YShrink">False</property>
+                                                <property name="type">label_item</property>
                                               </packing>
                                             </child>
+                                          </widget>
+                                          <packing>
+                                            <property name="Position">3</property>
+                                            <property name="AutoSize">True</property>
+                                            <property name="Expand">False</property>
+                                            <property name="Fill">False</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <widget class="Gtk.Frame" id="frame7">
+                                            <property name="MemberName" />
+                                            <property name="ShadowType">None</property>
                                             <child>
-                                              <widget class="Gtk.Label" id="seasonlabel">
+                                              <widget class="Gtk.Alignment" id="GtkAlignment10">
                                                 <property name="MemberName" />
-                                                <property name="Xalign">1</property>
-                                                <property name="LabelProp" 
translatable="yes">Season:</property>
+                                                <property name="Xalign">0</property>
+                                                <property name="Yalign">0</property>
+                                                <property name="LeftPadding">12</property>
+                                                <child>
+                                                  <widget class="Gtk.HBox" id="hbox9">
+                                                    <property name="MemberName" />
+                                                    <property name="Spacing">6</property>
+                                                    <child>
+                                                      <widget class="Gtk.Image" id="fileimage3">
+                                                        <property name="MemberName" />
+                                                        <property name="WidthRequest">100</property>
+                                                        <property name="HeightRequest">100</property>
+                                                      </widget>
+                                                      <packing>
+                                                        <property name="Position">0</property>
+                                                        <property name="AutoSize">False</property>
+                                                        <property name="Expand">False</property>
+                                                        <property name="Fill">False</property>
+                                                      </packing>
+                                                    </child>
+                                                    <child>
+                                                      <widget class="Gtk.VBox" id="vbox5">
+                                                        <property name="MemberName" />
+                                                        <property name="Spacing">6</property>
+                                                        <child>
+                                                          <widget class="Gtk.Alignment" 
id="mediafilechooseralignment2">
+                                                            <property name="MemberName" />
+                                                            <property name="Xalign">0</property>
+                                                            <child>
+                                                              <widget 
class="LongoMatch.Gui.Component.MediaFileChooser" id="mediafilechooser3">
+                                                                <property name="MemberName" />
+                                                                <property 
name="Events">ButtonPressMask</property>
+                                                              </widget>
+                                                            </child>
+                                                          </widget>
+                                                          <packing>
+                                                            <property name="Position">0</property>
+                                                            <property name="AutoSize">True</property>
+                                                            <property name="Expand">False</property>
+                                                            <property name="Fill">False</property>
+                                                          </packing>
+                                                        </child>
+                                                        <child>
+                                                          <widget class="Gtk.Label" id="medialabel3">
+                                                            <property name="MemberName" />
+                                                            <property name="Xalign">0</property>
+                                                            <property name="UseMarkup">True</property>
+                                                            <property name="Ellipsize">End</property>
+                                                            <property name="MaxWidthChars">50</property>
+                                                          </widget>
+                                                          <packing>
+                                                            <property name="Position">1</property>
+                                                            <property name="AutoSize">False</property>
+                                                          </packing>
+                                                        </child>
+                                                      </widget>
+                                                      <packing>
+                                                        <property name="Position">1</property>
+                                                        <property name="AutoSize">False</property>
+                                                      </packing>
+                                                    </child>
+                                                  </widget>
+                                                </child>
                                               </widget>
-                                              <packing>
-                                                <property name="AutoSize">False</property>
-                                                <property name="XOptions">Fill</property>
-                                                <property name="XExpand">False</property>
-                                                <property name="XFill">True</property>
-                                                <property name="XShrink">False</property>
-                                                <property name="YExpand">True</property>
-                                                <property name="YFill">True</property>
-                                                <property name="YShrink">False</property>
-                                              </packing>
                                             </child>
                                             <child>
-                                              <widget class="Gtk.Label" id="templatelabel">
+                                              <widget class="Gtk.Label" id="GtkLabel8">
                                                 <property name="MemberName" />
-                                                <property name="Xalign">0</property>
+                                                <property name="LabelProp" 
translatable="yes">&lt;b&gt;Camera angle 3&lt;/b&gt;</property>
+                                                <property name="UseMarkup">True</property>
                                               </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">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>
+                                                <property name="type">label_item</property>
                                               </packing>
                                             </child>
                                           </widget>
+                                          <packing>
+                                            <property name="Position">4</property>
+                                            <property name="AutoSize">True</property>
+                                            <property name="Expand">False</property>
+                                            <property name="Fill">False</property>
+                                          </packing>
                                         </child>
-                                      </widget>
-                                    </child>
-                                    <child>
-                                      <widget class="Gtk.Label" id="GtkLabel3">
-                                        <property name="MemberName" />
-                                        <property name="LabelProp" translatable="yes">&lt;b&gt;Project 
details&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">True</property>
-                                    <property name="Expand">False</property>
-                                    <property name="Fill">False</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <widget class="Gtk.Frame" id="frame3">
-                                    <property name="MemberName" />
-                                    <property name="ShadowType">None</property>
-                                    <child>
-                                      <widget class="Gtk.Alignment" id="GtkAlignment8">
-                                        <property name="MemberName" />
-                                        <property name="Xalign">0</property>
-                                        <property name="Yalign">0</property>
-                                        <property name="LeftPadding">12</property>
                                         <child>
-                                          <widget class="Gtk.HBox" id="hbox5">
+                                          <widget class="Gtk.Frame" id="frame8">
                                             <property name="MemberName" />
-                                            <property name="Spacing">6</property>
-                                            <child>
-                                              <widget class="Gtk.Image" id="fileimage">
-                                                <property name="MemberName" />
-                                                <property name="WidthRequest">100</property>
-                                                <property name="HeightRequest">100</property>
-                                              </widget>
-                                              <packing>
-                                                <property name="Position">0</property>
-                                                <property name="AutoSize">False</property>
-                                                <property name="Expand">False</property>
-                                                <property name="Fill">False</property>
-                                              </packing>
-                                            </child>
+                                            <property name="ShadowType">None</property>
                                             <child>
-                                              <widget class="Gtk.VBox" id="vbox1">
+                                              <widget class="Gtk.Alignment" id="GtkAlignment12">
                                                 <property name="MemberName" />
-                                                <property name="Spacing">6</property>
+                                                <property name="Xalign">0</property>
+                                                <property name="Yalign">0</property>
+                                                <property name="LeftPadding">12</property>
                                                 <child>
-                                                  <widget class="Gtk.Alignment" 
id="mediafilechooseralignment">
+                                                  <widget class="Gtk.HBox" id="hbox11">
                                                     <property name="MemberName" />
-                                                    <property name="Xalign">0</property>
+                                                    <property name="Spacing">6</property>
                                                     <child>
-                                                      <widget 
class="LongoMatch.Gui.Component.MediaFileChooser" id="mediafilechooser">
+                                                      <widget class="Gtk.Image" id="fileimage4">
                                                         <property name="MemberName" />
-                                                        <property name="Events">ButtonPressMask</property>
+                                                        <property name="WidthRequest">100</property>
+                                                        <property name="HeightRequest">100</property>
                                                       </widget>
+                                                      <packing>
+                                                        <property name="Position">0</property>
+                                                        <property name="AutoSize">False</property>
+                                                        <property name="Expand">False</property>
+                                                        <property name="Fill">False</property>
+                                                      </packing>
+                                                    </child>
+                                                    <child>
+                                                      <widget class="Gtk.VBox" id="vbox6">
+                                                        <property name="MemberName" />
+                                                        <property name="Spacing">6</property>
+                                                        <child>
+                                                          <widget class="Gtk.Alignment" 
id="mediafilechooseralignment3">
+                                                            <property name="MemberName" />
+                                                            <property name="Xalign">0</property>
+                                                            <child>
+                                                              <widget 
class="LongoMatch.Gui.Component.MediaFileChooser" id="mediafilechooser4">
+                                                                <property name="MemberName" />
+                                                                <property 
name="Events">ButtonPressMask</property>
+                                                              </widget>
+                                                            </child>
+                                                          </widget>
+                                                          <packing>
+                                                            <property name="Position">0</property>
+                                                            <property name="AutoSize">True</property>
+                                                            <property name="Expand">False</property>
+                                                            <property name="Fill">False</property>
+                                                          </packing>
+                                                        </child>
+                                                        <child>
+                                                          <widget class="Gtk.Label" id="medialabel4">
+                                                            <property name="MemberName" />
+                                                            <property name="Xalign">0</property>
+                                                            <property name="UseMarkup">True</property>
+                                                            <property name="Ellipsize">End</property>
+                                                            <property name="MaxWidthChars">50</property>
+                                                          </widget>
+                                                          <packing>
+                                                            <property name="Position">1</property>
+                                                            <property name="AutoSize">False</property>
+                                                          </packing>
+                                                        </child>
+                                                      </widget>
+                                                      <packing>
+                                                        <property name="Position">1</property>
+                                                        <property name="AutoSize">False</property>
+                                                      </packing>
                                                     </child>
                                                   </widget>
-                                                  <packing>
-                                                    <property name="Position">0</property>
-                                                    <property name="AutoSize">True</property>
-                                                    <property name="Expand">False</property>
-                                                    <property name="Fill">False</property>
-                                                  </packing>
-                                                </child>
-                                                <child>
-                                                  <widget class="Gtk.Label" id="medialabel">
-                                                    <property name="MemberName" />
-                                                    <property name="Xalign">0</property>
-                                                    <property name="UseMarkup">True</property>
-                                                    <property name="Ellipsize">End</property>
-                                                    <property name="MaxWidthChars">50</property>
-                                                  </widget>
-                                                  <packing>
-                                                    <property name="Position">1</property>
-                                                    <property name="AutoSize">False</property>
-                                                  </packing>
                                                 </child>
                                               </widget>
+                                            </child>
+                                            <child>
+                                              <widget class="Gtk.Label" id="GtkLabel10">
+                                                <property name="MemberName" />
+                                                <property name="LabelProp" 
translatable="yes">&lt;b&gt;Camera angle 4&lt;/b&gt;</property>
+                                                <property name="UseMarkup">True</property>
+                                              </widget>
                                               <packing>
-                                                <property name="Position">1</property>
-                                                <property name="AutoSize">False</property>
+                                                <property name="type">label_item</property>
                                               </packing>
                                             </child>
                                           </widget>
+                                          <packing>
+                                            <property name="Position">5</property>
+                                            <property name="AutoSize">True</property>
+                                            <property name="Expand">False</property>
+                                            <property name="Fill">False</property>
+                                          </packing>
                                         </child>
                                       </widget>
                                     </child>
-                                    <child>
-                                      <widget class="Gtk.Label" id="GtkLabel6">
-                                        <property name="MemberName" />
-                                        <property name="LabelProp" translatable="yes">&lt;b&gt;Video 
file&lt;/b&gt;</property>
-                                        <property name="UseMarkup">True</property>
-                                      </widget>
-                                      <packing>
-                                        <property name="type">label_item</property>
-                                      </packing>
-                                    </child>
                                   </widget>
-                                  <packing>
-                                    <property name="Position">2</property>
-                                    <property name="AutoSize">True</property>
-                                    <property name="Expand">False</property>
-                                    <property name="Fill">False</property>
-                                  </packing>
                                 </child>
                               </widget>
                               <packing>
                                 <property name="Position">0</property>
-                                <property name="AutoSize">False</property>
+                                <property name="AutoSize">True</property>
                               </packing>
                             </child>
                             <child>
@@ -9332,8 +9564,6 @@ You can continue with the current capture, cancel it or save your project.
                       <packing>
                         <property name="Position">1</property>
                         <property name="AutoSize">True</property>
-                        <property name="Expand">False</property>
-                        <property name="Fill">False</property>
                       </packing>
                     </child>
                   </widget>
@@ -10974,4 +11204,261 @@ You can continue with the current capture, cancel it or save your project.
       </widget>
     </child>
   </widget>
+  <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.MediaFileSetSelection" design-size="534 172">
+    <property name="MemberName" />
+    <property name="Visible">False</property>
+    <child>
+      <widget class="Gtk.Table" id="filetable">
+        <property name="MemberName" />
+        <property name="NRows">2</property>
+        <property name="NColumns">2</property>
+        <property name="Homogeneous">True</property>
+        <property name="RowSpacing">6</property>
+        <property name="ColumnSpacing">6</property>
+        <child>
+          <widget class="Gtk.Frame" id="frame1">
+            <property name="MemberName" />
+            <property name="ShadowType">None</property>
+            <child>
+              <widget class="Gtk.Alignment" id="GtkAlignment3">
+                <property name="MemberName" />
+                <property name="Xalign">0</property>
+                <property name="Yalign">0</property>
+                <property name="LeftPadding">12</property>
+                <child>
+                  <widget class="LongoMatch.Gui.Component.MediaFileChooser" id="mediafilechooser1">
+                    <property name="MemberName" />
+                    <property name="Events">ButtonPressMask</property>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="Gtk.Label" id="GtkLabel3">
+                <property name="MemberName" />
+                <property name="LabelProp" translatable="yes">&lt;b&gt;Angle 1&lt;/b&gt;</property>
+                <property name="UseMarkup">True</property>
+              </widget>
+              <packing>
+                <property name="type">label_item</property>
+              </packing>
+            </child>
+          </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.Frame" id="frame2">
+            <property name="MemberName" />
+            <property name="ShadowType">None</property>
+            <child>
+              <widget class="Gtk.Alignment" id="GtkAlignment2">
+                <property name="MemberName" />
+                <property name="Xalign">0</property>
+                <property name="Yalign">0</property>
+                <property name="LeftPadding">12</property>
+                <child>
+                  <widget class="Gtk.HBox" id="file2box">
+                    <property name="MemberName" />
+                    <child>
+                      <widget class="LongoMatch.Gui.Component.MediaFileChooser" id="mediafilechooser2">
+                        <property name="MemberName" />
+                        <property name="Events">ButtonPressMask</property>
+                      </widget>
+                      <packing>
+                        <property name="Position">0</property>
+                        <property name="AutoSize">True</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Button" id="delfile2button">
+                        <property name="MemberName" />
+                        <property name="CanFocus">True</property>
+                        <property name="Type">TextAndIcon</property>
+                        <property name="Icon">stock:gtk-remove Menu</property>
+                        <property name="Label" translatable="yes" />
+                        <property name="UseUnderline">True</property>
+                      </widget>
+                      <packing>
+                        <property name="Position">1</property>
+                        <property name="AutoSize">True</property>
+                        <property name="Expand">False</property>
+                        <property name="Fill">False</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="Gtk.Label" id="GtkLabel2">
+                <property name="MemberName" />
+                <property name="LabelProp" translatable="yes">&lt;b&gt;Angle 2&lt;/b&gt;</property>
+                <property name="UseMarkup">True</property>
+              </widget>
+              <packing>
+                <property name="type">label_item</property>
+              </packing>
+            </child>
+          </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.Frame" id="frame3">
+            <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.HBox" id="file3box">
+                    <property name="MemberName" />
+                    <child>
+                      <widget class="LongoMatch.Gui.Component.MediaFileChooser" id="mediafilechooser3">
+                        <property name="MemberName" />
+                        <property name="Events">ButtonPressMask</property>
+                      </widget>
+                      <packing>
+                        <property name="Position">0</property>
+                        <property name="AutoSize">True</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Button" id="delfile3button">
+                        <property name="MemberName" />
+                        <property name="CanFocus">True</property>
+                        <property name="Type">TextAndIcon</property>
+                        <property name="Icon">stock:gtk-remove Menu</property>
+                        <property name="Label" translatable="yes" />
+                        <property name="UseUnderline">True</property>
+                      </widget>
+                      <packing>
+                        <property name="Position">1</property>
+                        <property name="AutoSize">True</property>
+                        <property name="Expand">False</property>
+                        <property name="Fill">False</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="Gtk.Label" id="GtkLabel4">
+                <property name="MemberName" />
+                <property name="LabelProp" translatable="yes">&lt;b&gt;Angle 3&lt;/b&gt;</property>
+                <property name="UseMarkup">True</property>
+              </widget>
+              <packing>
+                <property name="type">label_item</property>
+              </packing>
+            </child>
+          </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.Frame" id="frame4">
+            <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.HBox" id="file4box">
+                    <property name="MemberName" />
+                    <child>
+                      <widget class="LongoMatch.Gui.Component.MediaFileChooser" id="mediafilechooser4">
+                        <property name="MemberName" />
+                        <property name="Events">ButtonPressMask</property>
+                      </widget>
+                      <packing>
+                        <property name="Position">0</property>
+                        <property name="AutoSize">True</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.Button" id="delfile4button">
+                        <property name="MemberName" />
+                        <property name="CanFocus">True</property>
+                        <property name="Type">TextAndIcon</property>
+                        <property name="Icon">stock:gtk-remove Menu</property>
+                        <property name="Label" translatable="yes" />
+                        <property name="UseUnderline">True</property>
+                      </widget>
+                      <packing>
+                        <property name="Position">1</property>
+                        <property name="AutoSize">True</property>
+                        <property name="Expand">False</property>
+                        <property name="Fill">False</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="Gtk.Label" id="GtkLabel5">
+                <property name="MemberName" />
+                <property name="LabelProp" translatable="yes">&lt;b&gt;Angle 4&lt;/b&gt;</property>
+                <property name="UseMarkup">True</property>
+              </widget>
+              <packing>
+                <property name="type">label_item</property>
+              </packing>
+            </child>
+          </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>
+      </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 bbc9441..015788c 100644
--- a/LongoMatch.GUI/gtk-gui/objects.xml
+++ b/LongoMatch.GUI/gtk-gui/objects.xml
@@ -355,4 +355,8 @@
       </itemgroup>
     </signals>
   </object>
+  <object type="LongoMatch.Gui.Component.MediaFileSetSelection" 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/EventsManager.cs b/LongoMatch.Services/Services/EventsManager.cs
index b84137d..75b4edb 100644
--- a/LongoMatch.Services/Services/EventsManager.cs
+++ b/LongoMatch.Services/Services/EventsManager.cs
@@ -70,7 +70,7 @@ namespace LongoMatch.Services
 
                        if (projectType == ProjectType.FileProject) {
                                framesCapturer = Config.MultimediaToolkit.GetFramesCapturer ();
-                               framesCapturer.Open (openedProject.Description.File.FilePath);
+                               framesCapturer.Open 
(openedProject.Description.FileSet.GetAngle(MediaFileAngle.Angle1).FilePath);
                        }
                        this.analysisWindow = analysisWindow;
                        player = analysisWindow.Player;
@@ -182,7 +182,7 @@ namespace LongoMatch.Services
                        }
                }
 
-               void RenderPlay (Project project, TimelineEvent play, MediaFile file)
+               void RenderPlay (Project project, TimelineEvent play)
                {
                        Playlist playlist;
                        EncodingSettings settings;
@@ -204,8 +204,7 @@ namespace LongoMatch.Services
                                Directory.CreateDirectory (Path.GetDirectoryName (outputFile));
                                settings = EncodingSettings.DefaultRenderingSettings (outputFile);
                                playlist = new Playlist ();
-                               element = new PlaylistPlayElement (play);
-                               element.File = file;
+                               element = new PlaylistPlayElement (play, project.Description.FileSet);
                                playlist.Elements.Add (element);
                                job = new EditionJob (playlist, settings);
                                renderer.AddJob (job);
@@ -248,7 +247,7 @@ namespace LongoMatch.Services
                        if (projectType == ProjectType.CaptureProject ||
                                projectType == ProjectType.URICaptureProject) {
                                if (Config.AutoRenderPlaysInLive) {
-                                       RenderPlay (openedProject, play, openedProject.Description.File);
+                                       RenderPlay (openedProject, play);
                                }
                        }
                }
diff --git a/LongoMatch.Services/Services/PlaylistManager.cs b/LongoMatch.Services/Services/PlaylistManager.cs
index 1b09b3b..be326dc 100644
--- a/LongoMatch.Services/Services/PlaylistManager.cs
+++ b/LongoMatch.Services/Services/PlaylistManager.cs
@@ -62,7 +62,7 @@ namespace LongoMatch.Services
                void LoadPlay (TimelineEvent play, Time seekTime, bool playing)
                {
                        play.Selected = true;
-                       player.LoadPlay (openedProject.Description.File, play,
+                       player.LoadPlay (openedProject.Description.FileSet, play,
                                         seekTime, playing);
                        loadedPlay = play;
                        if (playing) {
diff --git a/LongoMatch.Services/Services/ProjectsManager.cs b/LongoMatch.Services/Services/ProjectsManager.cs
index fdb9c4a..51197d1 100644
--- a/LongoMatch.Services/Services/ProjectsManager.cs
+++ b/LongoMatch.Services/Services/ProjectsManager.cs
@@ -134,7 +134,7 @@ namespace LongoMatch.Services
                void SaveCaptureProject (Project project)
                {
                        Guid projectID = project.ID;
-                       string filePath = project.Description.File.FilePath;
+                       string filePath = project.Description.FileSet.GetAngle 
(MediaFileAngle.Angle1).FilePath;
 
                        /* scan the new file to build a new PreviewMediaFile with all the metadata */
                        try {
@@ -143,7 +143,8 @@ namespace LongoMatch.Services
                                RemuxOutputFile (Capturer.CaptureSettings.EncodingSettings);
                        
                                Log.Debug ("Reloading saved file: " + filePath);
-                               project.UpdateMediaFile (multimediaToolkit.DiscoverFile (filePath));
+                               project.Description.FileSet.SetAngle (MediaFileAngle.Angle1,
+                                                                     multimediaToolkit.DiscoverFile 
(filePath));
                                DB.AddProject (project);
                        } catch (Exception ex) {
                                Log.Exception (ex);
@@ -179,14 +180,14 @@ namespace LongoMatch.Services
                
                        if (projectType == ProjectType.FileProject) {
                                // Check if the file associated to the project exists
-                               if (!File.Exists (project.Description.File.FilePath)) {
-                                       guiToolkit.WarningMessage (Catalog.GetString ("The file associated to 
this project doesn't exist.") + "\n"
-                                               + Catalog.GetString ("If the location of the file has changed 
try to edit it with the database manager."));
-                                       CloseOpenedProject (true);
-                                       return false;
+                               if (!project.Description.FileSet.CheckFiles ()) {
+                                       if (!guiToolkit.SelectMediaFiles (project)) {
+                                               CloseOpenedProject (true);
+                                               return false;
+                                       }
                                }
                                try {
-                                       Player.Open (project.Description.File);
+                                       Player.Open (project.Description.FileSet);
                                } catch (Exception ex) {
                                        Log.Exception (ex);
                                        guiToolkit.ErrorMessage (Catalog.GetString ("An error occurred 
opening this project:") + "\n" + ex.Message);
@@ -253,7 +254,7 @@ namespace LongoMatch.Services
                        } else {
                                EndCaptureResponse res;
                                
-                               res = guiToolkit.EndCapture (OpenedProject.Description.File.FilePath);
+                               res = guiToolkit.EndCapture (OpenedProject.Description.FileSet.GetAngle 
(MediaFileAngle.Angle1).FilePath);
 
                                /* Close project wihtout saving */
                                if (res == EndCaptureResponse.Quit) {
@@ -358,11 +359,20 @@ namespace LongoMatch.Services
                                return;
                        }
 
-                       if (project.Description.File.FilePath == Constants.FAKE_PROJECT) {
+                       if (project.Description.FileSet.GetAngle (MediaFileAngle.Angle1).FilePath == 
Constants.FAKE_PROJECT) {
                                /* If it's a fake live project prompt for a video file and
                                 * create a new PreviewMediaFile for this project and recreate the thumbnails 
*/
                                Log.Debug ("Importing fake live project");
-                               ToolsManager.AddVideoFile (project, true);
+                               if (guiToolkit.SelectMediaFiles (project)) {
+                                       try {
+                                               DB.UpdateProject (project);
+                                       } catch (Exception e) {
+                                               Log.Exception (e);
+                                       }
+                               } else {
+                                       guiToolkit.ErrorMessage (Catalog.GetString ("No valid video files 
associated. The project will be closed")); 
+                                       return;
+                               }
                        }
                        project.UpdateEventTypes ();
                        SetProject (project, ProjectType.FileProject, new CaptureSettings ());
diff --git a/LongoMatch.Services/Services/RenderingJobsManager.cs 
b/LongoMatch.Services/Services/RenderingJobsManager.cs
index e9c1e01..6dabce2 100644
--- a/LongoMatch.Services/Services/RenderingJobsManager.cs
+++ b/LongoMatch.Services/Services/RenderingJobsManager.cs
@@ -16,6 +16,7 @@
 //  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 // 
 using System;
+using System.Linq;
 using System.Collections.Generic;
 using LongoMatch.Core.Common;
 using LongoMatch.Core.Interfaces;
@@ -225,27 +226,32 @@ namespace LongoMatch.Services
                {
                        Time lastTS;
                        TimelineEvent play;
+                       MediaFile file;
+                       IEnumerable<FrameDrawing> drawings;
 
                        play = element.Play;
                        Log.Debug (String.Format ("Adding segment with {0} drawings", play.Drawings.Count));
                        
                        lastTS = play.Start;
-                       foreach (FrameDrawing fd in play.Drawings) {
+                       /* FIXME: for now we only support rendering the first angle in the list */
+                       file = element.FileSet.GetAngle (element.Angles[0]);
+                       drawings = play.Drawings.Where (d => d.Angles.Contains (element.Angles[0]));
+                       foreach (FrameDrawing fd in drawings) {
                                if (fd.Render < play.Start || fd.Render > play.Stop) {
                                        Log.Warning ("Drawing is not in the segments boundaries " +
                                                     fd.Render.ToMSecondsString ());
                                        continue;
                                }
-                               string image_path = CreateStillImage (element.File.FilePath, fd);
-                               videoEditor.AddSegment (element.File.FilePath, lastTS.MSeconds,
+                               string image_path = CreateStillImage (file.FilePath, fd);
+                               videoEditor.AddSegment (file.FilePath, lastTS.MSeconds,
                                                       fd.Render.MSeconds - lastTS.MSeconds,
-                                                      element.Rate, play.Name, element.File.HasAudio);
+                                                      element.Rate, play.Name, file.HasAudio);
                                videoEditor.AddImageSegment (image_path, 0, fd.Pause.MSeconds, play.Name);
                                lastTS = fd.Render;
                        }
-                       videoEditor.AddSegment (element.File.FilePath, lastTS.MSeconds,
+                       videoEditor.AddSegment (file.FilePath, lastTS.MSeconds,
                                                play.Stop.MSeconds - lastTS.MSeconds,
-                                               element.Rate, play.Name, element.File.HasAudio);
+                                               element.Rate, play.Name, file.HasAudio);
                        return true;
                }
 
diff --git a/LongoMatch.Services/Services/ToolsManager.cs b/LongoMatch.Services/Services/ToolsManager.cs
index 4d41ef5..0c601a7 100644
--- a/LongoMatch.Services/Services/ToolsManager.cs
+++ b/LongoMatch.Services/Services/ToolsManager.cs
@@ -87,32 +87,6 @@ namespace LongoMatch.Services
                        ProjectImporters.Add (importer);
                }
 
-               public static void AddVideoFile (Project project, bool createThumbnails)
-               {
-                       string videofile;
-                       IGUIToolkit guiToolkit = Config.GUIToolkit;
-                       IMultimediaToolkit multimediaToolkit = Config.MultimediaToolkit;
-
-                       guiToolkit.InfoMessage (Catalog.GetString ("This project doesn't have any file 
associated.\n" +
-                               "Select one in the next window"));
-                       videofile = guiToolkit.OpenFile (Catalog.GetString ("Select a video file"), null,
-                                                        Config.HomeDir);
-                       if (videofile == null) {
-                               guiToolkit.ErrorMessage (Catalog.GetString ("Could not import project, you 
need a video file"));
-                               return;
-                       } else {
-                               try {
-                                       project.UpdateMediaFile (multimediaToolkit.DiscoverFile (videofile));
-                               } catch (Exception ex) {
-                                       guiToolkit.ErrorMessage (ex.Message);
-                                       return;
-                               }
-                               if (createThumbnails) {
-                                       CreateThumbnails (project);
-                               }
-                       }
-               }
-
                public static void CreateThumbnails (Project project)
                {
                        IBusyDialog dialog;
@@ -124,7 +98,7 @@ namespace LongoMatch.Services
 
                        /* Create all the thumbnails */
                        capturer = Config.MultimediaToolkit.GetFramesCapturer ();
-                       capturer.Open (project.Description.File.FilePath);
+                       capturer.Open (project.Description.FileSet.GetAngle (MediaFileAngle.Angle1).FilePath);
                        foreach (TimelineEvent play in project.Timeline) {
                                try {
                                        play.Miniature = capturer.GetFrame (play.Start + ((play.Stop - 
play.Start) / 2),
@@ -207,16 +181,16 @@ namespace LongoMatch.Services
                        if (importer.NeedsEdition) {
                                Config.EventsBroker.EmitNewProject (project);
                        } else {
-                               if (project.Description.File == null) {
-                                       AddVideoFile (project, true);
-                               } else if (!File.Exists (project.Description.File.FilePath)) {
-                                       AddVideoFile (project, false);
+                               if (!project.Description.FileSet.CheckFiles ()) {
+                                       if (!guiToolkit.SelectMediaFiles (project)) {
+                                               guiToolkit.ErrorMessage ("No valid video files associated. 
The project will not be imported");
+                                               return;
+                                       }
                                }
                                /* If the project exists ask if we want to overwrite it */
                                if (DB.Exists (project)) {
-                                       var res = guiToolkit.QuestionMessage (Catalog.GetString ("A project 
already exists for the file:") +
-                                               project.Description.File.FilePath + "\n" +
-                                               Catalog.GetString ("Do you want to overwrite it?"), null);
+                                       var res = guiToolkit.QuestionMessage (Catalog.GetString ("A project 
already exists for this ID:") +
+                                               project.ID + "\n" +     Catalog.GetString ("Do you want to 
overwrite it?"), null);
                                        if (!res)
                                                return;
                                        DB.UpdateProject (project);
diff --git a/data/theme/longomatch-dark.json b/data/theme/longomatch-dark.json
index 5f9e948..fcc997c 100644
--- a/data/theme/longomatch-dark.json
+++ b/data/theme/longomatch-dark.json
@@ -9,4 +9,5 @@
        'PaletteSelected': '#f3f3f3FF',
        'PaletteActive': '#50b44dFF',
        'PaletteTool': '#c42527FF',
+       'PaletteText': '#f6f6f6FF',
 }



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