[longomatch] Add support for live preview in capture mode



commit 56beb752e3f5ac3223ca0070fcb7d2193489acc8
Author: Andoni Morales Alastruey <ylatuya gmail com>
Date:   Fri Nov 23 19:44:39 2012 +0100

    Add support for live preview in capture mode

 LongoMatch.Core/Common/EncodingProfiles.cs         |   10 ++
 LongoMatch.Core/Interfaces/GUI/IPlayer.cs          |    4 +-
 LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs         |    4 +-
 .../LongoMatch.GUI.Multimedia.mdp                  |    2 +
 LongoMatch.GUI.Multimedia/Makefile.am              |    2 +
 LongoMatch.GUI.Multimedia/gtk-gui/gui.stetic       |   51 +++++++++++
 LongoMatch.GUI.Multimedia/gtk-gui/objects.xml      |   23 +++++
 .../Gui/Component/ProjectDetailsWidget.cs          |    7 +-
 LongoMatch.GUI/Gui/MainWindow.cs                   |   70 ++++++++--------
 LongoMatch.GUI/Gui/TreeView/ListTreeViewBase.cs    |    2 +-
 ...ongoMatch.Gui.Component.PlaysSelectionWidget.cs |    2 +-
 .../gtk-gui/LongoMatch.Gui.MainWindow.cs           |   89 +++++++++-----------
 LongoMatch.GUI/gtk-gui/gui.stetic                  |   21 +----
 LongoMatch.GUI/gtk-gui/objects.xml                 |   81 ++++++++++++++----
 libcesarplayer/liblongomatch.mdp                   |    2 -
 15 files changed, 238 insertions(+), 132 deletions(-)
---
diff --git a/LongoMatch.Core/Common/EncodingProfiles.cs b/LongoMatch.Core/Common/EncodingProfiles.cs
index 03f4cf2..c0344a5 100644
--- a/LongoMatch.Core/Common/EncodingProfiles.cs
+++ b/LongoMatch.Core/Common/EncodingProfiles.cs
@@ -54,6 +54,16 @@ namespace LongoMatch.Common
 		                                                        VideoEncoderType.H264,
 		                                                        AudioEncoderType.Aac,
 		                                                        VideoMuxerType.Mp4);
+		                                                        
+		public static EncodingProfile MatroskaMpeg4 = new EncodingProfile("Matroska (Mpeg4 + Vorbis)", "avi",
+		                                                        VideoEncoderType.Mpeg4,
+		                                                        AudioEncoderType.Vorbis,
+		                                                        VideoMuxerType.Matroska);
+
+		public static EncodingProfile MatroskaH264 = new EncodingProfile("Matroska (H264 + AAC)", "mp4",
+		                                                        VideoEncoderType.H264,
+		                                                        AudioEncoderType.Aac,
+		                                                        VideoMuxerType.Matroska);
 	}
 	
 }
diff --git a/LongoMatch.Core/Interfaces/GUI/IPlayer.cs b/LongoMatch.Core/Interfaces/GUI/IPlayer.cs
index 33d1aca..d14ccba 100644
--- a/LongoMatch.Core/Interfaces/GUI/IPlayer.cs
+++ b/LongoMatch.Core/Interfaces/GUI/IPlayer.cs
@@ -31,9 +31,10 @@ namespace LongoMatch.Interfaces.GUI
 		event PrevButtonClickedHandler Prev;
 		event DrawFrameHandler DrawFrame;
 		event SeekEventHandler SeekEvent;
+		event DetachPlayerHandler Detach;
 		
 		long AccurateCurrentTime {get;}
-		long CurrentTime {get;}
+		int CurrentTime {get;}
 		long StreamLength {get;}
 		
 		Image CurrentMiniatureFrame {get;}
@@ -46,6 +47,7 @@ namespace LongoMatch.Interfaces.GUI
 		bool Opened {get;}
 		bool FullScreen {set;}
 		float Rate {get;set;}
+		bool Detached {get;set;}
 
 		void Open(string mrl);
 		void Play();
diff --git a/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs b/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs
index 3b56181..93539b6 100644
--- a/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs
+++ b/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs
@@ -105,9 +105,9 @@ namespace LongoMatch.Gui
 			}
 		}
 
-		public long CurrentTime {
+		public int CurrentTime {
 			get {
-				return player.CurrentTime;
+				return (int) player.CurrentTime;
 			}
 		}
 
diff --git a/LongoMatch.GUI.Multimedia/LongoMatch.GUI.Multimedia.mdp b/LongoMatch.GUI.Multimedia/LongoMatch.GUI.Multimedia.mdp
index 7790f07..d788493 100644
--- a/LongoMatch.GUI.Multimedia/LongoMatch.GUI.Multimedia.mdp
+++ b/LongoMatch.GUI.Multimedia/LongoMatch.GUI.Multimedia.mdp
@@ -25,6 +25,8 @@
     <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.CapturerBin.cs" />
     <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.VolumeWindow.cs" />
     <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.PlayerBin.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/PlayerCapturerBin.cs" />
+    <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.PlayerCapturerBin.cs" />
   </Contents>
   <MonoDevelop.Autotools.MakefileInfo RelativeMakefileName="Makefile.am" RelativeConfigureInPath="../">
     <BuildFilesVar Name="FILES" />
diff --git a/LongoMatch.GUI.Multimedia/Makefile.am b/LongoMatch.GUI.Multimedia/Makefile.am
index e8c14e4..757d5ba 100644
--- a/LongoMatch.GUI.Multimedia/Makefile.am
+++ b/LongoMatch.GUI.Multimedia/Makefile.am
@@ -7,9 +7,11 @@ SOURCES = \
 	gtk-gui/generated.cs \
 	gtk-gui/LongoMatch.Gui.CapturerBin.cs \
 	gtk-gui/LongoMatch.Gui.PlayerBin.cs \
+	gtk-gui/LongoMatch.Gui.PlayerCapturerBin.cs \
 	gtk-gui/LongoMatch.Gui.VolumeWindow.cs \
 	Gui/CapturerBin.cs \
 	Gui/PlayerBin.cs \
+	Gui/PlayerCapturerBin.cs \
 	Gui/VolumeWindow.cs
 
 RESOURCES = \
diff --git a/LongoMatch.GUI.Multimedia/gtk-gui/gui.stetic b/LongoMatch.GUI.Multimedia/gtk-gui/gui.stetic
index 2ca84c7..073240c 100644
--- a/LongoMatch.GUI.Multimedia/gtk-gui/gui.stetic
+++ b/LongoMatch.GUI.Multimedia/gtk-gui/gui.stetic
@@ -520,4 +520,55 @@
       </widget>
     </child>
   </widget>
+  <widget class="Gtk.Bin" id="LongoMatch.Gui.PlayerCapturerBin" design-size="868 300">
+    <property name="MemberName" />
+    <property name="Visible">False</property>
+    <child>
+      <widget class="Gtk.VBox" id="vbox2">
+        <property name="MemberName" />
+        <property name="Spacing">6</property>
+        <child>
+          <widget class="LongoMatch.Gui.CapturerBin" id="capturerbin">
+            <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="LongoMatch.Gui.PlayerBin" id="playerbin">
+            <property name="MemberName" />
+            <property name="Events">ButtonPressMask</property>
+            <property name="Rate">0</property>
+            <property name="ExpandLogo">False</property>
+            <property name="Detached">False</property>
+          </widget>
+          <packing>
+            <property name="Position">1</property>
+            <property name="AutoSize">True</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="Gtk.Button" id="backtolivebutton">
+            <property name="MemberName" />
+            <property name="Visible">False</property>
+            <property name="CanFocus">True</property>
+            <property name="Type">TextAndIcon</property>
+            <property name="Icon">stock:gtk-goto-last Menu</property>
+            <property name="Label" translatable="yes">Back To Live</property>
+            <property name="UseUnderline">True</property>
+            <signal name="Clicked" handler="OnBacktolivebuttonClicked" />
+          </widget>
+          <packing>
+            <property name="Position">2</property>
+            <property name="AutoSize">True</property>
+            <property name="Expand">False</property>
+            <property name="Fill">False</property>
+          </packing>
+        </child>
+      </widget>
+    </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 d10f4ab..b8a34e8 100644
--- a/LongoMatch.GUI.Multimedia/gtk-gui/objects.xml
+++ b/LongoMatch.GUI.Multimedia/gtk-gui/objects.xml
@@ -30,4 +30,27 @@
       </itemgroup>
     </signals>
   </object>
+  <object type="LongoMatch.Gui.PlayerCapturerBin" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
+    <itemgroups>
+      <itemgroup label="PlayerCapturerBin Properties">
+        <property name="Detached" />
+        <property name="ExpandLogo" />
+        <property name="Rate" />
+      </itemgroup>
+    </itemgroups>
+    <signals>
+      <itemgroup label="PlayerCapturerBin Signals">
+        <signal name="Error" />
+        <signal name="CaptureFinished" />
+        <signal name="SegmentClosedEvent" />
+        <signal name="Tick" />
+        <signal name="PlayStateChanged" />
+        <signal name="Next" />
+        <signal name="Prev" />
+        <signal name="DrawFrame" />
+        <signal name="SeekEvent" />
+        <signal name="Detach" />
+      </itemgroup>
+    </signals>
+  </object>
 </objects>
\ No newline at end of file
diff --git a/LongoMatch.GUI/Gui/Component/ProjectDetailsWidget.cs b/LongoMatch.GUI/Gui/Component/ProjectDetailsWidget.cs
index e05e212..896a487 100644
--- a/LongoMatch.GUI/Gui/Component/ProjectDetailsWidget.cs
+++ b/LongoMatch.GUI/Gui/Component/ProjectDetailsWidget.cs
@@ -411,10 +411,9 @@ namespace LongoMatch.Gui.Component
 			sizecombobox.Active = 0;
 
 			encProfileList = new ListStore(typeof(string), typeof (EncodingProfile));
-			encProfileList.AppendValues(EncodingProfiles.MP4.Name, EncodingProfiles.MP4);
-			encProfileList.AppendValues(EncodingProfiles.Avi.Name, EncodingProfiles.Avi);
-			if(Environment.OSVersion.Platform != PlatformID.Win32NT)
-				encProfileList.AppendValues(EncodingProfiles.WebM.Name, EncodingProfiles.WebM);
+			encProfileList.AppendValues(EncodingProfiles.MatroskaH264.Name, EncodingProfiles.MatroskaH264);
+			encProfileList.AppendValues(EncodingProfiles.MatroskaMpeg4.Name, EncodingProfiles.MatroskaMpeg4);
+			encProfileList.AppendValues(EncodingProfiles.WebM.Name, EncodingProfiles.WebM);
 			videoformatcombobox.Model = encProfileList;
 			videoformatcombobox.Active = 0;
 		}
diff --git a/LongoMatch.GUI/Gui/MainWindow.cs b/LongoMatch.GUI/Gui/MainWindow.cs
index 0064cfc..0bccd66 100644
--- a/LongoMatch.GUI/Gui/MainWindow.cs
+++ b/LongoMatch.GUI/Gui/MainWindow.cs
@@ -119,14 +119,14 @@ namespace LongoMatch.Gui
 			guTimeline = new GameUnitsTimelineWidget ();
 			downbox.PackStart(guTimeline, true, true, 0);
 			
-			player.SetLogo(System.IO.Path.Combine(Config.ImagesDir(),"background.png"));
-			player.LogoMode = true;
-			player.Tick += OnTick;
-			player.Detach += DetachPlayer;
-
-			capturer.Visible = false;
-			capturer.Logo = System.IO.Path.Combine(Config.ImagesDir(),"background.png");
-			capturer.CaptureFinished += (sender, e) => {CloseCaptureProject();};
+			playercapturer.Mode = PlayerCapturerBin.PlayerOperationMode.Player;
+			playercapturer.SetLogo(System.IO.Path.Combine(Config.ImagesDir(),"background.png"));
+			playercapturer.LogoMode = true;
+			playercapturer.Tick += OnTick;
+			playercapturer.Detach += DetachPlayer;
+
+			playercapturer.Logo = System.IO.Path.Combine(Config.ImagesDir(),"background.png");
+			playercapturer.CaptureFinished += (sender, e) => {CloseCaptureProject();};
 			
 			buttonswidget.Mode = TagMode.Predifined;
 			ConnectSignals();
@@ -178,13 +178,13 @@ namespace LongoMatch.Gui
 		
 		public IPlayer Player{
 			get {
-				return player;
+				return playercapturer;
 			}
 		}
 		
 		public ICapturer Capturer{
 			get {
-				return capturer;
+				return playercapturer;
 			}
 		}
 		
@@ -324,7 +324,7 @@ namespace LongoMatch.Gui
 				box.Show();
 				playerWindow.Show();
 				
-				player.Reparent(box);
+				playercapturer.Reparent(box);
 				buttonswidget.Visible = true;
 				timeline.Visible = true;
 				if (Config.useGameUnits) {
@@ -335,7 +335,7 @@ namespace LongoMatch.Gui
 				ToggleAction action;
 				
 				Log.Debug("Attaching player again");
-				player.Reparent(this.videowidgetsbox);
+				playercapturer.Reparent(this.videowidgetsbox);
 				playerWindow.Destroy();
 				
 				if (ManualTaggingViewAction.Active)
@@ -348,7 +348,7 @@ namespace LongoMatch.Gui
 					action = TaggingViewAction;
 				OnViewToggled(action, new EventArgs());
 			}
-			player.Detached = detach;
+			playercapturer.Detached = detach;
 		}
 
 		public void SetProject(Project project, ProjectType projectType, CaptureSettings props, PlaysFilter filter)
@@ -363,17 +363,19 @@ namespace LongoMatch.Gui
 			if(projectType == ProjectType.FileProject) {
 				Title = System.IO.Path.GetFileNameWithoutExtension(desc.File.FilePath) +
 				        " - " + Constants.SOFTWARE_NAME;
-				player.LogoMode = false;
+				playercapturer.LogoMode = false;
 				timeline.Project = project;
 				guTimeline.Project = project;
 
 			} else {
 				Title = Constants.SOFTWARE_NAME;
 				isLive = true;
-				if(projectType == ProjectType.FakeCaptureProject)
-					capturer.Type = CapturerType.Fake;
-				player.Visible = false;
-				capturer.Visible = true;
+				if(projectType == ProjectType.FakeCaptureProject) {
+					playercapturer.Type = CapturerType.Fake;
+					playercapturer.Mode = PlayerCapturerBin.PlayerOperationMode.Capturer;
+				} else {
+					playercapturer.Mode = PlayerCapturerBin.PlayerOperationMode.PreviewCapturer;
+				}
 				TaggingViewAction.Active = true;
 			}
 			
@@ -389,9 +391,8 @@ namespace LongoMatch.Gui
 		
 		private void CloseCaptureProject() {
 			if(projectType == ProjectType.CaptureProject) {
-				capturer.Close();
-				player.Visible = true;
-				capturer.Visible = false;
+				playercapturer.Close();
+				playercapturer.Mode = PlayerCapturerBin.PlayerOperationMode.Player;
 				EmitSaveProject();
 			} else if(projectType == ProjectType.FakeCaptureProject) {
 				EmitCloseOpenedProject(true);
@@ -401,9 +402,8 @@ namespace LongoMatch.Gui
 		private void ResetGUI() {
 			bool playlistVisible = playlist.Visible;
 			Title = Constants.SOFTWARE_NAME;
-			player.Visible = true;
-			player.LogoMode = true;
-			capturer.Visible = false;
+			playercapturer.Mode = PlayerCapturerBin.PlayerOperationMode.Player;
+			playercapturer.LogoMode = true;
 			ClearWidgets();
 			HideWidgets();
 			playlist.Visible = playlistVisible;
@@ -497,7 +497,7 @@ namespace LongoMatch.Gui
 			if(!PromptCloseProject())
 				return;
 			EmitSaveProject();
-			player.Dispose();
+			playercapturer.Dispose();
 			Application.Quit();
 		}
 		
@@ -523,7 +523,7 @@ namespace LongoMatch.Gui
 		#region View
 		protected virtual void OnFullScreenActionToggled(object sender, System.EventArgs e)
 		{
-			player.FullScreen = (sender as Gtk.ToggleAction).Active;
+			playercapturer.FullScreen = (sender as Gtk.ToggleAction).Active;
 		}
 
 		protected virtual void OnPlaylistActionToggled(object sender, System.EventArgs e)
@@ -621,7 +621,7 @@ namespace LongoMatch.Gui
 
 			ret = base.OnKeyPressEvent(evnt);
 
-			if(openedProject == null && !player.Opened)
+			if(openedProject == null && !playercapturer.Opened)
 				return ret;
 
 			if(projectType != ProjectType.CaptureProject &&
@@ -629,30 +629,30 @@ namespace LongoMatch.Gui
 				switch(key) {
 				case Constants.SEEK_FORWARD:
 					if(modifier == Constants.STEP)
-						player.StepForward();
+						playercapturer.StepForward();
 					else
-						player.SeekToNextFrame(selectedTimeNode != null);
+						playercapturer.SeekToNextFrame(selectedTimeNode != null);
 					break;
 				case Constants.SEEK_BACKWARD:
 					if(modifier == Constants.STEP)
-						player.StepBackward();
+						playercapturer.StepBackward();
 					else
-						player.SeekToPreviousFrame(selectedTimeNode != null);
+						playercapturer.SeekToPreviousFrame(selectedTimeNode != null);
 					break;
 				case Constants.FRAMERATE_UP:
-					player.FramerateUp();
+					playercapturer.FramerateUp();
 					break;
 				case Constants.FRAMERATE_DOWN:
-					player.FramerateDown();
+					playercapturer.FramerateDown();
 					break;
 				case Constants.TOGGLE_PLAY:
-					player.TogglePlay();
+					playercapturer.TogglePlay();
 					break;
 				}
 			} else {
 				switch(key) {
 				case Constants.TOGGLE_PLAY:
-					capturer.TogglePause();
+					playercapturer.TogglePause();
 					break;
 				}
 			}
diff --git a/LongoMatch.GUI/Gui/TreeView/ListTreeViewBase.cs b/LongoMatch.GUI/Gui/TreeView/ListTreeViewBase.cs
index 02636b7..6d8463d 100644
--- a/LongoMatch.GUI/Gui/TreeView/ListTreeViewBase.cs
+++ b/LongoMatch.GUI/Gui/TreeView/ListTreeViewBase.cs
@@ -281,7 +281,7 @@ namespace LongoMatch.Gui.Component
 			if(!(item is Play))
 				return;
 
-			if(TimeNodeSelected != null && !projectIsLive)
+			if(TimeNodeSelected != null)
 				this.TimeNodeSelected(item as Play);
 		}
 
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.PlaysSelectionWidget.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.PlaysSelectionWidget.cs
index 68a76f7..919aeff 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.PlaysSelectionWidget.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.PlaysSelectionWidget.cs
@@ -34,7 +34,7 @@ namespace LongoMatch.Gui.Component
 			this.notebook2 = new global::Gtk.Notebook ();
 			this.notebook2.CanFocus = true;
 			this.notebook2.Name = "notebook2";
-			this.notebook2.CurrentPage = 1;
+			this.notebook2.CurrentPage = 0;
 			this.notebook2.TabPos = ((global::Gtk.PositionType)(0));
 			// Container child notebook2.Gtk.Notebook+NotebookChild
 			this.notebook1 = new global::Gtk.Notebook ();
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.MainWindow.cs b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.MainWindow.cs
index ed612bc..fe77639 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.MainWindow.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.MainWindow.cs
@@ -45,8 +45,7 @@ namespace LongoMatch.Gui
 		private global::Gtk.VBox downbox;
 		private global::Gtk.HBox videowidgetsbox;
 		private global::LongoMatch.Gui.Component.DrawingToolBox drawingtoolbox1;
-		private global::LongoMatch.Gui.PlayerBin player;
-		private global::LongoMatch.Gui.CapturerBin capturer;
+		private global::LongoMatch.Gui.PlayerCapturerBin playercapturer;
 		private global::LongoMatch.Gui.Component.ButtonsWidget buttonswidget;
 		private global::LongoMatch.Gui.Component.GameUnitsTagger gameunitstaggerwidget1;
 		private global::Gtk.VBox rightvbox;
@@ -137,12 +136,12 @@ namespace LongoMatch.Gui
 			this.ImportProjectAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("_Import Project");
 			w1.Add (this.ImportProjectAction, "<Control>i");
 			this.ManualTaggingViewAction = new global::Gtk.RadioAction ("ManualTaggingViewAction", global::Mono.Unix.Catalog.GetString ("Manual tagging view"), null, null, 0);
-			this.ManualTaggingViewAction.Group = this.TaggingViewAction.Group;
+			this.ManualTaggingViewAction.Group = this.TimelineViewAction.Group;
 			this.ManualTaggingViewAction.Sensitive = false;
 			this.ManualTaggingViewAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("Free Capture Mode");
 			w1.Add (this.ManualTaggingViewAction, "<Control>f");
 			this.GameUnitsViewAction = new global::Gtk.RadioAction ("GameUnitsViewAction", global::Mono.Unix.Catalog.GetString ("Game units view"), null, null, 0);
-			this.GameUnitsViewAction.Group = this.TaggingViewAction.Group;
+			this.GameUnitsViewAction.Group = this.ManualTaggingViewAction.Group;
 			this.GameUnitsViewAction.Sensitive = false;
 			this.GameUnitsViewAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("Game units view");
 			w1.Add (this.GameUnitsViewAction, null);
@@ -235,45 +234,38 @@ namespace LongoMatch.Gui
 			w6.Expand = false;
 			w6.Fill = false;
 			// Container child videowidgetsbox.Gtk.Box+BoxChild
-			this.player = new global::LongoMatch.Gui.PlayerBin ();
-			this.player.Events = ((global::Gdk.EventMask)(256));
-			this.player.Name = "player";
-			this.player.Rate = 1F;
-			this.player.ExpandLogo = true;
-			this.player.Detached = false;
-			this.videowidgetsbox.Add (this.player);
-			global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.videowidgetsbox [this.player]));
+			this.playercapturer = new global::LongoMatch.Gui.PlayerCapturerBin ();
+			this.playercapturer.Events = ((global::Gdk.EventMask)(256));
+			this.playercapturer.Name = "playercapturer";
+			this.playercapturer.Detached = false;
+			this.playercapturer.ExpandLogo = false;
+			this.playercapturer.Rate = 0F;
+			this.videowidgetsbox.Add (this.playercapturer);
+			global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.videowidgetsbox [this.playercapturer]));
 			w7.Position = 1;
-			// Container child videowidgetsbox.Gtk.Box+BoxChild
-			this.capturer = new global::LongoMatch.Gui.CapturerBin ();
-			this.capturer.Events = ((global::Gdk.EventMask)(256));
-			this.capturer.Name = "capturer";
-			this.videowidgetsbox.Add (this.capturer);
-			global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.videowidgetsbox [this.capturer]));
-			w8.Position = 2;
 			this.downbox.Add (this.videowidgetsbox);
-			global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.downbox [this.videowidgetsbox]));
-			w9.Position = 0;
+			global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.downbox [this.videowidgetsbox]));
+			w8.Position = 0;
 			// Container child downbox.Gtk.Box+BoxChild
 			this.buttonswidget = new global::LongoMatch.Gui.Component.ButtonsWidget ();
 			this.buttonswidget.Events = ((global::Gdk.EventMask)(256));
 			this.buttonswidget.Name = "buttonswidget";
 			this.downbox.Add (this.buttonswidget);
-			global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.downbox [this.buttonswidget]));
-			w10.Position = 1;
-			w10.Expand = false;
+			global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.downbox [this.buttonswidget]));
+			w9.Position = 1;
+			w9.Expand = false;
 			// Container child downbox.Gtk.Box+BoxChild
 			this.gameunitstaggerwidget1 = new global::LongoMatch.Gui.Component.GameUnitsTagger ();
 			this.gameunitstaggerwidget1.Events = ((global::Gdk.EventMask)(256));
 			this.gameunitstaggerwidget1.Name = "gameunitstaggerwidget1";
 			this.downbox.Add (this.gameunitstaggerwidget1);
-			global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.downbox [this.gameunitstaggerwidget1]));
-			w11.Position = 2;
-			w11.Expand = false;
+			global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.downbox [this.gameunitstaggerwidget1]));
+			w10.Position = 2;
+			w10.Expand = false;
 			this.hpaned1.Add (this.downbox);
-			global::Gtk.Paned.PanedChild w12 = ((global::Gtk.Paned.PanedChild)(this.hpaned1 [this.downbox]));
-			w12.Resize = false;
-			w12.Shrink = false;
+			global::Gtk.Paned.PanedChild w11 = ((global::Gtk.Paned.PanedChild)(this.hpaned1 [this.downbox]));
+			w11.Resize = false;
+			w11.Shrink = false;
 			// Container child hpaned1.Gtk.Paned+PanedChild
 			this.rightvbox = new global::Gtk.VBox ();
 			this.rightvbox.WidthRequest = 100;
@@ -284,27 +276,27 @@ namespace LongoMatch.Gui
 			this.notes.Events = ((global::Gdk.EventMask)(256));
 			this.notes.Name = "notes";
 			this.rightvbox.Add (this.notes);
-			global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.rightvbox [this.notes]));
-			w13.Position = 0;
+			global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.rightvbox [this.notes]));
+			w12.Position = 0;
 			// Container child rightvbox.Gtk.Box+BoxChild
 			this.playlist = new global::LongoMatch.Gui.Component.PlayListWidget ();
 			this.playlist.WidthRequest = 100;
 			this.playlist.Events = ((global::Gdk.EventMask)(256));
 			this.playlist.Name = "playlist";
 			this.rightvbox.Add (this.playlist);
-			global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.rightvbox [this.playlist]));
-			w14.Position = 1;
+			global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.rightvbox [this.playlist]));
+			w13.Position = 1;
 			this.hpaned1.Add (this.rightvbox);
-			global::Gtk.Paned.PanedChild w15 = ((global::Gtk.Paned.PanedChild)(this.hpaned1 [this.rightvbox]));
+			global::Gtk.Paned.PanedChild w14 = ((global::Gtk.Paned.PanedChild)(this.hpaned1 [this.rightvbox]));
+			w14.Resize = false;
+			w14.Shrink = false;
+			this.hpaned.Add (this.hpaned1);
+			global::Gtk.Paned.PanedChild w15 = ((global::Gtk.Paned.PanedChild)(this.hpaned [this.hpaned1]));
 			w15.Resize = false;
 			w15.Shrink = false;
-			this.hpaned.Add (this.hpaned1);
-			global::Gtk.Paned.PanedChild w16 = ((global::Gtk.Paned.PanedChild)(this.hpaned [this.hpaned1]));
-			w16.Resize = false;
-			w16.Shrink = false;
 			this.vbox1.Add (this.hpaned);
-			global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.hpaned]));
-			w17.Position = 1;
+			global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.hpaned]));
+			w16.Position = 1;
 			// Container child vbox1.Gtk.Box+BoxChild
 			this.statusbar1 = new global::Gtk.Statusbar ();
 			this.statusbar1.Name = "statusbar1";
@@ -315,15 +307,15 @@ namespace LongoMatch.Gui
 			this.renderingstatebar1.Name = "renderingstatebar1";
 			this.renderingstatebar1.Fraction = 0;
 			this.statusbar1.Add (this.renderingstatebar1);
-			global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.statusbar1 [this.renderingstatebar1]));
+			global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.statusbar1 [this.renderingstatebar1]));
+			w17.Position = 2;
+			w17.Expand = false;
+			w17.Fill = false;
+			this.vbox1.Add (this.statusbar1);
+			global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.statusbar1]));
 			w18.Position = 2;
 			w18.Expand = false;
 			w18.Fill = false;
-			this.vbox1.Add (this.statusbar1);
-			global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.statusbar1]));
-			w19.Position = 2;
-			w19.Expand = false;
-			w19.Fill = false;
 			this.Add (this.vbox1);
 			if ((this.Child != null)) {
 				this.Child.ShowAll ();
@@ -351,9 +343,6 @@ namespace LongoMatch.Gui
 			this.ManualTaggingViewAction.Toggled += new global::System.EventHandler (this.OnViewToggled);
 			this.GameUnitsViewAction.Toggled += new global::System.EventHandler (this.OnViewToggled);
 			this.dialogInfoAction.Activated += new global::System.EventHandler (this.OnDialogInfoActionActivated);
-			this.player.Error += new global::LongoMatch.Handlers.ErrorHandler (this.OnPlayerbin1Error);
-			this.player.SegmentClosedEvent += new global::LongoMatch.Handlers.SegmentClosedHandler (this.OnSegmentClosedEvent);
-			this.capturer.Error += new global::LongoMatch.Handlers.ErrorHandler (this.OnCapturerBinError);
 		}
 	}
 }
diff --git a/LongoMatch.GUI/gtk-gui/gui.stetic b/LongoMatch.GUI/gtk-gui/gui.stetic
index 9831101..5aa3a73 100644
--- a/LongoMatch.GUI/gtk-gui/gui.stetic
+++ b/LongoMatch.GUI/gtk-gui/gui.stetic
@@ -1930,28 +1930,15 @@
                           </packing>
                         </child>
                         <child>
-                          <widget class="LongoMatch.Gui.PlayerBin" id="player">
+                          <widget class="LongoMatch.Gui.PlayerCapturerBin" id="playercapturer">
                             <property name="MemberName" />
                             <property name="Events">ButtonPressMask</property>
-                            <property name="Rate">1</property>
-                            <property name="ExpandLogo">True</property>
                             <property name="Detached">False</property>
-                            <signal name="Error" handler="OnPlayerbin1Error" />
-                            <signal name="SegmentClosedEvent" handler="OnSegmentClosedEvent" />
+                            <property name="ExpandLogo">False</property>
+                            <property name="Rate">0</property>
                           </widget>
                           <packing>
                             <property name="Position">1</property>
-                            <property name="AutoSize">True</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <widget class="LongoMatch.Gui.CapturerBin" id="capturer">
-                            <property name="MemberName" />
-                            <property name="Events">ButtonPressMask</property>
-                            <signal name="Error" handler="OnCapturerBinError" />
-                          </widget>
-                          <packing>
-                            <property name="Position">2</property>
                             <property name="AutoSize">False</property>
                           </packing>
                         </child>
@@ -6713,7 +6700,7 @@ Defining &lt;b&gt; Game Units &lt;/b&gt; will help you during the analysis to in
           <widget class="Gtk.Notebook" id="notebook2">
             <property name="MemberName" />
             <property name="CanFocus">True</property>
-            <property name="CurrentPage">1</property>
+            <property name="CurrentPage">0</property>
             <property name="TabPos">Left</property>
             <child>
               <widget class="Gtk.Notebook" id="notebook1">
diff --git a/LongoMatch.GUI/gtk-gui/objects.xml b/LongoMatch.GUI/gtk-gui/objects.xml
index 006521d..1afb28d 100644
--- a/LongoMatch.GUI/gtk-gui/objects.xml
+++ b/LongoMatch.GUI/gtk-gui/objects.xml
@@ -197,18 +197,6 @@
       </itemgroup>
     </signals>
   </object>
-  <object type="LongoMatch.Gui.Component.PlayersListTreeWidget" palette-category="General" allow-children="false" base-type="Gtk.Bin">
-    <itemgroups />
-    <signals>
-      <itemgroup label="PlayersListTreeWidget Signals">
-        <signal name="TimeNodeSelected" />
-        <signal name="TimeNodeChanged" />
-        <signal name="PlayListNodeAdded" />
-        <signal name="SnapshotSeriesEvent" />
-        <signal name="RenderPlaylistEvent" />
-      </itemgroup>
-    </signals>
-  </object>
   <object type="LongoMatch.Gui.Component.CategoriesFilterTreeView" palette-category="LongoMatch" allow-children="false" base-type="Gtk.TreeView">
     <itemgroups />
     <signals />
@@ -226,24 +214,53 @@
       </itemgroup>
     </signals>
   </object>
-  <object type="LongoMatch.Gui.Component.PlaysListTreeWidget" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
+  <object type="LongoMatch.Gui.Component.PlayersFilterTreeView" palette-category="LongoMatch" allow-children="false" base-type="Gtk.TreeView">
     <itemgroups />
+    <signals />
+  </object>
+  <object type="LongoMatch.Gui.Component.TeamTemplateEditorWidget" palette-category="General" allow-children="false" base-type="LongoMatch.Gui.Base.TemplatesEditorBase">
+    <itemgroups />
+    <signals />
+  </object>
+  <object type="LongoMatch.Gui.Component.StringTaggerWidget" palette-category="General" allow-children="false" base-type="Gtk.Bin">
+    <itemgroups />
+    <signals />
+  </object>
+  <object type="LongoMatch.Gui.Component.TimeScale" palette-category="LongoMatch" allow-children="false" base-type="Gtk.DrawingArea">
+    <itemgroups>
+      <itemgroup label="TimeScaleBase[LongoMatch.Store.Play] Properties">
+        <property name="PixelRatio" />
+        <property name="CurrentFrame" />
+      </itemgroup>
+    </itemgroups>
     <signals>
-      <itemgroup label="PlaysListTreeWidget Signals">
+      <itemgroup label="TimeScale Signals">
+        <signal name="NewMarkAtFrameEvent" />
+        <signal name="TimeNodeChanged" />
         <signal name="TimeNodeSelected" />
+        <signal name="TimeNodeDeleted" />
+      </itemgroup>
+    </signals>
+  </object>
+  <object type="LongoMatch.Gui.Component.PlaysTreeView" palette-category="LongoMatch" allow-children="false" base-type="Gtk.TreeView">
+    <itemgroups>
+      <itemgroup label="ListTreeViewBase Properties">
+        <property name="Colors" />
+      </itemgroup>
+    </itemgroups>
+    <signals>
+      <itemgroup label="PlaysTreeView Signals">
+        <signal name="EditProperties" />
         <signal name="TimeNodeChanged" />
+        <signal name="TimeNodeSelected" />
         <signal name="TimeNodeDeleted" />
         <signal name="PlayListNodeAdded" />
         <signal name="SnapshotSeriesEvent" />
         <signal name="TagPlay" />
-        <signal name="RenderPlaylistEvent" />
+        <signal name="NewRenderingJob" />
       </itemgroup>
     </signals>
   </object>
-  <object type="LongoMatch.Gui.Component.PlayersFilterTreeView" palette-category="LongoMatch" allow-children="false" base-type="Gtk.TreeView">
-    <itemgroups />
-    <signals />
-  </object>
   <object type="LongoMatch.Gui.Component.PlaysSelectionWidget" palette-category="General" allow-children="false" base-type="Gtk.Bin">
     <itemgroups />
     <signals>
@@ -257,6 +274,32 @@
       </itemgroup>
     </signals>
   </object>
+  <object type="LongoMatch.Gui.Component.PlaysListTreeWidget" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
+    <itemgroups />
+    <signals>
+      <itemgroup label="PlaysListTreeWidget Signals">
+        <signal name="TimeNodeSelected" />
+        <signal name="TimeNodeChanged" />
+        <signal name="TimeNodeDeleted" />
+        <signal name="PlayListNodeAdded" />
+        <signal name="SnapshotSeriesEvent" />
+        <signal name="TagPlay" />
+        <signal name="RenderPlaylistEvent" />
+      </itemgroup>
+    </signals>
+  </object>
+  <object type="LongoMatch.Gui.Component.PlayersListTreeWidget" palette-category="General" allow-children="false" base-type="Gtk.Bin">
+    <itemgroups />
+    <signals>
+      <itemgroup label="PlayersListTreeWidget Signals">
+        <signal name="TimeNodeSelected" />
+        <signal name="TimeNodeChanged" />
+        <signal name="PlayListNodeAdded" />
+        <signal name="SnapshotSeriesEvent" />
+        <signal name="RenderPlaylistEvent" />
+      </itemgroup>
+    </signals>
+  </object>
   <object type="LongoMatch.Gui.Component.ProjectDetailsWidget" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
     <itemgroups>
       <itemgroup label="ProjectDetailsWidget Properties">
diff --git a/libcesarplayer/liblongomatch.mdp b/libcesarplayer/liblongomatch.mdp
index a745b4c..11bf0e1 100644
--- a/libcesarplayer/liblongomatch.mdp
+++ b/libcesarplayer/liblongomatch.mdp
@@ -15,8 +15,6 @@
   </Configurations>
   <Contents>
     <File subtype="Directory" buildaction="Nothing" name="." />
-    <File subtype="Code" buildaction="Compile" name="bacon-resize.c" />
-    <File subtype="Code" buildaction="Nothing" name="bacon-resize.h" />
     <File subtype="Code" buildaction="Nothing" name="bacon-video-widget.h" />
     <File subtype="Code" buildaction="Compile" name="bacon-video-widget-gst-0.10.c" />
     <File subtype="Code" buildaction="Nothing" name="common.h" />



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