[longomatch/newui: 32/104] Customize player widget



commit 89f09452044a54c8a93605c1475b2b259c88cb74
Author: Andoni Morales Alastruey <ylatuya gmail com>
Date:   Thu Aug 21 03:57:56 2014 +0200

    Customize player widget
    
    Create a new video window component which takes care
    of keeping DAR and drawing the borders with our background
    color

 LongoMatch.Core/Interfaces/GUI/IPlayerBin.cs       |    2 +-
 LongoMatch.Drawing/Widgets/Blackboard.cs           |    2 +-
 LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs         |   67 +++--
 LongoMatch.GUI.Multimedia/Gui/PlayerCapturerBin.cs |    6 +-
 LongoMatch.GUI.Multimedia/Gui/VideoWindow.cs       |   93 ++++++
 LongoMatch.GUI.Multimedia/Gui/VolumeWindow.cs      |   31 +--
 .../LongoMatch.GUI.Multimedia.mdp                  |    2 +
 .../gtk-gui/LongoMatch.Gui.PlayerBin.cs            |  322 ++++++++++----------
 .../gtk-gui/LongoMatch.Gui.VideoWindow.cs          |   25 ++
 LongoMatch.GUI.Multimedia/gtk-gui/gui.stetic       |   70 +++--
 LongoMatch.GUI.Multimedia/gtk-gui/objects.xml      |   11 +
 LongoMatch.GUI/Gui/Component/ProjectPeriods.cs     |    2 +-
 .../LongoMatch.Gui.Component.CodingWidget.cs       |   27 +--
 .../LongoMatch.Gui.Panel.NewProjectPanel.cs        |    2 +-
 LongoMatch.GUI/gtk-gui/gui.stetic                  |   48 ++--
 LongoMatch.GUI/gtk-gui/objects.xml                 |   11 +
 LongoMatch.Services/Services/ProjectsManager.cs    |    2 +-
 .../scalable/actions/longomatch-control-attach.svg |   15 +
 .../scalable/actions/longomatch-control-back.svg   |   11 +
 .../scalable/actions/longomatch-control-detach.svg |   15 +
 .../scalable/actions/longomatch-control-draw.svg   |   34 ++
 .../scalable/actions/longomatch-control-ff.svg     |    8 +
 .../scalable/actions/longomatch-control-pause.svg  |   10 +
 .../scalable/actions/longomatch-control-play.svg   |    7 +
 .../scalable/actions/longomatch-control-rw.svg     |    8 +
 .../actions/longomatch-control-volume-hi.svg       |   17 +
 .../actions/longomatch-control-volume-low.svg      |   13 +
 .../actions/longomatch-control-volume-med.svg      |   15 +
 .../actions/longomatch-control-volume-off.svg      |   16 +
 libcesarplayer/lgm-video-player.c                  |    2 -
 30 files changed, 598 insertions(+), 296 deletions(-)
---
diff --git a/LongoMatch.Core/Interfaces/GUI/IPlayerBin.cs b/LongoMatch.Core/Interfaces/GUI/IPlayerBin.cs
index 0dc668f..6ad523f 100644
--- a/LongoMatch.Core/Interfaces/GUI/IPlayerBin.cs
+++ b/LongoMatch.Core/Interfaces/GUI/IPlayerBin.cs
@@ -35,7 +35,7 @@ namespace LongoMatch.Interfaces.GUI
                bool SeekingEnabled {set;}
                bool Sensitive {set; get;}
 
-               void Open (string mrl);
+               void Open (MediaFile file);
                void Close();
                void Play ();
                void Pause ();
diff --git a/LongoMatch.Drawing/Widgets/Blackboard.cs b/LongoMatch.Drawing/Widgets/Blackboard.cs
index 1a96b10..64ef6f3 100644
--- a/LongoMatch.Drawing/Widgets/Blackboard.cs
+++ b/LongoMatch.Drawing/Widgets/Blackboard.cs
@@ -324,7 +324,7 @@ namespace LongoMatch.Drawing.Widgets
                {
                        tk.Context = context;
                        tk.Begin ();
-                       tk.Clear (Color.Black);
+                       tk.Clear (Config.Style.PaletteBackground);
                        tk.End ();
                        
                        base.Draw (context, area);
diff --git a/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs b/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs
index d2c53c1..17b0d94 100644
--- a/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs
+++ b/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs
@@ -59,7 +59,7 @@ namespace LongoMatch.Gui
                Time length, lastTime;
                bool seeking, IsPlayingPrevState, muted, emitRateScale, readyToSeek;
                bool ignoreTick, stillimageLoaded;
-               string filename;
+               MediaFile file;
                double previousVLevel = 1;
                double[] seeksQueue;
                object[] pendingSeek;
@@ -82,7 +82,7 @@ namespace LongoMatch.Gui
                        timescale.Adjustment.PageIncrement = 0.01;
                        timescale.Adjustment.StepIncrement = 0.0001;
                        LongoMatch.Gui.Helpers.Misc.DisableFocus (vbox3);
-                       videodrawingarea.CanFocus = true;
+                       videowindow.CanFocus = true;
                        seeksQueue = new double[2];
                        seeksQueue [0] = -1;
                        seeksQueue [1] = -1;
@@ -146,7 +146,7 @@ namespace LongoMatch.Gui
 
                public bool Opened {
                        get {
-                               return filename != null;
+                               return file != null;
                        }
                }
 
@@ -164,9 +164,9 @@ namespace LongoMatch.Gui
                }
                #endregion
                #region Public methods
-               public void Open (string filename)
+               public void Open (MediaFile file)
                {
-                       Open (filename, true);
+                       Open (file, true);
                }
 
                public void Play ()
@@ -199,7 +199,7 @@ namespace LongoMatch.Gui
                        IsPlayingPrevState = false;
                        muted = false;
                        emitRateScale = true;
-                       videodrawingarea.Visible = true;
+                       videowindow.Visible = true;
                        blackboarddrawingarea.Visible = false;
                }
 
@@ -237,7 +237,7 @@ namespace LongoMatch.Gui
                {
                        ReconfigureTimeout (0);
                        player.Close ();
-                       filename = null;
+                       file = null;
                        timescale.Value = 0;
                        UnSensitive ();
                }
@@ -318,21 +318,22 @@ namespace LongoMatch.Gui
                #region Private methods
                bool DrawingsVisible {
                        set {
-                               videodrawingarea.Visible = !value;
+                               videowindow.Visible = !value;
                                blackboarddrawingarea.Visible = value;
                        }
                }
 
-               void Open (string filename, bool seek)
+               void Open (MediaFile file, bool seek)
                {
                        ResetGui ();
                        CloseSegment ();
-                       if (filename != this.filename) {
+                       videowindow.Ratio = (float) (file.VideoWidth * file.Par / file.VideoHeight);
+                       if (file != this.file) {
                                readyToSeek = false;
-                               this.filename = filename;
+                               this.file = file;
                                try {
-                                       Log.Debug ("Openning new file " + filename);
-                                       player.Open (filename);
+                                       Log.Debug ("Openning new file " + file.FilePath);
+                                       player.Open (file.FilePath);
                                } catch (Exception ex) {
                                        Log.Exception (ex);
                                        //We handle this error async
@@ -387,8 +388,8 @@ namespace LongoMatch.Gui
                        Log.Debug (String.Format ("Update player segment {0} {1} {2}",
                                                  start.ToMSecondsString (),
                                                  stop.ToMSecondsString (), rate));
-                       if (filename != this.filename) {
-                               Open (file.FilePath, false);
+                       if (file != this.file) {
+                               Open (file, false);
                        }
                        Pause ();
                        segment.Start = start;
@@ -417,7 +418,7 @@ namespace LongoMatch.Gui
                        blackboard.Drawing = drawing;
                        DrawingsVisible = true;
                        blackboarddrawingarea.QueueDraw ();
-                       videodrawingarea.Visible = false;
+                       videowindow.Visible = false;
                }
 
                void LoadStillImage (Image image)
@@ -491,18 +492,17 @@ namespace LongoMatch.Gui
 
                void CreatePlayer ()
                {
-                       videodrawingarea.DoubleBuffered = false;
                        player = Config.MultimediaToolkit.GetPlayer ();
 
                        player.Error += OnError;
                        player.StateChange += OnStateChanged;
                        player.Eos += OnEndOfStream;
                        player.ReadyToSeek += OnReadyToSeek;
-                       videoeventbox.ButtonPressEvent += OnVideoboxButtonPressEvent;
-                       videoeventbox.ScrollEvent += OnVideoboxScrollEvent;
-                       videodrawingarea.Realized += HandleRealized;
-                       videodrawingarea.ExposeEvent += HandleExposeEvent;
-                       videodrawingarea.CanFocus = false;
+                       videowindow.ButtonPressEvent += OnVideoboxButtonPressEvent;
+                       videowindow.ScrollEvent += OnVideoboxScrollEvent;
+                       videowindow.Realized += HandleRealized;
+                       videowindow.ExposeEvent += HandleExposeEvent;
+                       videowindow.CanFocus = true;
                }
 
                void ReconfigureTimeout (uint mseconds)
@@ -657,8 +657,27 @@ namespace LongoMatch.Gui
                        vwin.Show ();
                }
 
+               void SetVolumeIcon (string name)
+               {
+                       Gtk.Image img;
+                       img = ((volumebutton.Child as Bin).Child as Box).Children[0] as Gtk.Image;
+                       img.Pixbuf = Stetic.IconLoader.LoadIcon (this, name, IconSize.Button);
+               }
+               
                void OnVolumeChanged (double level)
                {
+                       double prevLevel;
+               
+                       prevLevel = player.Volume;
+                       if (prevLevel > 0 && level == 0) {
+                               SetVolumeIcon ("longomatch-control-volume-off");
+                       } else if (prevLevel > 0.5 && level <= 0.5) {
+                               SetVolumeIcon ("longomatch-control-volume-low");
+                       } else if (prevLevel <= 0.5 && level > 0.5) {
+                               SetVolumeIcon ("longomatch-control-volume-med");
+                       } else if (prevLevel < 1 && level == 1) {
+                               SetVolumeIcon ("longomatch-control-volume-hi");
+                       }
                        player.Volume = level;
                        if (level == 0)
                                muted = true;
@@ -734,7 +753,7 @@ namespace LongoMatch.Gui
 
                void OnVideoboxButtonPressEvent (object o, Gtk.ButtonPressEventArgs args)
                {
-                       if (filename == null)
+                       if (file == null)
                                return;
                        /* FIXME: The pointer is grabbed when the event box is clicked.
                         * Make sure to ungrab it in order to avoid clicks outisde the window
@@ -771,7 +790,7 @@ namespace LongoMatch.Gui
 
                void HandleRealized (object sender, EventArgs e)
                {
-                       player.WindowHandle = WindowHandle.GetWindowHandle (videodrawingarea.GdkWindow);
+                       player.WindowHandle = WindowHandle.GetWindowHandle (videowindow.Window.GdkWindow);
                }
 
                void HandleSeekEvent (SeekType type, Time start, float rate)
diff --git a/LongoMatch.GUI.Multimedia/Gui/PlayerCapturerBin.cs 
b/LongoMatch.GUI.Multimedia/Gui/PlayerCapturerBin.cs
index 60889c5..9fb82b3 100644
--- a/LongoMatch.GUI.Multimedia/Gui/PlayerCapturerBin.cs
+++ b/LongoMatch.GUI.Multimedia/Gui/PlayerCapturerBin.cs
@@ -190,8 +190,8 @@ namespace LongoMatch.Gui
                        }
                }
                
-               public void Open (string mrl) {
-                       playerbin.Open (mrl);
+               public void Open (MediaFile file) {
+                       playerbin.Open (file);
                }
                
                public void Play () {
@@ -284,7 +284,7 @@ namespace LongoMatch.Gui
                                
                        /* The output video file is now created, it's time to 
                                 * load it in the player */
-                       playerbin.Open (file.FilePath);
+                       playerbin.Open (file);
                        playerbin.SeekingEnabled = false;
                        Log.Debug ("Loading encoded file in the backround player");
                        backLoaded = true;
diff --git a/LongoMatch.GUI.Multimedia/Gui/VideoWindow.cs b/LongoMatch.GUI.Multimedia/Gui/VideoWindow.cs
new file mode 100644
index 0000000..a2fe316
--- /dev/null
+++ b/LongoMatch.GUI.Multimedia/Gui/VideoWindow.cs
@@ -0,0 +1,93 @@
+//
+//  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 Gtk;
+
+namespace LongoMatch.Gui
+{
+       [System.ComponentModel.ToolboxItem(true)]
+       public partial class VideoWindow : Gtk.Bin
+       {
+               AspectFrame frame;
+               public new event EventHandler Realized;
+               public new event ExposeEventHandler ExposeEvent;
+               public new event ButtonPressEventHandler ButtonPressEvent;
+               public new event ScrollEventHandler ScrollEvent;
+
+               public VideoWindow ()
+               {
+                       this.Build ();
+                       frame = new AspectFrame (null, 0.5f, 0.5f, 1f, false);
+                       frame.Shadow = ShadowType.None;
+
+                       Window = new DrawingArea ();
+                       Window.DoubleBuffered = false;
+                       Window.Realized += HandleRealized;
+                       Window.ExposeEvent += HandleExposeEvent;
+                       eventbox.ButtonPressEvent += HandleButtonPressEvent;
+                       eventbox.ScrollEvent += HandleScrollEvent;
+                       eventbox.BorderWidth = 0;
+
+                       frame.Add (Window);
+                       eventbox.Add (frame);
+                       ShowAll ();
+               }
+
+               void HandleScrollEvent (object o, ScrollEventArgs args)
+               {
+                       if (ScrollEvent != null) {
+                               ScrollEvent (o, args);
+                       }
+                       
+               }
+
+               void HandleExposeEvent (object o, ExposeEventArgs args)
+               {
+                       if (ExposeEvent != null) {
+                               ExposeEvent (o, args);
+                       }
+               }
+
+               void HandleButtonPressEvent (object o, ButtonPressEventArgs args)
+               {
+                       if (ButtonPressEvent != null) {
+                               ButtonPressEvent (o, args);
+                       }
+               }
+
+               void HandleRealized (object sender, EventArgs e)
+               {
+                       if (Realized != null) {
+                               Realized (sender, e);
+                       }
+                       
+               }
+               
+               public DrawingArea Window {
+                       get;
+                       protected set;
+               }
+
+               public float Ratio {
+                       set {
+                               frame.Ratio = value;
+                       }
+               }
+       }
+}
+
diff --git a/LongoMatch.GUI.Multimedia/Gui/VolumeWindow.cs b/LongoMatch.GUI.Multimedia/Gui/VolumeWindow.cs
index 6f83f90..6bea6bc 100644
--- a/LongoMatch.GUI.Multimedia/Gui/VolumeWindow.cs
+++ b/LongoMatch.GUI.Multimedia/Gui/VolumeWindow.cs
@@ -23,49 +23,42 @@ using LongoMatch.Handlers;
 
 namespace LongoMatch.Gui
 {
-
-
        public partial class VolumeWindow : Gtk.Window
        {
 
+               public event VolumeChangedHandler VolumeChanged;
 
-
-               public event         VolumeChangedHandler VolumeChanged;
-
-
-               public VolumeWindow() :
+               public VolumeWindow () :
                base(Gtk.WindowType.Toplevel)
                {
-                       this.Build();
+                       this.Build ();
                        volumescale.Adjustment.PageIncrement = 0.0001;
                        volumescale.Adjustment.StepIncrement = 0.0001;
                }
 
-               public void SetLevel(double level) {
-                       volumescale.Value = level ;
+               public void SetLevel (double level)
+               {
+                       volumescale.Value = level;
                }
 
-               protected virtual void OnLessbuttonClicked(object sender, System.EventArgs e)
+               protected virtual void OnLessbuttonClicked (object sender, System.EventArgs e)
                {
                        volumescale.Value = volumescale.Value - 0.1;
                }
 
-               protected virtual void OnMorebuttonClicked(object sender, System.EventArgs e)
+               protected virtual void OnMorebuttonClicked (object sender, System.EventArgs e)
                {
                        volumescale.Value = volumescale.Value + 0.1;
                }
 
-               protected virtual void OnVolumescaleValueChanged(object sender, System.EventArgs e)
+               protected virtual void OnVolumescaleValueChanged (object sender, System.EventArgs e)
                {
-                       VolumeChanged(volumescale.Value);
+                       VolumeChanged (volumescale.Value);
                }
 
-               protected virtual void OnFocusOutEvent(object o, Gtk.FocusOutEventArgs args)
+               protected virtual void OnFocusOutEvent (object o, Gtk.FocusOutEventArgs args)
                {
-                       this.Hide();
+                       this.Hide ();
                }
-
-
-
        }
 }
diff --git a/LongoMatch.GUI.Multimedia/LongoMatch.GUI.Multimedia.mdp 
b/LongoMatch.GUI.Multimedia/LongoMatch.GUI.Multimedia.mdp
index 750461c..b973535 100644
--- a/LongoMatch.GUI.Multimedia/LongoMatch.GUI.Multimedia.mdp
+++ b/LongoMatch.GUI.Multimedia/LongoMatch.GUI.Multimedia.mdp
@@ -31,6 +31,8 @@
     <File subtype="Code" buildaction="Compile" name="Gui/Utils/Remuxer.cs" />
     <File subtype="Code" buildaction="Compile" name="MultimediaToolkit.cs" />
     <File subtype="Code" buildaction="Compile" name="Gui/Utils/FramesCapturer.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/VideoWindow.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.VideoWindow.cs" />
   </Contents>
   <MonoDevelop.Autotools.MakefileInfo RelativeMakefileName="Makefile.am" RelativeConfigureInPath="../">
     <BuildFilesVar Name="FILES" />
diff --git a/LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.PlayerBin.cs 
b/LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.PlayerBin.cs
index 050f1aa..606c82f 100644
--- a/LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.PlayerBin.cs
+++ b/LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.PlayerBin.cs
@@ -8,9 +8,8 @@ namespace LongoMatch.Gui
                private global::Gtk.HBox mainbox;
                private global::Gtk.VBox vbox2;
                private global::Gtk.HBox videobox;
-               private global::Gtk.EventBox videoeventbox;
                private global::Gtk.HBox hbox2;
-               private global::Gtk.DrawingArea videodrawingarea;
+               private global::LongoMatch.Gui.VideoWindow videowindow;
                private global::Gtk.DrawingArea blackboarddrawingarea;
                private global::Gtk.VBox vbox5;
                private global::Gtk.VScale vscale1;
@@ -54,18 +53,15 @@ namespace LongoMatch.Gui
                        this.videobox.Name = "videobox";
                        this.videobox.Spacing = 6;
                        // Container child videobox.Gtk.Box+BoxChild
-                       this.videoeventbox = new global::Gtk.EventBox ();
-                       this.videoeventbox.Name = "videoeventbox";
-                       // Container child videoeventbox.Gtk.Container+ContainerChild
                        this.hbox2 = new global::Gtk.HBox ();
                        this.hbox2.Name = "hbox2";
                        this.hbox2.Spacing = 6;
                        // Container child hbox2.Gtk.Box+BoxChild
-                       this.videodrawingarea = new global::Gtk.DrawingArea ();
-                       this.videodrawingarea.CanFocus = true;
-                       this.videodrawingarea.Name = "videodrawingarea";
-                       this.hbox2.Add (this.videodrawingarea);
-                       global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.hbox2 
[this.videodrawingarea]));
+                       this.videowindow = new global::LongoMatch.Gui.VideoWindow ();
+                       this.videowindow.Events = ((global::Gdk.EventMask)(256));
+                       this.videowindow.Name = "videowindow";
+                       this.hbox2.Add (this.videowindow);
+                       global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.hbox2 
[this.videowindow]));
                        w1.Position = 0;
                        // Container child hbox2.Gtk.Box+BoxChild
                        this.blackboarddrawingarea = new global::Gtk.DrawingArea ();
@@ -73,16 +69,15 @@ namespace LongoMatch.Gui
                        this.hbox2.Add (this.blackboarddrawingarea);
                        global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox2 
[this.blackboarddrawingarea]));
                        w2.Position = 1;
-                       this.videoeventbox.Add (this.hbox2);
-                       this.videobox.Add (this.videoeventbox);
-                       global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.videobox 
[this.videoeventbox]));
-                       w4.Position = 0;
+                       this.videobox.Add (this.hbox2);
+                       global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.videobox 
[this.hbox2]));
+                       w3.Position = 0;
                        this.vbox2.Add (this.videobox);
-                       global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox2 
[this.videobox]));
-                       w5.Position = 0;
+                       global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.vbox2 
[this.videobox]));
+                       w4.Position = 0;
                        this.mainbox.Add (this.vbox2);
-                       global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.mainbox [this.vbox2]));
-                       w6.Position = 0;
+                       global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.mainbox [this.vbox2]));
+                       w5.Position = 0;
                        // Container child mainbox.Gtk.Box+BoxChild
                        this.vbox5 = new global::Gtk.VBox ();
                        this.vbox5.Name = "vbox5";
@@ -104,16 +99,16 @@ namespace LongoMatch.Gui
                        this.vscale1.Digits = 0;
                        this.vscale1.ValuePos = ((global::Gtk.PositionType)(3));
                        this.vbox5.Add (this.vscale1);
-                       global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.vbox5 [this.vscale1]));
-                       w7.Position = 0;
+                       global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.vbox5 [this.vscale1]));
+                       w6.Position = 0;
                        this.mainbox.Add (this.vbox5);
-                       global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.mainbox [this.vbox5]));
-                       w8.Position = 1;
-                       w8.Expand = false;
-                       w8.Fill = false;
+                       global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.mainbox [this.vbox5]));
+                       w7.Position = 1;
+                       w7.Expand = false;
+                       w7.Fill = false;
                        this.vbox3.Add (this.mainbox);
-                       global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.mainbox]));
-                       w9.Position = 0;
+                       global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.mainbox]));
+                       w8.Position = 0;
                        // Container child vbox3.Gtk.Box+BoxChild
                        this.controlsbox = new global::Gtk.HBox ();
                        this.controlsbox.Name = "controlsbox";
@@ -126,121 +121,122 @@ namespace LongoMatch.Gui
                        this.closebutton = new global::Gtk.Button ();
                        this.closebutton.Name = "closebutton";
                        this.closebutton.UseUnderline = true;
+                       this.closebutton.Relief = ((global::Gtk.ReliefStyle)(2));
                        // Container child closebutton.Gtk.Container+ContainerChild
-                       global::Gtk.Alignment w10 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+                       global::Gtk.Alignment w9 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
                        // Container child GtkAlignment.Gtk.Container+ContainerChild
-                       global::Gtk.HBox w11 = new global::Gtk.HBox ();
-                       w11.Spacing = 2;
+                       global::Gtk.HBox w10 = new global::Gtk.HBox ();
+                       w10.Spacing = 2;
                        // Container child GtkHBox.Gtk.Container+ContainerChild
-                       global::Gtk.Image w12 = new global::Gtk.Image ();
-                       w12.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-close", 
global::Gtk.IconSize.Dnd);
-                       w11.Add (w12);
-                       // Container child GtkHBox.Gtk.Container+ContainerChild
-                       global::Gtk.Label w14 = new global::Gtk.Label ();
-                       w11.Add (w14);
+                       global::Gtk.Image w11 = new global::Gtk.Image ();
+                       w11.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "longomatch-control-back", 
global::Gtk.IconSize.Button);
                        w10.Add (w11);
-                       this.closebutton.Add (w10);
+                       // Container child GtkHBox.Gtk.Container+ContainerChild
+                       global::Gtk.Label w13 = new global::Gtk.Label ();
+                       w10.Add (w13);
+                       w9.Add (w10);
+                       this.closebutton.Add (w9);
                        this.buttonsbox.Add (this.closebutton);
-                       global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.buttonsbox 
[this.closebutton]));
-                       w18.Position = 0;
-                       w18.Expand = false;
-                       w18.Fill = false;
+                       global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.buttonsbox 
[this.closebutton]));
+                       w17.Position = 0;
+                       w17.Expand = false;
+                       w17.Fill = false;
                        // Container child buttonsbox.Gtk.Box+BoxChild
                        this.drawbutton = new global::Gtk.Button ();
                        this.drawbutton.Name = "drawbutton";
                        this.drawbutton.UseUnderline = true;
                        this.drawbutton.Relief = ((global::Gtk.ReliefStyle)(2));
                        // Container child drawbutton.Gtk.Container+ContainerChild
-                       global::Gtk.Alignment w19 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+                       global::Gtk.Alignment w18 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
                        // Container child GtkAlignment.Gtk.Container+ContainerChild
-                       global::Gtk.HBox w20 = new global::Gtk.HBox ();
-                       w20.Spacing = 2;
-                       // Container child GtkHBox.Gtk.Container+ContainerChild
-                       global::Gtk.Image w21 = new global::Gtk.Image ();
-                       w21.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-select-color", 
global::Gtk.IconSize.Menu);
-                       w20.Add (w21);
+                       global::Gtk.HBox w19 = new global::Gtk.HBox ();
+                       w19.Spacing = 2;
                        // Container child GtkHBox.Gtk.Container+ContainerChild
-                       global::Gtk.Label w23 = new global::Gtk.Label ();
-                       w20.Add (w23);
+                       global::Gtk.Image w20 = new global::Gtk.Image ();
+                       w20.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "longomatch-control-draw", 
global::Gtk.IconSize.Button);
                        w19.Add (w20);
-                       this.drawbutton.Add (w19);
+                       // Container child GtkHBox.Gtk.Container+ContainerChild
+                       global::Gtk.Label w22 = new global::Gtk.Label ();
+                       w19.Add (w22);
+                       w18.Add (w19);
+                       this.drawbutton.Add (w18);
                        this.buttonsbox.Add (this.drawbutton);
-                       global::Gtk.Box.BoxChild w27 = ((global::Gtk.Box.BoxChild)(this.buttonsbox 
[this.drawbutton]));
-                       w27.Position = 1;
-                       w27.Expand = false;
-                       w27.Fill = false;
+                       global::Gtk.Box.BoxChild w26 = ((global::Gtk.Box.BoxChild)(this.buttonsbox 
[this.drawbutton]));
+                       w26.Position = 1;
+                       w26.Expand = false;
+                       w26.Fill = false;
                        // Container child buttonsbox.Gtk.Box+BoxChild
                        this.playbutton = new global::Gtk.Button ();
                        this.playbutton.Name = "playbutton";
                        this.playbutton.UseUnderline = true;
                        this.playbutton.Relief = ((global::Gtk.ReliefStyle)(2));
                        // Container child playbutton.Gtk.Container+ContainerChild
-                       global::Gtk.Alignment w28 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+                       global::Gtk.Alignment w27 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
                        // Container child GtkAlignment.Gtk.Container+ContainerChild
-                       global::Gtk.HBox w29 = new global::Gtk.HBox ();
-                       w29.Spacing = 2;
-                       // Container child GtkHBox.Gtk.Container+ContainerChild
-                       global::Gtk.Image w30 = new global::Gtk.Image ();
-                       w30.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-media-play", 
global::Gtk.IconSize.Button);
-                       w29.Add (w30);
+                       global::Gtk.HBox w28 = new global::Gtk.HBox ();
+                       w28.Spacing = 2;
                        // Container child GtkHBox.Gtk.Container+ContainerChild
-                       global::Gtk.Label w32 = new global::Gtk.Label ();
-                       w29.Add (w32);
+                       global::Gtk.Image w29 = new global::Gtk.Image ();
+                       w29.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "longomatch-control-play", 
global::Gtk.IconSize.Button);
                        w28.Add (w29);
-                       this.playbutton.Add (w28);
+                       // Container child GtkHBox.Gtk.Container+ContainerChild
+                       global::Gtk.Label w31 = new global::Gtk.Label ();
+                       w28.Add (w31);
+                       w27.Add (w28);
+                       this.playbutton.Add (w27);
                        this.buttonsbox.Add (this.playbutton);
-                       global::Gtk.Box.BoxChild w36 = ((global::Gtk.Box.BoxChild)(this.buttonsbox 
[this.playbutton]));
-                       w36.Position = 2;
-                       w36.Expand = false;
-                       w36.Fill = false;
+                       global::Gtk.Box.BoxChild w35 = ((global::Gtk.Box.BoxChild)(this.buttonsbox 
[this.playbutton]));
+                       w35.Position = 2;
+                       w35.Expand = false;
+                       w35.Fill = false;
                        // Container child buttonsbox.Gtk.Box+BoxChild
                        this.pausebutton = new global::Gtk.Button ();
                        this.pausebutton.Name = "pausebutton";
                        this.pausebutton.UseUnderline = true;
                        this.pausebutton.Relief = ((global::Gtk.ReliefStyle)(2));
                        // Container child pausebutton.Gtk.Container+ContainerChild
-                       global::Gtk.Alignment w37 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+                       global::Gtk.Alignment w36 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
                        // Container child GtkAlignment.Gtk.Container+ContainerChild
-                       global::Gtk.HBox w38 = new global::Gtk.HBox ();
-                       w38.Spacing = 2;
-                       // Container child GtkHBox.Gtk.Container+ContainerChild
-                       global::Gtk.Image w39 = new global::Gtk.Image ();
-                       w39.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-media-pause", 
global::Gtk.IconSize.Button);
-                       w38.Add (w39);
+                       global::Gtk.HBox w37 = new global::Gtk.HBox ();
+                       w37.Spacing = 2;
                        // Container child GtkHBox.Gtk.Container+ContainerChild
-                       global::Gtk.Label w41 = new global::Gtk.Label ();
-                       w38.Add (w41);
+                       global::Gtk.Image w38 = new global::Gtk.Image ();
+                       w38.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "longomatch-control-pause", 
global::Gtk.IconSize.Button);
                        w37.Add (w38);
-                       this.pausebutton.Add (w37);
+                       // Container child GtkHBox.Gtk.Container+ContainerChild
+                       global::Gtk.Label w40 = new global::Gtk.Label ();
+                       w37.Add (w40);
+                       w36.Add (w37);
+                       this.pausebutton.Add (w36);
                        this.buttonsbox.Add (this.pausebutton);
-                       global::Gtk.Box.BoxChild w45 = ((global::Gtk.Box.BoxChild)(this.buttonsbox 
[this.pausebutton]));
-                       w45.Position = 3;
-                       w45.Expand = false;
-                       w45.Fill = false;
+                       global::Gtk.Box.BoxChild w44 = ((global::Gtk.Box.BoxChild)(this.buttonsbox 
[this.pausebutton]));
+                       w44.Position = 3;
+                       w44.Expand = false;
+                       w44.Fill = false;
                        // Container child buttonsbox.Gtk.Box+BoxChild
                        this.prevbutton = new global::Gtk.Button ();
                        this.prevbutton.Name = "prevbutton";
                        this.prevbutton.UseUnderline = true;
                        this.prevbutton.Relief = ((global::Gtk.ReliefStyle)(2));
                        // Container child prevbutton.Gtk.Container+ContainerChild
-                       global::Gtk.Alignment w46 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+                       global::Gtk.Alignment w45 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
                        // Container child GtkAlignment.Gtk.Container+ContainerChild
-                       global::Gtk.HBox w47 = new global::Gtk.HBox ();
-                       w47.Spacing = 2;
+                       global::Gtk.HBox w46 = new global::Gtk.HBox ();
+                       w46.Spacing = 2;
                        // Container child GtkHBox.Gtk.Container+ContainerChild
-                       global::Gtk.Image w48 = new global::Gtk.Image ();
-                       w48.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-media-previous", 
global::Gtk.IconSize.Button);
-                       w47.Add (w48);
-                       // Container child GtkHBox.Gtk.Container+ContainerChild
-                       global::Gtk.Label w50 = new global::Gtk.Label ();
-                       w47.Add (w50);
+                       global::Gtk.Image w47 = new global::Gtk.Image ();
+                       w47.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "longomatch-control-rw", 
global::Gtk.IconSize.Button);
                        w46.Add (w47);
-                       this.prevbutton.Add (w46);
+                       // Container child GtkHBox.Gtk.Container+ContainerChild
+                       global::Gtk.Label w49 = new global::Gtk.Label ();
+                       w46.Add (w49);
+                       w45.Add (w46);
+                       this.prevbutton.Add (w45);
                        this.buttonsbox.Add (this.prevbutton);
-                       global::Gtk.Box.BoxChild w54 = ((global::Gtk.Box.BoxChild)(this.buttonsbox 
[this.prevbutton]));
-                       w54.Position = 4;
-                       w54.Expand = false;
-                       w54.Fill = false;
+                       global::Gtk.Box.BoxChild w53 = ((global::Gtk.Box.BoxChild)(this.buttonsbox 
[this.prevbutton]));
+                       w53.Position = 4;
+                       w53.Expand = false;
+                       w53.Fill = false;
                        // Container child buttonsbox.Gtk.Box+BoxChild
                        this.nextbutton = new global::Gtk.Button ();
                        this.nextbutton.Sensitive = false;
@@ -248,29 +244,29 @@ namespace LongoMatch.Gui
                        this.nextbutton.UseUnderline = true;
                        this.nextbutton.Relief = ((global::Gtk.ReliefStyle)(2));
                        // Container child nextbutton.Gtk.Container+ContainerChild
-                       global::Gtk.Alignment w55 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+                       global::Gtk.Alignment w54 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
                        // Container child GtkAlignment.Gtk.Container+ContainerChild
-                       global::Gtk.HBox w56 = new global::Gtk.HBox ();
-                       w56.Spacing = 2;
+                       global::Gtk.HBox w55 = new global::Gtk.HBox ();
+                       w55.Spacing = 2;
                        // Container child GtkHBox.Gtk.Container+ContainerChild
-                       global::Gtk.Image w57 = new global::Gtk.Image ();
-                       w57.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-media-next", 
global::Gtk.IconSize.Button);
-                       w56.Add (w57);
-                       // Container child GtkHBox.Gtk.Container+ContainerChild
-                       global::Gtk.Label w59 = new global::Gtk.Label ();
-                       w56.Add (w59);
+                       global::Gtk.Image w56 = new global::Gtk.Image ();
+                       w56.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "longomatch-control-ff", 
global::Gtk.IconSize.Button);
                        w55.Add (w56);
-                       this.nextbutton.Add (w55);
+                       // Container child GtkHBox.Gtk.Container+ContainerChild
+                       global::Gtk.Label w58 = new global::Gtk.Label ();
+                       w55.Add (w58);
+                       w54.Add (w55);
+                       this.nextbutton.Add (w54);
                        this.buttonsbox.Add (this.nextbutton);
-                       global::Gtk.Box.BoxChild w63 = ((global::Gtk.Box.BoxChild)(this.buttonsbox 
[this.nextbutton]));
-                       w63.Position = 5;
+                       global::Gtk.Box.BoxChild w62 = ((global::Gtk.Box.BoxChild)(this.buttonsbox 
[this.nextbutton]));
+                       w62.Position = 5;
+                       w62.Expand = false;
+                       w62.Fill = false;
+                       this.controlsbox.Add (this.buttonsbox);
+                       global::Gtk.Box.BoxChild w63 = ((global::Gtk.Box.BoxChild)(this.controlsbox 
[this.buttonsbox]));
+                       w63.Position = 0;
                        w63.Expand = false;
                        w63.Fill = false;
-                       this.controlsbox.Add (this.buttonsbox);
-                       global::Gtk.Box.BoxChild w64 = ((global::Gtk.Box.BoxChild)(this.controlsbox 
[this.buttonsbox]));
-                       w64.Position = 0;
-                       w64.Expand = false;
-                       w64.Fill = false;
                        // Container child controlsbox.Gtk.Box+BoxChild
                        this.hbox1 = new global::Gtk.HBox ();
                        this.hbox1.Name = "hbox1";
@@ -280,10 +276,10 @@ namespace LongoMatch.Gui
                        this.jumplabel.Name = "jumplabel";
                        this.jumplabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Jump (s):");
                        this.hbox1.Add (this.jumplabel);
-                       global::Gtk.Box.BoxChild w65 = ((global::Gtk.Box.BoxChild)(this.hbox1 
[this.jumplabel]));
-                       w65.Position = 0;
-                       w65.Expand = false;
-                       w65.Fill = false;
+                       global::Gtk.Box.BoxChild w64 = ((global::Gtk.Box.BoxChild)(this.hbox1 
[this.jumplabel]));
+                       w64.Position = 0;
+                       w64.Expand = false;
+                       w64.Fill = false;
                        // Container child hbox1.Gtk.Box+BoxChild
                        this.jumpspinbutton = new global::Gtk.SpinButton (1, 100, 1);
                        this.jumpspinbutton.TooltipMarkup = "Jump in seconds. Hold the Shift key with the 
direction keys to activate it.";
@@ -293,24 +289,24 @@ namespace LongoMatch.Gui
                        this.jumpspinbutton.Numeric = true;
                        this.jumpspinbutton.Value = 10;
                        this.hbox1.Add (this.jumpspinbutton);
-                       global::Gtk.Box.BoxChild w66 = ((global::Gtk.Box.BoxChild)(this.hbox1 
[this.jumpspinbutton]));
+                       global::Gtk.Box.BoxChild w65 = ((global::Gtk.Box.BoxChild)(this.hbox1 
[this.jumpspinbutton]));
+                       w65.Position = 1;
+                       w65.Expand = false;
+                       w65.Fill = false;
+                       this.controlsbox.Add (this.hbox1);
+                       global::Gtk.Box.BoxChild w66 = ((global::Gtk.Box.BoxChild)(this.controlsbox 
[this.hbox1]));
                        w66.Position = 1;
                        w66.Expand = false;
                        w66.Fill = false;
-                       this.controlsbox.Add (this.hbox1);
-                       global::Gtk.Box.BoxChild w67 = ((global::Gtk.Box.BoxChild)(this.controlsbox 
[this.hbox1]));
-                       w67.Position = 1;
-                       w67.Expand = false;
-                       w67.Fill = false;
                        // Container child controlsbox.Gtk.Box+BoxChild
                        this.tlabel = new global::Gtk.Label ();
                        this.tlabel.Name = "tlabel";
                        this.tlabel.LabelProp = global::Mono.Unix.Catalog.GetString ("Time:");
                        this.controlsbox.Add (this.tlabel);
-                       global::Gtk.Box.BoxChild w68 = ((global::Gtk.Box.BoxChild)(this.controlsbox 
[this.tlabel]));
-                       w68.Position = 2;
-                       w68.Expand = false;
-                       w68.Fill = false;
+                       global::Gtk.Box.BoxChild w67 = ((global::Gtk.Box.BoxChild)(this.controlsbox 
[this.tlabel]));
+                       w67.Position = 2;
+                       w67.Expand = false;
+                       w67.Fill = false;
                        // Container child controlsbox.Gtk.Box+BoxChild
                        this.timescale = new global::Gtk.HScale (null);
                        this.timescale.Name = "timescale";
@@ -323,68 +319,68 @@ namespace LongoMatch.Gui
                        this.timescale.Digits = 0;
                        this.timescale.ValuePos = ((global::Gtk.PositionType)(2));
                        this.controlsbox.Add (this.timescale);
-                       global::Gtk.Box.BoxChild w69 = ((global::Gtk.Box.BoxChild)(this.controlsbox 
[this.timescale]));
-                       w69.Position = 3;
+                       global::Gtk.Box.BoxChild w68 = ((global::Gtk.Box.BoxChild)(this.controlsbox 
[this.timescale]));
+                       w68.Position = 3;
                        // Container child controlsbox.Gtk.Box+BoxChild
                        this.timelabel = new global::Gtk.Label ();
                        this.timelabel.Name = "timelabel";
                        this.controlsbox.Add (this.timelabel);
-                       global::Gtk.Box.BoxChild w70 = ((global::Gtk.Box.BoxChild)(this.controlsbox 
[this.timelabel]));
-                       w70.Position = 4;
-                       w70.Expand = false;
+                       global::Gtk.Box.BoxChild w69 = ((global::Gtk.Box.BoxChild)(this.controlsbox 
[this.timelabel]));
+                       w69.Position = 4;
+                       w69.Expand = false;
                        // Container child controlsbox.Gtk.Box+BoxChild
                        this.volumebutton = new global::Gtk.Button ();
                        this.volumebutton.Name = "volumebutton";
                        this.volumebutton.UseUnderline = true;
                        this.volumebutton.Relief = ((global::Gtk.ReliefStyle)(2));
                        // Container child volumebutton.Gtk.Container+ContainerChild
-                       global::Gtk.Alignment w71 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+                       global::Gtk.Alignment w70 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
                        // Container child GtkAlignment.Gtk.Container+ContainerChild
-                       global::Gtk.HBox w72 = new global::Gtk.HBox ();
-                       w72.Spacing = 2;
-                       // Container child GtkHBox.Gtk.Container+ContainerChild
-                       global::Gtk.Image w73 = new global::Gtk.Image ();
-                       w73.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "stock_volume", 
global::Gtk.IconSize.Button);
-                       w72.Add (w73);
+                       global::Gtk.HBox w71 = new global::Gtk.HBox ();
+                       w71.Spacing = 2;
                        // Container child GtkHBox.Gtk.Container+ContainerChild
-                       global::Gtk.Label w75 = new global::Gtk.Label ();
-                       w72.Add (w75);
+                       global::Gtk.Image w72 = new global::Gtk.Image ();
+                       w72.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, 
"longomatch-control-volume-hi", global::Gtk.IconSize.Button);
                        w71.Add (w72);
-                       this.volumebutton.Add (w71);
+                       // Container child GtkHBox.Gtk.Container+ContainerChild
+                       global::Gtk.Label w74 = new global::Gtk.Label ();
+                       w71.Add (w74);
+                       w70.Add (w71);
+                       this.volumebutton.Add (w70);
                        this.controlsbox.Add (this.volumebutton);
-                       global::Gtk.Box.BoxChild w79 = ((global::Gtk.Box.BoxChild)(this.controlsbox 
[this.volumebutton]));
-                       w79.Position = 5;
-                       w79.Expand = false;
-                       w79.Fill = false;
+                       global::Gtk.Box.BoxChild w78 = ((global::Gtk.Box.BoxChild)(this.controlsbox 
[this.volumebutton]));
+                       w78.Position = 5;
+                       w78.Expand = false;
+                       w78.Fill = false;
                        // Container child controlsbox.Gtk.Box+BoxChild
                        this.detachbutton = new global::Gtk.Button ();
                        this.detachbutton.Name = "detachbutton";
                        this.detachbutton.UseUnderline = true;
                        this.detachbutton.Relief = ((global::Gtk.ReliefStyle)(2));
                        // Container child detachbutton.Gtk.Container+ContainerChild
-                       global::Gtk.Alignment w80 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+                       global::Gtk.Alignment w79 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
                        // Container child GtkAlignment.Gtk.Container+ContainerChild
-                       global::Gtk.HBox w81 = new global::Gtk.HBox ();
-                       w81.Spacing = 2;
-                       // Container child GtkHBox.Gtk.Container+ContainerChild
-                       global::Gtk.Image w82 = new global::Gtk.Image ();
-                       w82.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-disconnect", 
global::Gtk.IconSize.Menu);
-                       w81.Add (w82);
+                       global::Gtk.HBox w80 = new global::Gtk.HBox ();
+                       w80.Spacing = 2;
                        // Container child GtkHBox.Gtk.Container+ContainerChild
-                       global::Gtk.Label w84 = new global::Gtk.Label ();
-                       w81.Add (w84);
+                       global::Gtk.Image w81 = new global::Gtk.Image ();
+                       w81.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "longomatch-control-detach", 
global::Gtk.IconSize.Button);
                        w80.Add (w81);
-                       this.detachbutton.Add (w80);
+                       // Container child GtkHBox.Gtk.Container+ContainerChild
+                       global::Gtk.Label w83 = new global::Gtk.Label ();
+                       w80.Add (w83);
+                       w79.Add (w80);
+                       this.detachbutton.Add (w79);
                        this.controlsbox.Add (this.detachbutton);
-                       global::Gtk.Box.BoxChild w88 = ((global::Gtk.Box.BoxChild)(this.controlsbox 
[this.detachbutton]));
-                       w88.Position = 6;
+                       global::Gtk.Box.BoxChild w87 = ((global::Gtk.Box.BoxChild)(this.controlsbox 
[this.detachbutton]));
+                       w87.Position = 6;
+                       w87.Expand = false;
+                       w87.Fill = false;
+                       this.vbox3.Add (this.controlsbox);
+                       global::Gtk.Box.BoxChild w88 = ((global::Gtk.Box.BoxChild)(this.vbox3 
[this.controlsbox]));
+                       w88.Position = 1;
                        w88.Expand = false;
                        w88.Fill = false;
-                       this.vbox3.Add (this.controlsbox);
-                       global::Gtk.Box.BoxChild w89 = ((global::Gtk.Box.BoxChild)(this.vbox3 
[this.controlsbox]));
-                       w89.Position = 1;
-                       w89.Expand = false;
-                       w89.Fill = false;
                        this.Add (this.vbox3);
                        if ((this.Child != null)) {
                                this.Child.ShowAll ();
diff --git a/LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.VideoWindow.cs 
b/LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.VideoWindow.cs
new file mode 100644
index 0000000..7d80bf1
--- /dev/null
+++ b/LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.VideoWindow.cs
@@ -0,0 +1,25 @@
+
+// This file has been generated by the GUI designer. Do not modify.
+namespace LongoMatch.Gui
+{
+       public partial class VideoWindow
+       {
+               private global::Gtk.EventBox eventbox;
+
+               protected virtual void Build ()
+               {
+                       global::Stetic.Gui.Initialize (this);
+                       // Widget LongoMatch.Gui.VideoWindow
+                       global::Stetic.BinContainer.Attach (this);
+                       this.Name = "LongoMatch.Gui.VideoWindow";
+                       // Container child LongoMatch.Gui.VideoWindow.Gtk.Container+ContainerChild
+                       this.eventbox = new global::Gtk.EventBox ();
+                       this.eventbox.Name = "eventbox";
+                       this.Add (this.eventbox);
+                       if ((this.Child != null)) {
+                               this.Child.ShowAll ();
+                       }
+                       this.Hide ();
+               }
+       }
+}
diff --git a/LongoMatch.GUI.Multimedia/gtk-gui/gui.stetic b/LongoMatch.GUI.Multimedia/gtk-gui/gui.stetic
index ff6effa..d458f93 100644
--- a/LongoMatch.GUI.Multimedia/gtk-gui/gui.stetic
+++ b/LongoMatch.GUI.Multimedia/gtk-gui/gui.stetic
@@ -93,33 +93,28 @@
                     <property name="MemberName" />
                     <property name="Spacing">6</property>
                     <child>
-                      <widget class="Gtk.EventBox" id="videoeventbox">
+                      <widget class="Gtk.HBox" id="hbox2">
                         <property name="MemberName" />
+                        <property name="Spacing">6</property>
+                        <child>
+                          <widget class="LongoMatch.Gui.VideoWindow" id="videowindow">
+                            <property name="MemberName" />
+                            <property name="Events">ButtonPressMask</property>
+                          </widget>
+                          <packing>
+                            <property name="Position">0</property>
+                            <property name="AutoSize">True</property>
+                          </packing>
+                        </child>
                         <child>
-                          <widget class="Gtk.HBox" id="hbox2">
+                          <widget class="Gtk.DrawingArea" id="blackboarddrawingarea">
                             <property name="MemberName" />
-                            <property name="Spacing">6</property>
-                            <child>
-                              <widget class="Gtk.DrawingArea" id="videodrawingarea">
-                                <property name="MemberName" />
-                                <property name="CanFocus">True</property>
-                              </widget>
-                              <packing>
-                                <property name="Position">0</property>
-                                <property name="AutoSize">True</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <widget class="Gtk.DrawingArea" id="blackboarddrawingarea">
-                                <property name="MemberName" />
-                                <property name="Visible">False</property>
-                              </widget>
-                              <packing>
-                                <property name="Position">1</property>
-                                <property name="AutoSize">True</property>
-                              </packing>
-                            </child>
+                            <property name="Visible">False</property>
                           </widget>
+                          <packing>
+                            <property name="Position">1</property>
+                            <property name="AutoSize">True</property>
+                          </packing>
                         </child>
                       </widget>
                       <packing>
@@ -193,9 +188,10 @@
                     <property name="MemberName" />
                     <property name="Visible">False</property>
                     <property name="Type">TextAndIcon</property>
-                    <property name="Icon">stock:gtk-close Dnd</property>
+                    <property name="Icon">stock:longomatch-control-back Button</property>
                     <property name="Label" translatable="yes" />
                     <property name="UseUnderline">True</property>
+                    <property name="Relief">None</property>
                   </widget>
                   <packing>
                     <property name="Position">0</property>
@@ -208,7 +204,7 @@
                   <widget class="Gtk.Button" id="drawbutton">
                     <property name="MemberName" />
                     <property name="Type">TextAndIcon</property>
-                    <property name="Icon">stock:gtk-select-color Menu</property>
+                    <property name="Icon">stock:longomatch-control-draw Button</property>
                     <property name="Label" translatable="yes" />
                     <property name="UseUnderline">True</property>
                     <property name="Relief">None</property>
@@ -224,7 +220,7 @@
                   <widget class="Gtk.Button" id="playbutton">
                     <property name="MemberName" />
                     <property name="Type">TextAndIcon</property>
-                    <property name="Icon">stock:gtk-media-play Button</property>
+                    <property name="Icon">stock:longomatch-control-play Button</property>
                     <property name="Label" translatable="yes" />
                     <property name="UseUnderline">True</property>
                     <property name="Relief">None</property>
@@ -240,7 +236,7 @@
                   <widget class="Gtk.Button" id="pausebutton">
                     <property name="MemberName" />
                     <property name="Type">TextAndIcon</property>
-                    <property name="Icon">stock:gtk-media-pause Button</property>
+                    <property name="Icon">stock:longomatch-control-pause Button</property>
                     <property name="Label" translatable="yes" />
                     <property name="UseUnderline">True</property>
                     <property name="Relief">None</property>
@@ -257,7 +253,7 @@
                     <property name="MemberName" />
                     <property name="Visible">False</property>
                     <property name="Type">TextAndIcon</property>
-                    <property name="Icon">stock:gtk-media-previous Button</property>
+                    <property name="Icon">stock:longomatch-control-rw Button</property>
                     <property name="Label" translatable="yes" />
                     <property name="UseUnderline">True</property>
                     <property name="Relief">None</property>
@@ -275,7 +271,7 @@
                     <property name="Visible">False</property>
                     <property name="Sensitive">False</property>
                     <property name="Type">TextAndIcon</property>
-                    <property name="Icon">stock:gtk-media-next Button</property>
+                    <property name="Icon">stock:longomatch-control-ff Button</property>
                     <property name="Label" translatable="yes" />
                     <property name="UseUnderline">True</property>
                     <property name="Relief">None</property>
@@ -381,7 +377,7 @@
               <widget class="Gtk.Button" id="volumebutton">
                 <property name="MemberName" />
                 <property name="Type">TextAndIcon</property>
-                <property name="Icon">stock:stock_volume Button</property>
+                <property name="Icon">stock:longomatch-control-volume-hi Button</property>
                 <property name="Label" translatable="yes" />
                 <property name="UseUnderline">True</property>
                 <property name="Relief">None</property>
@@ -397,7 +393,7 @@
               <widget class="Gtk.Button" id="detachbutton">
                 <property name="MemberName" />
                 <property name="Type">TextAndIcon</property>
-                <property name="Icon">stock:gtk-disconnect Menu</property>
+                <property name="Icon">stock:longomatch-control-detach Button</property>
                 <property name="Label" translatable="yes" />
                 <property name="UseUnderline">True</property>
                 <property name="Relief">None</property>
@@ -621,4 +617,16 @@
       </widget>
     </child>
   </widget>
+  <widget class="Gtk.Bin" id="LongoMatch.Gui.VideoWindow" design-size="742 342">
+    <property name="MemberName" />
+    <property name="Visible">False</property>
+    <child>
+      <widget class="Gtk.EventBox" id="eventbox">
+        <property name="MemberName" />
+        <child>
+          <placeholder />
+        </child>
+      </widget>
+    </child>
+  </widget>
 </stetic-interface>
\ No newline at end of file
diff --git a/LongoMatch.GUI.Multimedia/gtk-gui/objects.xml b/LongoMatch.GUI.Multimedia/gtk-gui/objects.xml
index cdd9b58..8d87d61 100644
--- a/LongoMatch.GUI.Multimedia/gtk-gui/objects.xml
+++ b/LongoMatch.GUI.Multimedia/gtk-gui/objects.xml
@@ -32,4 +32,15 @@
       </itemgroup>
     </signals>
   </object>
+  <object type="LongoMatch.Gui.VideoWindow" palette-category="General" allow-children="false" 
base-type="Gtk.Bin">
+    <itemgroups />
+    <signals>
+      <itemgroup label="VideoWindow Signals">
+        <signal name="Realized" />
+        <signal name="ExposeEvent" />
+        <signal name="ButtonPressEvent" />
+        <signal name="ScrollEvent" />
+      </itemgroup>
+    </signals>
+  </object>
 </objects>
\ No newline at end of file
diff --git a/LongoMatch.GUI/Gui/Component/ProjectPeriods.cs b/LongoMatch.GUI/Gui/Component/ProjectPeriods.cs
index f50aa0c..08e557d 100644
--- a/LongoMatch.GUI/Gui/Component/ProjectPeriods.cs
+++ b/LongoMatch.GUI/Gui/Component/ProjectPeriods.cs
@@ -74,7 +74,7 @@ namespace LongoMatch.Gui.Component
                                
                                timerule.Duration = duration;
                                SetZoom ();
-                               playerbin2.Open (value.Description.File.FilePath);
+                               playerbin2.Open (value.Description.File);
                                
                                foreach (string s in gamePeriods) {
                                        Period period = new Period {Name = s};
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.CodingWidget.cs 
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.CodingWidget.cs
index 8afe38f..f14ce89 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.CodingWidget.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.CodingWidget.cs
@@ -18,9 +18,7 @@ namespace LongoMatch.Gui.Component
                private global::Gtk.DrawingArea teamsdrawingarea;
                private global::Gtk.HBox hbox5;
                private global::LongoMatch.Gui.Component.ButtonsWidget buttonswidget;
-               private global::Gtk.Label label18;
                private global::LongoMatch.Gui.Component.Timeline timeline;
-               private global::Gtk.Label label21;
                private global::LongoMatch.Gui.Component.PlaysPositionViewer playspositionviewer1;
                private global::Gtk.Label label19;
 
@@ -40,12 +38,12 @@ namespace LongoMatch.Gui.Component
                        this.zoomFitAction = new global::Gtk.Action ("zoomFitAction", null, null, 
"gtk-zoom-fit");
                        w2.Add (this.zoomFitAction, null);
                        this.convertAction = new global::Gtk.RadioAction ("convertAction", null, null, 
"gtk-convert", 0);
-                       this.convertAction.Group = this.autoTaggingMode.Group;
+                       this.convertAction.Group = this.timelineMode.Group;
                        w2.Add (this.convertAction, null);
                        this.UIManager.InsertActionGroup (w2, 0);
                        global::Gtk.ActionGroup w3 = new global::Gtk.ActionGroup ("Timeline");
                        this.positionMode = new global::Gtk.RadioAction ("positionMode", null, null, 
"gtk-justify-fill", 0);
-                       this.positionMode.Group = this.autoTaggingMode.Group;
+                       this.positionMode.Group = this.convertAction.Group;
                        w3.Add (this.positionMode, null);
                        this.UIManager.InsertActionGroup (w3, 1);
                        this.Name = "LongoMatch.Gui.Component.CodingWidget";
@@ -103,12 +101,6 @@ namespace LongoMatch.Gui.Component
                        w7.Position = 0;
                        this.hpaned1.Add (this.hbox5);
                        this.notebook.Add (this.hpaned1);
-                       // Notebook tab
-                       this.label18 = new global::Gtk.Label ();
-                       this.label18.Name = "label18";
-                       this.label18.LabelProp = global::Mono.Unix.Catalog.GetString ("page2");
-                       this.notebook.SetTabLabel (this.hpaned1, this.label18);
-                       this.label18.ShowAll ();
                        // Container child notebook.Gtk.Notebook+NotebookChild
                        this.timeline = new global::LongoMatch.Gui.Component.Timeline ();
                        this.timeline.Events = ((global::Gdk.EventMask)(256));
@@ -116,12 +108,6 @@ namespace LongoMatch.Gui.Component
                        this.notebook.Add (this.timeline);
                        global::Gtk.Notebook.NotebookChild w10 = 
((global::Gtk.Notebook.NotebookChild)(this.notebook [this.timeline]));
                        w10.Position = 1;
-                       // Notebook tab
-                       this.label21 = new global::Gtk.Label ();
-                       this.label21.Name = "label21";
-                       this.label21.LabelProp = global::Mono.Unix.Catalog.GetString ("page1");
-                       this.notebook.SetTabLabel (this.timeline, this.label21);
-                       this.label21.ShowAll ();
                        // Container child notebook.Gtk.Notebook+NotebookChild
                        this.playspositionviewer1 = new global::LongoMatch.Gui.Component.PlaysPositionViewer 
();
                        this.playspositionviewer1.Events = ((global::Gdk.EventMask)(256));
@@ -130,14 +116,17 @@ namespace LongoMatch.Gui.Component
                        global::Gtk.Notebook.NotebookChild w11 = 
((global::Gtk.Notebook.NotebookChild)(this.notebook [this.playspositionviewer1]));
                        w11.Position = 2;
                        // Notebook tab
+                       global::Gtk.Label w12 = new global::Gtk.Label ();
+                       w12.Visible = true;
+                       this.notebook.Add (w12);
                        this.label19 = new global::Gtk.Label ();
                        this.label19.Name = "label19";
                        this.label19.LabelProp = global::Mono.Unix.Catalog.GetString ("page3");
-                       this.notebook.SetTabLabel (this.playspositionviewer1, this.label19);
+                       this.notebook.SetTabLabel (w12, this.label19);
                        this.label19.ShowAll ();
                        this.vbox.Add (this.notebook);
-                       global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.vbox 
[this.notebook]));
-                       w12.Position = 1;
+                       global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.vbox 
[this.notebook]));
+                       w13.Position = 1;
                        this.Add (this.vbox);
                        if ((this.Child != null)) {
                                this.Child.ShowAll ();
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.NewProjectPanel.cs 
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.NewProjectPanel.cs
index a5d5a53..13fcfab 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.NewProjectPanel.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.NewProjectPanel.cs
@@ -198,7 +198,7 @@ namespace LongoMatch.Gui.Panel
                        this.notebook1 = new global::Gtk.Notebook ();
                        this.notebook1.CanFocus = true;
                        this.notebook1.Name = "notebook1";
-                       this.notebook1.CurrentPage = 2;
+                       this.notebook1.CurrentPage = 1;
                        this.notebook1.ShowBorder = false;
                        this.notebook1.Scrollable = true;
                        // Container child notebook1.Gtk.Notebook+NotebookChild
diff --git a/LongoMatch.GUI/gtk-gui/gui.stetic b/LongoMatch.GUI/gtk-gui/gui.stetic
index e705518..5a82720 100644
--- a/LongoMatch.GUI/gtk-gui/gui.stetic
+++ b/LongoMatch.GUI/gtk-gui/gui.stetic
@@ -6379,7 +6379,7 @@ You can continue with the current capture, cancel it or save your project.
           <widget class="Gtk.Notebook" id="notebook1">
             <property name="MemberName" />
             <property name="CanFocus">True</property>
-            <property name="CurrentPage">2</property>
+            <property name="CurrentPage">1</property>
             <property name="ShowBorder">False</property>
             <property name="Scrollable">True</property>
             <child>
@@ -9368,6 +9368,17 @@ You can continue with the current capture, cancel it or save your project.
     </child>
   </widget>
   <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.CodingWidget" design-size="1305 494">
+    <action-group name="Timeline">
+      <action id="positionMode">
+        <property name="Type">Radio</property>
+        <property name="Label" translatable="yes" />
+        <property name="StockId">gtk-justify-fill</property>
+        <property name="DrawAsRadio">False</property>
+        <property name="Active">False</property>
+        <property name="Value">0</property>
+        <property name="Group">codingmode</property>
+      </action>
+    </action-group>
     <action-group name="Default">
       <action id="timelineMode">
         <property name="Type">Radio</property>
@@ -9404,17 +9415,6 @@ You can continue with the current capture, cancel it or save your project.
         <property name="Group">codingmode</property>
       </action>
     </action-group>
-    <action-group name="Timeline">
-      <action id="positionMode">
-        <property name="Type">Radio</property>
-        <property name="Label" translatable="yes" />
-        <property name="StockId">gtk-justify-fill</property>
-        <property name="DrawAsRadio">False</property>
-        <property name="Active">False</property>
-        <property name="Value">0</property>
-        <property name="Group">codingmode</property>
-      </action>
-    </action-group>
     <property name="MemberName" />
     <property name="Visible">False</property>
     <child>
@@ -9495,15 +9495,6 @@ You can continue with the current capture, cancel it or save your project.
               </widget>
             </child>
             <child>
-              <widget class="Gtk.Label" id="label18">
-                <property name="MemberName" />
-                <property name="LabelProp" translatable="yes">page2</property>
-              </widget>
-              <packing>
-                <property name="type">tab</property>
-              </packing>
-            </child>
-            <child>
               <widget class="LongoMatch.Gui.Component.Timeline" id="timeline">
                 <property name="MemberName" />
                 <property name="Events">ButtonPressMask</property>
@@ -9513,15 +9504,6 @@ You can continue with the current capture, cancel it or save your project.
               </packing>
             </child>
             <child>
-              <widget class="Gtk.Label" id="label21">
-                <property name="MemberName" />
-                <property name="LabelProp" translatable="yes">page1</property>
-              </widget>
-              <packing>
-                <property name="type">tab</property>
-              </packing>
-            </child>
-            <child>
               <widget class="LongoMatch.Gui.Component.PlaysPositionViewer" id="playspositionviewer1">
                 <property name="MemberName" />
                 <property name="Events">ButtonPressMask</property>
@@ -9531,6 +9513,12 @@ You can continue with the current capture, cancel it or save your project.
               </packing>
             </child>
             <child>
+              <placeholder />
+            </child>
+            <child>
+              <placeholder />
+            </child>
+            <child>
               <widget class="Gtk.Label" id="label19">
                 <property name="MemberName" />
                 <property name="LabelProp" translatable="yes">page3</property>
diff --git a/LongoMatch.GUI/gtk-gui/objects.xml b/LongoMatch.GUI/gtk-gui/objects.xml
index ea18bfb..2e72cbc 100644
--- a/LongoMatch.GUI/gtk-gui/objects.xml
+++ b/LongoMatch.GUI/gtk-gui/objects.xml
@@ -328,4 +328,15 @@
     </itemgroups>
     <signals />
   </object>
+  <object type="LongoMatch.Gui.VideoWindow" palette-category="General" allow-children="false" 
base-type="Gtk.Bin">
+    <itemgroups />
+    <signals>
+      <itemgroup label="VideoWindow Signals">
+        <signal name="Realized" />
+        <signal name="ExposeEvent" />
+        <signal name="ButtonPressEvent" />
+        <signal name="ScrollEvent" />
+      </itemgroup>
+    </signals>
+  </object>
 </objects>
\ No newline at end of file
diff --git a/LongoMatch.Services/Services/ProjectsManager.cs b/LongoMatch.Services/Services/ProjectsManager.cs
index a6f6337..25781da 100644
--- a/LongoMatch.Services/Services/ProjectsManager.cs
+++ b/LongoMatch.Services/Services/ProjectsManager.cs
@@ -189,7 +189,7 @@ namespace LongoMatch.Services
                                        return false;
                                }
                                try {
-                                       Player.Open (project.Description.File.FilePath);
+                                       Player.Open (project.Description.File);
                                } catch (Exception ex) {
                                        Log.Exception (ex);
                                        guiToolkit.ErrorMessage (Catalog.GetString ("An error occurred 
opening this project:") + "\n" + ex.Message);
diff --git a/data/icons/hicolor/scalable/actions/longomatch-control-attach.svg 
b/data/icons/hicolor/scalable/actions/longomatch-control-attach.svg
new file mode 100644
index 0000000..6de9bea
--- /dev/null
+++ b/data/icons/hicolor/scalable/actions/longomatch-control-attach.svg
@@ -0,0 +1,15 @@
+<?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="3 -2 28 28" enable-background="new 3 -2 28 28" 
xml:space="preserve">
+<g>
+       <path fill="#6A6A6A" 
d="M5.625,25C4.729,25,4,24.272,4,23.376V0.625C4-0.271,4.729-1,5.625-1h10.561C16.637-1,17-0.636,17-0.188
+               
v1.626c0,0.449-0.362,0.811-0.813,0.811H7.25v19.502h19.499v-8.938c0-0.45,0.364-0.813,0.813-0.813h1.625
+               C29.638,12,30,12.363,30,12.813v10.562C30,24.272,29.271,25,28.374,25H5.625z"/>
+       <path fill="#50B44B" 
d="M13.688,16.127h8.125c0.329,0,0.625-0.196,0.751-0.501c0.126-0.301,0.057-0.653-0.176-0.884l-2.914-2.915
+               
l8.124-8.126c0.317-0.316,0.317-0.83,0-1.148l-1.148-1.15c-0.318-0.317-0.832-0.317-1.15,0l-8.125,8.126l-2.913-2.915
+               
c-0.155-0.154-0.363-0.239-0.574-0.239c-0.107,0-0.211,0.022-0.312,0.065c-0.304,0.124-0.502,0.423-0.502,0.749v8.125
+               C12.875,15.764,13.237,16.127,13.688,16.127z"/>
+</g>
+</svg>
diff --git a/data/icons/hicolor/scalable/actions/longomatch-control-back.svg 
b/data/icons/hicolor/scalable/actions/longomatch-control-back.svg
new file mode 100644
index 0000000..8b2bdb1
--- /dev/null
+++ b/data/icons/hicolor/scalable/actions/longomatch-control-back.svg
@@ -0,0 +1,11 @@
+<?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="3 -2 28 28" enable-background="new 3 -2 28 28" 
xml:space="preserve">
+<path id="reply_1_" fill-rule="evenodd" clip-rule="evenodd" fill="#6A6A6A" d="M13.75,7.938V3.064
+       
c0.001-0.333-0.202-0.631-0.509-0.755C13.142,2.268,13.04,2.25,12.938,2.25c-0.217,0-0.431,0.087-0.589,0.252L4.32,11.296
+       
C4.071,11.545,3.992,11.762,4.001,12c-0.016,0.22,0.141,0.518,0.304,0.688l0.022,0.009L4.32,12.703l8.028,8.794
+       
c0.158,0.164,0.373,0.253,0.589,0.253c0.102,0,0.205-0.02,0.303-0.059c0.308-0.125,0.511-0.423,0.509-0.756v-4.874
+       c15.693,0,16.231,5.32,16.25,5.688C29.981,8.718,13.75,7.938,13.75,7.938z"/>
+</svg>
diff --git a/data/icons/hicolor/scalable/actions/longomatch-control-detach.svg 
b/data/icons/hicolor/scalable/actions/longomatch-control-detach.svg
new file mode 100644
index 0000000..9222701
--- /dev/null
+++ b/data/icons/hicolor/scalable/actions/longomatch-control-detach.svg
@@ -0,0 +1,15 @@
+<?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="34px" height="24px" viewBox="0 0 34 24" enable-background="new 0 0 34 24" 
xml:space="preserve">
+<g id="external">
+       <path fill="#6A6A6A" 
d="M6.485,24.018c-0.829,0-1.503-0.673-1.503-1.501V1.484c0-0.828,0.674-1.501,1.503-1.501h9.763
+               
c0.417,0,0.751,0.336,0.751,0.75v1.503c0,0.415-0.335,0.75-0.751,0.75H7.986v18.028h18.025v-8.263c0-0.416,0.337-0.751,0.752-0.751
+               h1.502c0.417,0,0.752,0.336,0.752,0.751v9.765c0,0.828-0.675,1.501-1.503,1.501H6.485z"/>
+       <path fill="#50B44B" 
d="M28.266-0.015h-7.511c-0.304,0-0.578,0.181-0.694,0.462c-0.116,0.28-0.052,0.604,0.163,0.819l2.693,2.694
+               
l-7.51,7.511c-0.294,0.292-0.294,0.768,0,1.062l1.062,1.062c0.295,0.293,0.77,0.293,1.063,0l7.511-7.512l2.692,2.694
+               
c0.143,0.143,0.336,0.221,0.53,0.221c0.099,0,0.195-0.021,0.288-0.06c0.28-0.114,0.464-0.391,0.464-0.693V0.735
+               C29.018,0.319,28.683-0.015,28.266-0.015z"/>
+</g>
+</svg>
diff --git a/data/icons/hicolor/scalable/actions/longomatch-control-draw.svg 
b/data/icons/hicolor/scalable/actions/longomatch-control-draw.svg
new file mode 100644
index 0000000..92ef88a
--- /dev/null
+++ b/data/icons/hicolor/scalable/actions/longomatch-control-draw.svg
@@ -0,0 +1,34 @@
+<?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="34px" height="24px" viewBox="0 0 34 24" enable-background="new 0 0 34 24" 
xml:space="preserve">
+<g>
+       <path fill="none" 
d="M15.583,15.572c-0.505,0.413-0.833,1.032-0.833,1.735c0,1.243,1.006,2.251,2.249,2.251
+               c0.703,0,1.323-0.329,1.735-0.834"/>
+       <circle fill="none" cx="10.25" cy="15.306" r="2.251"/>
+       <path fill="#676767" 
d="M28.062,8.609C26.242,5.374,21.976,3.102,17,3.102c-1.182,0-2.318,0.133-3.396,0.372l3.562,3.563
+               
c-0.036-0.162-0.061-0.329-0.061-0.503c0-1.244,1.006-2.25,2.249-2.25c1.244,0,2.251,1.007,2.251,2.25
+               
c0,0.935-0.569,1.736-1.381,2.076c-0.268,0.112-0.562,0.175-0.87,0.175c-0.172,0-0.34-0.023-0.501-0.061l4.438,4.437
+               
c0.176-0.045,0.358-0.076,0.55-0.076c1.243,0,2.249,1.008,2.249,2.251c0,0.19-0.03,0.373-0.075,0.55l1.001,1.001l0.003-0.002
+               l0.073,0.075C28.294,15.556,29,13.893,29,12.102C29,10.863,28.665,9.683,28.062,8.609z 
M24.47,11.53
+               
c-1.243,0-2.249-1.007-2.249-2.25c0-0.235,0.046-0.458,0.112-0.671c0.286-0.913,1.129-1.58,2.137-1.58
+               
c1.009,0,1.851,0.667,2.138,1.58c0.066,0.213,0.112,0.436,0.112,0.671C26.72,10.523,25.714,11.53,24.47,11.53z"/>
+       <path fill="#676767" 
d="M18.734,18.725c-0.412,0.505-1.032,0.834-1.735,0.834c-1.243,0-2.249-1.008-2.249-2.251
+               c0-0.703,0.328-1.322,0.833-1.735L8.618,8.609L8.055,8.045l0,0L7.558,7.548L7.3,7.291L7.064,7.055
+               
c-0.44,0.486-0.818,1.006-1.127,1.554C5.334,9.683,5,10.863,5,12.102c0,3.095,2.577,6.348,5.256,7.443
+               
c2.678,1.094,4.429,1.385,4.429,1.385c0.751,0.11,1.523,0.172,2.315,0.172c1.283,0,2.518-0.154,3.677-0.435L18.734,18.725z
+                
M10.25,17.557c-1.243,0-2.25-1.009-2.25-2.251c0-1.244,1.007-2.251,2.25-2.251c1.242,0,2.25,1.007,2.25,2.251
+               C12.5,16.548,11.492,17.557,10.25,17.557z"/>
+       <g id="pen_10_">
+               <path fill-rule="evenodd" clip-rule="evenodd" fill="#50B34B" 
d="M11.397,3.051C10.559,2.212,9.99,1.645,9.853,1.508
+                       
c-0.836-0.835-1.67,0-1.67,0S7.347,2.343,6.511,3.18C5.675,4.014,6.512,4.851,6.512,4.851l1.543,1.544L11.397,3.051z"/>
+               <g>
+                       <polygon fill-rule="evenodd" clip-rule="evenodd" fill="#50B34B" points="23.675,22.013 
23.688,22.028 27.867,22.863 
+                               27.032,18.686 27.016,18.671                     "/>
+                       <path fill-rule="evenodd" clip-rule="evenodd" fill="#50B34B" 
d="M9.018,7.358l13.697,13.695l3.341-3.342
+                               c-2.595-2.597-9.762-9.765-13.694-13.696L9.018,7.358z"/>
+               </g>
+       </g>
+</g>
+</svg>
diff --git a/data/icons/hicolor/scalable/actions/longomatch-control-ff.svg 
b/data/icons/hicolor/scalable/actions/longomatch-control-ff.svg
new file mode 100644
index 0000000..3783ac1
--- /dev/null
+++ b/data/icons/hicolor/scalable/actions/longomatch-control-ff.svg
@@ -0,0 +1,8 @@
+<?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="3 -2 28 28" enable-background="new 3 -2 28 28" 
xml:space="preserve">
+<polygon fill-rule="evenodd" clip-rule="evenodd" fill="#6A6A6A" points="30,12 15.895,2.222 15.895,10.468 
4,2.222 4,21.778 
+       15.895,13.532 15.895,21.778 "/>
+</svg>
diff --git a/data/icons/hicolor/scalable/actions/longomatch-control-pause.svg 
b/data/icons/hicolor/scalable/actions/longomatch-control-pause.svg
new file mode 100644
index 0000000..215d761
--- /dev/null
+++ b/data/icons/hicolor/scalable/actions/longomatch-control-pause.svg
@@ -0,0 +1,10 @@
+<?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="3 -2 28 28" enable-background="new 3 -2 28 28" 
xml:space="preserve">
+<g>
+       <rect x="8.307" y="0.018" fill="#6B6B6A" width="5.114" height="23.965"/>
+       <rect x="20.58" y="0.018" fill="#6B6B6A" width="5.113" height="23.965"/>
+</g>
+</svg>
diff --git a/data/icons/hicolor/scalable/actions/longomatch-control-play.svg 
b/data/icons/hicolor/scalable/actions/longomatch-control-play.svg
new file mode 100644
index 0000000..081ce9e
--- /dev/null
+++ b/data/icons/hicolor/scalable/actions/longomatch-control-play.svg
@@ -0,0 +1,7 @@
+<?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="3 -2 28 28" enable-background="new 3 -2 28 28" 
xml:space="preserve">
+<polygon fill-rule="evenodd" clip-rule="evenodd" fill="#6A6A6A" points="4,0.695 30,12 4,23.305 "/>
+</svg>
diff --git a/data/icons/hicolor/scalable/actions/longomatch-control-rw.svg 
b/data/icons/hicolor/scalable/actions/longomatch-control-rw.svg
new file mode 100644
index 0000000..ef6df99
--- /dev/null
+++ b/data/icons/hicolor/scalable/actions/longomatch-control-rw.svg
@@ -0,0 +1,8 @@
+<?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="3 -2 28 28" enable-background="new 3 -2 28 28" 
xml:space="preserve">
+<polygon fill-rule="evenodd" clip-rule="evenodd" fill="#6A6A6A" points="4,12 18.105,2.222 18.105,10.468 
30,2.222 30,21.778 
+       18.105,13.532 18.105,21.778 "/>
+</svg>
diff --git a/data/icons/hicolor/scalable/actions/longomatch-control-volume-hi.svg 
b/data/icons/hicolor/scalable/actions/longomatch-control-volume-hi.svg
new file mode 100644
index 0000000..277d9aa
--- /dev/null
+++ b/data/icons/hicolor/scalable/actions/longomatch-control-volume-hi.svg
@@ -0,0 +1,17 @@
+<?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="3 -2 28 28" enable-background="new 3 -2 28 28" 
xml:space="preserve">
+<g>
+       <path fill="#6B6B6A" 
d="M30,12c0-5.396-4.234-9.808-9.553-10.12v2.256c4.074,0.307,7.296,3.713,7.296,7.864
+               c0,4.152-3.223,7.559-7.296,7.864v2.256C25.766,21.808,30,17.396,30,12z"/>
+       <path fill="#6B6B6A" 
d="M25.641,12c0-3.081-2.418-5.6-5.454-5.778v1.288c2.326,0.176,4.166,2.12,4.166,4.492
+               c0,2.371-1.84,4.316-4.166,4.492v1.287C23.224,17.6,25.641,15.08,25.641,12z"/>
+       <path fill="#6B6B6A" 
d="M18.326,2.076l-6.317,5.471H5.805C4.808,7.547,4,8.44,4,9.542v4.667c0,1.1,0.808,1.994,1.805,1.994h5.917
+               l6.605,5.721V2.076z"/>
+       <g>
+               <path fill="#6B6B6A" 
d="M20.445,9.862v4.275c1.181,0,2.137-0.957,2.137-2.138C22.583,10.819,21.626,9.862,20.445,9.862z"/>
+       </g>
+</g>
+</svg>
diff --git a/data/icons/hicolor/scalable/actions/longomatch-control-volume-low.svg 
b/data/icons/hicolor/scalable/actions/longomatch-control-volume-low.svg
new file mode 100644
index 0000000..ecae65f
--- /dev/null
+++ b/data/icons/hicolor/scalable/actions/longomatch-control-volume-low.svg
@@ -0,0 +1,13 @@
+<?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="3 -2 28 28" enable-background="new 3 -2 28 28" 
xml:space="preserve">
+<g>
+       <path fill="#6B6B6A" 
d="M18.326,2.076l-6.317,5.471H5.805C4.808,7.547,4,8.44,4,9.542v4.667c0,1.1,0.808,1.994,1.805,1.994h5.917
+               l6.605,5.721V2.076z"/>
+       <g>
+               <path fill="#6B6B6A" 
d="M20.445,9.862v4.275c1.181,0,2.137-0.957,2.137-2.138C22.583,10.819,21.626,9.862,20.445,9.862z"/>
+       </g>
+</g>
+</svg>
diff --git a/data/icons/hicolor/scalable/actions/longomatch-control-volume-med.svg 
b/data/icons/hicolor/scalable/actions/longomatch-control-volume-med.svg
new file mode 100644
index 0000000..24e4d1f
--- /dev/null
+++ b/data/icons/hicolor/scalable/actions/longomatch-control-volume-med.svg
@@ -0,0 +1,15 @@
+<?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="3 -2 28 28" enable-background="new 3 -2 28 28" 
xml:space="preserve">
+<g>
+       <path fill="#6B6B6A" 
d="M25.641,12c0-3.081-2.418-5.6-5.454-5.778v1.288c2.326,0.176,4.166,2.12,4.166,4.492
+               c0,2.371-1.84,4.316-4.166,4.492v1.287C23.224,17.6,25.641,15.08,25.641,12z"/>
+       <path fill="#6B6B6A" 
d="M18.326,2.076l-6.317,5.471H5.805C4.808,7.547,4,8.44,4,9.542v4.667c0,1.1,0.808,1.994,1.805,1.994h5.917
+               l6.605,5.721V2.076z"/>
+       <g>
+               <path fill="#6B6B6A" 
d="M20.445,9.862v4.275c1.181,0,2.137-0.957,2.137-2.138C22.583,10.819,21.626,9.862,20.445,9.862z"/>
+       </g>
+</g>
+</svg>
diff --git a/data/icons/hicolor/scalable/actions/longomatch-control-volume-off.svg 
b/data/icons/hicolor/scalable/actions/longomatch-control-volume-off.svg
new file mode 100644
index 0000000..0b1855a
--- /dev/null
+++ b/data/icons/hicolor/scalable/actions/longomatch-control-volume-off.svg
@@ -0,0 +1,16 @@
+<?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="3 -2 28 28" enable-background="new 3 -2 28 28" 
xml:space="preserve">
+<g>
+       <path fill="#6B6B6A" 
d="M18.326,2.076l-6.317,5.471H5.805C4.808,7.547,4,8.44,4,9.542v4.667c0,1.1,0.808,1.994,1.805,1.994h5.917
+               l6.605,5.721V2.076z"/>
+</g>
+<path id="cross" fill="#D33B37" 
d="M24.096,10.627l-2.183-2.182c-0.125-0.126-0.331-0.125-0.458,0.001l-0.913,0.915
+       c-0.064,0.062-0.097,0.146-0.097,0.228c0.002,0.082,0.032,0.166,0.097,0.229l2.18,2.182l-2.182,2.182
+       
c-0.127,0.127-0.125,0.331,0.001,0.457l0.914,0.915c0.063,0.063,0.146,0.096,0.227,0.096c0.083,0,0.166-0.032,0.229-0.096
+       
l2.182-2.181l2.182,2.181c0.128,0.127,0.33,0.126,0.456,0l0.915-0.914c0.062-0.063,0.093-0.146,0.093-0.228
+       
c0.001-0.084-0.028-0.167-0.093-0.229l-2.181-2.183l2.181-2.18c0.126-0.127,0.126-0.331,0-0.457l-0.914-0.915
+       c-0.063-0.063-0.146-0.095-0.229-0.094c-0.082-0.001-0.165,0.032-0.228,0.094L24.096,10.627z"/>
+</svg>
diff --git a/libcesarplayer/lgm-video-player.c b/libcesarplayer/lgm-video-player.c
index bd80f41..fadabc0 100644
--- a/libcesarplayer/lgm-video-player.c
+++ b/libcesarplayer/lgm-video-player.c
@@ -175,8 +175,6 @@ lgm_element_msg_sync_cb (GstBus * bus, GstMessage * msg, gpointer data)
         gst_object_unref (lvp->priv->xoverlay);
       }
       lvp->priv->xoverlay = gst_object_ref (GST_X_OVERLAY (sender));
-      g_object_set (GST_ELEMENT (lvp->priv->xoverlay), "force-aspect-ratio",
-          TRUE, NULL);
       lgm_set_window_handle(lvp->priv->xoverlay, lvp->priv->window_handle);
       g_mutex_unlock (&lvp->priv->overlay_lock);
     }


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