[longomatch] Implement the new live analysis UI



commit 4da71fa5bcbacb2603b73b1d3c99bc23b76ebafa
Author: Andoni Morales Alastruey <ylatuya gmail com>
Date:   Mon Oct 27 14:05:58 2014 +0100

    Implement the new live analysis UI

 LongoMatch.Core/Common/Exceptions.cs               |    4 +
 LongoMatch.Core/Interfaces/GUI/ICapturerBin.cs     |    4 +-
 LongoMatch.Core/Interfaces/Multimedia/ICapturer.cs |    2 +
 .../Interfaces/Multimedia/IMultimediaToolkit.cs    |    2 +-
 LongoMatch.Core/Store/Timer.cs                     |   39 ++-
 LongoMatch.Core/StyleConf.cs                       |    4 +-
 LongoMatch.GUI.Multimedia/Gui/CapturerBin.cs       |  427 +++++++++++--------
 LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs         |   37 ++-
 LongoMatch.GUI.Multimedia/Gui/PlayerCapturerBin.cs |   61 ++-
 .../Gui/RecordingController.cs                     |  254 +++++++++++
 LongoMatch.GUI.Multimedia/Gui/VideoWindow.cs       |    2 +-
 LongoMatch.GUI.Multimedia/MultimediaToolkit.cs     |    4 -
 .../gtk-gui/LongoMatch.Gui.CapturerBin.cs          |  352 +++++++++------
 .../gtk-gui/LongoMatch.Gui.PlayerBin.cs            |   10 +
 .../gtk-gui/LongoMatch.Gui.PlayerCapturerBin.cs    |  128 ++++--
 LongoMatch.GUI.Multimedia/gtk-gui/generated.cs     |   34 --
 LongoMatch.GUI.Multimedia/gtk-gui/gui.stetic       |  454 ++++++++++++++------
 LongoMatch.GUI.Multimedia/gtk-gui/objects.xml      |    1 +
 LongoMatch.GUI/Gui/Component/AnalysisComponent.cs  |  171 ++------
 LongoMatch.GUI/Gui/Component/CodingWidget.cs       |   65 ++-
 LongoMatch.GUI/Gui/Component/EventsListWidget.cs   |   85 ++++
 .../Gui/Component/FakeAnalysisComponent.cs         |  114 +++++
 LongoMatch.GUI/Gui/Component/PeriodsRecoder.cs     |   94 ----
 LongoMatch.GUI/Gui/Component/PlayListWidget.cs     |    1 +
 .../Gui/Component/PlayersListTreeWidget.cs         |   40 ++-
 .../Gui/Component/PlaysSelectionWidget.cs          |   95 ++---
 LongoMatch.GUI/Gui/MainWindow.cs                   |   10 +-
 LongoMatch.GUI/Gui/Panel/NewProjectPanel.cs        |   14 +-
 LongoMatch.GUI/Gui/Panel/ProjectsManagerPanel.cs   |    2 +-
 LongoMatch.GUI/LongoMatch.GUI.csproj               |    6 +-
 LongoMatch.GUI/Makefile.am                         |    6 +-
 .../LongoMatch.Gui.Component.AnalysisComponent.cs  |   61 +++
 .../LongoMatch.Gui.Component.CodingWidget.cs       |   17 +-
 .../LongoMatch.Gui.Component.EventsListWidget.cs   |   69 +++
 ...ngoMatch.Gui.Component.FakeAnalysisComponent.cs |   59 +++
 .../LongoMatch.Gui.Component.PeriodsRecoder.cs     |  116 -----
 ...ongoMatch.Gui.Component.PlaysSelectionWidget.cs |   71 +---
 .../LongoMatch.Gui.Panel.NewProjectPanel.cs        |    3 -
 .../LongoMatch.Gui.Panel.ProjectsManagerPanel.cs   |    1 -
 LongoMatch.GUI/gtk-gui/gui.stetic                  |  339 +++++++++------
 LongoMatch.GUI/gtk-gui/objects.xml                 |   13 +-
 LongoMatch.Multimedia/Capturer/FakeCapturer.cs     |    3 +
 .../Capturer/GstCameraCapturer.cs                  |    6 +
 LongoMatch.Multimedia/Utils/MultimediaFactory.cs   |    9 +-
 LongoMatch.Services/Services/EventsManager.cs      |   24 +-
 LongoMatch.Services/Services/ProjectsManager.cs    |   22 +-
 data/icons/Makefile.am                             |    8 +
 .../scalable/actions/longomatch-cancel-rec.svg     |   73 ++++
 .../scalable/actions/longomatch-control-record.svg |   79 +++-
 .../hicolor/scalable/actions/longomatch-live.svg   |   55 +++
 .../scalable/actions/longomatch-pause-clock.svg    |   73 ++++
 .../hicolor/scalable/actions/longomatch-record.svg |   56 +++
 .../hicolor/scalable/actions/longomatch-replay.svg |   55 +++
 .../scalable/actions/longomatch-resume-clock.svg   |   66 +++
 .../hicolor/scalable/actions/longomatch-save.svg   |   55 +++
 .../hicolor/scalable/actions/longomatch-stop.svg   |   67 +++
 libcesarplayer/gst-camera-capturer.c               |   11 +
 libcesarplayer/gst-camera-capturer.h               |    2 +
 58 files changed, 2707 insertions(+), 1228 deletions(-)
---
diff --git a/LongoMatch.Core/Common/Exceptions.cs b/LongoMatch.Core/Common/Exceptions.cs
index abcfbca..5a93566 100644
--- a/LongoMatch.Core/Common/Exceptions.cs
+++ b/LongoMatch.Core/Common/Exceptions.cs
@@ -78,5 +78,9 @@ namespace LongoMatch.Core.Common
                {
                }
        }
+       
+       public class TimerNotRunningException: Exception
+       {
+       }
 }
 
diff --git a/LongoMatch.Core/Interfaces/GUI/ICapturerBin.cs b/LongoMatch.Core/Interfaces/GUI/ICapturerBin.cs
index b49efde..7033221 100644
--- a/LongoMatch.Core/Interfaces/GUI/ICapturerBin.cs
+++ b/LongoMatch.Core/Interfaces/GUI/ICapturerBin.cs
@@ -31,11 +31,13 @@ namespace LongoMatch.Core.Interfaces.GUI
                Image CurrentMiniatureFrame {get;}
                CaptureSettings CaptureSettings {get;}
                List<string> PeriodsNames {set;}
+               List<Period> Periods { get; set; }
 
                void Run (CaptureSettings settings);
                void StartPeriod();
+               void PausePeriod();
+               void ResumePeriod();
                void StopPeriod();
-               void Stop();
                void Close();
        }
 }
diff --git a/LongoMatch.Core/Interfaces/Multimedia/ICapturer.cs 
b/LongoMatch.Core/Interfaces/Multimedia/ICapturer.cs
index 70ebd80..e023460 100644
--- a/LongoMatch.Core/Interfaces/Multimedia/ICapturer.cs
+++ b/LongoMatch.Core/Interfaces/Multimedia/ICapturer.cs
@@ -55,5 +55,7 @@ namespace LongoMatch.Core.Interfaces.Multimedia
                void Close();
 
                void Dispose();
+               
+               void Expose ();
        }
 }
diff --git a/LongoMatch.Core/Interfaces/Multimedia/IMultimediaToolkit.cs 
b/LongoMatch.Core/Interfaces/Multimedia/IMultimediaToolkit.cs
index ccda512..a2b48b2 100644
--- a/LongoMatch.Core/Interfaces/Multimedia/IMultimediaToolkit.cs
+++ b/LongoMatch.Core/Interfaces/Multimedia/IMultimediaToolkit.cs
@@ -37,7 +37,7 @@ namespace LongoMatch.Core.Interfaces.Multimedia
                
                IRemuxer GetRemuxer(MediaFile inputFile, string outputFile, VideoMuxerType muxer);
                
-               ICapturer GetCapturer(CapturerType type);
+               ICapturer GetCapturer();
                
                MediaFile DiscoverFile(string path, bool takeScreenshot=true);
                
diff --git a/LongoMatch.Core/Store/Timer.cs b/LongoMatch.Core/Store/Timer.cs
index c7ca9d3..4c63973 100644
--- a/LongoMatch.Core/Store/Timer.cs
+++ b/LongoMatch.Core/Store/Timer.cs
@@ -29,7 +29,7 @@ namespace LongoMatch.Core.Store
        {
                public Timer ()
                {
-                       Nodes = new List<TimeNode>();
+                       Nodes = new List<TimeNode> ();
                        Team = Team.NONE;
                }
 
@@ -37,7 +37,7 @@ namespace LongoMatch.Core.Store
                        get;
                        set;
                }
-               
+
                public List<TimeNode> Nodes {
                        get;
                        set;
@@ -47,26 +47,44 @@ namespace LongoMatch.Core.Store
                        get;
                        set;
                }
-               
+
                [JsonIgnore]
                public Time TotalTime {
                        get {
                                return new Time (Nodes.Sum (tn => tn.Duration.MSeconds));
                        }
                }
-               
-               public TimeNode StartTimer (Time start, string name = null) {
+
+               public TimeNode StartTimer (Time start, string name = null)
+               {
                        TimeNode tn;
 
                        if (name == null)
                                name = Name;
                        StopTimer (start);
-                       tn = new TimeNode {Name = name, Start = start};
+                       tn = new TimeNode { Name = name, Start = start };
                        Nodes.Add (tn);
                        return tn;
                }
-               
-               public void StopTimer (Time stop) {
+
+               public void PauseTimer (Time stop)
+               {
+                       TimeNode node = Nodes.LastOrDefault ();
+                       if (node == null) {
+                               throw new TimerNotRunningException ();
+                       }
+                       node.Stop = stop;
+               }
+
+               public TimeNode Resume (Time start)
+               {
+                       TimeNode tn = new TimeNode { Name = Name, Start = start };
+                       Nodes.Add (tn);
+                       return tn;
+               }
+
+               public void StopTimer (Time stop)
+               {
                        if (Nodes.Count > 0) {
                                TimeNode last = Nodes.Last ();
                                if (last.Stop == null) {
@@ -75,8 +93,9 @@ namespace LongoMatch.Core.Store
                        }
                        Nodes.OrderBy (tn => tn.Start.MSeconds);
                }
-               
-               public void CancelTimer () {
+
+               public void CancelTimer ()
+               {
                        if (Nodes.Count > 0) {
                                TimeNode last = Nodes.Last ();
                                if (last.Stop == null) {
diff --git a/LongoMatch.Core/StyleConf.cs b/LongoMatch.Core/StyleConf.cs
index a606842..18316e2 100644
--- a/LongoMatch.Core/StyleConf.cs
+++ b/LongoMatch.Core/StyleConf.cs
@@ -117,7 +117,9 @@ namespace LongoMatch.Core.Common
                public static Color ButtonPenaltyColor = Color.Parse ("#ffc7f0");
                public static Color ButtonEventColor = Color.Parse ("#c7e9ff");
                
-
+               public static int PlayerCapturerIconSize = 20;
+               public static int PlayerCapturerControlsHeight = 30;
+               
                public int BenchLineWidth = 2;
                public int TeamTaggerBenchBorder = 10;
 
diff --git a/LongoMatch.GUI.Multimedia/Gui/CapturerBin.cs b/LongoMatch.GUI.Multimedia/Gui/CapturerBin.cs
index f4732fc..4d6d860 100644
--- a/LongoMatch.GUI.Multimedia/Gui/CapturerBin.cs
+++ b/LongoMatch.GUI.Multimedia/Gui/CapturerBin.cs
@@ -19,15 +19,17 @@
 //
 using System;
 using System.Collections.Generic;
+using System.Linq;
 using Gtk;
 using LongoMatch.Core.Common;
-using LongoMatch.Gui.Helpers;
 using LongoMatch.Core.Interfaces.GUI;
 using LongoMatch.Core.Interfaces.Multimedia;
-using LongoMatch.Multimedia.Utils;
 using LongoMatch.Core.Store;
+using LongoMatch.Gui.Helpers;
+using LongoMatch.Multimedia.Utils;
 using Mono.Unix;
 using Image = LongoMatch.Core.Common.Image;
+using Misc = LongoMatch.Gui.Helpers.Misc;
 
 namespace LongoMatch.Gui
 {
@@ -35,47 +37,71 @@ namespace LongoMatch.Gui
        [System.ComponentModel.ToolboxItem(true)]
        public partial class CapturerBin : Gtk.Bin, ICapturerBin
        {
-               CaptureSettings settings;
                CapturerType type;
+               CaptureSettings settings;
                bool delayStart;
-               ICapturer capturer;
-               int periodIndex;
                Period currentPeriod;
-               Time ellapsedTime;
-               List<string> periods;
+               uint timeoutID;
+               TimeNode currentTimeNode;
+               Time accumTime;
+               DateTime currentPeriodStart;
+               List<string> gamePeriods;
 
                public CapturerBin ()
                {
                        this.Build ();
-                       recbutton.Visible = false;
-                       stopbutton.Visible = false;
-                       finishbutton.Visible = false;
-                       cancelbutton.Visible = true;
                        LongoMatch.Gui.Helpers.Misc.SetFocus (vbox1, false);
-                       videodrawingarea.CanFocus = true;
-                       ConnectSignals ();
-                       ellapsedTime = new Time (0);
+                       videowindow.ReadyEvent += HandleReady;
+                       videowindow.ExposeEvent += HandleExposeEvent;
+                       videowindow.CanFocus = true;
+                       recbutton.Clicked += (sender, e) => StartPeriod ();
+                       stopbutton.Clicked += (sender, e) => StopPeriod ();
+                       pausebutton.Clicked += (sender, e) => PausePeriod ();
+                       resumebutton.Clicked += (sender, e) => ResumePeriod ();
+                       savebutton.Clicked += HandleSaveClicked;
+                       cancelbutton.Clicked += HandleCloseClicked;
+                       recimage.Pixbuf = Misc.LoadIcon ("longomatch-record",
+                                                        StyleConf.PlayerCapturerIconSize);
+                       stopimage.Pixbuf = Misc.LoadIcon ("longomatch-stop",
+                                                         StyleConf.PlayerCapturerIconSize);
+                       pauseimage.Pixbuf = Misc.LoadIcon ("longomatch-pause-clock",
+                                                          StyleConf.PlayerCapturerIconSize);
+                       pauseimage.Pixbuf = Misc.LoadIcon ("longomatch-resume-clock",
+                                                          StyleConf.PlayerCapturerIconSize);
+                       saveimage.Pixbuf = Misc.LoadIcon ("longomatch-save",
+                                                         StyleConf.PlayerCapturerIconSize);
+                       resumeimage.Pixbuf = Misc.LoadIcon ("longomatch-pause-clock",
+                                                           StyleConf.PlayerCapturerIconSize);
+                       cancelimage.Pixbuf = Misc.LoadIcon ("longomatch-cancel-rec",
+                                                           StyleConf.PlayerCapturerIconSize);
+                       Periods = new List<Period> ();
+                       Reset ();
+                       Mode = CapturerType.Live;
+               }
+
+               protected override void OnDestroyed ()
+               {
+                       if (timeoutID != 0) {
+                               GLib.Source.Remove (timeoutID);
+                       }
+                       base.OnDestroyed ();
                }
 
                public CapturerType Mode {
                        set {
                                type = value;
-                               videodrawingarea.Visible = value == CapturerType.Live;
+                               videowindow.Visible = value == CapturerType.Live;
+                               if (type == CapturerType.Fake) {
+                                       SetStyle (StyleConf.PlayerCapturerControlsHeight * 2, 24 * 2, 40 * 2);
+                               } else {
+                                       SetStyle (StyleConf.PlayerCapturerControlsHeight, 24, 40);
+                               }
                        }
-                       
                }
 
                public bool Capturing {
                        get;
-                       protected set;
-               }
-
-               public Time CurrentTime {
-                       get {
-                               if (capturer == null)
-                                       return new Time (-1);
-                               return capturer.CurrentTime;
-                       }
+                       set;
                }
 
                public CaptureSettings CaptureSettings {
@@ -86,182 +112,239 @@ namespace LongoMatch.Gui
 
                public List<string> PeriodsNames {
                        set {
-                               periods = value;
-                               UpdateLabel (value [0]);
+                               gamePeriods = value;
+                               if (gamePeriods != null && gamePeriods.Count > 0) {
+                                       periodlabel.Markup = gamePeriods [0];
+                               } else {
+                                       periodlabel.Markup = "1";
+                               }
                        }
                        get {
-                               return periods;
+                               return gamePeriods;
                        }
                }
 
+               public ICapturer Capturer {
+                       get;
+                       set;
+               }
+
                public List<Period> Periods {
                        set;
                        get;
                }
 
-               public void StartPeriod ()
-               {
-                       if (capturer == null)
-                               return;
+               public Time CurrentTime {
+                       get {
+                               int timeDiff;
                                
-                       if (currentPeriod != null) {
-                               throw new Exception ("Period already started");
+                               timeDiff = (int)(DateTime.UtcNow - currentPeriodStart).TotalMilliseconds; 
+                               return new Time (accumTime.MSeconds + timeDiff);
                        }
+               }
 
-                       currentPeriod = new Period { Name = periods[periodIndex] };
-                       currentPeriod.StartTimer (ellapsedTime);
-                       Log.Information (String.Format ("Start new period {0} at {1}",
-                                                       currentPeriod.Name, ellapsedTime.ToSecondsString ()));
-                       Capturing = true;
+               Time EllapsedTime {
+                       get {
+                               if (currentPeriod != null) {
+                                       return currentPeriod.TotalTime;
+                               } else {
+                                       return new Time (0);
+                               }
+                               
+                       }
+               }
+
+               public void StartPeriod ()
+               {
+                       string periodName;
+                       
                        recbutton.Visible = false;
-                       stopbutton.Visible = true;
-                       finishbutton.Visible = true;
-                       if (Periods.Count == 0) {
-                               capturer.Start ();
+                       pausebutton.Visible = savebutton.Visible = stopbutton.Visible = true;
+                       
+                       if (PeriodsNames != null && PeriodsNames.Count > Periods.Count) {
+                               periodName = PeriodsNames [Periods.Count];
                        } else {
-                               capturer.TogglePause ();
+                               periodName = (Periods.Count + 1).ToString ();
                        }
-                       if (periodIndex + 1 == periods.Count) {
-                               stopbutton.Visible = false;
+                       currentPeriod = new Period { Name = periodName };
+                       
+                       currentTimeNode = currentPeriod.StartTimer (accumTime, periodName);
+                       currentTimeNode.Stop = currentTimeNode.Start;
+                       currentPeriodStart = DateTime.UtcNow;
+                       timeoutID = GLib.Timeout.Add (20, UpdateTime);
+                       if (Capturer != null) {
+                               if (Periods.Count == 0) {
+                                       Capturer.Start ();
+                               } else {
+                                       Capturer.TogglePause ();
+                               }
                        }
-                       UpdateLabel (currentPeriod.Name);
+                       periodlabel.Markup = currentPeriod.Name;
+                       Capturing = true;
                        Periods.Add (currentPeriod);
+                       Log.Debug ("Start new period start=", currentTimeNode.Start.ToMSecondsString ());
                }
 
                public void StopPeriod ()
                {
-                       string msg;
-                       
-                       msg = Catalog.GetString ("Do you want to stop the current period?");
-                       
-                       if (!MessagesHelpers.QuestionMessage (this, msg)) {
-                               return;
-                       }
-                       if (currentPeriod == null) {
-                               throw new Exception ("Period not started");
+                       GLib.Source.Remove (timeoutID);
+                       if (currentPeriod != null) {
+                               currentPeriod.StopTimer (CurrentTime);
+                               accumTime = CurrentTime;
+                               Log.Debug ("Stop period stop=", accumTime.ToMSecondsString ());
                        }
-                       
-                       Log.Information (String.Format ("Stop period {0} at {1}",
-                                                       currentPeriod.Name, ellapsedTime.ToSecondsString ()));
-                       periodIndex ++;
-                       Capturing = false;
-                       capturer.TogglePause ();
-                       currentPeriod.StopTimer (ellapsedTime);
-                       UpdateLabel (periods [periodIndex]);
+                       currentTimeNode = null;
                        currentPeriod = null;
+                       
                        recbutton.Visible = true;
-                       stopbutton.Visible = false;
+                       pausebutton.Visible = resumebutton.Visible = stopbutton.Visible = false;
+                       if (Capturer != null && Capturing) {
+                               Capturer.TogglePause ();
+                       }
+                       Capturing = false;
                }
 
-               public void Stop ()
+               public void PausePeriod ()
                {
                        if (currentPeriod != null) {
-                               Log.Information (String.Format ("Stop period {0} at {1}",
-                                                               currentPeriod.Name, 
ellapsedTime.ToSecondsString ()));
-                               currentPeriod.StopTimer (ellapsedTime);
+                               Log.Debug ("Pause period at currentTime=", CurrentTime.ToMSecondsString ());
+                               currentPeriod.PauseTimer (CurrentTime);
                        }
-                       Log.Information ("Stop capture");
-                       capturer.Stop ();
+                       currentTimeNode = null;
+                       pausebutton.Visible = false;
+                       resumebutton.Visible = true;
+                       Capturing = false;
                }
 
-               public void Run (CaptureSettings settings)
+               public void ResumePeriod ()
                {
-                       /* Close any previous instance of the capturer */
-                       Close ();
-
-                       capturer = Config.MultimediaToolkit.GetCapturer (type);
-                       capturer.EllapsedTime += OnTick;
-                       this.settings = settings;
-                       if (type != CapturerType.Live) {
-                               capturer.Error += OnError;
-                               capturer.DeviceChange += OnDeviceChange;
-                               videodrawingarea.DoubleBuffered = true;
-                       } else {
-                               videodrawingarea.DoubleBuffered = false;
-                       }
-                       if (type == CapturerType.Fake || videodrawingarea.IsRealized) {
-                               Configure ();
-                               capturer.Run ();
-                       } else {
-                               delayStart = true;
+                       Log.Debug ("Resume period at currentTime=", CurrentTime.ToMSecondsString ());
+                       currentTimeNode = currentPeriod.Resume (CurrentTime);
+                       pausebutton.Visible = true;
+                       resumebutton.Visible = false;
+                       Capturing = true;
+               }
+
+               void SetStyle (int height, int fontSize, int timeWidth)
+               {
+                       string font = String.Format ("Ubuntu {0}px", fontSize);
+                       Pango.FontDescription desc = Pango.FontDescription.FromString (font);
+
+                       controllerbox.HeightRequest = height;
+                       hourseventbox.ModifyBg (StateType.Normal, Misc.ToGdkColor 
(Config.Style.PaletteBackgroundDark));
+                       hourlabel.ModifyFg (StateType.Normal, Misc.ToGdkColor (Config.Style.PaletteText));
+                       hourlabel.ModifyFont (desc);
+                       hourseventbox.WidthRequest = timeWidth;
+                       minuteseventbox.ModifyBg (StateType.Normal, Misc.ToGdkColor 
(Config.Style.PaletteBackgroundDark));
+                       minuteslabel.ModifyFg (StateType.Normal, Misc.ToGdkColor (Config.Style.PaletteText));
+                       minuteslabel.ModifyFont (desc);
+                       minuteseventbox.WidthRequest = timeWidth;
+                       secondseventbox.ModifyBg (StateType.Normal, Misc.ToGdkColor 
(Config.Style.PaletteBackgroundDark));
+                       secondslabel.ModifyFg (StateType.Normal, Misc.ToGdkColor (Config.Style.PaletteText));
+                       secondslabel.ModifyFont (desc);
+                       secondseventbox.WidthRequest = timeWidth;
+                       label1.ModifyFont (desc);
+                       label1.ModifyFg (StateType.Normal, Misc.ToGdkColor (Config.Style.PaletteText));
+                       label2.ModifyFont (desc);
+                       label2.ModifyFg (StateType.Normal, Misc.ToGdkColor (Config.Style.PaletteText));
+                       periodlabel.ModifyFont (desc);
+                       periodlabel.ModifyFg (StateType.Normal, Misc.ToGdkColor (Config.Style.PaletteText));
+
+               }
+               
+               bool UpdateTime ()
+               {
+                       if (currentTimeNode != null) {
+                               currentTimeNode.Stop = CurrentTime;
                        }
-                       Periods = new List<Period> ();
+                       hourlabel.Markup = EllapsedTime.Hours.ToString ("d2");
+                       minuteslabel.Markup = EllapsedTime.Minutes.ToString ("d2");
+                       secondslabel.Markup = EllapsedTime.Seconds.ToString ("d2");
+                       Config.EventsBroker.EmitCapturerTick (CurrentTime);
+                       return true;
                }
 
-               public void Close ()
+               void HandleSaveClicked (object sender, EventArgs e)
                {
-                       bool stop = Capturing;
+                       string msg = Catalog.GetString ("Do you want to finish the current capture?");
+                       if (MessagesHelpers.QuestionMessage (this, msg)) {
+                               Config.EventsBroker.EmitCaptureFinished (false);
+                       }
+               }
 
-                       /* resetting common properties */
-                       stopbutton.Visible = false;
-                       finishbutton.Visible = false;
-                       recbutton.Visible = false;
-                       Capturing = false;
+               void HandleCloseClicked (object sender, EventArgs e)
+               {
+                       string msg = Catalog.GetString ("Do you want to close and cancell the current 
capture?");
+                       if (MessagesHelpers.QuestionMessage (this, msg)) {
+                               Config.EventsBroker.EmitCaptureFinished (true);
+                       }
+               }
 
-                       if (capturer == null)
-                               return;
+               public void Run (CaptureSettings settings)
+               {
+                       Reset ();
+                       if (type == CapturerType.Live) {
+                               Capturer = Config.MultimediaToolkit.GetCapturer ();
+                               this.settings = settings;
+                               videowindow.Ratio = (float)settings.EncodingSettings.VideoStandard.Width /
+                                       settings.EncodingSettings.VideoStandard.Height;
+                               Capturer.Error += OnError;
+                               Capturer.DeviceChange += OnDeviceChange;
+                               Periods = new List<Period> ();
+                               if (videowindow.Ready) {
+                                       Configure ();
+                               } else {
+                                       delayStart = true;
+                               }
+                       }
+               }
 
+               public void Close ()
+               {
+                       StopPeriod ();
                        /* stopping and closing capturer */
-                       try {
-                               if (Capturing) {
-                                       capturer.Stop ();
-                               }
-                               capturer.Close ();
-                               if (type == CapturerType.Live) {
-                                       /* release and dispose live capturer */
-                                       capturer.Error -= OnError;
-                                       capturer.DeviceChange -= OnDeviceChange;
-                                       capturer.Dispose ();
+                       if (Capturer != null) {
+                               try {
+                                       Capturer.Close ();
+                                       Capturer.Error -= OnError;
+                                       Capturer.DeviceChange -= OnDeviceChange;
+                                       Capturer.Dispose ();
+                               } catch (Exception ex) {
+                                       Log.Exception (ex);
                                }
-                       } catch (Exception ex) {
-                               Log.Exception (ex);
                        }
-                       capturer = null;
+                       Capturer = null;
                }
 
                public Image CurrentMiniatureFrame {
                        get {
-                               if (capturer == null)
+                               if (Capturer == null)
                                        return null;
 
-                               Image image = capturer.CurrentFrame;
+                               Image image = Capturer.CurrentFrame;
 
                                if (image.Value == null)
                                        return null;
-                               image.ScaleInplace (Constants.MAX_THUMBNAIL_SIZE, 
Constants.MAX_THUMBNAIL_SIZE);
+                               image.ScaleInplace (Constants.MAX_THUMBNAIL_SIZE,
+                                                   Constants.MAX_THUMBNAIL_SIZE);
                                return image;
                        }
                }
 
-               void ConnectSignals ()
+               void Reset ()
                {
-                       recbutton.Clicked += (sender, e) => StartPeriod ();
-                       stopbutton.Clicked += (sender, e) => StopPeriod ();
-                       finishbutton.Clicked += (sender, e) => {
-                               string msg = Catalog.GetString ("Do you want to finish the current capture?");
-                               if (!MessagesHelpers.QuestionMessage (this, msg)) {
-                                       return;
-                               }
-                               Config.EventsBroker.EmitCaptureFinished (false);
-                       };
-                       cancelbutton.Clicked += (sender, e) => Config.EventsBroker.EmitCaptureFinished (true);
-                       videodrawingarea.Realized += (sender, e) => {
-                               if (delayStart) {
-                                       Configure ();
-                                       capturer.Run ();
-                               }
-                       };
-               }
-
-               void UpdateLabel (string name)
-               {
-                       frame1.Label = Catalog.GetString ("Period") + " " + name;
-               }
-
-               string FormatTime (Period period, Time time)
-               {
-                       return String.Format ("{0} {1}: {2}  ", Catalog.GetString ("Period"),
-                                             period.Name, time.ToSecondsString ());
+                       currentPeriod = null;
+                       currentTimeNode = null;
+                       currentPeriodStart = DateTime.UtcNow;
+                       accumTime = new Time (0);
+                       Capturing = false;
+                       Capturer = null;
+                       recbutton.Visible = true;
+                       stopbutton.Visible = false;
+                       pausebutton.Visible = false;
+                       savebutton.Visible = false;
+                       cancelbutton.Visible = true;
+                       resumebutton.Visible = false;
                }
 
                void Configure ()
@@ -269,21 +352,28 @@ namespace LongoMatch.Gui
                        VideoMuxerType muxer;
                        IntPtr windowHandle = IntPtr.Zero;
                        
-                       if (capturer == null)
+                       if (Capturer == null) {
+                               videowindow.Visible = false;
                                return;
+                       }
                        
-                       recbutton.Visible = true;
                        /* We need to use Matroska for live replay and remux when the capture is done */
                        muxer = settings.EncodingSettings.EncodingProfile.Muxer;
                        if (muxer == VideoMuxerType.Avi || muxer == VideoMuxerType.Mp4) {
                                settings.EncodingSettings.EncodingProfile.Muxer = VideoMuxerType.Matroska;
                        }
-                               
-                       if (type == CapturerType.Live) {
-                               windowHandle = WindowHandle.GetWindowHandle (videodrawingarea.GdkWindow);
-                       }
-                       capturer.Configure (settings, windowHandle); 
+                       windowHandle = WindowHandle.GetWindowHandle (videowindow.Window.GdkWindow);
+                       Capturer.Configure (settings, windowHandle); 
+                       settings.EncodingSettings.EncodingProfile.Muxer = muxer;
                        delayStart = false;
+                       Capturer.Run ();
+               }
+
+               void HandleReady (object sender, EventArgs e)
+               {
+                       if (delayStart) {
+                               Configure ();
+                       }
                }
 
                void DeviceChanged (int deviceID)
@@ -291,41 +381,17 @@ namespace LongoMatch.Gui
                        string msg;
                        /* device disconnected, pause capture */
                        if (deviceID == -1) {
-                               if (Capturing)
-                                       capturer.TogglePause ();
-                               recbutton.Sensitive = false;
+                               PausePeriod ();
                                msg = Catalog.GetString ("Device disconnected. " + "The capture will be 
paused");
                                MessagesHelpers.WarningMessage (this, msg);
                        } else {
-                               recbutton.Sensitive = true;
                                msg = Catalog.GetString ("Device reconnected." + "Do you want to restart the 
capture?");
                                if (MessagesHelpers.QuestionMessage (this, msg, null)) {
-                                       capturer.TogglePause ();
+                                       ResumePeriod ();
                                }
                        }
                }
 
-               void OnTick (Time ellapsedTime)
-               {
-                       string text = "";
-                       Time duration = new Time (0);
-
-                       this.ellapsedTime = ellapsedTime;
-                       
-                       foreach (Period period in Periods) {
-                               TimeNode tn = period.PeriodNode;
-                               if (tn.Stop != null) {
-                                       text += FormatTime (period, tn.Duration);
-                                       duration += tn.Duration;
-                               } else {
-                                       text += FormatTime (period, ellapsedTime - duration);
-                                       break;
-                               }
-                       }
-                       timelabel.Markup = String.Format ("<span font=\"30px bold\">{0}</span> ", text);
-                       Config.EventsBroker.EmitCapturerTick (ellapsedTime);
-               }
-
                void OnError (string message)
                {
                        Application.Invoke (delegate {
@@ -339,5 +405,12 @@ namespace LongoMatch.Gui
                                DeviceChanged (deviceID);
                        });
                }
+
+               void HandleExposeEvent (object o, ExposeEventArgs args)
+               {
+                       if (Capturer != null) {
+                               Capturer.Expose ();
+                       }
+               }
        }
 }
diff --git a/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs b/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs
index 630f7a3..6d20cad 100644
--- a/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs
+++ b/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs
@@ -52,6 +52,7 @@ namespace LongoMatch.Gui
 
                public event TickHandler Tick;
                public event StateChangeHandler PlayStateChanged;
+               public event EventHandler CloseEvent;
 
                const int THUMBNAIL_MAX_WIDTH = 100;
                const int SCALE_FPS = 25;
@@ -80,14 +81,22 @@ namespace LongoMatch.Gui
                {
                        this.Build ();
 
-                       closebuttonimage.Pixbuf = Helpers.Misc.LoadIcon ("longomatch-control-back", 
IconSize.Button, 0);
-                       drawbuttonimage.Pixbuf = Helpers.Misc.LoadIcon ("longomatch-control-draw", 
IconSize.Button, 0);
-                       playbuttonimage.Pixbuf = Helpers.Misc.LoadIcon ("longomatch-control-play", 
IconSize.Button, 0);
-                       pausebuttonimage.Pixbuf = Helpers.Misc.LoadIcon ("longomatch-control-pause", 
IconSize.Button, 0);
-                       prevbuttonimage.Pixbuf = Helpers.Misc.LoadIcon ("longomatch-control-rw", 
IconSize.Button, 0);
-                       nextbuttonimage.Pixbuf = Helpers.Misc.LoadIcon ("longomatch-control-ff", 
IconSize.Button, 0);
-                       volumebuttonimage.Pixbuf = Helpers.Misc.LoadIcon ("longomatch-control-volume-hi", 
IconSize.Button, 0);
-                       detachbuttonimage.Pixbuf = Helpers.Misc.LoadIcon ("longomatch-control-detach", 
IconSize.Button, 0);
+                       closebuttonimage.Pixbuf = Helpers.Misc.LoadIcon ("longomatch-cancel-rec",
+                                                                        StyleConf.PlayerCapturerIconSize);
+                       drawbuttonimage.Pixbuf = Helpers.Misc.LoadIcon ("longomatch-control-draw",
+                                                                       StyleConf.PlayerCapturerIconSize);
+                       playbuttonimage.Pixbuf = Helpers.Misc.LoadIcon ("longomatch-control-play",
+                                                                       StyleConf.PlayerCapturerIconSize);
+                       pausebuttonimage.Pixbuf = Helpers.Misc.LoadIcon ("longomatch-control-pause",
+                                                                        StyleConf.PlayerCapturerIconSize);
+                       prevbuttonimage.Pixbuf = Helpers.Misc.LoadIcon ("longomatch-control-rw",
+                                                                       StyleConf.PlayerCapturerIconSize);
+                       nextbuttonimage.Pixbuf = Helpers.Misc.LoadIcon ("longomatch-control-ff",
+                                                                       StyleConf.PlayerCapturerIconSize);
+                       volumebuttonimage.Pixbuf = Helpers.Misc.LoadIcon ("longomatch-control-volume-hi",
+                                                                         StyleConf.PlayerCapturerIconSize);
+                       detachbuttonimage.Pixbuf = Helpers.Misc.LoadIcon ("longomatch-control-detach",
+                                                                         StyleConf.PlayerCapturerIconSize);
 
                        vwin = new VolumeWindow ();
                        ConnectSignals ();
@@ -109,6 +118,7 @@ namespace LongoMatch.Gui
                        lastTime = new Time (0);
                        length = new Time (0);
                        vscale1.ModifyFont (FontDescription.FromString (Config.Style.Font + " 8"));
+                       controlsbox.HeightRequest = StyleConf.PlayerCapturerControlsHeight;
                        
                        CreatePlayer ();
                }
@@ -187,6 +197,14 @@ namespace LongoMatch.Gui
                                return player != null ? player.Playing : false;
                        }
                }
+
+               public bool Compact {
+                       set {
+                               prevbutton.Visible = nextbutton.Visible = jumplabel.Visible =
+                               jumpspinbutton.Visible = tlabel.Visible = timelabel.Visible =
+                               detachbutton.Visible = vscale1.Visible = !value;
+                       }
+               }
                
                #endregion
                #region Public methods
@@ -763,6 +781,9 @@ namespace LongoMatch.Gui
 
                void OnClosebuttonClicked (object sender, System.EventArgs e)
                {
+                       if (CloseEvent != null) {
+                               CloseEvent (this, null);
+                       }
                        Config.EventsBroker.EmitLoadEvent (null);
                        Play ();
                }
diff --git a/LongoMatch.GUI.Multimedia/Gui/PlayerCapturerBin.cs 
b/LongoMatch.GUI.Multimedia/Gui/PlayerCapturerBin.cs
index ccf6789..3145410 100644
--- a/LongoMatch.GUI.Multimedia/Gui/PlayerCapturerBin.cs
+++ b/LongoMatch.GUI.Multimedia/Gui/PlayerCapturerBin.cs
@@ -25,6 +25,7 @@ using System.Collections.Generic;
 using LongoMatch.Core.Interfaces;
 using LongoMatch.Core.Store.Playlists;
 using LongoMatch.Core.Interfaces.Multimedia;
+using LongoMatch.Gui.Helpers;
 
 namespace LongoMatch.Gui
 {
@@ -49,8 +50,15 @@ namespace LongoMatch.Gui
                {
                        this.Build ();
                        ConnectSignals();
+                       replayhbox.HeightRequest = livebox.HeightRequest = 
StyleConf.PlayerCapturerControlsHeight;
+                       replayimage.Pixbuf = Misc.LoadIcon ("longomatch-replay", 
StyleConf.PlayerCapturerIconSize);
+                       liveimage.Pixbuf = Misc.LoadIcon ("longomatch-live", 
StyleConf.PlayerCapturerIconSize);
+                       livelabel.ModifyFg (Gtk.StateType.Normal, Misc.ToGdkColor 
(Config.Style.PaletteActive));
+                       replaylabel.ModifyFg (Gtk.StateType.Normal, Misc.ToGdkColor 
(Config.Style.PaletteActive));
+                       livebox.Visible = replayhbox.Visible = false;
+                       playerbin.CloseEvent += HandleCloseClicked;
                }
-               
+
                protected override void OnDestroyed ()
                {
                        playerbin.Destroy ();
@@ -63,31 +71,36 @@ namespace LongoMatch.Gui
                                mode = value;
                                if (mode == PlayerOperationMode.Player) {
                                        ShowPlayer();
+                                       playerbin.Compact = false;
                                } else {
-                                       if (value == PlayerOperationMode.FakeCapturer) {
-                                               capturerbin.Mode = CapturerType.Fake;
-                                       } else {
-                                               capturerbin.Mode = CapturerType.Live;
-                                       }
                                        ShowCapturer();
+                                       playerbin.Compact = true;
                                }
-                               backtolivebutton.Visible = false;
                                Log.Debug ("CapturerPlayer setting mode " + value);
                                backLoaded = false;
                        }
                }
                
                public void ShowPlayer () {
-                       playerbin.Visible = true;
+                       playerbox.Visible = true;
+                       replayhbox.Visible = false;
                        if (mode == PlayerOperationMode.PreviewCapturer && Config.ReviewPlaysInSameWindow)
-                               capturerbin.Visible = true;
+                               capturerbox.Visible = true;
                        else
-                               capturerbin.Visible = false;
+                               capturerbox.Visible = false;
                }
                
                public void ShowCapturer () {
-                       playerbin.Visible = false;
-                       capturerbin.Visible = true;
+                       playerbox.Visible = false;
+                       livebox.Visible = false;
+                       capturerbox.Visible = true;
+               }
+
+               void HandleCloseClicked (object sender, EventArgs e)
+               {
+                       livebox.Visible = replayhbox.Visible = false;
+                       playerbin.Pause ();
+                       ShowCapturer ();
                }
                
 #region Common
@@ -117,6 +130,7 @@ namespace LongoMatch.Gui
 #endregion
 
 #region Capturer
+
                public CaptureSettings CaptureSettings {
                        get {
                                return capturerbin.CaptureSettings;
@@ -135,7 +149,10 @@ namespace LongoMatch.Gui
                        }
                }
                
-               public List<Period> PeriodsTimers {
+               public List<Period> Periods {
+                       get {
+                               return capturerbin.Periods;
+                       }
                        set {
                                capturerbin.Periods = value;
                        }
@@ -149,13 +166,20 @@ namespace LongoMatch.Gui
                        capturerbin.StopPeriod ();
                }
                
-               public void Stop () {
-                       capturerbin.Stop ();
-               }
-               
                public void Run (CaptureSettings settings) {
                        capturerbin.Run (settings);
                }
+               
+               public void PausePeriod ()
+               {
+                       capturerbin.PausePeriod ();
+               }
+
+               public void ResumePeriod ()
+               {
+                       capturerbin.ResumePeriod ();
+               }
+
 #endregion
                
                
@@ -229,9 +253,9 @@ namespace LongoMatch.Gui
                
                public void LoadPlay (MediaFileSet fileSet, TimelineEvent play, Time seekTime, bool playing) {
                        if (mode == PlayerOperationMode.PreviewCapturer) {
-                               backtolivebutton.Visible = true;
                                ShowPlayer ();
                                LoadBackgroundPlayer(fileSet);
+                               livebox.Visible = replayhbox.Visible = true;
                        }
                        playerbin.LoadPlay (fileSet, play, seekTime, playing);
                }
@@ -279,7 +303,6 @@ namespace LongoMatch.Gui
 
                protected void OnBacktolivebuttonClicked (object sender, System.EventArgs e)
                {
-                       backtolivebutton.Visible = false;
                        playerbin.Pause();
                        ShowCapturer ();
                }
diff --git a/LongoMatch.GUI.Multimedia/Gui/RecordingController.cs 
b/LongoMatch.GUI.Multimedia/Gui/RecordingController.cs
new file mode 100644
index 0000000..ea93345
--- /dev/null
+++ b/LongoMatch.GUI.Multimedia/Gui/RecordingController.cs
@@ -0,0 +1,254 @@
+//
+//  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.Store;
+using LongoMatch.Core.Interfaces.Multimedia;
+using Mono.Unix;
+using LongoMatch.Gui.Helpers;
+using LongoMatch.Core.Common;
+using Gtk;
+using Misc = LongoMatch.Gui.Helpers.Misc;
+
+namespace LongoMatch.Gui
+{
+       [System.ComponentModel.ToolboxItem(true)]
+       public partial class RecordingController : Gtk.Bin
+       {
+               Period currentPeriod;
+               uint timeoutID;
+               TimeNode currentTimeNode;
+               Time accumTime;
+               DateTime currentPeriodStart;
+               List<string> gamePeriods;
+
+               public RecordingController ()
+               {
+                       this.Build ();
+                       recbutton.Clicked += (sender, e) => StartPeriod ();
+                       stopbutton.Clicked += (sender, e) => StopPeriod ();
+                       pausebutton.Clicked += (sender, e) => PausePeriod ();
+                       resumebutton.Clicked += (sender, e) => ResumePeriod ();
+                       savebutton.Clicked += HandleSaveClicked;
+                       cancelbutton.Clicked += HandleCloseClicked;
+                       recimage.Pixbuf = Misc.LoadIcon ("longomatch-record",
+                                                        StyleConf.PlayerCapturerIconSize);
+                       stopimage.Pixbuf = Misc.LoadIcon ("longomatch-stop",
+                                                         StyleConf.PlayerCapturerIconSize);
+                       pauseimage.Pixbuf = Misc.LoadIcon ("longomatch-pause-clock",
+                                                          StyleConf.PlayerCapturerIconSize);
+                       saveimage.Pixbuf = Misc.LoadIcon ("longomatch-save",
+                                                         StyleConf.PlayerCapturerIconSize);
+                       resumeimage.Pixbuf = Misc.LoadIcon ("longomatch-pause-clock",
+                                                           StyleConf.PlayerCapturerIconSize);
+                       cancelimage.Pixbuf = Misc.LoadIcon ("longomatch-cancel-rec",
+                                                           StyleConf.PlayerCapturerIconSize);
+                       Periods = new List<Period>();
+                       hourseventbox.ModifyBg (StateType.Normal, Misc.ToGdkColor 
(Config.Style.PaletteBackgroundDark));
+                       hourlabel.ModifyFg (StateType.Normal, Misc.ToGdkColor (Config.Style.PaletteText));
+                       hourlabel.ModifyFont (Pango.FontDescription.FromString ("Ubuntu 24px"));
+                       hourseventbox.WidthRequest = 40;
+                       minuteseventbox.ModifyBg (StateType.Normal, Misc.ToGdkColor 
(Config.Style.PaletteBackgroundDark));
+                       minuteslabel.ModifyFg (StateType.Normal, Misc.ToGdkColor (Config.Style.PaletteText));
+                       minuteslabel.ModifyFont (Pango.FontDescription.FromString ("Ubuntu 24px"));
+                       minuteseventbox.WidthRequest = 40;
+                       secondseventbox.ModifyBg (StateType.Normal, Misc.ToGdkColor 
(Config.Style.PaletteBackgroundDark));
+                       secondslabel.ModifyFg (StateType.Normal, Misc.ToGdkColor (Config.Style.PaletteText));
+                       secondslabel.ModifyFont (Pango.FontDescription.FromString ("Ubuntu 24px"));
+                       secondseventbox.WidthRequest = 40;
+                       label1.ModifyFont (Pango.FontDescription.FromString ("Ubuntu 24px"));
+                       label1.ModifyFg (StateType.Normal, Misc.ToGdkColor (Config.Style.PaletteText));
+                       label2.ModifyFont (Pango.FontDescription.FromString ("Ubuntu 24px"));
+                       label2.ModifyFg (StateType.Normal, Misc.ToGdkColor (Config.Style.PaletteText));
+                       periodlabel.ModifyFont (Pango.FontDescription.FromString ("Ubuntu 24px"));
+                       periodlabel.ModifyFg (StateType.Normal, Misc.ToGdkColor (Config.Style.PaletteText));
+                       Reset ();
+               }
+               
+               protected override void OnDestroyed ()
+               {
+                       if (timeoutID != 0) {
+                               GLib.Source.Remove (timeoutID);
+                       }
+                       base.OnDestroyed ();
+               }
+
+               public bool Capturing {
+                       get;
+                       set;
+               }
+
+               public List<string> GamePeriods {
+                       set {
+                               gamePeriods = value;
+                               if (gamePeriods != null && gamePeriods.Count > 0) {
+                                       periodlabel.Markup = gamePeriods [0];
+                               } else {
+                                       periodlabel.Markup = "1";
+                               }
+                       }
+                       get {
+                               return gamePeriods;
+                       }
+               }
+
+               public ICapturer Capturer {
+                       get;
+                       set;
+               }
+               
+               public List<Period> Periods {
+                       set;
+                       get;
+               }
+               
+               public void Reset () {
+                       currentPeriod = null;
+                       currentTimeNode = null;
+                       currentPeriodStart = DateTime.UtcNow;
+                       accumTime = new Time (0);
+                       Capturing = false;
+                       recbutton.Visible = true;
+                       stopbutton.Visible = false;
+                       pausebutton.Visible = false;
+                       savebutton.Visible = false;
+                       cancelbutton.Visible = true;
+                       resumebutton.Visible = false;
+               }
+
+               public void StartPeriod ()
+               {
+                       string periodName;
+                       
+                       recbutton.Visible = false;
+                       pausebutton.Visible = savebutton.Visible = stopbutton.Visible = true;
+                       
+                       if (GamePeriods != null && GamePeriods.Count > Periods.Count) {
+                               periodName = GamePeriods [Periods.Count];
+                       } else {
+                               periodName = (Periods.Count + 1).ToString ();
+                       }
+                       currentPeriod = new Period { Name = periodName };
+                       
+                       currentTimeNode = currentPeriod.StartTimer (accumTime, periodName);
+                       currentTimeNode.Stop = currentTimeNode.Start;
+                       currentPeriodStart = DateTime.UtcNow;
+                       timeoutID = GLib.Timeout.Add (20, UpdateTime);
+                       if (Capturer != null) {
+                               if (Periods.Count == 0) {
+                                       Capturer.Start ();
+                               } else {
+                                       Capturer.TogglePause ();
+                               }
+                       }
+                       periodlabel.Markup = currentPeriod.Name;
+                       Capturing = true;
+                       Periods.Add (currentPeriod);
+                       Log.Debug ("Start new period start=", currentTimeNode.Start.ToMSecondsString());
+               }
+
+               public void StopPeriod ()
+               {
+                       GLib.Source.Remove (timeoutID);
+                       if (currentPeriod != null) {
+                               currentPeriod.StopTimer (CurrentTime);
+                               accumTime = CurrentTime;
+                               Log.Debug ("Stop period stop=", accumTime.ToMSecondsString());
+                       }
+                       currentTimeNode = null;
+                       currentPeriod = null;
+                       
+                       recbutton.Visible = true;
+                       pausebutton.Visible = resumebutton.Visible = stopbutton.Visible = false;
+                       if (Capturer != null && Capturing) {
+                               Capturer.TogglePause ();
+                       }
+                       Capturing = false;
+               }
+
+               public void PausePeriod ()
+               {
+                       if (currentPeriod != null) {
+                               Log.Debug ("Pause period at currentTime=", CurrentTime.ToMSecondsString());
+                               currentPeriod.PauseTimer (CurrentTime);
+                       }
+                       currentTimeNode = null;
+                       pausebutton.Visible = false;
+                       resumebutton.Visible = true;
+                       Capturing = false;
+               }
+
+               public void ResumePeriod ()
+               {
+                       Log.Debug ("Resume period at currentTime=", CurrentTime.ToMSecondsString());
+                       currentTimeNode = currentPeriod.Resume (CurrentTime);
+                       pausebutton.Visible = true;
+                       resumebutton.Visible = false;
+                       Capturing = true;
+               }
+
+               Time CurrentTime {
+                       get {
+                               int timeDiff;
+                               
+                               timeDiff = (int)(DateTime.UtcNow - currentPeriodStart).TotalMilliseconds; 
+                               return (new Time (accumTime.MSeconds + timeDiff));
+                       }
+               }
+
+               public Time EllapsedTime {
+                       get {
+                               if (currentPeriod != null) {
+                                       return currentPeriod.TotalTime;
+                               } else {
+                                       return new Time (0);
+                               }
+                               
+                       }
+               }
+               
+               bool UpdateTime () {
+                       if (currentTimeNode != null) {
+                               currentTimeNode.Stop = CurrentTime;
+                       }
+                       hourlabel.Markup = EllapsedTime.Hours.ToString ("d2");
+                       minuteslabel.Markup = EllapsedTime.Minutes.ToString ("d2");
+                       secondslabel.Markup = EllapsedTime.Seconds.ToString ("d2");
+                       Config.EventsBroker.EmitCapturerTick (new Time (Periods.Sum (p => 
p.TotalTime.MSeconds)));
+                       return true;
+               }
+               
+               void HandleSaveClicked (object sender, EventArgs e)
+               {
+                       string msg = Catalog.GetString ("Do you want to finish the current capture?");
+                       if (MessagesHelpers.QuestionMessage (this, msg)) {
+                               Config.EventsBroker.EmitCaptureFinished (false);
+                       }
+               }
+
+               void HandleCloseClicked (object sender, EventArgs e)
+               {
+                       string msg = Catalog.GetString ("Do you want to close and cancell the current 
capture?");
+                       if (MessagesHelpers.QuestionMessage (this, msg)) {
+                               Config.EventsBroker.EmitCaptureFinished (true);
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/LongoMatch.GUI.Multimedia/Gui/VideoWindow.cs b/LongoMatch.GUI.Multimedia/Gui/VideoWindow.cs
index 6062574..d8c70c7 100644
--- a/LongoMatch.GUI.Multimedia/Gui/VideoWindow.cs
+++ b/LongoMatch.GUI.Multimedia/Gui/VideoWindow.cs
@@ -53,7 +53,7 @@ namespace LongoMatch.Gui
                        }
                        set {
                                base.Visible = value;
-                               if (value) {
+                               if (value && Window.GdkWindow != null) {
                                        // Hack for Windows. Force video window visibility as EventBox 
window's might prevent it to be mapped again.
                                        // See for more info 
https://code.area51.fluendo.com/private/trac/ticket/26543
                                        Window.GdkWindow.Show ();
diff --git a/LongoMatch.GUI.Multimedia/MultimediaToolkit.cs b/LongoMatch.GUI.Multimedia/MultimediaToolkit.cs
index ada2873..17b400f 100644
--- a/LongoMatch.GUI.Multimedia/MultimediaToolkit.cs
+++ b/LongoMatch.GUI.Multimedia/MultimediaToolkit.cs
@@ -28,10 +28,6 @@ namespace LongoMatch.Video
 
        public class MultimediaToolkit:MultimediaFactory, IMultimediaToolkit
        {
-
-               public MultimediaToolkit () {
-               }
-               
                public string RemuxFile (MediaFile file, object window) {
                        LongoMatch.Video.Utils.Remuxer remuxer = new LongoMatch.Video.Utils.Remuxer (file);
                        return remuxer.Remux (window as Gtk.Window);
diff --git a/LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.CapturerBin.cs 
b/LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.CapturerBin.cs
index e413b30..027fe4c 100644
--- a/LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.CapturerBin.cs
+++ b/LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.CapturerBin.cs
@@ -5,17 +5,31 @@ namespace LongoMatch.Gui
        public partial class CapturerBin
        {
                private global::Gtk.VBox vbox1;
-               private global::Gtk.DrawingArea videodrawingarea;
-               private global::Gtk.HBox hbox2;
-               private global::Gtk.Frame frame1;
-               private global::Gtk.Alignment GtkAlignment;
-               private global::Gtk.HBox buttonsbox;
+               private global::LongoMatch.Gui.VideoWindow videowindow;
+               private global::Gtk.Alignment alignment1;
+               private global::Gtk.HBox controllerbox;
+               private global::Gtk.EventBox hourseventbox;
+               private global::Gtk.Label hourlabel;
+               private global::Gtk.Label label1;
+               private global::Gtk.EventBox minuteseventbox;
+               private global::Gtk.Label minuteslabel;
+               private global::Gtk.Label label2;
+               private global::Gtk.EventBox secondseventbox;
+               private global::Gtk.Label secondslabel;
+               private global::Gtk.Label periodlabel;
+               private global::Gtk.VSeparator vseparator1;
                private global::Gtk.Button recbutton;
+               private global::Gtk.Image recimage;
                private global::Gtk.Button stopbutton;
-               private global::Gtk.Button finishbutton;
+               private global::Gtk.Image stopimage;
+               private global::Gtk.Button pausebutton;
+               private global::Gtk.Image pauseimage;
+               private global::Gtk.Button resumebutton;
+               private global::Gtk.Image resumeimage;
+               private global::Gtk.Button savebutton;
+               private global::Gtk.Image saveimage;
                private global::Gtk.Button cancelbutton;
-               private global::Gtk.Label GtkLabel3;
-               private global::Gtk.Label timelabel;
+               private global::Gtk.Image cancelimage;
 
                protected virtual void Build ()
                {
@@ -28,154 +42,216 @@ namespace LongoMatch.Gui
                        this.vbox1.Name = "vbox1";
                        this.vbox1.Spacing = 6;
                        // Container child vbox1.Gtk.Box+BoxChild
-                       this.videodrawingarea = new global::Gtk.DrawingArea ();
-                       this.videodrawingarea.Name = "videodrawingarea";
-                       this.vbox1.Add (this.videodrawingarea);
-                       global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox1 
[this.videodrawingarea]));
+                       this.videowindow = new global::LongoMatch.Gui.VideoWindow ();
+                       this.videowindow.Events = ((global::Gdk.EventMask)(256));
+                       this.videowindow.Name = "videowindow";
+                       this.videowindow.Ready = false;
+                       this.vbox1.Add (this.videowindow);
+                       global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox1 
[this.videowindow]));
                        w1.Position = 0;
                        // Container child vbox1.Gtk.Box+BoxChild
-                       this.hbox2 = new global::Gtk.HBox ();
-                       this.hbox2.Name = "hbox2";
-                       this.hbox2.Spacing = 6;
-                       // Container child hbox2.Gtk.Box+BoxChild
-                       this.frame1 = new global::Gtk.Frame ();
-                       this.frame1.Name = "frame1";
-                       this.frame1.ShadowType = ((global::Gtk.ShadowType)(0));
-                       // Container child frame1.Gtk.Container+ContainerChild
-                       this.GtkAlignment = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
-                       this.GtkAlignment.Name = "GtkAlignment";
-                       this.GtkAlignment.LeftPadding = ((uint)(12));
-                       // Container child GtkAlignment.Gtk.Container+ContainerChild
-                       this.buttonsbox = new global::Gtk.HBox ();
-                       this.buttonsbox.Name = "buttonsbox";
-                       this.buttonsbox.Spacing = 6;
-                       // Container child buttonsbox.Gtk.Box+BoxChild
+                       this.alignment1 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 1F);
+                       this.alignment1.Name = "alignment1";
+                       // Container child alignment1.Gtk.Container+ContainerChild
+                       this.controllerbox = new global::Gtk.HBox ();
+                       this.controllerbox.Name = "controllerbox";
+                       this.controllerbox.Spacing = 6;
+                       // Container child controllerbox.Gtk.Box+BoxChild
+                       this.hourseventbox = new global::Gtk.EventBox ();
+                       this.hourseventbox.Name = "hourseventbox";
+                       // Container child hourseventbox.Gtk.Container+ContainerChild
+                       this.hourlabel = new global::Gtk.Label ();
+                       this.hourlabel.Name = "hourlabel";
+                       this.hourlabel.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>00</b>");
+                       this.hourlabel.UseMarkup = true;
+                       this.hourseventbox.Add (this.hourlabel);
+                       this.controllerbox.Add (this.hourseventbox);
+                       global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.controllerbox 
[this.hourseventbox]));
+                       w3.Position = 0;
+                       w3.Expand = false;
+                       // Container child controllerbox.Gtk.Box+BoxChild
+                       this.label1 = new global::Gtk.Label ();
+                       this.label1.Name = "label1";
+                       this.label1.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>:</b>");
+                       this.label1.UseMarkup = true;
+                       this.controllerbox.Add (this.label1);
+                       global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.controllerbox 
[this.label1]));
+                       w4.Position = 1;
+                       w4.Expand = false;
+                       w4.Fill = false;
+                       // Container child controllerbox.Gtk.Box+BoxChild
+                       this.minuteseventbox = new global::Gtk.EventBox ();
+                       this.minuteseventbox.Name = "minuteseventbox";
+                       // Container child minuteseventbox.Gtk.Container+ContainerChild
+                       this.minuteslabel = new global::Gtk.Label ();
+                       this.minuteslabel.Name = "minuteslabel";
+                       this.minuteslabel.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>00</b>");
+                       this.minuteslabel.UseMarkup = true;
+                       this.minuteseventbox.Add (this.minuteslabel);
+                       this.controllerbox.Add (this.minuteseventbox);
+                       global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.controllerbox 
[this.minuteseventbox]));
+                       w6.Position = 2;
+                       w6.Expand = false;
+                       w6.Fill = false;
+                       // Container child controllerbox.Gtk.Box+BoxChild
+                       this.label2 = new global::Gtk.Label ();
+                       this.label2.Name = "label2";
+                       this.label2.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>:</b>");
+                       this.label2.UseMarkup = true;
+                       this.controllerbox.Add (this.label2);
+                       global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.controllerbox 
[this.label2]));
+                       w7.Position = 3;
+                       w7.Expand = false;
+                       w7.Fill = false;
+                       // Container child controllerbox.Gtk.Box+BoxChild
+                       this.secondseventbox = new global::Gtk.EventBox ();
+                       this.secondseventbox.Name = "secondseventbox";
+                       // Container child secondseventbox.Gtk.Container+ContainerChild
+                       this.secondslabel = new global::Gtk.Label ();
+                       this.secondslabel.Name = "secondslabel";
+                       this.secondslabel.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>00</b>");
+                       this.secondslabel.UseMarkup = true;
+                       this.secondseventbox.Add (this.secondslabel);
+                       this.controllerbox.Add (this.secondseventbox);
+                       global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.controllerbox 
[this.secondseventbox]));
+                       w9.Position = 4;
+                       w9.Expand = false;
+                       w9.Fill = false;
+                       // Container child controllerbox.Gtk.Box+BoxChild
+                       this.periodlabel = new global::Gtk.Label ();
+                       this.periodlabel.Name = "periodlabel";
+                       this.periodlabel.Xpad = 10;
+                       this.controllerbox.Add (this.periodlabel);
+                       global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.controllerbox 
[this.periodlabel]));
+                       w10.Position = 5;
+                       w10.Expand = false;
+                       w10.Fill = false;
+                       // Container child controllerbox.Gtk.Box+BoxChild
+                       this.vseparator1 = new global::Gtk.VSeparator ();
+                       this.vseparator1.WidthRequest = 60;
+                       this.vseparator1.Name = "vseparator1";
+                       this.controllerbox.Add (this.vseparator1);
+                       global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.controllerbox 
[this.vseparator1]));
+                       w11.Position = 6;
+                       w11.Expand = false;
+                       // Container child controllerbox.Gtk.Box+BoxChild
                        this.recbutton = new global::Gtk.Button ();
-                       this.recbutton.TooltipMarkup = "Start capturing new period";
+                       this.recbutton.TooltipMarkup = "Start recording period";
+                       this.recbutton.CanFocus = true;
                        this.recbutton.Name = "recbutton";
-                       this.recbutton.UseUnderline = true;
+                       this.recbutton.Relief = ((global::Gtk.ReliefStyle)(2));
                        // Container child recbutton.Gtk.Container+ContainerChild
-                       global::Gtk.Alignment w2 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
-                       // Container child GtkAlignment.Gtk.Container+ContainerChild
-                       global::Gtk.HBox w3 = new global::Gtk.HBox ();
-                       w3.Spacing = 2;
-                       // Container child GtkHBox.Gtk.Container+ContainerChild
-                       global::Gtk.Image w4 = new global::Gtk.Image ();
-                       w4.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-media-record", 
global::Gtk.IconSize.Menu);
-                       w3.Add (w4);
-                       // Container child GtkHBox.Gtk.Container+ContainerChild
-                       global::Gtk.Label w6 = new global::Gtk.Label ();
-                       w3.Add (w6);
-                       w2.Add (w3);
-                       this.recbutton.Add (w2);
-                       this.buttonsbox.Add (this.recbutton);
-                       global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.buttonsbox 
[this.recbutton]));
-                       w10.Position = 0;
-                       w10.Expand = false;
-                       w10.Fill = false;
-                       // Container child buttonsbox.Gtk.Box+BoxChild
+                       this.recimage = new global::Gtk.Image ();
+                       this.recimage.Name = "recimage";
+                       this.recimage.Xpad = 5;
+                       this.recimage.Ypad = 5;
+                       this.recbutton.Add (this.recimage);
+                       this.recbutton.Label = null;
+                       this.controllerbox.Add (this.recbutton);
+                       global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.controllerbox 
[this.recbutton]));
+                       w13.Position = 7;
+                       w13.Expand = false;
+                       w13.Fill = false;
+                       // Container child controllerbox.Gtk.Box+BoxChild
                        this.stopbutton = new global::Gtk.Button ();
-                       this.stopbutton.TooltipMarkup = "Stop capturing current period";
+                       this.stopbutton.TooltipMarkup = "Stop recording period";
+                       this.stopbutton.CanFocus = true;
                        this.stopbutton.Name = "stopbutton";
-                       this.stopbutton.UseUnderline = true;
+                       this.stopbutton.Relief = ((global::Gtk.ReliefStyle)(2));
                        // Container child stopbutton.Gtk.Container+ContainerChild
-                       global::Gtk.Alignment w11 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
-                       // Container child GtkAlignment.Gtk.Container+ContainerChild
-                       global::Gtk.HBox w12 = new global::Gtk.HBox ();
-                       w12.Spacing = 2;
-                       // Container child GtkHBox.Gtk.Container+ContainerChild
-                       global::Gtk.Image w13 = new global::Gtk.Image ();
-                       w13.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-media-stop", 
global::Gtk.IconSize.Menu);
-                       w12.Add (w13);
-                       // Container child GtkHBox.Gtk.Container+ContainerChild
-                       global::Gtk.Label w15 = new global::Gtk.Label ();
-                       w12.Add (w15);
-                       w11.Add (w12);
-                       this.stopbutton.Add (w11);
-                       this.buttonsbox.Add (this.stopbutton);
-                       global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(this.buttonsbox 
[this.stopbutton]));
-                       w19.Position = 1;
+                       this.stopimage = new global::Gtk.Image ();
+                       this.stopimage.Name = "stopimage";
+                       this.stopimage.Xpad = 5;
+                       this.stopimage.Ypad = 5;
+                       this.stopbutton.Add (this.stopimage);
+                       this.stopbutton.Label = null;
+                       this.controllerbox.Add (this.stopbutton);
+                       global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.controllerbox 
[this.stopbutton]));
+                       w15.Position = 8;
+                       w15.Expand = false;
+                       w15.Fill = false;
+                       // Container child controllerbox.Gtk.Box+BoxChild
+                       this.pausebutton = new global::Gtk.Button ();
+                       this.pausebutton.TooltipMarkup = "Pause clock";
+                       this.pausebutton.CanFocus = true;
+                       this.pausebutton.Name = "pausebutton";
+                       this.pausebutton.Relief = ((global::Gtk.ReliefStyle)(2));
+                       // Container child pausebutton.Gtk.Container+ContainerChild
+                       this.pauseimage = new global::Gtk.Image ();
+                       this.pauseimage.Name = "pauseimage";
+                       this.pauseimage.Xpad = 5;
+                       this.pauseimage.Ypad = 5;
+                       this.pausebutton.Add (this.pauseimage);
+                       this.pausebutton.Label = null;
+                       this.controllerbox.Add (this.pausebutton);
+                       global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.controllerbox 
[this.pausebutton]));
+                       w17.Position = 9;
+                       w17.Expand = false;
+                       w17.Fill = false;
+                       // Container child controllerbox.Gtk.Box+BoxChild
+                       this.resumebutton = new global::Gtk.Button ();
+                       this.resumebutton.TooltipMarkup = "Resume clock";
+                       this.resumebutton.CanFocus = true;
+                       this.resumebutton.Name = "resumebutton";
+                       this.resumebutton.Relief = ((global::Gtk.ReliefStyle)(2));
+                       // Container child resumebutton.Gtk.Container+ContainerChild
+                       this.resumeimage = new global::Gtk.Image ();
+                       this.resumeimage.Name = "resumeimage";
+                       this.resumeimage.Xpad = 5;
+                       this.resumeimage.Ypad = 5;
+                       this.resumebutton.Add (this.resumeimage);
+                       this.resumebutton.Label = null;
+                       this.controllerbox.Add (this.resumebutton);
+                       global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(this.controllerbox 
[this.resumebutton]));
+                       w19.Position = 10;
                        w19.Expand = false;
                        w19.Fill = false;
-                       // Container child buttonsbox.Gtk.Box+BoxChild
-                       this.finishbutton = new global::Gtk.Button ();
-                       this.finishbutton.TooltipMarkup = "End capture";
-                       this.finishbutton.Name = "finishbutton";
-                       this.finishbutton.UseUnderline = true;
-                       // Container child finishbutton.Gtk.Container+ContainerChild
-                       global::Gtk.Alignment w20 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
-                       // Container child GtkAlignment.Gtk.Container+ContainerChild
-                       global::Gtk.HBox w21 = new global::Gtk.HBox ();
-                       w21.Spacing = 2;
-                       // Container child GtkHBox.Gtk.Container+ContainerChild
-                       global::Gtk.Image w22 = new global::Gtk.Image ();
-                       w22.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-ok", 
global::Gtk.IconSize.Menu);
-                       w21.Add (w22);
-                       // Container child GtkHBox.Gtk.Container+ContainerChild
-                       global::Gtk.Label w24 = new global::Gtk.Label ();
-                       w21.Add (w24);
-                       w20.Add (w21);
-                       this.finishbutton.Add (w20);
-                       this.buttonsbox.Add (this.finishbutton);
-                       global::Gtk.Box.BoxChild w28 = ((global::Gtk.Box.BoxChild)(this.buttonsbox 
[this.finishbutton]));
-                       w28.Position = 2;
-                       w28.Expand = false;
-                       w28.Fill = false;
-                       // Container child buttonsbox.Gtk.Box+BoxChild
+                       // Container child controllerbox.Gtk.Box+BoxChild
+                       this.savebutton = new global::Gtk.Button ();
+                       this.savebutton.TooltipMarkup = "Save project";
+                       this.savebutton.CanFocus = true;
+                       this.savebutton.Name = "savebutton";
+                       this.savebutton.Relief = ((global::Gtk.ReliefStyle)(2));
+                       // Container child savebutton.Gtk.Container+ContainerChild
+                       this.saveimage = new global::Gtk.Image ();
+                       this.saveimage.Name = "saveimage";
+                       this.saveimage.Xpad = 5;
+                       this.saveimage.Ypad = 5;
+                       this.savebutton.Add (this.saveimage);
+                       this.savebutton.Label = null;
+                       this.controllerbox.Add (this.savebutton);
+                       global::Gtk.Box.BoxChild w21 = ((global::Gtk.Box.BoxChild)(this.controllerbox 
[this.savebutton]));
+                       w21.Position = 11;
+                       w21.Expand = false;
+                       w21.Fill = false;
+                       // Container child controllerbox.Gtk.Box+BoxChild
                        this.cancelbutton = new global::Gtk.Button ();
-                       this.cancelbutton.TooltipMarkup = "Close current capture";
+                       this.cancelbutton.TooltipMarkup = "Cancel capture";
                        this.cancelbutton.CanFocus = true;
                        this.cancelbutton.Name = "cancelbutton";
-                       this.cancelbutton.UseUnderline = true;
+                       this.cancelbutton.Relief = ((global::Gtk.ReliefStyle)(2));
                        // Container child cancelbutton.Gtk.Container+ContainerChild
-                       global::Gtk.Alignment w29 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
-                       // Container child GtkAlignment.Gtk.Container+ContainerChild
-                       global::Gtk.HBox w30 = new global::Gtk.HBox ();
-                       w30.Spacing = 2;
-                       // Container child GtkHBox.Gtk.Container+ContainerChild
-                       global::Gtk.Image w31 = new global::Gtk.Image ();
-                       w31.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-stop", 
global::Gtk.IconSize.Menu);
-                       w30.Add (w31);
-                       // Container child GtkHBox.Gtk.Container+ContainerChild
-                       global::Gtk.Label w33 = new global::Gtk.Label ();
-                       w30.Add (w33);
-                       w29.Add (w30);
-                       this.cancelbutton.Add (w29);
-                       this.buttonsbox.Add (this.cancelbutton);
-                       global::Gtk.Box.BoxChild w37 = ((global::Gtk.Box.BoxChild)(this.buttonsbox 
[this.cancelbutton]));
-                       w37.Position = 3;
-                       w37.Expand = false;
-                       w37.Fill = false;
-                       this.GtkAlignment.Add (this.buttonsbox);
-                       this.frame1.Add (this.GtkAlignment);
-                       this.GtkLabel3 = new global::Gtk.Label ();
-                       this.GtkLabel3.Name = "GtkLabel3";
-                       this.GtkLabel3.UseMarkup = true;
-                       this.frame1.LabelWidget = this.GtkLabel3;
-                       this.hbox2.Add (this.frame1);
-                       global::Gtk.Box.BoxChild w40 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.frame1]));
-                       w40.Position = 0;
-                       w40.Expand = false;
-                       w40.Fill = false;
-                       // Container child hbox2.Gtk.Box+BoxChild
-                       this.timelabel = new global::Gtk.Label ();
-                       this.timelabel.Name = "timelabel";
-                       this.timelabel.LabelProp = "Time: 0:00:00";
-                       this.timelabel.UseMarkup = true;
-                       this.hbox2.Add (this.timelabel);
-                       global::Gtk.Box.BoxChild w41 = ((global::Gtk.Box.BoxChild)(this.hbox2 
[this.timelabel]));
-                       w41.PackType = ((global::Gtk.PackType)(1));
-                       w41.Position = 1;
-                       this.vbox1.Add (this.hbox2);
-                       global::Gtk.Box.BoxChild w42 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.hbox2]));
-                       w42.Position = 1;
-                       w42.Expand = false;
+                       this.cancelimage = new global::Gtk.Image ();
+                       this.cancelimage.Name = "cancelimage";
+                       this.cancelimage.Xpad = 5;
+                       this.cancelimage.Ypad = 5;
+                       this.cancelbutton.Add (this.cancelimage);
+                       this.cancelbutton.Label = null;
+                       this.controllerbox.Add (this.cancelbutton);
+                       global::Gtk.Box.BoxChild w23 = ((global::Gtk.Box.BoxChild)(this.controllerbox 
[this.cancelbutton]));
+                       w23.Position = 12;
+                       w23.Expand = false;
+                       w23.Fill = false;
+                       this.alignment1.Add (this.controllerbox);
+                       this.vbox1.Add (this.alignment1);
+                       global::Gtk.Box.BoxChild w25 = ((global::Gtk.Box.BoxChild)(this.vbox1 
[this.alignment1]));
+                       w25.Position = 1;
+                       w25.Expand = false;
                        this.Add (this.vbox1);
                        if ((this.Child != null)) {
                                this.Child.ShowAll ();
                        }
-                       this.stopbutton.Hide ();
-                       this.finishbutton.Hide ();
+                       this.videowindow.Hide ();
                        this.Show ();
                }
        }
diff --git a/LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.PlayerBin.cs 
b/LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.PlayerBin.cs
index 05c8d42..19f7326 100644
--- a/LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.PlayerBin.cs
+++ b/LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.PlayerBin.cs
@@ -93,6 +93,7 @@ namespace LongoMatch.Gui
                        this.vbox5.Spacing = 6;
                        // Container child vbox5.Gtk.Box+BoxChild
                        this.vscale1 = new global::Gtk.VScale (null);
+                       this.vscale1.TooltipMarkup = "Playback speed";
                        this.vscale1.WidthRequest = 36;
                        this.vscale1.Sensitive = false;
                        this.vscale1.Name = "vscale1";
@@ -131,6 +132,7 @@ namespace LongoMatch.Gui
                        this.buttonsbox.Homogeneous = true;
                        // Container child buttonsbox.Gtk.Box+BoxChild
                        this.closebutton = new global::Gtk.Button ();
+                       this.closebutton.TooltipMarkup = "Close loaded event";
                        this.closebutton.Name = "closebutton";
                        this.closebutton.Relief = ((global::Gtk.ReliefStyle)(2));
                        // Container child closebutton.Gtk.Container+ContainerChild
@@ -145,6 +147,7 @@ namespace LongoMatch.Gui
                        w10.Fill = false;
                        // Container child buttonsbox.Gtk.Box+BoxChild
                        this.drawbutton = new global::Gtk.Button ();
+                       this.drawbutton.TooltipMarkup = "Draw frame";
                        this.drawbutton.Name = "drawbutton";
                        this.drawbutton.Relief = ((global::Gtk.ReliefStyle)(2));
                        // Container child drawbutton.Gtk.Container+ContainerChild
@@ -159,6 +162,7 @@ namespace LongoMatch.Gui
                        w12.Fill = false;
                        // Container child buttonsbox.Gtk.Box+BoxChild
                        this.playbutton = new global::Gtk.Button ();
+                       this.playbutton.TooltipMarkup = "Play";
                        this.playbutton.Name = "playbutton";
                        this.playbutton.Relief = ((global::Gtk.ReliefStyle)(2));
                        // Container child playbutton.Gtk.Container+ContainerChild
@@ -173,6 +177,7 @@ namespace LongoMatch.Gui
                        w14.Fill = false;
                        // Container child buttonsbox.Gtk.Box+BoxChild
                        this.pausebutton = new global::Gtk.Button ();
+                       this.pausebutton.TooltipMarkup = "Pause";
                        this.pausebutton.Name = "pausebutton";
                        this.pausebutton.Relief = ((global::Gtk.ReliefStyle)(2));
                        // Container child pausebutton.Gtk.Container+ContainerChild
@@ -187,6 +192,7 @@ namespace LongoMatch.Gui
                        w16.Fill = false;
                        // Container child buttonsbox.Gtk.Box+BoxChild
                        this.prevbutton = new global::Gtk.Button ();
+                       this.prevbutton.TooltipMarkup = "Previous";
                        this.prevbutton.Name = "prevbutton";
                        this.prevbutton.Relief = ((global::Gtk.ReliefStyle)(2));
                        // Container child prevbutton.Gtk.Container+ContainerChild
@@ -201,6 +207,7 @@ namespace LongoMatch.Gui
                        w18.Fill = false;
                        // Container child buttonsbox.Gtk.Box+BoxChild
                        this.nextbutton = new global::Gtk.Button ();
+                       this.nextbutton.TooltipMarkup = "Next";
                        this.nextbutton.Sensitive = false;
                        this.nextbutton.Name = "nextbutton";
                        this.nextbutton.Relief = ((global::Gtk.ReliefStyle)(2));
@@ -281,6 +288,7 @@ namespace LongoMatch.Gui
                        w27.Expand = false;
                        // Container child controlsbox.Gtk.Box+BoxChild
                        this.volumebutton = new global::Gtk.Button ();
+                       this.volumebutton.TooltipMarkup = "Volume";
                        this.volumebutton.Name = "volumebutton";
                        this.volumebutton.Relief = ((global::Gtk.ReliefStyle)(2));
                        // Container child volumebutton.Gtk.Container+ContainerChild
@@ -295,6 +303,7 @@ namespace LongoMatch.Gui
                        w29.Fill = false;
                        // Container child controlsbox.Gtk.Box+BoxChild
                        this.detachbutton = new global::Gtk.Button ();
+                       this.detachbutton.TooltipMarkup = "Detach window";
                        this.detachbutton.Name = "detachbutton";
                        this.detachbutton.Relief = ((global::Gtk.ReliefStyle)(2));
                        // Container child detachbutton.Gtk.Container+ContainerChild
@@ -317,6 +326,7 @@ namespace LongoMatch.Gui
                        if ((this.Child != null)) {
                                this.Child.ShowAll ();
                        }
+                       this.videowindow.Hide ();
                        this.blackboarddrawingarea.Hide ();
                        this.closebutton.Hide ();
                        this.prevbutton.Hide ();
diff --git a/LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.PlayerCapturerBin.cs 
b/LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.PlayerCapturerBin.cs
index af59547..3ed805e 100644
--- a/LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.PlayerCapturerBin.cs
+++ b/LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.PlayerCapturerBin.cs
@@ -4,11 +4,17 @@ namespace LongoMatch.Gui
 {
        public partial class PlayerCapturerBin
        {
-               private global::Gtk.VBox vbox2;
                private global::Gtk.HBox hbox4;
+               private global::Gtk.VBox playerbox;
+               private global::Gtk.HBox replayhbox;
+               private global::Gtk.Image replayimage;
+               private global::Gtk.Label replaylabel;
                private global::LongoMatch.Gui.PlayerBin playerbin;
+               private global::Gtk.VBox capturerbox;
+               private global::Gtk.HBox livebox;
+               private global::Gtk.Image liveimage;
+               private global::Gtk.Label livelabel;
                private global::LongoMatch.Gui.CapturerBin capturerbin;
-               private global::Gtk.Button backtolivebutton;
 
                protected virtual void Build ()
                {
@@ -17,63 +23,97 @@ namespace LongoMatch.Gui
                        global::Stetic.BinContainer.Attach (this);
                        this.Name = "LongoMatch.Gui.PlayerCapturerBin";
                        // Container child LongoMatch.Gui.PlayerCapturerBin.Gtk.Container+ContainerChild
-                       this.vbox2 = new global::Gtk.VBox ();
-                       this.vbox2.Name = "vbox2";
-                       this.vbox2.Spacing = 6;
-                       // Container child vbox2.Gtk.Box+BoxChild
                        this.hbox4 = new global::Gtk.HBox ();
                        this.hbox4.Name = "hbox4";
+                       this.hbox4.Homogeneous = true;
                        this.hbox4.Spacing = 6;
                        // Container child hbox4.Gtk.Box+BoxChild
+                       this.playerbox = new global::Gtk.VBox ();
+                       this.playerbox.Name = "playerbox";
+                       this.playerbox.Spacing = 6;
+                       // Container child playerbox.Gtk.Box+BoxChild
+                       this.replayhbox = new global::Gtk.HBox ();
+                       this.replayhbox.Name = "replayhbox";
+                       this.replayhbox.Spacing = 6;
+                       // Container child replayhbox.Gtk.Box+BoxChild
+                       this.replayimage = new global::Gtk.Image ();
+                       this.replayimage.Name = "replayimage";
+                       this.replayhbox.Add (this.replayimage);
+                       global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.replayhbox 
[this.replayimage]));
+                       w1.Position = 0;
+                       w1.Expand = false;
+                       w1.Fill = false;
+                       // Container child replayhbox.Gtk.Box+BoxChild
+                       this.replaylabel = new global::Gtk.Label ();
+                       this.replaylabel.Name = "replaylabel";
+                       this.replaylabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Replay");
+                       this.replayhbox.Add (this.replaylabel);
+                       global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.replayhbox 
[this.replaylabel]));
+                       w2.Position = 1;
+                       w2.Expand = false;
+                       w2.Fill = false;
+                       this.playerbox.Add (this.replayhbox);
+                       global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.playerbox 
[this.replayhbox]));
+                       w3.Position = 0;
+                       w3.Expand = false;
+                       w3.Fill = false;
+                       // Container child playerbox.Gtk.Box+BoxChild
                        this.playerbin = new global::LongoMatch.Gui.PlayerBin ();
                        this.playerbin.Events = ((global::Gdk.EventMask)(256));
                        this.playerbin.Name = "playerbin";
-                       this.hbox4.Add (this.playerbin);
-                       global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.hbox4 
[this.playerbin]));
-                       w1.Position = 0;
+                       this.playerbox.Add (this.playerbin);
+                       global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.playerbox 
[this.playerbin]));
+                       w4.Position = 1;
+                       this.hbox4.Add (this.playerbox);
+                       global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.hbox4 
[this.playerbox]));
+                       w5.Position = 0;
                        // Container child hbox4.Gtk.Box+BoxChild
+                       this.capturerbox = new global::Gtk.VBox ();
+                       this.capturerbox.Name = "capturerbox";
+                       this.capturerbox.Spacing = 6;
+                       // Container child capturerbox.Gtk.Box+BoxChild
+                       this.livebox = new global::Gtk.HBox ();
+                       this.livebox.Name = "livebox";
+                       this.livebox.Spacing = 6;
+                       // Container child livebox.Gtk.Box+BoxChild
+                       this.liveimage = new global::Gtk.Image ();
+                       this.liveimage.Name = "liveimage";
+                       this.livebox.Add (this.liveimage);
+                       global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.livebox 
[this.liveimage]));
+                       w6.Position = 0;
+                       w6.Expand = false;
+                       w6.Fill = false;
+                       // Container child livebox.Gtk.Box+BoxChild
+                       this.livelabel = new global::Gtk.Label ();
+                       this.livelabel.Name = "livelabel";
+                       this.livelabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Live");
+                       this.livebox.Add (this.livelabel);
+                       global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.livebox 
[this.livelabel]));
+                       w7.Position = 1;
+                       w7.Expand = false;
+                       w7.Fill = false;
+                       this.capturerbox.Add (this.livebox);
+                       global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.capturerbox 
[this.livebox]));
+                       w8.Position = 0;
+                       w8.Expand = false;
+                       w8.Fill = false;
+                       // Container child capturerbox.Gtk.Box+BoxChild
                        this.capturerbin = new global::LongoMatch.Gui.CapturerBin ();
                        this.capturerbin.Events = ((global::Gdk.EventMask)(256));
                        this.capturerbin.Name = "capturerbin";
-                       this.hbox4.Add (this.capturerbin);
-                       global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox4 
[this.capturerbin]));
-                       w2.Position = 1;
-                       this.vbox2.Add (this.hbox4);
-                       global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.hbox4]));
-                       w3.Position = 0;
-                       // Container child vbox2.Gtk.Box+BoxChild
-                       this.backtolivebutton = new global::Gtk.Button ();
-                       this.backtolivebutton.CanFocus = true;
-                       this.backtolivebutton.Name = "backtolivebutton";
-                       this.backtolivebutton.UseUnderline = true;
-                       // Container child backtolivebutton.Gtk.Container+ContainerChild
-                       global::Gtk.Alignment w4 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
-                       // Container child GtkAlignment.Gtk.Container+ContainerChild
-                       global::Gtk.HBox w5 = new global::Gtk.HBox ();
-                       w5.Spacing = 2;
-                       // Container child GtkHBox.Gtk.Container+ContainerChild
-                       global::Gtk.Image w6 = new global::Gtk.Image ();
-                       w6.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-goto-last", 
global::Gtk.IconSize.Menu);
-                       w5.Add (w6);
-                       // Container child GtkHBox.Gtk.Container+ContainerChild
-                       global::Gtk.Label w8 = new global::Gtk.Label ();
-                       w8.LabelProp = global::Mono.Unix.Catalog.GetString ("Back To Live");
-                       w8.UseUnderline = true;
-                       w5.Add (w8);
-                       w4.Add (w5);
-                       this.backtolivebutton.Add (w4);
-                       this.vbox2.Add (this.backtolivebutton);
-                       global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.vbox2 
[this.backtolivebutton]));
-                       w12.Position = 1;
-                       w12.Expand = false;
-                       w12.Fill = false;
-                       this.Add (this.vbox2);
+                       this.capturerbox.Add (this.capturerbin);
+                       global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.capturerbox 
[this.capturerbin]));
+                       w9.Position = 1;
+                       this.hbox4.Add (this.capturerbox);
+                       global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.hbox4 
[this.capturerbox]));
+                       w10.Position = 1;
+                       this.Add (this.hbox4);
                        if ((this.Child != null)) {
                                this.Child.ShowAll ();
                        }
-                       this.backtolivebutton.Hide ();
+                       this.replayhbox.Hide ();
+                       this.livebox.Hide ();
                        this.Hide ();
-                       this.backtolivebutton.Clicked += new global::System.EventHandler 
(this.OnBacktolivebuttonClicked);
                }
        }
 }
diff --git a/LongoMatch.GUI.Multimedia/gtk-gui/generated.cs b/LongoMatch.GUI.Multimedia/gtk-gui/generated.cs
index 0ada9fc..75935e2 100644
--- a/LongoMatch.GUI.Multimedia/gtk-gui/generated.cs
+++ b/LongoMatch.GUI.Multimedia/gtk-gui/generated.cs
@@ -66,40 +66,6 @@ namespace Stetic
                }
        }
 
-       internal class IconLoader
-       {
-               public static Gdk.Pixbuf LoadIcon (Gtk.Widget widget, string name, Gtk.IconSize size)
-               {
-                       Gdk.Pixbuf res = widget.RenderIcon (name, size, null);
-                       if ((res != null)) {
-                               return res;
-                       } else {
-                               int sz;
-                               int sy;
-                               global::Gtk.Icon.SizeLookup (size, out  sz, out  sy);
-                               try {
-                                       return Gtk.IconTheme.Default.LoadIcon (name, sz, 0);
-                               } catch (System.Exception) {
-                                       if ((name != "gtk-missing-image")) {
-                                               return Stetic.IconLoader.LoadIcon (widget, 
"gtk-missing-image", size);
-                                       } else {
-                                               Gdk.Pixmap pmap = new Gdk.Pixmap 
(Gdk.Screen.Default.RootWindow, sz, sz);
-                                               Gdk.GC gc = new Gdk.GC (pmap);
-                                               gc.RgbFgColor = new Gdk.Color (255, 255, 255);
-                                               pmap.DrawRectangle (gc, true, 0, 0, sz, sz);
-                                               gc.RgbFgColor = new Gdk.Color (0, 0, 0);
-                                               pmap.DrawRectangle (gc, false, 0, 0, (sz - 1), (sz - 1));
-                                               gc.SetLineAttributes (3, Gdk.LineStyle.Solid, 
Gdk.CapStyle.Round, Gdk.JoinStyle.Round);
-                                               gc.RgbFgColor = new Gdk.Color (255, 0, 0);
-                                               pmap.DrawLine (gc, (sz / 4), (sz / 4), ((sz - 1) - (sz / 4)), 
((sz - 1) - (sz / 4)));
-                                               pmap.DrawLine (gc, ((sz - 1) - (sz / 4)), (sz / 4), (sz / 4), 
((sz - 1) - (sz / 4)));
-                                               return Gdk.Pixbuf.FromDrawable (pmap, pmap.Colormap, 0, 0, 0, 
0, sz, sz);
-                                       }
-                               }
-                       }
-               }
-       }
-
        internal class ActionGroups
        {
                public static Gtk.ActionGroup GetActionGroup (System.Type type)
diff --git a/LongoMatch.GUI.Multimedia/gtk-gui/gui.stetic b/LongoMatch.GUI.Multimedia/gtk-gui/gui.stetic
index bf817ab..2c8fe83 100644
--- a/LongoMatch.GUI.Multimedia/gtk-gui/gui.stetic
+++ b/LongoMatch.GUI.Multimedia/gtk-gui/gui.stetic
@@ -74,7 +74,7 @@
       </widget>
     </child>
   </widget>
-  <widget class="Gtk.Bin" id="LongoMatch.Gui.PlayerBin" design-size="922 521">
+  <widget class="Gtk.Bin" id="LongoMatch.Gui.PlayerBin" design-size="1080 433">
     <property name="MemberName" />
     <child>
       <widget class="Gtk.VBox" id="vbox3">
@@ -98,8 +98,9 @@
                         <child>
                           <widget class="LongoMatch.Gui.VideoWindow" id="videowindow">
                             <property name="MemberName" />
+                            <property name="Visible">False</property>
                             <property name="Events">ButtonPressMask</property>
-                            <property name="Visible">True</property>
+                            <property name="Visible">False</property>
                             <property name="Ready">False</property>
                           </widget>
                           <packing>
@@ -144,6 +145,7 @@
                     <property name="MemberName" />
                     <property name="WidthRequest">36</property>
                     <property name="Sensitive">False</property>
+                    <property name="Tooltip" translatable="yes">Playback speed</property>
                     <property name="UpdatePolicy">Discontinuous</property>
                     <property name="Inverted">True</property>
                     <property name="Lower">1</property>
@@ -191,6 +193,7 @@
                       <widget class="Gtk.Button" id="closebutton">
                         <property name="MemberName" />
                         <property name="Visible">False</property>
+                        <property name="Tooltip" translatable="yes">Close loaded event</property>
                         <property name="Type">Custom</property>
                         <property name="Relief">None</property>
                         <child>
@@ -209,6 +212,7 @@
                     <child>
                       <widget class="Gtk.Button" id="drawbutton">
                         <property name="MemberName" />
+                        <property name="Tooltip" translatable="yes">Draw frame</property>
                         <property name="Type">Custom</property>
                         <property name="Relief">None</property>
                         <child>
@@ -227,6 +231,7 @@
                     <child>
                       <widget class="Gtk.Button" id="playbutton">
                         <property name="MemberName" />
+                        <property name="Tooltip" translatable="yes">Play</property>
                         <property name="Type">Custom</property>
                         <property name="Relief">None</property>
                         <child>
@@ -245,6 +250,7 @@
                     <child>
                       <widget class="Gtk.Button" id="pausebutton">
                         <property name="MemberName" />
+                        <property name="Tooltip" translatable="yes">Pause</property>
                         <property name="Type">Custom</property>
                         <property name="Relief">None</property>
                         <child>
@@ -264,6 +270,7 @@
                       <widget class="Gtk.Button" id="prevbutton">
                         <property name="MemberName" />
                         <property name="Visible">False</property>
+                        <property name="Tooltip" translatable="yes">Previous</property>
                         <property name="Type">Custom</property>
                         <property name="Relief">None</property>
                         <child>
@@ -284,6 +291,7 @@
                         <property name="MemberName" />
                         <property name="Visible">False</property>
                         <property name="Sensitive">False</property>
+                        <property name="Tooltip" translatable="yes">Next</property>
                         <property name="Type">Custom</property>
                         <property name="Relief">None</property>
                         <child>
@@ -391,6 +399,7 @@
                 <child>
                   <widget class="Gtk.Button" id="volumebutton">
                     <property name="MemberName" />
+                    <property name="Tooltip" translatable="yes">Volume</property>
                     <property name="Type">Custom</property>
                     <property name="Relief">None</property>
                     <child>
@@ -409,6 +418,7 @@
                 <child>
                   <widget class="Gtk.Button" id="detachbutton">
                     <property name="MemberName" />
+                    <property name="Tooltip" translatable="yes">Detach window</property>
                     <property name="Type">Custom</property>
                     <property name="Relief">None</property>
                     <child>
@@ -437,15 +447,19 @@
       </widget>
     </child>
   </widget>
-  <widget class="Gtk.Bin" id="LongoMatch.Gui.CapturerBin" design-size="474 295">
+  <widget class="Gtk.Bin" id="LongoMatch.Gui.CapturerBin" design-size="983 403">
     <property name="MemberName" />
     <child>
       <widget class="Gtk.VBox" id="vbox1">
         <property name="MemberName" />
         <property name="Spacing">6</property>
         <child>
-          <widget class="Gtk.DrawingArea" id="videodrawingarea">
+          <widget class="LongoMatch.Gui.VideoWindow" id="videowindow">
             <property name="MemberName" />
+            <property name="Visible">False</property>
+            <property name="Events">ButtonPressMask</property>
+            <property name="Visible">False</property>
+            <property name="Ready">False</property>
           </widget>
           <packing>
             <property name="Position">0</property>
@@ -453,122 +467,248 @@
           </packing>
         </child>
         <child>
-          <widget class="Gtk.HBox" id="hbox2">
+          <widget class="Gtk.Alignment" id="alignment1">
             <property name="MemberName" />
-            <property name="Spacing">6</property>
+            <property name="Xscale">0</property>
             <child>
-              <widget class="Gtk.Frame" id="frame1">
+              <widget class="Gtk.HBox" id="controllerbox">
                 <property name="MemberName" />
-                <property name="ShadowType">None</property>
+                <property name="Spacing">6</property>
                 <child>
-                  <widget class="Gtk.Alignment" id="GtkAlignment">
+                  <widget class="Gtk.EventBox" id="hourseventbox">
                     <property name="MemberName" />
-                    <property name="Xalign">0</property>
-                    <property name="Yalign">0</property>
-                    <property name="LeftPadding">12</property>
                     <child>
-                      <widget class="Gtk.HBox" id="buttonsbox">
+                      <widget class="Gtk.Label" id="hourlabel">
                         <property name="MemberName" />
-                        <property name="Spacing">6</property>
-                        <child>
-                          <widget class="Gtk.Button" id="recbutton">
-                            <property name="MemberName" />
-                            <property name="Tooltip" translatable="yes">Start capturing new period</property>
-                            <property name="Type">TextAndIcon</property>
-                            <property name="Icon">stock:gtk-media-record Menu</property>
-                            <property name="Label" translatable="yes" />
-                            <property name="UseUnderline">True</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.Button" id="stopbutton">
-                            <property name="MemberName" />
-                            <property name="Visible">False</property>
-                            <property name="Tooltip" translatable="yes">Stop capturing current 
period</property>
-                            <property name="Type">TextAndIcon</property>
-                            <property name="Icon">stock:gtk-media-stop Menu</property>
-                            <property name="Label" translatable="yes" />
-                            <property name="UseUnderline">True</property>
-                          </widget>
-                          <packing>
-                            <property name="Position">1</property>
-                            <property name="AutoSize">False</property>
-                            <property name="Expand">False</property>
-                            <property name="Fill">False</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="Gtk.Button" id="finishbutton">
-                            <property name="MemberName" />
-                            <property name="Visible">False</property>
-                            <property name="Tooltip" translatable="yes">End capture</property>
-                            <property name="Type">TextAndIcon</property>
-                            <property name="Icon">stock:gtk-ok Menu</property>
-                            <property name="Label" translatable="yes" />
-                            <property name="UseUnderline">True</property>
-                          </widget>
-                          <packing>
-                            <property name="Position">2</property>
-                            <property name="AutoSize">False</property>
-                            <property name="Expand">False</property>
-                            <property name="Fill">False</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="Gtk.Button" id="cancelbutton">
-                            <property name="MemberName" />
-                            <property name="Tooltip" translatable="yes">Close current capture</property>
-                            <property name="CanFocus">True</property>
-                            <property name="Type">TextAndIcon</property>
-                            <property name="Icon">stock:gtk-stop Menu</property>
-                            <property name="Label" translatable="yes" />
-                            <property name="UseUnderline">True</property>
-                          </widget>
-                          <packing>
-                            <property name="Position">3</property>
-                            <property name="AutoSize">True</property>
-                            <property name="Expand">False</property>
-                            <property name="Fill">False</property>
-                          </packing>
-                        </child>
+                        <property name="LabelProp" translatable="yes">&lt;b&gt;00&lt;/b&gt;</property>
+                        <property name="UseMarkup">True</property>
                       </widget>
                     </child>
                   </widget>
+                  <packing>
+                    <property name="Position">0</property>
+                    <property name="AutoSize">False</property>
+                    <property name="Expand">False</property>
+                  </packing>
                 </child>
                 <child>
-                  <widget class="Gtk.Label" id="GtkLabel3">
+                  <widget class="Gtk.Label" id="label1">
                     <property name="MemberName" />
+                    <property name="LabelProp" translatable="yes">&lt;b&gt;:&lt;/b&gt;</property>
                     <property name="UseMarkup">True</property>
                   </widget>
                   <packing>
-                    <property name="type">label_item</property>
+                    <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.EventBox" id="minuteseventbox">
+                    <property name="MemberName" />
+                    <child>
+                      <widget class="Gtk.Label" id="minuteslabel">
+                        <property name="MemberName" />
+                        <property name="LabelProp" translatable="yes">&lt;b&gt;00&lt;/b&gt;</property>
+                        <property name="UseMarkup">True</property>
+                      </widget>
+                    </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.Label" id="label2">
+                    <property name="MemberName" />
+                    <property name="LabelProp" translatable="yes">&lt;b&gt;:&lt;/b&gt;</property>
+                    <property name="UseMarkup">True</property>
+                  </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.EventBox" id="secondseventbox">
+                    <property name="MemberName" />
+                    <child>
+                      <widget class="Gtk.Label" id="secondslabel">
+                        <property name="MemberName" />
+                        <property name="LabelProp" translatable="yes">&lt;b&gt;00&lt;/b&gt;</property>
+                        <property name="UseMarkup">True</property>
+                      </widget>
+                    </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>
+                <child>
+                  <widget class="Gtk.Label" id="periodlabel">
+                    <property name="MemberName" />
+                    <property name="Xpad">10</property>
+                  </widget>
+                  <packing>
+                    <property name="Position">5</property>
+                    <property name="AutoSize">True</property>
+                    <property name="Expand">False</property>
+                    <property name="Fill">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="Gtk.VSeparator" id="vseparator1">
+                    <property name="MemberName" />
+                    <property name="WidthRequest">60</property>
+                  </widget>
+                  <packing>
+                    <property name="Position">6</property>
+                    <property name="AutoSize">False</property>
+                    <property name="Expand">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="Gtk.Button" id="recbutton">
+                    <property name="MemberName" />
+                    <property name="Tooltip" translatable="yes">Start recording period</property>
+                    <property name="CanFocus">True</property>
+                    <property name="Type">Custom</property>
+                    <property name="Relief">None</property>
+                    <child>
+                      <widget class="Gtk.Image" id="recimage">
+                        <property name="MemberName" />
+                        <property name="Xpad">5</property>
+                        <property name="Ypad">5</property>
+                      </widget>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="Position">7</property>
+                    <property name="AutoSize">False</property>
+                    <property name="Expand">False</property>
+                    <property name="Fill">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="Gtk.Button" id="stopbutton">
+                    <property name="MemberName" />
+                    <property name="Tooltip" translatable="yes">Stop recording period</property>
+                    <property name="CanFocus">True</property>
+                    <property name="Type">Custom</property>
+                    <property name="Relief">None</property>
+                    <child>
+                      <widget class="Gtk.Image" id="stopimage">
+                        <property name="MemberName" />
+                        <property name="Xpad">5</property>
+                        <property name="Ypad">5</property>
+                      </widget>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="Position">8</property>
+                    <property name="AutoSize">False</property>
+                    <property name="Expand">False</property>
+                    <property name="Fill">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="Gtk.Button" id="pausebutton">
+                    <property name="MemberName" />
+                    <property name="Tooltip" translatable="yes">Pause clock</property>
+                    <property name="CanFocus">True</property>
+                    <property name="Type">Custom</property>
+                    <property name="Relief">None</property>
+                    <child>
+                      <widget class="Gtk.Image" id="pauseimage">
+                        <property name="MemberName" />
+                        <property name="Xpad">5</property>
+                        <property name="Ypad">5</property>
+                      </widget>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="Position">9</property>
+                    <property name="AutoSize">False</property>
+                    <property name="Expand">False</property>
+                    <property name="Fill">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="Gtk.Button" id="resumebutton">
+                    <property name="MemberName" />
+                    <property name="Tooltip" translatable="yes">Resume clock</property>
+                    <property name="CanFocus">True</property>
+                    <property name="Type">Custom</property>
+                    <property name="Relief">None</property>
+                    <child>
+                      <widget class="Gtk.Image" id="resumeimage">
+                        <property name="MemberName" />
+                        <property name="Xpad">5</property>
+                        <property name="Ypad">5</property>
+                      </widget>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="Position">10</property>
+                    <property name="AutoSize">False</property>
+                    <property name="Expand">False</property>
+                    <property name="Fill">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="Gtk.Button" id="savebutton">
+                    <property name="MemberName" />
+                    <property name="Tooltip" translatable="yes">Save project</property>
+                    <property name="CanFocus">True</property>
+                    <property name="Type">Custom</property>
+                    <property name="Relief">None</property>
+                    <child>
+                      <widget class="Gtk.Image" id="saveimage">
+                        <property name="MemberName" />
+                        <property name="Xpad">5</property>
+                        <property name="Ypad">5</property>
+                      </widget>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="Position">11</property>
+                    <property name="AutoSize">False</property>
+                    <property name="Expand">False</property>
+                    <property name="Fill">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="Gtk.Button" id="cancelbutton">
+                    <property name="MemberName" />
+                    <property name="Tooltip" translatable="yes">Cancel capture</property>
+                    <property name="CanFocus">True</property>
+                    <property name="Type">Custom</property>
+                    <property name="Relief">None</property>
+                    <child>
+                      <widget class="Gtk.Image" id="cancelimage">
+                        <property name="MemberName" />
+                        <property name="Xpad">5</property>
+                        <property name="Ypad">5</property>
+                      </widget>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="Position">12</property>
+                    <property name="AutoSize">False</property>
+                    <property name="Expand">False</property>
+                    <property name="Fill">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="timelabel">
-                <property name="MemberName" />
-                <property name="LabelProp">Time: 0:00:00</property>
-                <property name="UseMarkup">True</property>
-              </widget>
-              <packing>
-                <property name="PackType">End</property>
-                <property name="Position">1</property>
-                <property name="AutoSize">False</property>
-              </packing>
             </child>
           </widget>
           <packing>
@@ -580,59 +720,131 @@
       </widget>
     </child>
   </widget>
-  <widget class="Gtk.Bin" id="LongoMatch.Gui.PlayerCapturerBin" design-size="936 300">
+  <widget class="Gtk.Bin" id="LongoMatch.Gui.PlayerCapturerBin" design-size="1402 300">
     <property name="MemberName" />
     <property name="Visible">False</property>
     <child>
-      <widget class="Gtk.VBox" id="vbox2">
+      <widget class="Gtk.HBox" id="hbox4">
         <property name="MemberName" />
+        <property name="Homogeneous">True</property>
         <property name="Spacing">6</property>
         <child>
-          <widget class="Gtk.HBox" id="hbox4">
+          <widget class="Gtk.VBox" id="playerbox">
             <property name="MemberName" />
             <property name="Spacing">6</property>
             <child>
-              <widget class="LongoMatch.Gui.PlayerBin" id="playerbin">
+              <widget class="Gtk.HBox" id="replayhbox">
                 <property name="MemberName" />
-                <property name="Events">ButtonPressMask</property>
+                <property name="Visible">False</property>
+                <property name="Spacing">6</property>
+                <child>
+                  <widget class="Gtk.Image" id="replayimage">
+                    <property name="MemberName" />
+                  </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="replaylabel">
+                    <property name="MemberName" />
+                    <property name="LabelProp" translatable="yes">Replay</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>
+                <child>
+                  <placeholder />
+                </child>
               </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>
-              <widget class="LongoMatch.Gui.CapturerBin" id="capturerbin">
+              <widget class="LongoMatch.Gui.PlayerBin" id="playerbin">
                 <property name="MemberName" />
                 <property name="Events">ButtonPressMask</property>
               </widget>
               <packing>
                 <property name="Position">1</property>
-                <property name="AutoSize">False</property>
+                <property name="AutoSize">True</property>
               </packing>
             </child>
           </widget>
           <packing>
             <property name="Position">0</property>
-            <property name="AutoSize">True</property>
+            <property name="AutoSize">False</property>
           </packing>
         </child>
         <child>
-          <widget class="Gtk.Button" id="backtolivebutton">
+          <widget class="Gtk.VBox" id="capturerbox">
             <property name="MemberName" />
-            <property name="Visible">False</property>
-            <property name="CanFocus">True</property>
-            <property name="Type">TextAndIcon</property>
-            <property name="Icon">stock:gtk-goto-last Menu</property>
-            <property name="Label" translatable="yes">Back To Live</property>
-            <property name="UseUnderline">True</property>
-            <signal name="Clicked" handler="OnBacktolivebuttonClicked" />
+            <property name="Spacing">6</property>
+            <child>
+              <widget class="Gtk.HBox" id="livebox">
+                <property name="MemberName" />
+                <property name="Visible">False</property>
+                <property name="Spacing">6</property>
+                <child>
+                  <widget class="Gtk.Image" id="liveimage">
+                    <property name="MemberName" />
+                  </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="livelabel">
+                    <property name="MemberName" />
+                    <property name="LabelProp" translatable="yes">Live</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>
+                <child>
+                  <placeholder />
+                </child>
+              </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="LongoMatch.Gui.CapturerBin" id="capturerbin">
+                <property name="MemberName" />
+                <property name="Events">ButtonPressMask</property>
+                <property name="Capturing">False</property>
+              </widget>
+              <packing>
+                <property name="Position">1</property>
+                <property name="AutoSize">True</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>
+            <property name="AutoSize">False</property>
           </packing>
         </child>
       </widget>
diff --git a/LongoMatch.GUI.Multimedia/gtk-gui/objects.xml b/LongoMatch.GUI.Multimedia/gtk-gui/objects.xml
index 6ba9645..f79f24e 100644
--- a/LongoMatch.GUI.Multimedia/gtk-gui/objects.xml
+++ b/LongoMatch.GUI.Multimedia/gtk-gui/objects.xml
@@ -17,6 +17,7 @@
       <itemgroup label="PlayerBin Signals">
         <signal name="Tick" />
         <signal name="PlayStateChanged" />
+        <signal name="CloseEvent" />
       </itemgroup>
     </signals>
   </object>
diff --git a/LongoMatch.GUI/Gui/Component/AnalysisComponent.cs 
b/LongoMatch.GUI/Gui/Component/AnalysisComponent.cs
index 23c1ddb..4a9d8dc 100644
--- a/LongoMatch.GUI/Gui/Component/AnalysisComponent.cs
+++ b/LongoMatch.GUI/Gui/Component/AnalysisComponent.cs
@@ -31,12 +31,7 @@ namespace LongoMatch.Gui.Component
                EventsFilter filter;
                bool detachedPlayer;
                Gtk.Window playerWindow;
-               EventBox backgroundBox;
-               PlaysSelectionWidget playsSelection;
-               PlayerCapturerBin playercapturer;
-               CodingWidget codingwidget;
-               HBox videowidgetsbox;
-               
+
                public AnalysisComponent ()
                {
                        this.Build ();
@@ -49,54 +44,63 @@ namespace LongoMatch.Gui.Component
                        playercapturer.Destroy ();
                        base.OnDestroyed ();
                }
-               
-               public IPlayerBin Player{
+
+               public IPlayerBin Player {
                        get {
                                return playercapturer;
                        }
                }
-               
-               public ICapturerBin Capturer{
+
+               public ICapturerBin Capturer {
                        get {
                                return playercapturer;
                        }
                }
-               
-               public void AddPlay(TimelineEvent play) {
-                       playsSelection.AddPlay(play);
+
+               public void AddPlay (TimelineEvent play)
+               {
+                       playsSelection.AddPlay (play);
                        codingwidget.AddPlay (play);
                }
-               
-               public void UpdateCategories () {
+
+               public void UpdateCategories ()
+               {
                        codingwidget.UpdateCategories ();
                }
-               
-               public void DeletePlays (List<TimelineEvent> plays) {
-                       playsSelection.RemovePlays(plays);
+
+               public void DeletePlays (List<TimelineEvent> plays)
+               {
+                       playsSelection.RemovePlays (plays);
                        codingwidget.DeletePlays (plays);
                }
-               
-               public void ZoomIn () {
+
+               public void ZoomIn ()
+               {
                        codingwidget.ZoomIn ();
                }
-               
-               public void ZoomOut () {
+
+               public void ZoomOut ()
+               {
                        codingwidget.ZoomOut ();
                }
-               
-               public void FitTimeline () {
+
+               public void FitTimeline ()
+               {
                        codingwidget.FitTimeline ();
                }
-               
-               public void ShowDashboard () {
+
+               public void ShowDashboard ()
+               {
                        codingwidget.ShowDashboard ();
                }
 
-               public void ShowTimeline () {
+               public void ShowTimeline ()
+               {
                        codingwidget.ShowTimeline ();
                }
-               
-               public void ShowZonalTags () {
+
+               public void ShowZonalTags ()
+               {
                        codingwidget.ShowZonalTags ();
                }
 
@@ -123,7 +127,7 @@ namespace LongoMatch.Gui.Component
                                box = new EventBox ();
                                box.Name = "lightbackgroundeventbox";
                                box.KeyPressEvent += (o, args) => {
-                                       Config.EventsBroker.EmitKeyPressed(this, Keyboard.ParseEvent 
(args.Event));
+                                       Config.EventsBroker.EmitKeyPressed (this, Keyboard.ParseEvent 
(args.Event));
                                };
                                playerWindow.Add (box);
                                
@@ -140,47 +144,27 @@ namespace LongoMatch.Gui.Component
                                playerWindow.Destroy ();
                        }
                        if (isPlaying) {
-                               playercapturer.Play();
+                               playercapturer.Play ();
                        }
                        detachedPlayer = !detachedPlayer;
                }
-               
-               public void CloseOpenedProject () {
+
+               public void CloseOpenedProject ()
+               {
                        openedProject = null;
                        projectType = ProjectType.None;
                        if (detachedPlayer)
-                               DetachPlayer();
-                       ClearWidgets();
+                               DetachPlayer ();
                }
-               
-               public void SetProject(Project project, ProjectType projectType, CaptureSettings props, 
EventsFilter filter)
+
+               public void SetProject (Project project, ProjectType projectType, CaptureSettings props, 
EventsFilter filter)
                {
                        openedProject = project;
                        this.projectType = projectType;
                        this.filter = filter;
                        
-                       if(projectType == ProjectType.FakeCaptureProject) {
-                               CreateCodingUI ();
-                       } else {
-                               CreatePreviewUI ();
-                       }
-                       
                        codingwidget.SetProject (project, projectType, filter);
                        playsSelection.SetProject (project, filter);
-               }
-
-               public void ReloadProject () {
-                       codingwidget.SetProject (openedProject, projectType, filter);
-                       playsSelection.SetProject (openedProject, filter);
-               }
-
-               void CreateCommonUI () {
-                       backgroundBox = new EventBox ();
-                       backgroundBox.Name = "lightbackgroundeventbox";
-                       videowidgetsbox = new HBox ();
-                       playsSelection = new PlaysSelectionWidget ();
-                       codingwidget = new CodingWidget();
-                       playercapturer = new PlayerCapturerBin ();
                        if (projectType == ProjectType.FileProject) {
                                playercapturer.Mode = PlayerCapturerBin.PlayerOperationMode.Player;
                        } else {
@@ -189,76 +173,15 @@ namespace LongoMatch.Gui.Component
                                } else {
                                        playercapturer.Mode = 
PlayerCapturerBin.PlayerOperationMode.PreviewCapturer;
                                }
-                               playercapturer.PeriodsNames = openedProject.Dashboard.GamePeriods;
-                               playercapturer.PeriodsTimers = openedProject.Periods;
+                               playercapturer.PeriodsNames = project.Dashboard.GamePeriods;
+                               playercapturer.Periods = project.Periods;
                        }
-                       backgroundBox.Show ();
-                       playsSelection.Show ();
-                       codingwidget.Show ();
-                       playercapturer.Show ();
-                       videowidgetsbox.Show();
                }
-               
-               void CreateCodingUI () {
-                       HPaned centralpane, rightpane;
-                       VBox vbox;
-                       
-                       ClearWidgets ();
 
-                       centralpane = new HPaned();
-                       rightpane = new HPaned ();
-                       vbox = new VBox ();
-                       centralpane.Show ();
-                       rightpane.Show ();
-                       vbox.Show();
-                       
-                       CreateCommonUI ();
-                       
-                       centralpane.Pack1 (playsSelection, true, true);
-                       centralpane.Pack2 (rightpane, true, true);
-                       rightpane.Pack1 (vbox, true, true);
-                       videowidgetsbox.Add (playercapturer);
-                       vbox.PackStart (videowidgetsbox, false, true, 0);
-                       vbox.PackEnd (codingwidget, true, true, 0);
-                       backgroundBox.Add (centralpane);
-                       Add (backgroundBox);
-               }
-
-               void CreatePreviewUI () {
-                       VPaned centralpane;
-                       HPaned uppane, rightpane;
-                       
-                       ClearWidgets ();
-
-                       centralpane = new VPaned();
-                       uppane = new HPaned ();
-                       rightpane = new HPaned();
-                       centralpane.Show ();
-                       uppane.Show ();
-                       rightpane.Show ();
-                       
-                       CreateCommonUI ();
-                       
-                       centralpane.Pack1 (uppane, true, true);
-                       centralpane.Pack2 (codingwidget, true, true);
-                       uppane.Pack1 (playsSelection, true, true);
-                       uppane.Pack2 (rightpane, true, true);
-                       videowidgetsbox.Add (playercapturer);
-                       rightpane.Pack1 (videowidgetsbox, true, true);
-                       backgroundBox.Add (centralpane);
-                       Add (backgroundBox);
-               }
-               
-               void ClearWidgets() {
-                       if (Children.Length == 1) 
-                               Children[0].Destroy();
-                       if (playsSelection != null)
-                               playsSelection.Destroy();
-                       if (codingwidget != null)
-                               codingwidget.Destroy();
-                       if (playercapturer != null) {
-                               playercapturer.Destroy();
-                       }
+               public void ReloadProject ()
+               {
+                       codingwidget.SetProject (openedProject, projectType, filter);
+                       playsSelection.SetProject (openedProject, filter);
                }
        }
 }
diff --git a/LongoMatch.GUI/Gui/Component/CodingWidget.cs b/LongoMatch.GUI/Gui/Component/CodingWidget.cs
index d7a2337..87a8beb 100644
--- a/LongoMatch.GUI/Gui/Component/CodingWidget.cs
+++ b/LongoMatch.GUI/Gui/Component/CodingWidget.cs
@@ -16,17 +16,15 @@
 //  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 //
 using System;
-using System.Linq;
 using System.Collections.Generic;
+using System.Linq;
 using Gtk;
-using LongoMatch.Core.Handlers;
-using LongoMatch.Core.Store;
 using LongoMatch.Core.Common;
-using LongoMatch.Drawing.Widgets;
+using LongoMatch.Core.Store;
+using LongoMatch.Core.Store.Templates;
 using LongoMatch.Drawing.Cairo;
-using LongoMatch.Gui.Helpers;
+using LongoMatch.Drawing.Widgets;
 using Mono.Unix;
-using LongoMatch.Core.Store.Templates;
 
 namespace LongoMatch.Gui.Component
 {
@@ -42,6 +40,7 @@ namespace LongoMatch.Gui.Component
                Gdk.Pixbuf timelineIco, timelineActiveIco;
                Gdk.Pixbuf posIco, posAtiveIco;
                Gdk.Pixbuf dashboardIco, dashboardActiveIco;
+               Gdk.Pixbuf listIco, listActiveIco;
                bool sizeAllocated;
 
                public CodingWidget ()
@@ -58,6 +57,7 @@ namespace LongoMatch.Gui.Component
                        SetTabProps (dashboardhpaned, false);
                        SetTabProps (timeline, false);
                        SetTabProps (playspositionviewer1, false);
+                       SetTabProps (eventslistwidget, false);
                        notebook.Page = currentPage = 0;
 
                        teamtagger = new TeamTagger (new WidgetWrapper (teamsdrawingarea));
@@ -108,27 +108,35 @@ namespace LongoMatch.Gui.Component
                        base.OnDestroyed ();
                }
 
-               public void ZoomIn () {
+               public void ZoomIn ()
+               {
                        timeline.ZoomIn ();
                }
-               
-               public void ZoomOut () {
+
+               public void ZoomOut ()
+               {
                        timeline.ZoomOut ();
                }
-               
-               public void FitTimeline () {
+
+               public void FitTimeline ()
+               {
                        timeline.Fit ();
                }
-               
-               public void ShowDashboard () {
+
+               public void ShowDashboard ()
+               {
                        SelectPage (dashboardhpaned);
                }
 
-               public void ShowTimeline () {
-                       SelectPage (timeline);
+               public void ShowTimeline ()
+               {
+                       if (projectType == ProjectType.FileProject) {
+                               SelectPage (timeline);
+                       } 
                }
-               
-               public void ShowZonalTags () {
+
+               public void ShowZonalTags ()
+               {
                        SelectPage (playspositionviewer1);
                }
 
@@ -145,13 +153,18 @@ namespace LongoMatch.Gui.Component
                        if (project != null) {
                                buttonswidget.Project = project;
                        }
+                       buttonswidget.Mode = TagMode.Predefined;
                        teamtagger.Project = project;
                        teamtagger.LoadTeams (project.LocalTeamTemplate, project.VisitorTeamTemplate,
                                              project.Dashboard.FieldBackground);
                        teamtagger.CurrentTime = new Time (0);
                        if (projectType == ProjectType.FileProject) {
                                timeline.SetProject (project, filter);
+                       } else if (projectType == ProjectType.FakeCaptureProject) {
+                               eventslistwidget.SetProject (project, filter);
                        }
+                       eventslistwidget.Visible = projectType == ProjectType.FakeCaptureProject;
+                       timeline.Visible = projectType == ProjectType.FileProject;
                        playspositionviewer1.LoadProject (project, filter);
                }
 
@@ -159,6 +172,8 @@ namespace LongoMatch.Gui.Component
                {
                        if (projectType == ProjectType.FileProject) {
                                timeline.AddPlay (play);
+                       } else if (projectType == ProjectType.FakeCaptureProject) {
+                               eventslistwidget.AddPlay (play);
                        }
                        playspositionviewer1.AddPlay (play);
                }
@@ -167,6 +182,8 @@ namespace LongoMatch.Gui.Component
                {
                        if (projectType == ProjectType.FileProject) {
                                timeline.RemovePlays (plays);
+                       } else if (projectType == ProjectType.FakeCaptureProject) {
+                               eventslistwidget.RemovePlays (plays);
                        }
                        playspositionviewer1.RemovePlays (plays);
                }
@@ -187,6 +204,8 @@ namespace LongoMatch.Gui.Component
                        dashboardActiveIco = Helpers.Misc.LoadIcon ("longomatch-tab-active-dashboard", s, f);
                        posIco = Helpers.Misc.LoadIcon ("longomatch-tab-position", s, f);
                        posAtiveIco = Helpers.Misc.LoadIcon ("longomatch-tab-active-position", s, f);
+                       listIco = Helpers.Misc.LoadIcon ("longomatch-tab-dashboard", s, f);
+                       listActiveIco = Helpers.Misc.LoadIcon ("longomatch-tab-active-dashboard", s, f);
                }
 
                void SelectPage (Widget widget)
@@ -218,6 +237,8 @@ namespace LongoMatch.Gui.Component
                                icon = active ? dashboardActiveIco : dashboardIco;
                        } else if (widget == playspositionviewer1) {
                                icon = active ? posAtiveIco : posIco;
+                       } else if (widget == eventslistwidget) {
+                               icon = active ? listActiveIco : listIco;
                        } else {
                                return;
                        }
@@ -290,9 +311,9 @@ namespace LongoMatch.Gui.Component
 
                void HandlePlayersSelectionChangedEvent (List<Player> players)
                {
-                       selectedPlayers = players.ToList();
+                       selectedPlayers = players.ToList ();
                }
-               
+
                void HandleNewTagEvent (EventType eventType, List<Player> players, Team team, List<Tag> tags,
                                        Time start, Time stop, Time eventTime, Score score, PenaltyCard card)
                {
@@ -300,9 +321,6 @@ namespace LongoMatch.Gui.Component
                        play.Team = teamtagger.SelectedTeam;
                        play.Players = selectedPlayers ?? new List<Player> ();
                        play.Tags = tags ?? new List<Tag> ();
-                       if (!project.Dashboard.DisablePopupWindow) {
-                               Config.GUIToolkit.EditPlay (play, project, true, true, true, true);
-                       }
                        teamtagger.ResetSelection ();
                        selectedPlayers = null;
                        Config.EventsBroker.EmitNewEvent (play);
@@ -313,7 +331,7 @@ namespace LongoMatch.Gui.Component
                {
                        Config.EventsBroker.EmitSubstitutionEvent (team, p1, p2, reason, time);
                }
-               
+
                void HandleSizeAllocated (object o, SizeAllocatedArgs args)
                {
                        if (!sizeAllocated) {
@@ -327,7 +345,6 @@ namespace LongoMatch.Gui.Component
                {
                        timeline.AddTimerNode (timer, tn);
                }
-
        }
 }
 
diff --git a/LongoMatch.GUI/Gui/Component/EventsListWidget.cs 
b/LongoMatch.GUI/Gui/Component/EventsListWidget.cs
new file mode 100644
index 0000000..b1de796
--- /dev/null
+++ b/LongoMatch.GUI/Gui/Component/EventsListWidget.cs
@@ -0,0 +1,85 @@
+//
+//  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 System.Collections.Generic;
+
+namespace LongoMatch.Gui.Component
+{
+       [System.ComponentModel.ToolboxItem(true)]
+       public partial class EventsListWidget : Gtk.Bin
+       {
+               Project project;
+
+               public EventsListWidget ()
+               {
+                       this.Build ();
+                       localPlayersList.Team = Team.LOCAL;
+                       visitorPlayersList.Team = Team.VISITOR;
+                       playsnotebook.Page = 0;
+                       playsList1.HeightRequest = StyleConf.PlayerCapturerControlsHeight;
+                       Config.EventsBroker.TeamTagsChanged += UpdateTeamsModels;
+               }
+               
+               protected override void OnDestroyed ()
+               {
+                       Config.EventsBroker.TeamTagsChanged -= UpdateTeamsModels;
+                       playsList.Project = null;
+                       localPlayersList.Clear();
+                       visitorPlayersList.Clear();
+                       playsList1.Destroy ();
+                       base.OnDestroyed ();
+               }
+               
+               public void SetProject (Project project, EventsFilter filter)
+               {
+                       this.project = project;
+                       playsList.Filter = filter;
+                       localPlayersList.Filter = filter;
+                       visitorPlayersList.Filter = filter;
+                       playsList.Project = project;
+                       visitorPlayersList.Project = project;
+                       localPlayersList.Project = project;
+                       visitorPlaysList.LabelProp = project.VisitorTeamTemplate.TeamName;
+                       localPlaysList.LabelProp = project.LocalTeamTemplate.TeamName;
+                       UpdateTeamsModels ();
+               }
+               
+               public void AddPlay(TimelineEvent play) {
+                       playsList.AddPlay(play);
+                       localPlayersList.AddEvent (play);
+                       visitorPlayersList.AddEvent (play);
+               }
+               
+               public void RemovePlays (List<TimelineEvent> plays) {
+                       playsList.RemovePlays(plays);
+                       localPlayersList.RemoveEvents (plays);
+                       visitorPlayersList.RemoveEvents (plays);
+               }
+               
+               void UpdateTeamsModels() {
+                       if (project == null)
+                               return;
+                       localPlayersList.SetTeam(project.LocalTeamTemplate, project.Timeline);
+                       visitorPlayersList.SetTeam(project.VisitorTeamTemplate, project.Timeline);
+               }
+
+       }
+}
+
diff --git a/LongoMatch.GUI/Gui/Component/FakeAnalysisComponent.cs 
b/LongoMatch.GUI/Gui/Component/FakeAnalysisComponent.cs
new file mode 100644
index 0000000..e38843e
--- /dev/null
+++ b/LongoMatch.GUI/Gui/Component/FakeAnalysisComponent.cs
@@ -0,0 +1,114 @@
+//
+//  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.Interfaces.GUI;
+using LongoMatch.Core.Store;
+using LongoMatch.Core.Common;
+using System.Collections.Generic;
+
+namespace LongoMatch.Gui.Component
+{
+       [System.ComponentModel.ToolboxItem(true)]
+       public partial class FakeAnalysisComponent : Gtk.Bin,  IAnalysisWindow
+       {
+
+               public FakeAnalysisComponent ()
+               {
+                       this.Build ();
+                       capturerbin.Mode = CapturerType.Live;
+               }
+               #region IAnalysisWindow implementation
+               public void SetProject (Project project, ProjectType projectType, CaptureSettings props, 
EventsFilter filter)
+               {
+                       codingwidget1.SetProject (project, projectType, filter);
+               }
+
+               public void ReloadProject ()
+               {
+               }
+
+               public void CloseOpenedProject ()
+               {
+               }
+
+               public void AddPlay (TimelineEvent play)
+               {
+                       codingwidget1.AddPlay (play);
+               }
+
+               public void DeletePlays (List<TimelineEvent> plays)
+               {
+                       codingwidget1.DeletePlays (plays);
+               }
+
+               public void UpdateCategories ()
+               {
+                       codingwidget1.UpdateCategories ();
+               }
+
+               public void DetachPlayer ()
+               {
+               }
+
+               public void ZoomIn ()
+               {
+               }
+
+               public void ZoomOut ()
+               {
+               }
+
+               public void FitTimeline ()
+               {
+               }
+
+               public void ShowDashboard ()
+               {
+                       codingwidget1.ShowDashboard ();
+               }
+
+               public void ShowTimeline ()
+               {
+                       codingwidget1.ShowTimeline ();
+               }
+
+               public void ShowZonalTags ()
+               {
+                       codingwidget1.ShowZonalTags ();
+               }
+
+               public void ClickButton (DashboardButton button)
+               {
+                       codingwidget1.ClickButton (button);
+               }
+
+               public IPlayerBin Player {
+                       get {
+                               return null;
+                       }
+               }
+
+               public ICapturerBin Capturer {
+                       get {
+                               return capturerbin;
+                       }
+               }
+               #endregion
+       }
+}
+
diff --git a/LongoMatch.GUI/Gui/Component/PlayListWidget.cs b/LongoMatch.GUI/Gui/Component/PlayListWidget.cs
index 0abd180..08c6636 100644
--- a/LongoMatch.GUI/Gui/Component/PlayListWidget.cs
+++ b/LongoMatch.GUI/Gui/Component/PlayListWidget.cs
@@ -44,6 +44,7 @@ namespace LongoMatch.Gui.Component
                        newvideobutton.CanFocus = false;
                        Config.EventsBroker.PlaylistsChangedEvent += HandlePlaylistsChangedEvent;
                        Config.EventsBroker.PlaylistElementSelectedEvent += 
HandlePlaylistElementSelectedEvent;
+                       hbox2.HeightRequest = StyleConf.PlayerCapturerControlsHeight;
                }
 
                protected override void OnDestroyed ()
diff --git a/LongoMatch.GUI/Gui/Component/PlayersListTreeWidget.cs 
b/LongoMatch.GUI/Gui/Component/PlayersListTreeWidget.cs
index 9c185f3..1cf4516 100644
--- a/LongoMatch.GUI/Gui/Component/PlayersListTreeWidget.cs
+++ b/LongoMatch.GUI/Gui/Component/PlayersListTreeWidget.cs
@@ -34,6 +34,8 @@ namespace LongoMatch.Gui.Component
        public partial class PlayersListTreeWidget : Gtk.Bin
        {
 
+               TreeStore team;
+
                public PlayersListTreeWidget()
                {
                        this.Build();
@@ -57,8 +59,44 @@ namespace LongoMatch.Gui.Component
                        }
                }
 
+               public void AddEvent (TimelineEvent evt)
+               {
+                       TreeIter piter;
+
+                       if (evt.Players == null) {
+                               return;
+                       }
+                       team.GetIterFirst (out piter);
+                       while (team.IterIsValid (piter)) {
+                               Player player = team.GetValue (piter, 0) as Player;
+                               if (evt.Players.Contains (player)) {
+                                       team.AppendValues (piter, evt);
+                               }
+                               team.IterNext (ref piter);
+                       }
+               }
+               
+               public void RemoveEvents (List<TimelineEvent> events)
+               {
+                       TreeIter piter;
+
+                       team.GetIterFirst (out piter);
+                       while (team.IterIsValid (piter)) {
+                               TreeIter evtIter;
+
+                               team.IterChildren (out evtIter, piter);
+                               while (team.IterIsValid (evtIter)) {
+                                       TimelineEvent evt = team.GetValue (evtIter, 0) as TimelineEvent;
+                                       if (events.Contains (evt)) {
+                                               team.Remove (ref evtIter);
+                                       }
+                                       team.IterNext (ref evtIter);
+                               }
+                               team.IterNext (ref piter);
+                       }
+               }
+
                public void SetTeam(TeamTemplate template, List<TimelineEvent> plays) {
-                       TreeStore team;
                        Dictionary<Player, TreeIter> playersDict = new Dictionary<Player, TreeIter>();
                        
                        Log.Debug("Updating teams models with template:" + template);
diff --git a/LongoMatch.GUI/Gui/Component/PlaysSelectionWidget.cs 
b/LongoMatch.GUI/Gui/Component/PlaysSelectionWidget.cs
index 0f5b5ca..fc419c2 100644
--- a/LongoMatch.GUI/Gui/Component/PlaysSelectionWidget.cs
+++ b/LongoMatch.GUI/Gui/Component/PlaysSelectionWidget.cs
@@ -17,15 +17,12 @@
 // 
 using System;
 using System.Collections.Generic;
-using Mono.Unix;
+using Gdk;
 using Gtk;
-
 using LongoMatch.Core.Common;
-using LongoMatch.Core.Handlers;
-using LongoMatch.Core.Interfaces;
 using LongoMatch.Core.Store;
+using Mono.Unix;
 using Helpers = LongoMatch.Gui.Helpers;
-using Gdk;
 
 namespace LongoMatch.Gui.Component
 {
@@ -41,67 +38,48 @@ namespace LongoMatch.Gui.Component
                Pixbuf filtersIco, filtersActiveIco;
                int currentPage;
 
-               
                public PlaysSelectionWidget ()
                {
                        this.Build ();
                        
                        LoadIcons ();
 
-                       localPlayersList.Team = Team.LOCAL;
-                       visitorPlayersList.Team = Team.VISITOR;
-                       AddFilters();
-                       Config.EventsBroker.TeamTagsChanged += UpdateTeamsModels;
-                       playsnotebook.Page = 0;
+                       AddFilters ();
                        notebook.Page = currentPage = 0;
                        
                        notebook.SwitchPage += HandleSwitchPage;
-                       SetTabProps (playsnotebook, false);
+                       SetTabProps (eventslistwidget, false);
                        SetTabProps (playlistwidget, false);
                        SetTabProps (filtersvbox, false);
-                       LongoMatch.Gui.Helpers.Misc.SetFocus (this, false, typeof (TreeView));
+                       LongoMatch.Gui.Helpers.Misc.SetFocus (this, false, typeof(TreeView));
                }
 
                protected override void OnDestroyed ()
                {
-                       Config.EventsBroker.TeamTagsChanged -= UpdateTeamsModels;
-                       playsList.Project = null;
-                       localPlayersList.Clear();
-                       visitorPlayersList.Clear();
-                       playsList1.Destroy ();
+                       eventslistwidget.Destroy ();
                        playlistwidget.Destroy ();
                        base.OnDestroyed ();
                }
-               
                #region Plubic Methods
-               
-               public void SetProject(Project project, EventsFilter filter) {
+               public void SetProject (Project project, EventsFilter filter)
+               {
                        this.project = project;
-                       playsList.Filter = filter;
-                       localPlayersList.Filter = filter;
-                       visitorPlayersList.Filter = filter;
-                       playersfilter.SetFilter(filter, project);
-                       categoriesfilter.SetFilter(filter, project);
-                       playsList.Project=project;
-                       visitorPlayersList.Project = project;
-                       localPlayersList.Project = project;
+                       eventslistwidget.SetProject (project, filter);
+                       playersfilter.SetFilter (filter, project);
+                       categoriesfilter.SetFilter (filter, project);
                        playlistwidget.Project = project;
-                       visitorPlaysList.LabelProp = project.VisitorTeamTemplate.TeamName;
-                       localPlaysList.LabelProp = project.LocalTeamTemplate.TeamName;
-                       UpdateTeamsModels();
                }
-               
-               public void AddPlay(TimelineEvent play) {
-                       playsList.AddPlay(play);
-                       UpdateTeamsModels();
+
+               public void AddPlay (TimelineEvent play)
+               {
+                       eventslistwidget.AddPlay (play);
                }
-               
-               public void RemovePlays (List<TimelineEvent> plays) {
-                       playsList.RemovePlays(plays);
-                       UpdateTeamsModels();
+
+               public void RemovePlays (List<TimelineEvent> plays)
+               {
+                       eventslistwidget.RemovePlays (plays);
                }
                #endregion
-
                void LoadIcons ()
                {
                        int s = StyleConf.NotebookTabIconSize;
@@ -128,7 +106,7 @@ namespace LongoMatch.Gui.Component
                                notebook.SetTabLabel (widget, img);
                        }
 
-                       if (widget == playsnotebook) {
+                       if (widget == eventslistwidget) {
                                icon = active ? listActiveIco : listIco;
                        } else if (widget == filtersvbox) {
                                icon = active ? filtersActiveIco : filtersIco;
@@ -147,25 +125,24 @@ namespace LongoMatch.Gui.Component
                        currentPage = (int)args.PageNum;
                }
 
-               void AddFilters() {
-                       ScrolledWindow s1 = new ScrolledWindow();
-                       ScrolledWindow s2 = new ScrolledWindow();
+               void AddFilters ()
+               {
+                       Label l;
+                       ScrolledWindow s1 = new ScrolledWindow ();
+                       ScrolledWindow s2 = new ScrolledWindow ();
                        
-                       playersfilter = new PlayersFilterTreeView();
-                       categoriesfilter = new CategoriesFilterTreeView();
+                       playersfilter = new PlayersFilterTreeView ();
+                       categoriesfilter = new CategoriesFilterTreeView ();
                        
-                       s1.Add(categoriesfilter);
-                       s2.Add(playersfilter);
-                       filtersnotebook.AppendPage(s1, new Gtk.Label(Catalog.GetString("Categories filter")));
-                       filtersnotebook.AppendPage(s2, new Gtk.Label(Catalog.GetString("Players filter")));
-                       filtersnotebook.ShowAll();
-               }
-               
-               private void UpdateTeamsModels() {
-                       if (project == null)
-                               return;
-                       localPlayersList.SetTeam(project.LocalTeamTemplate, project.Timeline);
-                       visitorPlayersList.SetTeam(project.VisitorTeamTemplate, project.Timeline);
+                       s1.Add (categoriesfilter);
+                       s2.Add (playersfilter);
+                       l = new Gtk.Label (Catalog.GetString ("Categories filter"));
+                       l.HeightRequest = StyleConf.PlayerCapturerControlsHeight;
+                       filtersnotebook.AppendPage (s1, l);
+                       l = new Gtk.Label (Catalog.GetString ("Players filter"));
+                       l.HeightRequest = StyleConf.PlayerCapturerControlsHeight;
+                       filtersnotebook.AppendPage (s2, l);
+                       filtersnotebook.ShowAll ();
                }
        }
 }
diff --git a/LongoMatch.GUI/Gui/MainWindow.cs b/LongoMatch.GUI/Gui/MainWindow.cs
index a25a5dc..722a2a4 100644
--- a/LongoMatch.GUI/Gui/MainWindow.cs
+++ b/LongoMatch.GUI/Gui/MainWindow.cs
@@ -117,7 +117,7 @@ namespace LongoMatch.Gui
                        (parent.Submenu as Menu).Append(item);
                }
                
-               public IAnalysisWindow SetProject(Project project, ProjectType projectType, CaptureSettings 
props, EventsFilter filter)
+               public IAnalysisWindow SetProject (Project project, ProjectType projectType, CaptureSettings 
props, EventsFilter filter)
                {
                        ExportProjectAction1.Sensitive = true;
                        
@@ -129,8 +129,12 @@ namespace LongoMatch.Gui
                        } else {
                                Title = Constants.SOFTWARE_NAME;
                        }
-                       MakeActionsSensitive(true, projectType);
-                       analysisWindow = new AnalysisComponent();
+                       MakeActionsSensitive (true, projectType);
+                       if (projectType == ProjectType.FakeCaptureProject) {
+                               analysisWindow = new FakeAnalysisComponent ();
+                       } else {
+                               analysisWindow = new AnalysisComponent();
+                       }
                        SetPanel (analysisWindow as Widget);
                        analysisWindow.SetProject (project, projectType, props, filter);
                        return analysisWindow;
diff --git a/LongoMatch.GUI/Gui/Panel/NewProjectPanel.cs b/LongoMatch.GUI/Gui/Panel/NewProjectPanel.cs
index 1b2904d..9a5aca6 100644
--- a/LongoMatch.GUI/Gui/Panel/NewProjectPanel.cs
+++ b/LongoMatch.GUI/Gui/Panel/NewProjectPanel.cs
@@ -229,20 +229,8 @@ namespace LongoMatch.Gui.Panel
 
                        foreach (Device device in devices) {
                                string deviceElement, deviceName;
-
-                               if (Environment.OSVersion.Platform == PlatformID.Win32NT) {
-                                       deviceElement = Catalog.GetString ("DirectShow source");
-                               } else {
-                                       if (device.DeviceType == CaptureSourceType.DV)
-                                               deviceElement = Catalog.GetString (Catalog.GetString ("DV 
source"));
-                                       else if (device.DeviceType == CaptureSourceType.System) {
-                                               deviceElement = Catalog.GetString (Catalog.GetString ("System 
source"));
-                                       } else {
-                                               deviceElement = Catalog.GetString (Catalog.GetString ("GConf 
source"));
-                                       }
-                               }
                                deviceName = (device.ID == "") ? Catalog.GetString ("Unknown") : device.ID;
-                               devicecombobox.AppendText (deviceName + " (" + deviceElement + ")");
+                               devicecombobox.AppendText (deviceName);
                                devicecombobox.Active = 0;
                        }
                }
diff --git a/LongoMatch.GUI/Gui/Panel/ProjectsManagerPanel.cs 
b/LongoMatch.GUI/Gui/Panel/ProjectsManagerPanel.cs
index b51e6de..80bdc18 100644
--- a/LongoMatch.GUI/Gui/Panel/ProjectsManagerPanel.cs
+++ b/LongoMatch.GUI/Gui/Panel/ProjectsManagerPanel.cs
@@ -242,7 +242,7 @@ namespace LongoMatch.Gui.Panel
                                
                        deletedProjects = new List<ProjectDescription>();
                        foreach (ProjectDescription selectedProject in selectedProjects) {
-                               if(openedProject == loadedProject) {
+                               if (openedProject != null && openedProject.ID == selectedProject.ID) {
                                        MessagesHelpers.WarningMessage (this,
                                                                        Catalog.GetString("This Project is 
actually in use.")+"\n"+
                                                                        Catalog.GetString("Close it first to 
allow its removal from the database"));
diff --git a/LongoMatch.GUI/LongoMatch.GUI.csproj b/LongoMatch.GUI/LongoMatch.GUI.csproj
index 8cf7f03..58090f4 100644
--- a/LongoMatch.GUI/LongoMatch.GUI.csproj
+++ b/LongoMatch.GUI/LongoMatch.GUI.csproj
@@ -165,8 +165,6 @@
     <Compile Include="gtk-gui\LongoMatch.Gui.Component.CodingWidget.cs" />
     <Compile Include="Gui\Component\ProjectPeriods.cs" />
     <Compile Include="gtk-gui\LongoMatch.Gui.Component.ProjectPeriods.cs" />
-    <Compile Include="Gui\Component\PeriodsRecoder.cs" />
-    <Compile Include="gtk-gui\LongoMatch.Gui.Component.PeriodsRecoder.cs" />
     <Compile Include="Gui\Component\PlaysPositionViewer.cs" />
     <Compile Include="gtk-gui\LongoMatch.Gui.Component.PlaysPositionViewer.cs" />
     <Compile Include="Gui\Menu\PlaysMenu.cs" />
@@ -190,6 +188,10 @@
     <Compile Include="Gui\Menu\PeriodsMenu.cs" />
     <Compile Include="Gui\Component\HotkeysConfiguration.cs" />
     <Compile Include="gtk-gui\LongoMatch.Gui.Component.HotkeysConfiguration.cs" />
+    <Compile Include="Gui\Component\FakeAnalysisComponent.cs" />
+    <Compile Include="gtk-gui\LongoMatch.Gui.Component.FakeAnalysisComponent.cs" />
+    <Compile Include="Gui\Component\EventsListWidget.cs" />
+    <Compile Include="gtk-gui\LongoMatch.Gui.Component.EventsListWidget.cs" />
   </ItemGroup>
   <ItemGroup>
     <EmbeddedResource Include="gtk-gui\gui.stetic">
diff --git a/LongoMatch.GUI/Makefile.am b/LongoMatch.GUI/Makefile.am
index f5780f0..699c40c 100644
--- a/LongoMatch.GUI/Makefile.am
+++ b/LongoMatch.GUI/Makefile.am
@@ -11,13 +11,14 @@ SOURCES = Gui/Cairo.cs \
        Gui/Component/CoordinatesTagger.cs \
        Gui/Component/DashboardWidget.cs \
        Gui/Component/DatePicker.cs \
+       Gui/Component/EventsListWidget.cs \
+       Gui/Component/FakeAnalysisComponent.cs \
        Gui/Component/GeneralPreferencesPanel.cs \
        Gui/Component/HotkeysConfiguration.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 \
        Gui/Component/PlayersListTreeWidget.cs \
        Gui/Component/PlaysCoordinatesTagger.cs \
@@ -89,6 +90,8 @@ SOURCES = Gui/Cairo.cs \
        gtk-gui/LongoMatch.Gui.Component.CoordinatesTagger.cs \
        gtk-gui/LongoMatch.Gui.Component.DashboardWidget.cs \
        gtk-gui/LongoMatch.Gui.Component.DatePicker.cs \
+       gtk-gui/LongoMatch.Gui.Component.EventsListWidget.cs \
+       gtk-gui/LongoMatch.Gui.Component.FakeAnalysisComponent.cs \
        gtk-gui/LongoMatch.Gui.Component.GameViewer.cs \
        gtk-gui/LongoMatch.Gui.Component.GeneralPreferencesPanel.cs \
        gtk-gui/LongoMatch.Gui.Component.HotkeysConfiguration.cs \
@@ -96,7 +99,6 @@ SOURCES = Gui/Cairo.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 \
        gtk-gui/LongoMatch.Gui.Component.PlayersListTreeWidget.cs \
        gtk-gui/LongoMatch.Gui.Component.PlaysCoordinatesTagger.cs \
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.AnalysisComponent.cs 
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.AnalysisComponent.cs
index e0c7e2d..95bd48e 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.AnalysisComponent.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.AnalysisComponent.cs
@@ -6,6 +6,14 @@ namespace LongoMatch.Gui.Component
        {
                private global::Gtk.UIManager UIManager;
                private global::Gtk.HBox hbox1;
+               private global::Gtk.EventBox lightbackgroundeventbox;
+               private global::Gtk.VPaned centralpane;
+               private global::Gtk.HPaned uppane;
+               private global::LongoMatch.Gui.Component.PlaysSelectionWidget playsSelection;
+               private global::Gtk.HPaned rigthpane;
+               private global::Gtk.HBox videowidgetsbox;
+               private global::LongoMatch.Gui.PlayerCapturerBin playercapturer;
+               private global::LongoMatch.Gui.Component.CodingWidget codingwidget;
 
                protected virtual void Build ()
                {
@@ -20,6 +28,59 @@ namespace LongoMatch.Gui.Component
                        this.hbox1 = new global::Gtk.HBox ();
                        this.hbox1.Name = "hbox1";
                        this.hbox1.Spacing = 6;
+                       // Container child hbox1.Gtk.Box+BoxChild
+                       this.lightbackgroundeventbox = new global::Gtk.EventBox ();
+                       this.lightbackgroundeventbox.Name = "lightbackgroundeventbox";
+                       // Container child lightbackgroundeventbox.Gtk.Container+ContainerChild
+                       this.centralpane = new global::Gtk.VPaned ();
+                       this.centralpane.CanFocus = true;
+                       this.centralpane.Name = "centralpane";
+                       this.centralpane.Position = 263;
+                       // Container child centralpane.Gtk.Paned+PanedChild
+                       this.uppane = new global::Gtk.HPaned ();
+                       this.uppane.CanFocus = true;
+                       this.uppane.Name = "uppane";
+                       this.uppane.Position = 283;
+                       // Container child uppane.Gtk.Paned+PanedChild
+                       this.playsSelection = new global::LongoMatch.Gui.Component.PlaysSelectionWidget ();
+                       this.playsSelection.Events = ((global::Gdk.EventMask)(256));
+                       this.playsSelection.Name = "playsSelection";
+                       this.uppane.Add (this.playsSelection);
+                       global::Gtk.Paned.PanedChild w3 = ((global::Gtk.Paned.PanedChild)(this.uppane 
[this.playsSelection]));
+                       w3.Resize = false;
+                       // Container child uppane.Gtk.Paned+PanedChild
+                       this.rigthpane = new global::Gtk.HPaned ();
+                       this.rigthpane.CanFocus = true;
+                       this.rigthpane.Name = "rigthpane";
+                       this.rigthpane.Position = 1219;
+                       // Container child rigthpane.Gtk.Paned+PanedChild
+                       this.videowidgetsbox = new global::Gtk.HBox ();
+                       this.videowidgetsbox.Name = "videowidgetsbox";
+                       this.videowidgetsbox.Spacing = 6;
+                       // Container child videowidgetsbox.Gtk.Box+BoxChild
+                       this.playercapturer = new global::LongoMatch.Gui.PlayerCapturerBin ();
+                       this.playercapturer.Events = ((global::Gdk.EventMask)(256));
+                       this.playercapturer.Name = "playercapturer";
+                       this.videowidgetsbox.Add (this.playercapturer);
+                       global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.videowidgetsbox 
[this.playercapturer]));
+                       w4.Position = 0;
+                       this.rigthpane.Add (this.videowidgetsbox);
+                       global::Gtk.Paned.PanedChild w5 = ((global::Gtk.Paned.PanedChild)(this.rigthpane 
[this.videowidgetsbox]));
+                       w5.Resize = false;
+                       this.uppane.Add (this.rigthpane);
+                       this.centralpane.Add (this.uppane);
+                       global::Gtk.Paned.PanedChild w7 = ((global::Gtk.Paned.PanedChild)(this.centralpane 
[this.uppane]));
+                       w7.Resize = false;
+                       // Container child centralpane.Gtk.Paned+PanedChild
+                       this.codingwidget = new global::LongoMatch.Gui.Component.CodingWidget ();
+                       this.codingwidget.Events = ((global::Gdk.EventMask)(256));
+                       this.codingwidget.Name = "codingwidget";
+                       this.codingwidget.TagPositions = false;
+                       this.centralpane.Add (this.codingwidget);
+                       this.lightbackgroundeventbox.Add (this.centralpane);
+                       this.hbox1.Add (this.lightbackgroundeventbox);
+                       global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.hbox1 
[this.lightbackgroundeventbox]));
+                       w10.Position = 0;
                        this.Add (this.hbox1);
                        if ((this.Child != null)) {
                                this.Child.ShowAll ();
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.CodingWidget.cs 
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.CodingWidget.cs
index 62b2123..b5f45ee 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.CodingWidget.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.CodingWidget.cs
@@ -14,6 +14,8 @@ namespace LongoMatch.Gui.Component
                private global::Gtk.Label label3;
                private global::LongoMatch.Gui.Component.PlaysPositionViewer playspositionviewer1;
                private global::Gtk.Label label5;
+               private global::LongoMatch.Gui.Component.EventsListWidget eventslistwidget;
+               private global::Gtk.Label label13;
 
                protected virtual void Build ()
                {
@@ -25,7 +27,7 @@ namespace LongoMatch.Gui.Component
                        this.notebook = new global::Gtk.Notebook ();
                        this.notebook.CanFocus = true;
                        this.notebook.Name = "notebook";
-                       this.notebook.CurrentPage = 0;
+                       this.notebook.CurrentPage = 3;
                        this.notebook.TabPos = ((global::Gtk.PositionType)(0));
                        this.notebook.ShowBorder = false;
                        // Container child notebook.Gtk.Notebook+NotebookChild
@@ -85,6 +87,19 @@ namespace LongoMatch.Gui.Component
                        this.label5.LabelProp = global::Mono.Unix.Catalog.GetString ("page3");
                        this.notebook.SetTabLabel (this.playspositionviewer1, this.label5);
                        this.label5.ShowAll ();
+                       // Container child notebook.Gtk.Notebook+NotebookChild
+                       this.eventslistwidget = new global::LongoMatch.Gui.Component.EventsListWidget ();
+                       this.eventslistwidget.Events = ((global::Gdk.EventMask)(256));
+                       this.eventslistwidget.Name = "eventslistwidget";
+                       this.notebook.Add (this.eventslistwidget);
+                       global::Gtk.Notebook.NotebookChild w7 = 
((global::Gtk.Notebook.NotebookChild)(this.notebook [this.eventslistwidget]));
+                       w7.Position = 3;
+                       // Notebook tab
+                       this.label13 = new global::Gtk.Label ();
+                       this.label13.Name = "label13";
+                       this.label13.LabelProp = global::Mono.Unix.Catalog.GetString ("page4");
+                       this.notebook.SetTabLabel (this.eventslistwidget, this.label13);
+                       this.label13.ShowAll ();
                        this.Add (this.notebook);
                        if ((this.Child != null)) {
                                this.Child.ShowAll ();
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.EventsListWidget.cs 
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.EventsListWidget.cs
new file mode 100644
index 0000000..cc57210
--- /dev/null
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.EventsListWidget.cs
@@ -0,0 +1,69 @@
+
+// This file has been generated by the GUI designer. Do not modify.
+namespace LongoMatch.Gui.Component
+{
+       public partial class EventsListWidget
+       {
+               private global::Gtk.Notebook playsnotebook;
+               private global::LongoMatch.Gui.Component.PlaysListTreeWidget playsList;
+               private global::Gtk.Label playsList1;
+               private global::LongoMatch.Gui.Component.PlayersListTreeWidget localPlayersList;
+               private global::Gtk.Label localPlaysList;
+               private global::LongoMatch.Gui.Component.PlayersListTreeWidget visitorPlayersList;
+               private global::Gtk.Label visitorPlaysList;
+
+               protected virtual void Build ()
+               {
+                       global::Stetic.Gui.Initialize (this);
+                       // Widget LongoMatch.Gui.Component.EventsListWidget
+                       global::Stetic.BinContainer.Attach (this);
+                       this.Name = "LongoMatch.Gui.Component.EventsListWidget";
+                       // Container child 
LongoMatch.Gui.Component.EventsListWidget.Gtk.Container+ContainerChild
+                       this.playsnotebook = new global::Gtk.Notebook ();
+                       this.playsnotebook.CanFocus = true;
+                       this.playsnotebook.Name = "playsnotebook";
+                       this.playsnotebook.CurrentPage = 0;
+                       this.playsnotebook.TabPos = ((global::Gtk.PositionType)(3));
+                       // Container child playsnotebook.Gtk.Notebook+NotebookChild
+                       this.playsList = new global::LongoMatch.Gui.Component.PlaysListTreeWidget ();
+                       this.playsList.Events = ((global::Gdk.EventMask)(256));
+                       this.playsList.Name = "playsList";
+                       this.playsnotebook.Add (this.playsList);
+                       // Notebook tab
+                       this.playsList1 = new global::Gtk.Label ();
+                       this.playsList1.Name = "playsList1";
+                       this.playsList1.LabelProp = global::Mono.Unix.Catalog.GetString ("Events");
+                       this.playsnotebook.SetTabLabel (this.playsList, this.playsList1);
+                       this.playsList1.ShowAll ();
+                       // Container child playsnotebook.Gtk.Notebook+NotebookChild
+                       this.localPlayersList = new global::LongoMatch.Gui.Component.PlayersListTreeWidget ();
+                       this.localPlayersList.Events = ((global::Gdk.EventMask)(256));
+                       this.localPlayersList.Name = "localPlayersList";
+                       this.playsnotebook.Add (this.localPlayersList);
+                       global::Gtk.Notebook.NotebookChild w2 = 
((global::Gtk.Notebook.NotebookChild)(this.playsnotebook [this.localPlayersList]));
+                       w2.Position = 1;
+                       // Notebook tab
+                       this.localPlaysList = new global::Gtk.Label ();
+                       this.localPlaysList.Name = "localPlaysList";
+                       this.playsnotebook.SetTabLabel (this.localPlayersList, this.localPlaysList);
+                       this.localPlaysList.ShowAll ();
+                       // Container child playsnotebook.Gtk.Notebook+NotebookChild
+                       this.visitorPlayersList = new global::LongoMatch.Gui.Component.PlayersListTreeWidget 
();
+                       this.visitorPlayersList.Events = ((global::Gdk.EventMask)(256));
+                       this.visitorPlayersList.Name = "visitorPlayersList";
+                       this.playsnotebook.Add (this.visitorPlayersList);
+                       global::Gtk.Notebook.NotebookChild w3 = 
((global::Gtk.Notebook.NotebookChild)(this.playsnotebook [this.visitorPlayersList]));
+                       w3.Position = 2;
+                       // Notebook tab
+                       this.visitorPlaysList = new global::Gtk.Label ();
+                       this.visitorPlaysList.Name = "visitorPlaysList";
+                       this.playsnotebook.SetTabLabel (this.visitorPlayersList, this.visitorPlaysList);
+                       this.visitorPlaysList.ShowAll ();
+                       this.Add (this.playsnotebook);
+                       if ((this.Child != null)) {
+                               this.Child.ShowAll ();
+                       }
+                       this.Hide ();
+               }
+       }
+}
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.FakeAnalysisComponent.cs 
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.FakeAnalysisComponent.cs
new file mode 100644
index 0000000..5cfdeea
--- /dev/null
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.FakeAnalysisComponent.cs
@@ -0,0 +1,59 @@
+
+// This file has been generated by the GUI designer. Do not modify.
+namespace LongoMatch.Gui.Component
+{
+       public partial class FakeAnalysisComponent
+       {
+               private global::Gtk.EventBox lightbackgroundeventbox;
+               private global::Gtk.VBox vbox3;
+               private global::LongoMatch.Gui.CapturerBin capturerbin;
+               private global::Gtk.HSeparator hseparator1;
+               private global::LongoMatch.Gui.Component.CodingWidget codingwidget1;
+
+               protected virtual void Build ()
+               {
+                       global::Stetic.Gui.Initialize (this);
+                       // Widget LongoMatch.Gui.Component.FakeAnalysisComponent
+                       global::Stetic.BinContainer.Attach (this);
+                       this.Name = "LongoMatch.Gui.Component.FakeAnalysisComponent";
+                       // Container child 
LongoMatch.Gui.Component.FakeAnalysisComponent.Gtk.Container+ContainerChild
+                       this.lightbackgroundeventbox = new global::Gtk.EventBox ();
+                       this.lightbackgroundeventbox.Name = "lightbackgroundeventbox";
+                       // Container child lightbackgroundeventbox.Gtk.Container+ContainerChild
+                       this.vbox3 = new global::Gtk.VBox ();
+                       this.vbox3.Name = "vbox3";
+                       this.vbox3.Spacing = 6;
+                       // Container child vbox3.Gtk.Box+BoxChild
+                       this.capturerbin = new global::LongoMatch.Gui.CapturerBin ();
+                       this.capturerbin.Events = ((global::Gdk.EventMask)(256));
+                       this.capturerbin.Name = "capturerbin";
+                       this.capturerbin.Capturing = false;
+                       this.vbox3.Add (this.capturerbin);
+                       global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox3 
[this.capturerbin]));
+                       w1.Position = 0;
+                       w1.Expand = false;
+                       // Container child vbox3.Gtk.Box+BoxChild
+                       this.hseparator1 = new global::Gtk.HSeparator ();
+                       this.hseparator1.Name = "hseparator1";
+                       this.vbox3.Add (this.hseparator1);
+                       global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox3 
[this.hseparator1]));
+                       w2.Position = 1;
+                       w2.Expand = false;
+                       w2.Fill = false;
+                       // Container child vbox3.Gtk.Box+BoxChild
+                       this.codingwidget1 = new global::LongoMatch.Gui.Component.CodingWidget ();
+                       this.codingwidget1.Events = ((global::Gdk.EventMask)(256));
+                       this.codingwidget1.Name = "codingwidget1";
+                       this.codingwidget1.TagPositions = false;
+                       this.vbox3.Add (this.codingwidget1);
+                       global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox3 
[this.codingwidget1]));
+                       w3.Position = 2;
+                       this.lightbackgroundeventbox.Add (this.vbox3);
+                       this.Add (this.lightbackgroundeventbox);
+                       if ((this.Child != null)) {
+                               this.Child.ShowAll ();
+                       }
+                       this.Hide ();
+               }
+       }
+}
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.PlaysSelectionWidget.cs 
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.PlaysSelectionWidget.cs
index 6452b31..6821bb2 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.PlaysSelectionWidget.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.PlaysSelectionWidget.cs
@@ -5,13 +5,7 @@ namespace LongoMatch.Gui.Component
        public partial class PlaysSelectionWidget
        {
                private global::Gtk.Notebook notebook;
-               private global::Gtk.Notebook playsnotebook;
-               private global::LongoMatch.Gui.Component.PlaysListTreeWidget playsList;
-               private global::Gtk.Label playsList1;
-               private global::LongoMatch.Gui.Component.PlayersListTreeWidget localPlayersList;
-               private global::Gtk.Label localPlaysList;
-               private global::LongoMatch.Gui.Component.PlayersListTreeWidget visitorPlayersList;
-               private global::Gtk.Label visitorPlaysList;
+               private global::LongoMatch.Gui.Component.EventsListWidget eventslistwidget;
                private global::Gtk.Label label1;
                private global::LongoMatch.Gui.Component.PlayListWidget playlistwidget;
                private global::Gtk.Label label3;
@@ -29,57 +23,20 @@ namespace LongoMatch.Gui.Component
                        this.notebook = new global::Gtk.Notebook ();
                        this.notebook.CanFocus = true;
                        this.notebook.Name = "notebook";
-                       this.notebook.CurrentPage = 2;
+                       this.notebook.CurrentPage = 0;
                        this.notebook.TabPos = ((global::Gtk.PositionType)(0));
                        // Container child notebook.Gtk.Notebook+NotebookChild
-                       this.playsnotebook = new global::Gtk.Notebook ();
-                       this.playsnotebook.CanFocus = true;
-                       this.playsnotebook.Name = "playsnotebook";
-                       this.playsnotebook.CurrentPage = 2;
-                       this.playsnotebook.TabPos = ((global::Gtk.PositionType)(3));
-                       // Container child playsnotebook.Gtk.Notebook+NotebookChild
-                       this.playsList = new global::LongoMatch.Gui.Component.PlaysListTreeWidget ();
-                       this.playsList.Events = ((global::Gdk.EventMask)(256));
-                       this.playsList.Name = "playsList";
-                       this.playsnotebook.Add (this.playsList);
-                       // Notebook tab
-                       this.playsList1 = new global::Gtk.Label ();
-                       this.playsList1.Name = "playsList1";
-                       this.playsList1.LabelProp = global::Mono.Unix.Catalog.GetString ("Events");
-                       this.playsnotebook.SetTabLabel (this.playsList, this.playsList1);
-                       this.playsList1.ShowAll ();
-                       // Container child playsnotebook.Gtk.Notebook+NotebookChild
-                       this.localPlayersList = new global::LongoMatch.Gui.Component.PlayersListTreeWidget ();
-                       this.localPlayersList.Events = ((global::Gdk.EventMask)(256));
-                       this.localPlayersList.Name = "localPlayersList";
-                       this.playsnotebook.Add (this.localPlayersList);
-                       global::Gtk.Notebook.NotebookChild w2 = 
((global::Gtk.Notebook.NotebookChild)(this.playsnotebook [this.localPlayersList]));
-                       w2.Position = 1;
-                       // Notebook tab
-                       this.localPlaysList = new global::Gtk.Label ();
-                       this.localPlaysList.Name = "localPlaysList";
-                       this.playsnotebook.SetTabLabel (this.localPlayersList, this.localPlaysList);
-                       this.localPlaysList.ShowAll ();
-                       // Container child playsnotebook.Gtk.Notebook+NotebookChild
-                       this.visitorPlayersList = new global::LongoMatch.Gui.Component.PlayersListTreeWidget 
();
-                       this.visitorPlayersList.Events = ((global::Gdk.EventMask)(256));
-                       this.visitorPlayersList.Name = "visitorPlayersList";
-                       this.playsnotebook.Add (this.visitorPlayersList);
-                       global::Gtk.Notebook.NotebookChild w3 = 
((global::Gtk.Notebook.NotebookChild)(this.playsnotebook [this.visitorPlayersList]));
-                       w3.Position = 2;
-                       // Notebook tab
-                       this.visitorPlaysList = new global::Gtk.Label ();
-                       this.visitorPlaysList.Name = "visitorPlaysList";
-                       this.playsnotebook.SetTabLabel (this.visitorPlayersList, this.visitorPlaysList);
-                       this.visitorPlaysList.ShowAll ();
-                       this.notebook.Add (this.playsnotebook);
+                       this.eventslistwidget = new global::LongoMatch.Gui.Component.EventsListWidget ();
+                       this.eventslistwidget.Events = ((global::Gdk.EventMask)(256));
+                       this.eventslistwidget.Name = "eventslistwidget";
+                       this.notebook.Add (this.eventslistwidget);
                        // Notebook tab
                        this.label1 = new global::Gtk.Label ();
                        this.label1.Name = "label1";
                        this.label1.LabelProp = global::Mono.Unix.Catalog.GetString ("  Events   ");
                        this.label1.Justify = ((global::Gtk.Justification)(2));
                        this.label1.Angle = 90;
-                       this.notebook.SetTabLabel (this.playsnotebook, this.label1);
+                       this.notebook.SetTabLabel (this.eventslistwidget, this.label1);
                        this.label1.ShowAll ();
                        // Container child notebook.Gtk.Notebook+NotebookChild
                        this.playlistwidget = new global::LongoMatch.Gui.Component.PlayListWidget ();
@@ -87,8 +44,8 @@ namespace LongoMatch.Gui.Component
                        this.playlistwidget.Events = ((global::Gdk.EventMask)(256));
                        this.playlistwidget.Name = "playlistwidget";
                        this.notebook.Add (this.playlistwidget);
-                       global::Gtk.Notebook.NotebookChild w5 = 
((global::Gtk.Notebook.NotebookChild)(this.notebook [this.playlistwidget]));
-                       w5.Position = 1;
+                       global::Gtk.Notebook.NotebookChild w2 = 
((global::Gtk.Notebook.NotebookChild)(this.notebook [this.playlistwidget]));
+                       w2.Position = 1;
                        // Notebook tab
                        this.label3 = new global::Gtk.Label ();
                        this.label3.Name = "label3";
@@ -104,14 +61,14 @@ namespace LongoMatch.Gui.Component
                        this.filtersnotebook = new global::Gtk.Notebook ();
                        this.filtersnotebook.CanFocus = true;
                        this.filtersnotebook.Name = "filtersnotebook";
-                       this.filtersnotebook.CurrentPage = 0;
+                       this.filtersnotebook.CurrentPage = 1;
                        this.filtersnotebook.TabPos = ((global::Gtk.PositionType)(3));
                        this.filtersvbox.Add (this.filtersnotebook);
-                       global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.filtersvbox 
[this.filtersnotebook]));
-                       w6.Position = 0;
+                       global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.filtersvbox 
[this.filtersnotebook]));
+                       w3.Position = 0;
                        this.notebook.Add (this.filtersvbox);
-                       global::Gtk.Notebook.NotebookChild w7 = 
((global::Gtk.Notebook.NotebookChild)(this.notebook [this.filtersvbox]));
-                       w7.Position = 2;
+                       global::Gtk.Notebook.NotebookChild w4 = 
((global::Gtk.Notebook.NotebookChild)(this.notebook [this.filtersvbox]));
+                       w4.Position = 2;
                        // Notebook tab
                        this.label2 = new global::Gtk.Label ();
                        this.label2.Name = "label2";
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.NewProjectPanel.cs 
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.NewProjectPanel.cs
index 2fd6175..6cb850b 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.NewProjectPanel.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.NewProjectPanel.cs
@@ -467,7 +467,6 @@ namespace LongoMatch.Gui.Panel
                        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 ();
@@ -515,8 +514,6 @@ namespace LongoMatch.Gui.Panel
                        this.hbox10.Add (this.lcapturetable);
                        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";
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.ProjectsManagerPanel.cs 
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.ProjectsManagerPanel.cs
index 1feb359..ed56cf5 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.ProjectsManagerPanel.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.ProjectsManagerPanel.cs
@@ -613,7 +613,6 @@ namespace LongoMatch.Gui.Panel
                        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";
diff --git a/LongoMatch.GUI/gtk-gui/gui.stetic b/LongoMatch.GUI/gtk-gui/gui.stetic
index 47e6181..e13f8d3 100644
--- a/LongoMatch.GUI/gtk-gui/gui.stetic
+++ b/LongoMatch.GUI/gtk-gui/gui.stetic
@@ -4405,63 +4405,12 @@ You can continue with the current capture, cancel it or save your project.
       <widget class="Gtk.Notebook" id="notebook">
         <property name="MemberName" />
         <property name="CanFocus">True</property>
-        <property name="CurrentPage">2</property>
+        <property name="CurrentPage">0</property>
         <property name="TabPos">Left</property>
         <child>
-          <widget class="Gtk.Notebook" id="playsnotebook">
+          <widget class="LongoMatch.Gui.Component.EventsListWidget" id="eventslistwidget">
             <property name="MemberName" />
-            <property name="CanFocus">True</property>
-            <property name="CurrentPage">2</property>
-            <property name="TabPos">Bottom</property>
-            <child>
-              <widget class="LongoMatch.Gui.Component.PlaysListTreeWidget" id="playsList">
-                <property name="MemberName" />
-                <property name="Events">ButtonPressMask</property>
-              </widget>
-            </child>
-            <child>
-              <widget class="Gtk.Label" id="playsList1">
-                <property name="MemberName" />
-                <property name="LabelProp" translatable="yes">Events</property>
-              </widget>
-              <packing>
-                <property name="type">tab</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="LongoMatch.Gui.Component.PlayersListTreeWidget" id="localPlayersList">
-                <property name="MemberName" />
-                <property name="Events">ButtonPressMask</property>
-              </widget>
-              <packing>
-                <property name="Position">1</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="Gtk.Label" id="localPlaysList">
-                <property name="MemberName" />
-              </widget>
-              <packing>
-                <property name="type">tab</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="LongoMatch.Gui.Component.PlayersListTreeWidget" id="visitorPlayersList">
-                <property name="MemberName" />
-                <property name="Events">ButtonPressMask</property>
-              </widget>
-              <packing>
-                <property name="Position">2</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="Gtk.Label" id="visitorPlaysList">
-                <property name="MemberName" />
-              </widget>
-              <packing>
-                <property name="type">tab</property>
-              </packing>
-            </child>
+            <property name="Events">ButtonPressMask</property>
           </widget>
         </child>
         <child>
@@ -4503,7 +4452,7 @@ You can continue with the current capture, cancel it or save your project.
               <widget class="Gtk.Notebook" id="filtersnotebook">
                 <property name="MemberName" />
                 <property name="CanFocus">True</property>
-                <property name="CurrentPage">0</property>
+                <property name="CurrentPage">1</property>
                 <property name="TabPos">Bottom</property>
                 <child>
                   <placeholder />
@@ -6268,7 +6217,7 @@ You can continue with the current capture, cancel it or save your project.
       </widget>
     </child>
   </widget>
-  <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.AnalysisComponent" design-size="1524 875">
+  <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.AnalysisComponent" design-size="1592 741">
     <action-group name="Default" />
     <property name="MemberName" />
     <property name="Visible">False</property>
@@ -6277,7 +6226,75 @@ You can continue with the current capture, cancel it or save your project.
         <property name="MemberName" />
         <property name="Spacing">6</property>
         <child>
-          <placeholder />
+          <widget class="Gtk.EventBox" id="lightbackgroundeventbox">
+            <property name="MemberName" />
+            <child>
+              <widget class="Gtk.VPaned" id="centralpane">
+                <property name="MemberName" />
+                <property name="CanFocus">True</property>
+                <property name="Position">263</property>
+                <child>
+                  <widget class="Gtk.HPaned" id="uppane">
+                    <property name="MemberName" />
+                    <property name="CanFocus">True</property>
+                    <property name="Position">283</property>
+                    <child>
+                      <widget class="LongoMatch.Gui.Component.PlaysSelectionWidget" id="playsSelection">
+                        <property name="MemberName" />
+                        <property name="Events">ButtonPressMask</property>
+                      </widget>
+                      <packing>
+                        <property name="Resize">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.HPaned" id="rigthpane">
+                        <property name="MemberName" />
+                        <property name="CanFocus">True</property>
+                        <property name="Position">1219</property>
+                        <child>
+                          <widget class="Gtk.HBox" id="videowidgetsbox">
+                            <property name="MemberName" />
+                            <property name="Spacing">6</property>
+                            <child>
+                              <widget class="LongoMatch.Gui.PlayerCapturerBin" id="playercapturer">
+                                <property name="MemberName" />
+                                <property name="Events">ButtonPressMask</property>
+                              </widget>
+                              <packing>
+                                <property name="Position">0</property>
+                                <property name="AutoSize">False</property>
+                              </packing>
+                            </child>
+                          </widget>
+                          <packing>
+                            <property name="Resize">False</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <placeholder />
+                        </child>
+                      </widget>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="Resize">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="LongoMatch.Gui.Component.CodingWidget" id="codingwidget">
+                    <property name="MemberName" />
+                    <property name="Events">ButtonPressMask</property>
+                    <property name="TagPositions">False</property>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+          </widget>
+          <packing>
+            <property name="Position">0</property>
+            <property name="AutoSize">True</property>
+          </packing>
         </child>
       </widget>
     </child>
@@ -7154,10 +7171,9 @@ You can continue with the current capture, cancel it or save your project.
                                       <packing>
                                         <property name="LeftAttach">1</property>
                                         <property name="RightAttach">2</property>
-                                        <property name="AutoSize">True</property>
-                                        <property name="XOptions">Fill</property>
+                                        <property name="AutoSize">False</property>
                                         <property name="YOptions">Fill</property>
-                                        <property name="XExpand">False</property>
+                                        <property name="XExpand">True</property>
                                         <property name="XFill">True</property>
                                         <property name="XShrink">False</property>
                                         <property name="YExpand">False</property>
@@ -7248,9 +7264,7 @@ 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="Expand">False</property>
-                                    <property name="Fill">False</property>
+                                    <property name="AutoSize">False</property>
                                   </packing>
                                 </child>
                                 <child>
@@ -10301,7 +10315,7 @@ You can continue with the current capture, cancel it or save your project.
       <widget class="Gtk.Notebook" id="notebook">
         <property name="MemberName" />
         <property name="CanFocus">True</property>
-        <property name="CurrentPage">0</property>
+        <property name="CurrentPage">3</property>
         <property name="TabPos">Left</property>
         <property name="ShowBorder">False</property>
         <child>
@@ -10381,6 +10395,24 @@ You can continue with the current capture, cancel it or save your project.
             <property name="type">tab</property>
           </packing>
         </child>
+        <child>
+          <widget class="LongoMatch.Gui.Component.EventsListWidget" id="eventslistwidget">
+            <property name="MemberName" />
+            <property name="Events">ButtonPressMask</property>
+          </widget>
+          <packing>
+            <property name="Position">3</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="Gtk.Label" id="label13">
+            <property name="MemberName" />
+            <property name="LabelProp" translatable="yes">page4</property>
+          </widget>
+          <packing>
+            <property name="type">tab</property>
+          </packing>
+        </child>
       </widget>
     </child>
   </widget>
@@ -10510,75 +10542,6 @@ You can continue with the current capture, cancel it or save your project.
       </widget>
     </child>
   </widget>
-  <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.PeriodsRecoder" design-size="522 98">
-    <property name="MemberName" />
-    <property name="Visible">False</property>
-    <child>
-      <widget class="Gtk.HBox" id="hbox1">
-        <property name="MemberName" />
-        <property name="Spacing">6</property>
-        <child>
-          <widget class="Gtk.Label" id="timelabel">
-            <property name="MemberName" />
-          </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.Button" id="stopbutton">
-            <property name="MemberName" />
-            <property name="CanFocus">True</property>
-            <property name="Type">TextAndIcon</property>
-            <property name="Icon">stock:gtk-media-stop Dialog</property>
-            <property name="Label" translatable="yes">Stop period</property>
-            <property name="UseUnderline">True</property>
-          </widget>
-          <packing>
-            <property name="Position">1</property>
-            <property name="AutoSize">False</property>
-            <property name="Expand">False</property>
-            <property name="Fill">False</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="Gtk.Button" id="startbutton">
-            <property name="MemberName" />
-            <property name="CanFocus">True</property>
-            <property name="Type">TextAndIcon</property>
-            <property name="Icon">stock:gtk-media-record Dialog</property>
-            <property name="Label" translatable="yes">New period</property>
-            <property name="UseUnderline">True</property>
-          </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.Button" id="closebutton">
-            <property name="MemberName" />
-            <property name="CanFocus">True</property>
-            <property name="Type">TextAndIcon</property>
-            <property name="Icon">stock:gtk-close Dialog</property>
-            <property name="Label" translatable="yes">Stop project</property>
-            <property name="UseUnderline">True</property>
-          </widget>
-          <packing>
-            <property name="Position">3</property>
-            <property name="AutoSize">True</property>
-            <property name="Expand">False</property>
-            <property name="Fill">False</property>
-          </packing>
-        </child>
-      </widget>
-    </child>
-  </widget>
   <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.PlaysPositionViewer" design-size="300 300">
     <property name="MemberName" />
     <property name="Visible">False</property>
@@ -11528,4 +11491,114 @@ You can continue with the current capture, cancel it or save your project.
       </widget>
     </child>
   </widget>
+  <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.FakeAnalysisComponent" design-size="1075 443">
+    <property name="MemberName" />
+    <property name="Visible">False</property>
+    <child>
+      <widget class="Gtk.EventBox" id="lightbackgroundeventbox">
+        <property name="MemberName" />
+        <child>
+          <widget class="Gtk.VBox" id="vbox3">
+            <property name="MemberName" />
+            <property name="Spacing">6</property>
+            <child>
+              <widget class="LongoMatch.Gui.CapturerBin" id="capturerbin">
+                <property name="MemberName" />
+                <property name="Events">ButtonPressMask</property>
+                <property name="Capturing">False</property>
+              </widget>
+              <packing>
+                <property name="Position">0</property>
+                <property name="AutoSize">False</property>
+                <property name="Expand">False</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="Gtk.HSeparator" id="hseparator1">
+                <property name="MemberName" />
+              </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="LongoMatch.Gui.Component.CodingWidget" id="codingwidget1">
+                <property name="MemberName" />
+                <property name="Events">ButtonPressMask</property>
+                <property name="TagPositions">False</property>
+              </widget>
+              <packing>
+                <property name="Position">2</property>
+                <property name="AutoSize">True</property>
+              </packing>
+            </child>
+          </widget>
+        </child>
+      </widget>
+    </child>
+  </widget>
+  <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.EventsListWidget" design-size="300 300">
+    <property name="MemberName" />
+    <property name="Visible">False</property>
+    <child>
+      <widget class="Gtk.Notebook" id="playsnotebook">
+        <property name="MemberName" />
+        <property name="CanFocus">True</property>
+        <property name="CurrentPage">0</property>
+        <property name="TabPos">Bottom</property>
+        <child>
+          <widget class="LongoMatch.Gui.Component.PlaysListTreeWidget" id="playsList">
+            <property name="MemberName" />
+            <property name="Events">ButtonPressMask</property>
+          </widget>
+        </child>
+        <child>
+          <widget class="Gtk.Label" id="playsList1">
+            <property name="MemberName" />
+            <property name="LabelProp" translatable="yes">Events</property>
+          </widget>
+          <packing>
+            <property name="type">tab</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="LongoMatch.Gui.Component.PlayersListTreeWidget" id="localPlayersList">
+            <property name="MemberName" />
+            <property name="Events">ButtonPressMask</property>
+          </widget>
+          <packing>
+            <property name="Position">1</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="Gtk.Label" id="localPlaysList">
+            <property name="MemberName" />
+          </widget>
+          <packing>
+            <property name="type">tab</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="LongoMatch.Gui.Component.PlayersListTreeWidget" id="visitorPlayersList">
+            <property name="MemberName" />
+            <property name="Events">ButtonPressMask</property>
+          </widget>
+          <packing>
+            <property name="Position">2</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="Gtk.Label" id="visitorPlaysList">
+            <property name="MemberName" />
+          </widget>
+          <packing>
+            <property name="type">tab</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 0de5976..c43f9c0 100644
--- a/LongoMatch.GUI/gtk-gui/objects.xml
+++ b/LongoMatch.GUI/gtk-gui/objects.xml
@@ -252,10 +252,6 @@
     <itemgroups />
     <signals />
   </object>
-  <object type="LongoMatch.Gui.Component.PeriodsRecoder" palette-category="General" allow-children="false" 
base-type="Gtk.Bin">
-    <itemgroups />
-    <signals />
-  </object>
   <object type="LongoMatch.Gui.Component.PlaysPositionViewer" palette-category="General" 
allow-children="false" base-type="Gtk.Bin">
     <itemgroups />
     <signals />
@@ -332,6 +328,7 @@
       <itemgroup label="PlayerBin Signals">
         <signal name="Tick" />
         <signal name="PlayStateChanged" />
+        <signal name="CloseEvent" />
       </itemgroup>
     </signals>
   </object>
@@ -363,4 +360,12 @@
       </itemgroup>
     </signals>
   </object>
+  <object type="LongoMatch.Gui.Component.FakeAnalysisComponent" palette-category="General" 
allow-children="false" base-type="Gtk.Bin">
+    <itemgroups />
+    <signals />
+  </object>
+  <object type="LongoMatch.Gui.Component.EventsListWidget" palette-category="General" allow-children="false" 
base-type="Gtk.Bin">
+    <itemgroups />
+    <signals />
+  </object>
 </objects>
\ No newline at end of file
diff --git a/LongoMatch.Multimedia/Capturer/FakeCapturer.cs b/LongoMatch.Multimedia/Capturer/FakeCapturer.cs
index b016459..5c6ba6c 100644
--- a/LongoMatch.Multimedia/Capturer/FakeCapturer.cs
+++ b/LongoMatch.Multimedia/Capturer/FakeCapturer.cs
@@ -147,5 +147,8 @@ namespace LongoMatch.Video.Capturer
                {
                        return true;
                }
+               
+               public void Expose () {
+               }
        }
 }
diff --git a/LongoMatch.Multimedia/Capturer/GstCameraCapturer.cs 
b/LongoMatch.Multimedia/Capturer/GstCameraCapturer.cs
index 7512934..4c9d5f5 100644
--- a/LongoMatch.Multimedia/Capturer/GstCameraCapturer.cs
+++ b/LongoMatch.Multimedia/Capturer/GstCameraCapturer.cs
@@ -62,6 +62,8 @@ namespace LongoMatch.Video.Capturer {
                [DllImport("libcesarplayer.dll")]
                static extern void gst_camera_capturer_close(IntPtr raw);
                [DllImport("libcesarplayer.dll")]
+               static extern void gst_camera_capturer_expose(IntPtr raw);
+               [DllImport("libcesarplayer.dll")]
                static extern IntPtr gst_camera_capturer_get_type();
                [DllImport("libcesarplayer.dll")]
                static extern IntPtr gst_camera_capturer_enum_audio_devices();
@@ -344,6 +346,10 @@ namespace LongoMatch.Video.Capturer {
                        gst_camera_capturer_close(Handle);
                }
 
+               public void Expose() {
+                       gst_camera_capturer_expose(Handle);
+               }
+
                public static string[] AudioDevices {
                        get {
                                IntPtr raw_ret = gst_camera_capturer_enum_audio_devices();
diff --git a/LongoMatch.Multimedia/Utils/MultimediaFactory.cs 
b/LongoMatch.Multimedia/Utils/MultimediaFactory.cs
index 33313b2..f85c800 100644
--- a/LongoMatch.Multimedia/Utils/MultimediaFactory.cs
+++ b/LongoMatch.Multimedia/Utils/MultimediaFactory.cs
@@ -84,14 +84,9 @@ namespace LongoMatch.Video
                        return GetDefaultElement<IDiscoverer> (typeof(IDiscoverer));
                }
 
-               public ICapturer GetCapturer (CapturerType type)
+               public ICapturer GetCapturer ()
                {
-                       switch (type) {
-                       case CapturerType.Live:
-                               return GetDefaultElement<ICapturer> (typeof(ICapturer), "test.avi");
-                       default:
-                               return new FakeCapturer ();
-                       }
+                       return GetDefaultElement<ICapturer> (typeof(ICapturer), "test.avi");
                }
 
                public IRemuxer GetRemuxer (MediaFile inputFile, string outputFile, VideoMuxerType muxer)
diff --git a/LongoMatch.Services/Services/EventsManager.cs b/LongoMatch.Services/Services/EventsManager.cs
index 64f2ec8..23e910d 100644
--- a/LongoMatch.Services/Services/EventsManager.cs
+++ b/LongoMatch.Services/Services/EventsManager.cs
@@ -55,7 +55,7 @@ namespace LongoMatch.Services
                }
 
                void HandleOpenedProjectChanged (Project project, ProjectType projectType,
-                                              EventsFilter filter, IAnalysisWindow analysisWindow)
+                                                EventsFilter filter, IAnalysisWindow analysisWindow)
                {
                        this.openedProject = project;
                        this.projectType = projectType;
@@ -71,7 +71,7 @@ namespace LongoMatch.Services
 
                        if (projectType == ProjectType.FileProject) {
                                framesCapturer = Config.MultimediaToolkit.GetFramesCapturer ();
-                               framesCapturer.Open 
(openedProject.Description.FileSet.GetAngle(MediaFileAngle.Angle1).FilePath);
+                               framesCapturer.Open (openedProject.Description.FileSet.GetAngle 
(MediaFileAngle.Angle1).FilePath);
                        }
                        this.analysisWindow = analysisWindow;
                        player = analysisWindow.Player;
@@ -149,6 +149,7 @@ namespace LongoMatch.Services
                {
                        loadedPlay = play;
                }
+
                void HandlePlaylistElementSelectedEvent (Playlist playlist, IPlaylistElement element)
                {
                        if (element is PlaylistPlayElement) {
@@ -158,7 +159,6 @@ namespace LongoMatch.Services
                        }
                }
 
-
                void HandleDetach ()
                {
                        analysisWindow.DetachPlayer ();
@@ -294,7 +294,7 @@ namespace LongoMatch.Services
                                }
                        }
                        Log.Debug (String.Format ("New play created start:{0} stop:{1} category:{2}",
-                                                 start.ToMSecondsString(), stop.ToMSecondsString(),
+                                                 start.ToMSecondsString (), stop.ToMSecondsString (),
                                                  evType.Name));
                        /* Add the new created play to the project and update the GUI*/
                        var play = openedProject.AddEvent (evType, start, stop, eventTime, null, score, card);
@@ -310,18 +310,24 @@ namespace LongoMatch.Services
 
                public void HandleNewPlay (TimelineEvent play)
                {
-                       if (player == null || openedProject == null)
+                       if (openedProject == null)
                                return;
                        
                        if (projectType == ProjectType.CaptureProject ||
-                               projectType == ProjectType.URICaptureProject) {
+                               projectType == ProjectType.URICaptureProject ||
+                               projectType == ProjectType.FakeCaptureProject) {
                                if (!capturer.Capturing) {
                                        guiToolkit.WarningMessage (Catalog.GetString ("Video capture is 
stopped"));
                                        return;
                                }
                        }
+
+                       if (!openedProject.Dashboard.DisablePopupWindow) {
+                               Config.GUIToolkit.EditPlay (play, openedProject, true, true, true, true);
+                       }
+
                        Log.Debug (String.Format ("New play created start:{0} stop:{1} category:{2}",
-                                                 play.Start.ToMSecondsString(), play.Stop.ToMSecondsString(),
+                                                 play.Start.ToMSecondsString (), play.Stop.ToMSecondsString 
(),
                                                  play.EventType.Name));
                        openedProject.AddEvent (play);
                        AddNewPlay (play);
@@ -358,7 +364,7 @@ namespace LongoMatch.Services
                        newplay.ID = Guid.NewGuid ();
                        newplay.EventType = evType;
                        newplay.Players = play.Players;
-                       DeletePlays (new List<TimelineEvent> {play}, false);
+                       DeletePlays (new List<TimelineEvent> { play }, false);
                        openedProject.AddEvent (newplay);
                        analysisWindow.AddPlay (newplay);
                        Save (openedProject);
@@ -393,7 +399,7 @@ namespace LongoMatch.Services
                                break;
                        case KeyAction.DeleteEvent:
                                if (loadedPlay != null) {
-                                       DeletePlays (new List<TimelineEvent> {loadedPlay});
+                                       DeletePlays (new List<TimelineEvent> { loadedPlay });
                                }
                                break;
                        }
diff --git a/LongoMatch.Services/Services/ProjectsManager.cs b/LongoMatch.Services/Services/ProjectsManager.cs
index ea48e51..0d39ef6 100644
--- a/LongoMatch.Services/Services/ProjectsManager.cs
+++ b/LongoMatch.Services/Services/ProjectsManager.cs
@@ -138,8 +138,9 @@ namespace LongoMatch.Services
                                RemuxOutputFile (Capturer.CaptureSettings.EncodingSettings);
                        
                                Log.Debug ("Reloading saved file: " + filePath);
-                               project.Description.FileSet.SetAngle (MediaFileAngle.Angle1,
-                                                                     multimediaToolkit.DiscoverFile 
(filePath));
+                               MediaFile file = multimediaToolkit.DiscoverFile (filePath);
+                               project.Description.FileSet.SetAngle (MediaFileAngle.Angle1, file);
+                               project.Periods = Capturer.Periods;
                                Config.DatabaseManager.ActiveDB.AddProject (project);
                        } catch (Exception ex) {
                                Log.Exception (ex);
@@ -274,7 +275,7 @@ namespace LongoMatch.Services
                                
                        Log.Debug ("Closing project " + OpenedProject.ID);
                        if (OpenedProjectType != ProjectType.FileProject) {
-                               Capturer.Stop ();
+                               Capturer.StopPeriod ();
                                Capturer.Close ();
                        } else {
                                Player.Close ();
@@ -293,10 +294,10 @@ namespace LongoMatch.Services
 
                protected virtual void SaveProject (Project project, ProjectType projectType)
                {
-                       Log.Debug (String.Format ("Saving project {0} type: {1}", project, projectType));
                        if (project == null)
                                return;
                        
+                       Log.Debug (String.Format ("Saving project {0} type: {1}", project.ID, projectType));
                        if (projectType == ProjectType.FileProject) {
                                try {
                                        Config.DatabaseManager.ActiveDB.UpdateProject (project);
@@ -381,12 +382,19 @@ namespace LongoMatch.Services
                        CloseOpenedProject (true);
                }
 
-               void HandleCaptureFinished (bool close)
+               void HandleCaptureFinished (bool cancel)
                {
                        Guid id = OpenedProject.ID;
                        ProjectType type = OpenedProjectType;
-                       CloseOpenedProject (!close);
-                       if (!close && type != ProjectType.FakeCaptureProject) {
+                       if (cancel) {
+                               try {
+                                       Config.DatabaseManager.ActiveDB.RemoveProject (OpenedProject.ID);
+                               } catch (Exception ex) {
+                                       Log.Exception (ex);
+                               }
+                       }
+                       CloseOpenedProject (!cancel);
+                       if (!cancel && type != ProjectType.FakeCaptureProject) {
                                OpenProjectID (id);
                        }
                }
diff --git a/data/icons/Makefile.am b/data/icons/Makefile.am
index 4e7fada..66291a7 100644
--- a/data/icons/Makefile.am
+++ b/data/icons/Makefile.am
@@ -21,6 +21,7 @@ nobase_dist_icons_DATA = Makefile.am \
        hicolor/scalable/actions/longomatch-back.svg \
        hicolor/scalable/actions/longomatch-browse.svg \
        hicolor/scalable/actions/longomatch-calendar.svg \
+       hicolor/scalable/actions/longomatch-cancel-rec.svg \
        hicolor/scalable/actions/longomatch-category-header.svg \
        hicolor/scalable/actions/longomatch-circle-fill.svg \
        hicolor/scalable/actions/longomatch-circle.svg \
@@ -50,7 +51,9 @@ nobase_dist_icons_DATA = Makefile.am \
        hicolor/scalable/actions/longomatch-field-full.svg \
        hicolor/scalable/actions/longomatch-field-goal.svg \
        hicolor/scalable/actions/longomatch-field-half.svg \
+       hicolor/scalable/actions/longomatch-live.svg \
        hicolor/scalable/actions/longomatch-mark.svg \
+       hicolor/scalable/actions/longomatch-pause-clock.svg \
        hicolor/scalable/actions/longomatch-pencil.svg \
        hicolor/scalable/actions/longomatch-person.svg \
        hicolor/scalable/actions/longomatch-player-add.svg \
@@ -68,10 +71,15 @@ nobase_dist_icons_DATA = Makefile.am \
        hicolor/scalable/actions/longomatch-project-open.svg \
        hicolor/scalable/actions/longomatch-project-save.svg \
        hicolor/scalable/actions/longomatch-project.svg \
+       hicolor/scalable/actions/longomatch-record.svg \
+       hicolor/scalable/actions/longomatch-replay.svg \
+       hicolor/scalable/actions/longomatch-resume-clock.svg \
+       hicolor/scalable/actions/longomatch-save.svg \
        hicolor/scalable/actions/longomatch-select.svg \
        hicolor/scalable/actions/longomatch-shortcut.svg \
        hicolor/scalable/actions/longomatch-square-fill.svg \
        hicolor/scalable/actions/longomatch-square.svg \
+       hicolor/scalable/actions/longomatch-stop.svg \
        hicolor/scalable/actions/longomatch-tab-active-dashboard.svg \
        hicolor/scalable/actions/longomatch-tab-active-filter.svg \
        hicolor/scalable/actions/longomatch-tab-active-playlist.svg \
diff --git a/data/icons/hicolor/scalable/actions/longomatch-cancel-rec.svg 
b/data/icons/hicolor/scalable/actions/longomatch-cancel-rec.svg
new file mode 100644
index 0000000..6bb7a45
--- /dev/null
+++ b/data/icons/hicolor/scalable/actions/longomatch-cancel-rec.svg
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.1"
+   id="Calque_1"
+   x="0px"
+   y="0px"
+   width="20"
+   height="20"
+   viewBox="0 0 20 20"
+   enable-background="new 0 0 36 36"
+   xml:space="preserve"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="longomatch-cancel-rec.svg"><metadata
+     id="metadata18"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; /></cc:Work></rdf:RDF></metadata><defs
+     id="defs16" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="733"
+     inkscape:window-height="480"
+     id="namedview14"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:zoom="10.893249"
+     inkscape:cx="-4.3177954"
+     inkscape:cy="10.5"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="Calque_1" /><g
+     id="Layer_1"
+     transform="translate(-7.079,-8.5)" /><g
+     id="g4"
+     transform="translate(-7.079,-8.5)"><path
+       clip-rule="evenodd"
+       d="m 24.797,24.859 c 1.426,-1.728 2.282,-3.943 2.282,-6.359 0,-2.415 -0.856,-4.63 -2.282,-6.359 l 
-6.359,6.359 6.359,6.359 z"
+       id="path6"
+       inkscape:connector-curvature="0"
+       style="fill:#d13d3c;fill-rule:evenodd" /><path
+       clip-rule="evenodd"
+       d="m 17.079,17.141 6.359,-6.359 C 21.71,9.356 19.494,8.5 17.079,8.5 c -2.415,0 -4.63,0.856 
-6.359,2.282 l 6.359,6.359 z"
+       id="path8"
+       inkscape:connector-curvature="0"
+       style="fill:#d13d3c;fill-rule:evenodd" /><path
+       clip-rule="evenodd"
+       d="m 17.079,19.859 -6.359,6.359 c 1.728,1.426 3.943,2.282 6.359,2.282 2.415,0 4.63,-0.856 
6.359,-2.282 l -6.359,-6.359 z"
+       id="path10"
+       inkscape:connector-curvature="0"
+       style="fill:#d13d3c;fill-rule:evenodd" /><path
+       clip-rule="evenodd"
+       d="M 9.361,12.141 C 7.935,13.87 7.079,16.085 7.079,18.5 c 0,2.415 0.856,4.631 2.282,6.359 L 
15.72,18.5 9.361,12.141 z"
+       id="path12"
+       inkscape:connector-curvature="0"
+       style="fill:#d13d3c;fill-rule:evenodd" /></g></svg>
\ No newline at end of file
diff --git a/data/icons/hicolor/scalable/actions/longomatch-control-record.svg 
b/data/icons/hicolor/scalable/actions/longomatch-control-record.svg
index c550688..22e5350 100644
--- a/data/icons/hicolor/scalable/actions/longomatch-control-record.svg
+++ b/data/icons/hicolor/scalable/actions/longomatch-control-record.svg
@@ -1,8 +1,71 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd";>
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"; 
xmlns:xlink="http://www.w3.org/1999/xlink"; x="0px" y="0px"
-        width="28px" height="28px" viewBox="0 0 28 28" enable-background="new 0 0 28 28" 
xml:space="preserve">
-<circle id="record_1_" fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" cx="961.184" cy="733.502" 
r="13.418"/>
-<circle id="record" fill-rule="evenodd" clip-rule="evenodd" fill="#C42628" cx="14" cy="14" r="7.542"/>
-</svg>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.1"
+   id="Layer_1"
+   x="0px"
+   y="0px"
+   width="20"
+   height="20"
+   viewBox="0 0 20 20"
+   enable-background="new 0 0 28 28"
+   xml:space="preserve"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="longomatch-control-record.svg"><metadata
+     id="metadata9"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; /></cc:Work></rdf:RDF></metadata><defs
+     id="defs7" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="733"
+     inkscape:window-height="480"
+     id="namedview5"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:zoom="31.106212"
+     inkscape:cx="8.7995091"
+     inkscape:cy="4.2416534"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="Layer_1" /><circle
+     id="record_1_"
+     clip-rule="evenodd"
+     cx="961.18402"
+     cy="733.50201"
+     r="13.418"
+     sodipodi:cx="961.18402"
+     sodipodi:cy="733.50201"
+     sodipodi:rx="13.418"
+     sodipodi:ry="13.418"
+     style="fill:#231f20;fill-rule:evenodd"
+     transform="translate(-3.9999992,-3.9999992)" /><circle
+     id="record"
+     clip-rule="evenodd"
+     cx="14"
+     cy="14"
+     r="7.5419998"
+     sodipodi:cx="14"
+     sodipodi:cy="14"
+     sodipodi:rx="7.5419998"
+     sodipodi:ry="7.5419998"
+     style="fill:#c42628;fill-rule:evenodd"
+     transform="matrix(1.3259083,0,0,1.3259083,-8.562716,-8.562716)" /></svg>
\ No newline at end of file
diff --git a/data/icons/hicolor/scalable/actions/longomatch-live.svg 
b/data/icons/hicolor/scalable/actions/longomatch-live.svg
new file mode 100644
index 0000000..34f01f9
--- /dev/null
+++ b/data/icons/hicolor/scalable/actions/longomatch-live.svg
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.1"
+   id="Calque_1"
+   x="0px"
+   y="0px"
+   width="23.000381"
+   height="23"
+   viewBox="0 0 23.000381 23"
+   enable-background="new 0 0 36 36"
+   xml:space="preserve"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="longomatch-live.svg"><metadata
+     id="metadata10"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; /></cc:Work></rdf:RDF></metadata><defs
+     id="defs8" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="733"
+     inkscape:window-height="480"
+     id="namedview6"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:zoom="6.5555556"
+     inkscape:cx="11.50004"
+     inkscape:cy="12.000018"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="Calque_1" /><g
+     id="Layer_1"
+     transform="translate(-6.4999598,-7.0000179)" /><path
+     d="M 21.457861,5.7515311 C 18.283095,0.25166493 11.250092,-1.6329044 5.7509752,1.5424402 
0.25185913,4.7177851 -1.6334469,11.749508 1.5431645,17.249374 4.7179312,22.748301 11.750012,24.632871 
17.249128,21.457526 22.748245,18.282182 24.633551,11.250458 21.457861,5.7515311 z M 16.098944,19.465079 C 
11.700204,22.005355 6.0738022,20.497887 3.5345422,16.09837 0.99435973,11.698853 2.50242,6.0732861 
6.9011602,3.5339491 11.299899,0.99367313 16.926302,2.501141 19.466484,6.9006581 22.005744,11.300176 
20.498606,16.925742 16.098944,19.465079 z M 15.639608,11.032828 9.6184352,7.5216561 c -0.548805,-0.319879 
-0.991538,-0.06473 -0.987848,0.570343 l 0.03044,6.9698109 c 0.0028,0.634131 0.451035,0.893036 
1.000762,0.575033 l 5.9750548,-3.449259 c 0.549727,-0.318004 0.55065,-0.834877 0.0028,-1.154756 z"
+     id="path4"
+     inkscape:connector-curvature="0"
+     style="fill:#50b44d" /></svg>
\ No newline at end of file
diff --git a/data/icons/hicolor/scalable/actions/longomatch-pause-clock.svg 
b/data/icons/hicolor/scalable/actions/longomatch-pause-clock.svg
new file mode 100644
index 0000000..02fd60c
--- /dev/null
+++ b/data/icons/hicolor/scalable/actions/longomatch-pause-clock.svg
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.1"
+   x="0px"
+   y="0px"
+   width="24"
+   height="24"
+   viewBox="0 0 24 24"
+   enable-background="new 0 0 36 36"
+   xml:space="preserve"
+   id="svg2"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="longomatch-pause-clock.svg"><metadata
+     id="metadata20"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; /></cc:Work></rdf:RDF></metadata><defs
+     id="defs18" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1252"
+     inkscape:window-height="726"
+     id="namedview16"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:zoom="29.4075"
+     inkscape:cx="10.641788"
+     inkscape:cy="8.1983642"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg2" /><g
+     id="Layer_1"
+     transform="translate(-4.1800002,-7.5909092)" /><g
+     id="g6"
+     transform="matrix(1,0,0,1.0083417,-5.18,-6.5362213)"><path
+       style="fill:#6a6a6a"
+       inkscape:connector-curvature="0"
+       id="path8"
+       d="m 16.064,10.279 c -0.5,0 -0.906,0.402 -0.906,0.898 v 6.793 c 0,0.496 0.406,0.898 0.906,0.898 h 
5.849 c 0.5,0 0.906,-0.402 0.906,-0.898 0,-0.496 -0.406,-0.898 -0.906,-0.898 H 16.97 v -5.895 c -10e-4,-0.495 
-0.406,-0.898 -0.906,-0.898 z" /><path
+       style="fill:#6a6a6a"
+       inkscape:connector-curvature="0"
+       id="path10"
+       d="m 18.18,25.758 c -0.642,0.153 -1.311,0.239 -2,0.239 -4.775,0 -8.659,-3.852 -8.659,-8.588 0,-4.736 
3.885,-8.588 8.659,-8.588 4.775,0 8.66,3.852 8.66,8.588 0,0.722 -0.093,1.422 -0.264,2.091 h 2.397 c 
0.135,-0.677 0.207,-1.375 0.207,-2.091 0,-6.015 -4.935,-10.909 -11,-10.909 -6.065,0 -11,4.894 -11,10.909 
0,6.015 4.935,10.909 11,10.909 0.684,0 1.351,-0.067 2,-0.188 v -2.372 z" /></g><rect
+     style="fill:#50b44d"
+     id="rect12"
+     height="9"
+     width="3"
+     y="15"
+     x="21.027" /><rect
+     style="fill:#50b44d"
+     id="rect14"
+     height="9"
+     width="3"
+     y="15"
+     x="15" /></svg>
\ No newline at end of file
diff --git a/data/icons/hicolor/scalable/actions/longomatch-record.svg 
b/data/icons/hicolor/scalable/actions/longomatch-record.svg
new file mode 100644
index 0000000..be95ba8
--- /dev/null
+++ b/data/icons/hicolor/scalable/actions/longomatch-record.svg
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.1"
+   id="Calque_1"
+   x="0px"
+   y="0px"
+   width="20"
+   height="20"
+   viewBox="0 0 20 20"
+   enable-background="new 0 0 36 36"
+   xml:space="preserve"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="longomatch-record.svg"><metadata
+     id="metadata10"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; /></cc:Work></rdf:RDF></metadata><defs
+     id="defs8" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1313"
+     inkscape:window-height="699"
+     id="namedview6"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:zoom="14.058594"
+     inkscape:cx="9.5"
+     inkscape:cy="10.5"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="Calque_1" /><g
+     id="Layer_1"
+     transform="translate(-8.5,-8.5)" /><path
+     clip-rule="evenodd"
+     d="M 10,0 C 15.523,0 20,4.477 20,10 20,15.523 15.523,20 10,20 4.477,20 0,15.523 0,10 0,4.477 4.477,0 
10,0 z"
+     id="path4"
+     inkscape:connector-curvature="0"
+     style="fill:#d13d3c;fill-rule:evenodd" /></svg>
\ No newline at end of file
diff --git a/data/icons/hicolor/scalable/actions/longomatch-replay.svg 
b/data/icons/hicolor/scalable/actions/longomatch-replay.svg
new file mode 100644
index 0000000..87be59a
--- /dev/null
+++ b/data/icons/hicolor/scalable/actions/longomatch-replay.svg
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.1"
+   id="Calque_1"
+   x="0px"
+   y="0px"
+   width="23"
+   height="23"
+   viewBox="0 0 23 23"
+   enable-background="new 0 0 36 36"
+   xml:space="preserve"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="longomatch-replay.svg"><metadata
+     id="metadata10"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; /></cc:Work></rdf:RDF></metadata><defs
+     id="defs8" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="733"
+     inkscape:window-height="480"
+     id="namedview6"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:zoom="6.5555556"
+     inkscape:cx="10.21"
+     inkscape:cy="11.501"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="Calque_1" /><g
+     id="Layer_1"
+     transform="translate(-7.79,-6.5009995)" /><path
+     d="M 11.71,3.6550005 V -9.9945068e-4 L 4.091,4.8640005 l 7.619,4.866 v -3.656 c 4.212,0 7.657,3.264 
7.657,7.2540005 0,3.99 -3.446,7.254 -7.657,7.254 -4.211,0 -7.658,-3.264 -7.658,-7.254 H 1.5 c 0,5.319 
4.595,9.672 10.21,9.672 5.615,0 10.21,-4.352 10.21,-9.672 0,-5.3200005 -4.595,-9.6730005 -10.21,-9.6730005 z"
+     id="path4"
+     inkscape:connector-curvature="0"
+     style="fill:#50b44d" /></svg>
\ No newline at end of file
diff --git a/data/icons/hicolor/scalable/actions/longomatch-resume-clock.svg 
b/data/icons/hicolor/scalable/actions/longomatch-resume-clock.svg
new file mode 100644
index 0000000..c81c037
--- /dev/null
+++ b/data/icons/hicolor/scalable/actions/longomatch-resume-clock.svg
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.1"
+   x="0px"
+   y="0px"
+   width="24"
+   height="24"
+   viewBox="0 0 24 24"
+   enable-background="new 0 0 36 36"
+   xml:space="preserve"
+   id="svg2"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="longomatch-resume-clock.svg"><metadata
+     id="metadata20"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; /><dc:title 
/></cc:Work></rdf:RDF></metadata><defs
+     id="defs18" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1252"
+     inkscape:window-height="726"
+     id="namedview16"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:zoom="20.8"
+     inkscape:cx="15.835712"
+     inkscape:cy="6.8398606"
+     inkscape:window-x="9"
+     inkscape:window-y="296"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg2" /><g
+     id="Layer_1"
+     transform="translate(-4.1800002,-7.5909092)" /><g
+     id="g6"
+     transform="matrix(1,0,0,1.0083417,-5.18,-6.5362203)"><path
+       style="fill:#6a6a6a"
+       inkscape:connector-curvature="0"
+       id="path8"
+       d="m 16.064,10.279 c -0.5,0 -0.906,0.402 -0.906,0.898 v 6.793 c 0,0.496 0.406,0.898 0.906,0.898 h 
5.849 c 0.5,0 0.906,-0.402 0.906,-0.898 0,-0.496 -0.406,-0.898 -0.906,-0.898 H 16.97 v -5.895 c -10e-4,-0.495 
-0.406,-0.898 -0.906,-0.898 z" /><path
+       style="fill:#6a6a6a"
+       inkscape:connector-curvature="0"
+       id="path10"
+       d="m 18.18,25.758 c -0.642,0.153 -1.311,0.239 -2,0.239 -4.775,0 -8.659,-3.852 -8.659,-8.588 0,-4.736 
3.885,-8.588 8.659,-8.588 4.775,0 8.66,3.852 8.66,8.588 0,0.722 -0.093,1.422 -0.264,2.091 h 2.397 c 
0.135,-0.677 0.207,-1.375 0.207,-2.091 0,-6.015 -4.935,-10.909 -11,-10.909 -6.065,0 -11,4.894 -11,10.909 
0,6.015 4.935,10.909 11,10.909 0.684,0 1.351,-0.067 2,-0.188 v -2.372 z" /></g><polygon
+     style="fill:#50b44d;fill-opacity:1;fill-rule:evenodd"
+     transform="matrix(0.34615385,0,0,0.39805396,13.615385,14.723352)"
+     clip-rule="evenodd"
+     points="30,12 4,23.305 4,0.695 "
+     id="polygon3" /></svg>
\ No newline at end of file
diff --git a/data/icons/hicolor/scalable/actions/longomatch-save.svg 
b/data/icons/hicolor/scalable/actions/longomatch-save.svg
new file mode 100644
index 0000000..11ee25c
--- /dev/null
+++ b/data/icons/hicolor/scalable/actions/longomatch-save.svg
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.1"
+   id="Calque_1"
+   x="0px"
+   y="0px"
+   width="20"
+   height="20"
+   viewBox="0 0 20 20"
+   enable-background="new 0 0 36 36"
+   xml:space="preserve"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="longomatch-save.svg"><metadata
+     id="metadata10"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; /></cc:Work></rdf:RDF></metadata><defs
+     id="defs8" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="733"
+     inkscape:window-height="480"
+     id="namedview6"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:zoom="6.5555556"
+     inkscape:cx="10.4995"
+     inkscape:cy="10.5005"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="Calque_1" /><g
+     id="Layer_1"
+     transform="translate(-7.5005,-8.5005)" /><path
+     d="M 19.313034,0 H 0.6859657 C 0.3069847,0 0,0.3069847 0,0.6859657 V 19.314034 C 0,19.693015 
0.3069847,20 0.6859657,20 H 19.314034 C 19.693015,20 20,19.693015 20,19.314034 V 0.6859657 C 19.999,0.3069847 
19.692015,0 19.313034,0 z M 3.828809,1.0289486 H 16.171191 V 6.79966 H 3.828809 V 1.0289486 z M 
16.771161,18.542073 H 3.228839 V 9.9995 h 13.542322 v 8.542573 z M 12.685366,1.885906 H 14.39928 V 6.0007 H 
12.684366 V 1.885906 z m 2.842858,10.227488 H 4.471776 v -0.685965 h 11.056448 v 0.685965 z m 0,2.39988 H 
4.471776 v -0.685965 h 11.056448 v 0.685965 z m 0,2.314885 H 4.471776 v -0.685966 h 11.056448 v 0.685966 z"
+     id="path4"
+     inkscape:connector-curvature="0"
+     style="fill:#6a6a6a" /></svg>
\ No newline at end of file
diff --git a/data/icons/hicolor/scalable/actions/longomatch-stop.svg 
b/data/icons/hicolor/scalable/actions/longomatch-stop.svg
new file mode 100644
index 0000000..76d372f
--- /dev/null
+++ b/data/icons/hicolor/scalable/actions/longomatch-stop.svg
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.1"
+   id="Calque_1"
+   x="0px"
+   y="0px"
+   width="24"
+   height="24"
+   viewBox="0 0 24 24"
+   enable-background="new 0 0 36 36"
+   xml:space="preserve"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="longomatch-stop.svg"><metadata
+     id="metadata16"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; /></cc:Work></rdf:RDF></metadata><defs
+     id="defs14" /><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1090"
+     inkscape:window-height="658"
+     id="namedview12"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:zoom="25.814101"
+     inkscape:cx="13.727"
+     inkscape:cy="15.599081"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="Calque_1" /><g
+     id="Layer_1"
+     transform="translate(-4.273,-6.5)" /><rect
+     x="15"
+     y="15"
+     width="9"
+     height="9"
+     id="rect4"
+     style="fill:#50b44d" /><g
+     id="g6"
+     transform="matrix(1,0,0,1.0083417,-4.273,-6.5362203)"><path
+       d="m 15.156,10.279 c -0.5,0 -0.906,0.402 -0.906,0.898 v 6.793 c 0,0.496 0.406,0.898 0.906,0.898 h 
5.849 c 0.5,0 0.906,-0.402 0.906,-0.898 0,-0.496 -0.406,-0.898 -0.906,-0.898 h -4.943 v -5.895 c 0,-0.496 
-0.406,-0.898 -0.906,-0.898 z"
+       id="path8"
+       inkscape:connector-curvature="0"
+       style="fill:#6a6a6a" /><path
+       d="m 17.277,25.757 c -0.644,0.153 -1.313,0.24 -2.004,0.24 -4.775,0 -8.66,-3.852 -8.66,-8.588 0,-4.736 
3.885,-8.588 8.66,-8.588 4.775,0 8.66,3.852 8.66,8.588 0,0.721 -0.093,1.421 -0.263,2.091 h 2.396 c 
0.135,-0.677 0.207,-1.375 0.207,-2.091 0,-6.015 -4.935,-10.909 -11,-10.909 -6.065,0 -11,4.894 -11,10.909 
0,6.015 4.935,10.909 11,10.909 0.685,0 1.354,-0.067 2.004,-0.189 v -2.372 z"
+       id="path10"
+       inkscape:connector-curvature="0"
+       style="fill:#6a6a6a" /></g></svg>
\ No newline at end of file
diff --git a/libcesarplayer/gst-camera-capturer.c b/libcesarplayer/gst-camera-capturer.c
index 7825dd1..0f4746b 100644
--- a/libcesarplayer/gst-camera-capturer.c
+++ b/libcesarplayer/gst-camera-capturer.c
@@ -1597,6 +1597,17 @@ gst_camera_capturer_stop (GstCameraCapturer * gcc)
 }
 
 void
+gst_camera_capturer_expose (GstCameraCapturer * gcc)
+{
+  g_return_if_fail (gcc != NULL);
+
+  if (gcc->priv->xoverlay != NULL &&
+      GST_IS_X_OVERLAY (gcc->priv->xoverlay)) {
+    gst_x_overlay_expose (gcc->priv->xoverlay);
+  }
+}
+
+void
 gst_camera_capturer_configure (GstCameraCapturer *gcc,
     const gchar * filename, CaptureSourceType source,
     const gchar *source_element, const gchar *device_id,
diff --git a/libcesarplayer/gst-camera-capturer.h b/libcesarplayer/gst-camera-capturer.h
index 643c3c0..5f8b959 100644
--- a/libcesarplayer/gst-camera-capturer.h
+++ b/libcesarplayer/gst-camera-capturer.h
@@ -92,6 +92,8 @@ EXPORT void gst_camera_capturer_toggle_pause              (GstCameraCapturer * g
 
 EXPORT void gst_camera_capturer_stop                      (GstCameraCapturer * gcc);
 
+EXPORT void gst_camera_capturer_expose                    (GstCameraCapturer * gcc);
+
 EXPORT GList *gst_camera_capturer_enum_audio_devices      (const gchar *device);
 
 EXPORT GList *gst_camera_capturer_enum_video_devices      (const gchar *device);


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