[longomatch: 2/7] Add fixed categories and time to the timeline widget



commit 308966847746ad2dde7207a425e8e53c00047981
Author: Andoni Morales Alastruey <ylatuya gmail com>
Date:   Sun Feb 6 01:05:01 2011 +0100

    Add fixed categories and time to the timeline widget

 LongoMatch/Gui/Component/TimeLineWidget.cs         |   52 +++++-
 LongoMatch/Gui/Component/TimeReferenceWidget.cs    |   36 +++-
 LongoMatch/LongoMatch.mdp                          |   24 ++--
 .../LongoMatch.Gui.Component.TimeLineWidget.cs     |  178 ++++++++++++++------
 LongoMatch/gtk-gui/LongoMatch.Gui.MainWindow.cs    |    1 -
 LongoMatch/gtk-gui/gui.stetic                      |  169 ++++++++++++++-----
 LongoMatch/gtk-gui/objects.xml                     |  116 +++++++++----
 7 files changed, 409 insertions(+), 167 deletions(-)
---
diff --git a/LongoMatch/Gui/Component/TimeLineWidget.cs b/LongoMatch/Gui/Component/TimeLineWidget.cs
index fe2aeaa..7979377 100644
--- a/LongoMatch/Gui/Component/TimeLineWidget.cs
+++ b/LongoMatch/Gui/Component/TimeLineWidget.cs
@@ -42,6 +42,7 @@ namespace LongoMatch.Gui.Component {
 		private List<List<MediaTimeNode>> tnArray;
 		private Sections sections;
 		private TimeReferenceWidget tr;
+		CategoriesScale cs;
 		private uint frames;
 		private uint pixelRatio;
 		private MediaTimeNode selected;
@@ -52,9 +53,24 @@ namespace LongoMatch.Gui.Component {
 		{
 			this.Build();
 			SetPixelRatio(10);
-			vscale1.CanFocus = false;
+			zoomscale.CanFocus = false;
+			
+			GtkScrolledWindow.Vadjustment.ValueChanged += HandleScrollEvent;
+			GtkScrolledWindow.Hadjustment.ValueChanged += HandleScrollEvent;
+			
+			GtkScrolledWindow.HScrollbar.SizeAllocated += OnSizeAllocated;
+			
+			cs = new CategoriesScale();
+			cs.WidthRequest = 100;
+			categoriesbox.PackStart(cs, false, false, 0);
+			
+			tr = new TimeReferenceWidget();
+			timescalebox.PackStart(tr,false,false,0);
+			
+			tr.HeightRequest = 50 - leftbox.Spacing; 
+			toolsbox.HeightRequest = 50 - leftbox.Spacing;
 		}
-
+		
 		public MediaTimeNode SelectedTimeNode {
 			get {
 				return selected;
@@ -112,7 +128,6 @@ namespace LongoMatch.Gui.Component {
 			}
 		}
 
-
 		private void SetPixelRatio(uint pixelRatio) {
 			if (tsArray != null && tnArray != null) {
 				this.pixelRatio = pixelRatio;
@@ -120,7 +135,7 @@ namespace LongoMatch.Gui.Component {
 				foreach (TimeScale  ts in tsArray) {
 					ts.PixelRatio = pixelRatio;
 				}
-				vscale1.Value=pixelRatio;
+				zoomscale.Value=pixelRatio;
 			}
 		}
 
@@ -136,16 +151,18 @@ namespace LongoMatch.Gui.Component {
 					return;
 				}
 
+				frames = value.File.GetFrames();
 				sections = value.Sections;
 				tnArray = value.GetDataArray();
 				tsArray = new TimeScale[sections.Count];
 
-				frames = value.File.GetFrames();
-				ushort fps = value.File.Fps;
+				cs.Categories = sections;
+				cs.Show();
 
-				tr = new TimeReferenceWidget(frames,fps);
-				vbox1.PackStart(tr,false,false,0);
+				tr.Frames = frames;
+				tr.FrameRate = value.File.Fps;
 				tr.Show();
+				
 				for (int i=0; i<sections.Count; i++) {
 					TimeScale ts = new TimeScale(i,tnArray[i],frames,sections.GetColor(i));
 					tsArray[i]=ts;
@@ -192,11 +209,26 @@ namespace LongoMatch.Gui.Component {
 			AdjustPostion(currentFrame);
 		}
 
-		protected virtual void OnVscale1ValueChanged(object sender, System.EventArgs e)
+		protected virtual void OnZoomscaleValueChanged(object sender, System.EventArgs e)
 		{
-			SetPixelRatio((uint)(vscale1.Value));
+			SetPixelRatio((uint)(zoomscale.Value));
 			QueueDraw();
 			AdjustPostion(currentFrame);
 		}
+		
+		protected virtual void HandleScrollEvent (object sender, System.EventArgs args)
+		{
+			if (sender == GtkScrolledWindow.Vadjustment)
+				cs.Scroll = GtkScrolledWindow.Vadjustment.Value;
+			else if (sender == GtkScrolledWindow.Hadjustment)
+				tr.Scroll = GtkScrolledWindow.Hadjustment.Value;
+		}
+		
+		protected virtual void OnSizeAllocated (object sender, SizeAllocatedArgs e)
+		{
+			/* Align the categories list widget on top of the timeline's horizontal bar */
+			if (sender == GtkScrolledWindow.HScrollbar)
+				categoriesalignment1.BottomPadding = (uint) GtkScrolledWindow.HScrollbar.Allocation.Height;
+		}
 	}
 }
diff --git a/LongoMatch/Gui/Component/TimeReferenceWidget.cs b/LongoMatch/Gui/Component/TimeReferenceWidget.cs
index c152c20..5030135 100644
--- a/LongoMatch/Gui/Component/TimeReferenceWidget.cs
+++ b/LongoMatch/Gui/Component/TimeReferenceWidget.cs
@@ -34,27 +34,44 @@ namespace LongoMatch.Gui.Component
 	public partial class TimeReferenceWidget : Gtk.DrawingArea
 	{
 		private const int SECTION_HEIGHT = 30;
-		ushort frameRate;
-		uint currentFrame;
+		double scroll;
 		uint frames;
 		uint pixelRatio=10;//Número de frames por pixel
 		Pango.Layout layout;
 
-		public TimeReferenceWidget(uint frames,ushort frameRate)
+		public TimeReferenceWidget()
 		{
-			this.frameRate = frameRate;
-			this.frames = frames;
+			Frames = 1;
+			PixelRatio = 1;
+			FrameRate = 1;
+			
 			this.HeightRequest= SECTION_HEIGHT;
-			this.Size((int)(this.frames/pixelRatio),SECTION_HEIGHT);
 			layout = new Pango.Layout(this.PangoContext);
 		}
 
 		public uint CurrentFrame {
+			get;
+			set;
+		}
+		
+		public uint Frames {
+			set{
+				frames = value;
+			}
+		}
+		
+		public ushort FrameRate {
+			set;
+			get;
+		}
+		
+		public double Scroll {
 			get {
-				return this.currentFrame;
+				return scroll;
 			}
 			set {
-				this.currentFrame = value;
+				scroll = value;
+				QueueDraw();
 			}
 		}
 
@@ -63,8 +80,7 @@ namespace LongoMatch.Gui.Component
 				return pixelRatio;
 			}
 			set {
-				this.pixelRatio = value;
-				this.Size((int)(this.frames/pixelRatio),SECTION_HEIGHT);
+				pixelRatio = value;
 			}
 		}
 
diff --git a/LongoMatch/LongoMatch.mdp b/LongoMatch/LongoMatch.mdp
index 4d7af62..9105d45 100644
--- a/LongoMatch/LongoMatch.mdp
+++ b/LongoMatch/LongoMatch.mdp
@@ -1,4 +1,14 @@
 <Project name="LongoMatch" fileversion="2.0" DefaultNamespace="LongoMatch" language="C#" clr-version="Net_2_0" targetFramework="3.5" ctype="DotNetProject">
+  <Deployment.LinuxDeployData />
+  <MonoDevelop.Autotools.MakefileInfo RelativeMakefileName="../CesarPlayer/Makefile.am" RelativeConfigureInPath="../">
+    <BuildFilesVar Name="FILES" />
+    <DeployFilesVar />
+    <ResourcesVar Name="RESOURCES" />
+    <OthersVar />
+    <GacRefVar Name="REFERENCES" />
+    <AsmRefVar Name="REFERENCES" />
+    <ProjectRefVar Name="REFERENCES" />
+  </MonoDevelop.Autotools.MakefileInfo>
   <Configurations active="Release">
     <Configuration name="Debug" ctype="DotNetProjectConfiguration">
       <Output directory="bin/Debug" assembly="LongoMatch.exe" assemblyKeyFile="." />
@@ -185,6 +195,8 @@
     <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.EndCaptureDialog.cs" />
     <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.BusyDialog.cs" />
     <File subtype="Code" buildaction="Compile" name="Gui/TreeView/ListTreeViewBase.cs" />
+    <File subtype="Code" buildaction="Compile" name="Gui/Component/CategoriesScale.cs" />
+    <File subtype="Code" buildaction="Compile" name="Common/Cairo.cs" />
   </Contents>
   <References>
     <ProjectReference type="Gac" localcopy="True" refto="Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
@@ -197,17 +209,7 @@
     <ProjectReference type="Gac" localcopy="True" refto="glib-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
     <ProjectReference type="Gac" localcopy="True" refto="gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
     <ProjectReference type="Gac" localcopy="True" refto="pango-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
-    <ProjectReference type="Assembly" localcopy="True" specificVersion="False" refto="../../../../../usr/lib/mono/gac/Db4objects.Db4o/7.4.121.14026__6199cd4f203aa8eb/Db4objects.Db4o.dll" />
+    <ProjectReference specificVersion="False" type="Assembly" localcopy="True" refto="../../../../../usr/lib/mono/gac/Db4objects.Db4o/7.4.121.14026__6199cd4f203aa8eb/Db4objects.Db4o.dll" />
   </References>
   <LanguageParameters StartupObject="LongoMatch.MainClass" ApplicationIcon="." CodePage="65001" ctype="CSharpProjectParameters" />
-  <Deployment.LinuxDeployData />
-  <MonoDevelop.Autotools.MakefileInfo RelativeMakefileName="../CesarPlayer/Makefile.am" RelativeConfigureInPath="../">
-    <BuildFilesVar Name="FILES" />
-    <DeployFilesVar />
-    <ResourcesVar Name="RESOURCES" />
-    <OthersVar />
-    <GacRefVar Name="REFERENCES" />
-    <AsmRefVar Name="REFERENCES" />
-    <ProjectRefVar Name="REFERENCES" />
-  </MonoDevelop.Autotools.MakefileInfo>
 </Project>
\ No newline at end of file
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.TimeLineWidget.cs b/LongoMatch/gtk-gui/LongoMatch.Gui.Component.TimeLineWidget.cs
index 80e1305..acfcc09 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.Component.TimeLineWidget.cs
+++ b/LongoMatch/gtk-gui/LongoMatch.Gui.Component.TimeLineWidget.cs
@@ -4,13 +4,29 @@ namespace LongoMatch.Gui.Component
 {
 	public partial class TimeLineWidget
 	{
+		private global::Gtk.VBox vbox3;
+
+		private global::Gtk.HSeparator hseparator1;
+
 		private global::Gtk.HBox hbox3;
 
-		private global::Gtk.VBox vbox3;
+		private global::Gtk.VBox leftbox;
+
+		private global::Gtk.HBox toolsbox;
 
 		private global::Gtk.Button fitbutton;
 
-		private global::Gtk.VScale vscale1;
+		private global::Gtk.HScale zoomscale;
+
+		private global::Gtk.Alignment categoriesalignment1;
+
+		private global::Gtk.HBox categoriesbox;
+
+		private global::Gtk.VSeparator vseparator1;
+
+		private global::Gtk.VBox vbox2;
+
+		private global::Gtk.VBox timescalebox;
 
 		private global::Gtk.ScrolledWindow GtkScrolledWindow;
 
@@ -23,81 +39,137 @@ namespace LongoMatch.Gui.Component
 			global::Stetic.BinContainer.Attach (this);
 			this.Name = "LongoMatch.Gui.Component.TimeLineWidget";
 			// Container child LongoMatch.Gui.Component.TimeLineWidget.Gtk.Container+ContainerChild
-			this.hbox3 = new global::Gtk.HBox ();
-			this.hbox3.Name = "hbox3";
-			this.hbox3.Spacing = 6;
-			// Container child hbox3.Gtk.Box+BoxChild
 			this.vbox3 = new global::Gtk.VBox ();
 			this.vbox3.Name = "vbox3";
 			this.vbox3.Spacing = 6;
 			// Container child vbox3.Gtk.Box+BoxChild
+			this.hseparator1 = new global::Gtk.HSeparator ();
+			this.hseparator1.Name = "hseparator1";
+			this.vbox3.Add (this.hseparator1);
+			global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.hseparator1]));
+			w1.Position = 0;
+			w1.Expand = false;
+			w1.Fill = false;
+			// Container child vbox3.Gtk.Box+BoxChild
+			this.hbox3 = new global::Gtk.HBox ();
+			this.hbox3.Name = "hbox3";
+			// Container child hbox3.Gtk.Box+BoxChild
+			this.leftbox = new global::Gtk.VBox ();
+			this.leftbox.Name = "leftbox";
+			this.leftbox.Spacing = 6;
+			// Container child leftbox.Gtk.Box+BoxChild
+			this.toolsbox = new global::Gtk.HBox ();
+			this.toolsbox.Name = "toolsbox";
+			this.toolsbox.Spacing = 6;
+			// Container child toolsbox.Gtk.Box+BoxChild
 			this.fitbutton = new global::Gtk.Button ();
 			this.fitbutton.Name = "fitbutton";
 			this.fitbutton.UseUnderline = true;
 			// Container child fitbutton.Gtk.Container+ContainerChild
-			global::Gtk.Alignment w1 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
+			global::Gtk.Alignment w2 = new global::Gtk.Alignment (0.5f, 0.5f, 0f, 0f);
 			// Container child GtkAlignment.Gtk.Container+ContainerChild
-			global::Gtk.HBox w2 = new global::Gtk.HBox ();
-			w2.Spacing = 2;
+			global::Gtk.HBox w3 = new global::Gtk.HBox ();
+			w3.Spacing = 2;
 			// Container child GtkHBox.Gtk.Container+ContainerChild
-			global::Gtk.Image w3 = new global::Gtk.Image ();
-			w3.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-zoom-fit", global::Gtk.IconSize.Button);
-			w2.Add (w3);
+			global::Gtk.Image w4 = new global::Gtk.Image ();
+			w4.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-zoom-fit", global::Gtk.IconSize.Button);
+			w3.Add (w4);
 			// Container child GtkHBox.Gtk.Container+ContainerChild
-			global::Gtk.Label w5 = new global::Gtk.Label ();
-			w2.Add (w5);
-			w1.Add (w2);
-			this.fitbutton.Add (w1);
-			this.vbox3.Add (this.fitbutton);
-			global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.fitbutton]));
-			w9.Position = 0;
-			w9.Expand = false;
-			w9.Fill = false;
-			// Container child vbox3.Gtk.Box+BoxChild
-			this.vscale1 = new global::Gtk.VScale (null);
-			this.vscale1.Name = "vscale1";
-			this.vscale1.UpdatePolicy = ((global::Gtk.UpdateType)(1));
-			this.vscale1.Inverted = true;
-			this.vscale1.Adjustment.Lower = 1;
-			this.vscale1.Adjustment.Upper = 100;
-			this.vscale1.Adjustment.PageIncrement = 10;
-			this.vscale1.Adjustment.StepIncrement = 1;
-			this.vscale1.Adjustment.Value = 3;
-			this.vscale1.DrawValue = true;
-			this.vscale1.Digits = 0;
-			this.vscale1.ValuePos = ((global::Gtk.PositionType)(3));
-			this.vbox3.Add (this.vscale1);
-			global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.vscale1]));
-			w10.PackType = ((global::Gtk.PackType)(1));
-			w10.Position = 1;
-			this.hbox3.Add (this.vbox3);
-			global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.vbox3]));
-			w11.Position = 0;
-			w11.Expand = false;
-			w11.Fill = false;
+			global::Gtk.Label w6 = new global::Gtk.Label ();
+			w3.Add (w6);
+			w2.Add (w3);
+			this.fitbutton.Add (w2);
+			this.toolsbox.Add (this.fitbutton);
+			global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.toolsbox[this.fitbutton]));
+			w10.Position = 0;
+			w10.Expand = false;
+			w10.Fill = false;
+			// Container child toolsbox.Gtk.Box+BoxChild
+			this.zoomscale = new global::Gtk.HScale (null);
+			this.zoomscale.CanFocus = true;
+			this.zoomscale.Name = "zoomscale";
+			this.zoomscale.UpdatePolicy = ((global::Gtk.UpdateType)(1));
+			this.zoomscale.Adjustment.Lower = 1;
+			this.zoomscale.Adjustment.Upper = 100;
+			this.zoomscale.Adjustment.PageIncrement = 10;
+			this.zoomscale.Adjustment.StepIncrement = 1;
+			this.zoomscale.Adjustment.Value = 1;
+			this.zoomscale.DrawValue = true;
+			this.zoomscale.Digits = 0;
+			this.zoomscale.ValuePos = ((global::Gtk.PositionType)(2));
+			this.toolsbox.Add (this.zoomscale);
+			global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.toolsbox[this.zoomscale]));
+			w11.Position = 1;
+			this.leftbox.Add (this.toolsbox);
+			global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.leftbox[this.toolsbox]));
+			w12.Position = 0;
+			w12.Expand = false;
+			w12.Fill = false;
+			// Container child leftbox.Gtk.Box+BoxChild
+			this.categoriesalignment1 = new global::Gtk.Alignment (0.5f, 0.5f, 1f, 1f);
+			this.categoriesalignment1.Name = "categoriesalignment1";
+			// Container child categoriesalignment1.Gtk.Container+ContainerChild
+			this.categoriesbox = new global::Gtk.HBox ();
+			this.categoriesbox.Name = "categoriesbox";
+			this.categoriesbox.Spacing = 6;
+			this.categoriesalignment1.Add (this.categoriesbox);
+			this.leftbox.Add (this.categoriesalignment1);
+			global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.leftbox[this.categoriesalignment1]));
+			w14.Position = 1;
+			this.hbox3.Add (this.leftbox);
+			global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.leftbox]));
+			w15.Position = 0;
+			w15.Expand = false;
+			w15.Fill = false;
+			// Container child hbox3.Gtk.Box+BoxChild
+			this.vseparator1 = new global::Gtk.VSeparator ();
+			this.vseparator1.Name = "vseparator1";
+			this.hbox3.Add (this.vseparator1);
+			global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.vseparator1]));
+			w16.Position = 1;
+			w16.Expand = false;
+			w16.Fill = false;
 			// Container child hbox3.Gtk.Box+BoxChild
+			this.vbox2 = new global::Gtk.VBox ();
+			this.vbox2.Name = "vbox2";
+			this.vbox2.Spacing = 6;
+			// Container child vbox2.Gtk.Box+BoxChild
+			this.timescalebox = new global::Gtk.VBox ();
+			this.timescalebox.Name = "timescalebox";
+			this.timescalebox.Spacing = 6;
+			this.vbox2.Add (this.timescalebox);
+			global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.timescalebox]));
+			w17.Position = 0;
+			w17.Expand = false;
+			w17.Fill = false;
+			// Container child vbox2.Gtk.Box+BoxChild
 			this.GtkScrolledWindow = new global::Gtk.ScrolledWindow ();
 			this.GtkScrolledWindow.Name = "GtkScrolledWindow";
 			this.GtkScrolledWindow.ShadowType = ((global::Gtk.ShadowType)(1));
 			// Container child GtkScrolledWindow.Gtk.Container+ContainerChild
-			global::Gtk.Viewport w12 = new global::Gtk.Viewport ();
-			w12.ShadowType = ((global::Gtk.ShadowType)(0));
+			global::Gtk.Viewport w18 = new global::Gtk.Viewport ();
+			w18.ShadowType = ((global::Gtk.ShadowType)(0));
 			// Container child GtkViewport.Gtk.Container+ContainerChild
 			this.vbox1 = new global::Gtk.VBox ();
 			this.vbox1.Name = "vbox1";
-			this.vbox1.BorderWidth = ((uint)(2));
-			w12.Add (this.vbox1);
-			this.GtkScrolledWindow.Add (w12);
-			this.hbox3.Add (this.GtkScrolledWindow);
-			global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.GtkScrolledWindow]));
-			w15.Position = 1;
-			this.Add (this.hbox3);
+			w18.Add (this.vbox1);
+			this.GtkScrolledWindow.Add (w18);
+			this.vbox2.Add (this.GtkScrolledWindow);
+			global::Gtk.Box.BoxChild w21 = ((global::Gtk.Box.BoxChild)(this.vbox2[this.GtkScrolledWindow]));
+			w21.Position = 1;
+			this.hbox3.Add (this.vbox2);
+			global::Gtk.Box.BoxChild w22 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.vbox2]));
+			w22.Position = 2;
+			this.vbox3.Add (this.hbox3);
+			global::Gtk.Box.BoxChild w23 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.hbox3]));
+			w23.Position = 1;
+			this.Add (this.vbox3);
 			if ((this.Child != null)) {
 				this.Child.ShowAll ();
 			}
 			this.Show ();
 			this.fitbutton.Clicked += new global::System.EventHandler (this.OnFitbuttonClicked);
-			this.vscale1.ValueChanged += new global::System.EventHandler (this.OnVscale1ValueChanged);
+			this.zoomscale.ValueChanged += new global::System.EventHandler (this.OnZoomscaleValueChanged);
 		}
 	}
 }
diff --git a/LongoMatch/gtk-gui/LongoMatch.Gui.MainWindow.cs b/LongoMatch/gtk-gui/LongoMatch.Gui.MainWindow.cs
index 6a17ee0..942f928 100644
--- a/LongoMatch/gtk-gui/LongoMatch.Gui.MainWindow.cs
+++ b/LongoMatch/gtk-gui/LongoMatch.Gui.MainWindow.cs
@@ -440,7 +440,6 @@ namespace LongoMatch.Gui
 			this.playerbin1.Error += new global::LongoMatch.Video.Common.ErrorHandler (this.OnPlayerbin1Error);
 			this.playerbin1.SegmentClosedEvent += new global::LongoMatch.Video.Common.SegmentClosedHandler (this.OnSegmentClosedEvent);
 			this.capturerBin.Error += new global::LongoMatch.Video.Common.ErrorHandler (this.OnCapturerBinError);
-			this.timelinewidget1.TimeNodeSelected += new global::LongoMatch.Handlers.TimeNodeSelectedHandler (this.OnTimeNodeSelected);
 		}
 	}
 }
diff --git a/LongoMatch/gtk-gui/gui.stetic b/LongoMatch/gtk-gui/gui.stetic
index f22a5de..d620879 100644
--- a/LongoMatch/gtk-gui/gui.stetic
+++ b/LongoMatch/gtk-gui/gui.stetic
@@ -2120,7 +2120,6 @@
                         <property name="Visible">False</property>
                         <property name="Events">ButtonPressMask</property>
                         <property name="CurrentFrame">0</property>
-                        <signal name="TimeNodeSelected" handler="OnTimeNodeSelected" />
                       </widget>
                       <packing>
                         <property name="Position">1</property>
@@ -2827,86 +2826,164 @@ new one.</property>
       </widget>
     </child>
   </widget>
-  <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.TimeLineWidget" design-size="907 229">
+  <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.TimeLineWidget" design-size="535 229">
     <property name="MemberName" />
     <child>
-      <widget class="Gtk.HBox" id="hbox3">
+      <widget class="Gtk.VBox" id="vbox3">
         <property name="MemberName" />
         <property name="Spacing">6</property>
         <child>
-          <widget class="Gtk.VBox" id="vbox3">
+          <widget class="Gtk.HSeparator" id="hseparator1">
+            <property name="MemberName" />
+          </widget>
+          <packing>
+            <property name="Position">0</property>
+            <property name="AutoSize">True</property>
+            <property name="Expand">False</property>
+            <property name="Fill">False</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="Gtk.HBox" id="hbox3">
             <property name="MemberName" />
-            <property name="Spacing">6</property>
             <child>
-              <widget class="Gtk.Button" id="fitbutton">
+              <widget class="Gtk.VBox" id="leftbox">
                 <property name="MemberName" />
-                <property name="Type">TextAndIcon</property>
-                <property name="Icon">stock:gtk-zoom-fit Button</property>
-                <property name="Label" translatable="yes" />
-                <property name="UseUnderline">True</property>
-                <signal name="Clicked" handler="OnFitbuttonClicked" />
+                <property name="Spacing">6</property>
+                <child>
+                  <widget class="Gtk.HBox" id="toolsbox">
+                    <property name="MemberName" />
+                    <property name="Spacing">6</property>
+                    <child>
+                      <widget class="Gtk.Button" id="fitbutton">
+                        <property name="MemberName" />
+                        <property name="Type">TextAndIcon</property>
+                        <property name="Icon">stock:gtk-zoom-fit Button</property>
+                        <property name="Label" translatable="yes" />
+                        <property name="UseUnderline">True</property>
+                        <signal name="Clicked" handler="OnFitbuttonClicked" />
+                      </widget>
+                      <packing>
+                        <property name="Position">0</property>
+                        <property name="AutoSize">True</property>
+                        <property name="Expand">False</property>
+                        <property name="Fill">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="Gtk.HScale" id="zoomscale">
+                        <property name="MemberName" />
+                        <property name="CanFocus">True</property>
+                        <property name="UpdatePolicy">Discontinuous</property>
+                        <property name="Lower">1</property>
+                        <property name="Upper">100</property>
+                        <property name="PageIncrement">10</property>
+                        <property name="StepIncrement">1</property>
+                        <property name="Value">1</property>
+                        <property name="DrawValue">True</property>
+                        <property name="Digits">0</property>
+                        <property name="ValuePos">Top</property>
+                        <signal name="ValueChanged" handler="OnZoomscaleValueChanged" />
+                      </widget>
+                      <packing>
+                        <property name="Position">1</property>
+                        <property name="AutoSize">True</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="Position">0</property>
+                    <property name="AutoSize">True</property>
+                    <property name="Expand">False</property>
+                    <property name="Fill">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="Gtk.Alignment" id="categoriesalignment1">
+                    <property name="MemberName" />
+                    <child>
+                      <widget class="Gtk.HBox" id="categoriesbox">
+                        <property name="MemberName" />
+                        <property name="Spacing">6</property>
+                        <child>
+                          <placeholder />
+                        </child>
+                      </widget>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="Position">1</property>
+                    <property name="AutoSize">True</property>
+                  </packing>
+                </child>
               </widget>
               <packing>
                 <property name="Position">0</property>
-                <property name="AutoSize">True</property>
+                <property name="AutoSize">False</property>
                 <property name="Expand">False</property>
                 <property name="Fill">False</property>
               </packing>
             </child>
             <child>
-              <widget class="Gtk.VScale" id="vscale1">
+              <widget class="Gtk.VSeparator" id="vseparator1">
                 <property name="MemberName" />
-                <property name="UpdatePolicy">Discontinuous</property>
-                <property name="Inverted">True</property>
-                <property name="Lower">1</property>
-                <property name="Upper">100</property>
-                <property name="PageIncrement">10</property>
-                <property name="StepIncrement">1</property>
-                <property name="Value">3</property>
-                <property name="DrawValue">True</property>
-                <property name="Digits">0</property>
-                <property name="ValuePos">Bottom</property>
-                <signal name="ValueChanged" handler="OnVscale1ValueChanged" />
               </widget>
               <packing>
-                <property name="PackType">End</property>
                 <property name="Position">1</property>
                 <property name="AutoSize">True</property>
+                <property name="Expand">False</property>
+                <property name="Fill">False</property>
               </packing>
             </child>
-          </widget>
-          <packing>
-            <property name="Position">0</property>
-            <property name="AutoSize">True</property>
-            <property name="Expand">False</property>
-            <property name="Fill">False</property>
-          </packing>
-        </child>
-        <child>
-          <widget class="Gtk.ScrolledWindow" id="GtkScrolledWindow">
-            <property name="MemberName" />
-            <property name="ShadowType">In</property>
             <child>
-              <widget class="Gtk.Viewport" id="GtkViewport">
+              <widget class="Gtk.VBox" id="vbox2">
                 <property name="MemberName" />
-                <property name="ShadowType">None</property>
+                <property name="Spacing">6</property>
                 <child>
-                  <widget class="Gtk.VBox" id="vbox1">
+                  <widget class="Gtk.VBox" id="timescalebox">
                     <property name="MemberName" />
-                    <property name="ShowScrollbars">True</property>
-                    <property name="BorderWidth">2</property>
-                    <child>
-                      <placeholder />
-                    </child>
+                    <property name="Spacing">6</property>
                     <child>
                       <placeholder />
                     </child>
+                  </widget>
+                  <packing>
+                    <property name="Position">0</property>
+                    <property name="AutoSize">False</property>
+                    <property name="Expand">False</property>
+                    <property name="Fill">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="Gtk.ScrolledWindow" id="GtkScrolledWindow">
+                    <property name="MemberName" />
+                    <property name="ShadowType">In</property>
                     <child>
-                      <placeholder />
+                      <widget class="Gtk.Viewport" id="GtkViewport">
+                        <property name="MemberName" />
+                        <property name="ShadowType">None</property>
+                        <child>
+                          <widget class="Gtk.VBox" id="vbox1">
+                            <property name="MemberName" />
+                            <property name="ShowScrollbars">True</property>
+                            <child>
+                              <placeholder />
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
                     </child>
                   </widget>
+                  <packing>
+                    <property name="Position">1</property>
+                    <property name="AutoSize">True</property>
+                  </packing>
                 </child>
               </widget>
+              <packing>
+                <property name="Position">2</property>
+                <property name="AutoSize">True</property>
+              </packing>
             </child>
           </widget>
           <packing>
diff --git a/LongoMatch/gtk-gui/objects.xml b/LongoMatch/gtk-gui/objects.xml
index 45894a6..b669ed1 100644
--- a/LongoMatch/gtk-gui/objects.xml
+++ b/LongoMatch/gtk-gui/objects.xml
@@ -77,6 +77,8 @@
       <itemgroup label="TimeReferenceWidget Properties">
         <property name="CurrentFrame" />
         <property name="PixelRatio" />
+        <property name="Scroll" />
+        <property name="FrameRate" />
       </itemgroup>
     </itemgroups>
     <signals />
@@ -98,16 +100,6 @@
       </itemgroup>
     </signals>
   </object>
-  <object type="LongoMatch.Gui.Component.ButtonsWidget" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
-    <itemgroups />
-    <signals>
-      <itemgroup label="ButtonsWidget Signals">
-        <signal name="NewMarkEvent" />
-        <signal name="NewMarkStartEvent" />
-        <signal name="NewMarkStopEvent" />
-      </itemgroup>
-    </signals>
-  </object>
   <object type="LongoMatch.Gui.Component.PlayerProperties" palette-category="General" allow-children="false" base-type="Gtk.Bin">
     <itemgroups />
     <signals />
@@ -131,22 +123,6 @@
       </itemgroup>
     </signals>
   </object>
-  <object type="LongoMatch.Gui.Component.ProjectListWidget" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
-    <itemgroups />
-    <signals>
-      <itemgroup label="ProjectListWidget Signals">
-        <signal name="ProjectsSelected" />
-      </itemgroup>
-    </signals>
-  </object>
-  <object type="LongoMatch.Gui.Component.CategoryProperties" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
-    <itemgroups />
-    <signals>
-      <itemgroup label="CategoryProperties Signals">
-        <signal name="HotKeyChanged" />
-      </itemgroup>
-    </signals>
-  </object>
   <object type="LongoMatch.Gui.Component.DrawingToolBox" palette-category="General" allow-children="false" base-type="Gtk.Bin">
     <itemgroups />
     <signals>
@@ -168,16 +144,6 @@
     </itemgroups>
     <signals />
   </object>
-  <object type="LongoMatch.Gui.Component.PlayListWidget" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
-    <itemgroups />
-    <signals>
-      <itemgroup label="PlayListWidget Signals">
-        <signal name="PlayListNodeSelected" />
-        <signal name="ApplyCurrentRate" />
-        <signal name="Progress" />
-      </itemgroup>
-    </signals>
-  </object>
   <object type="LongoMatch.Gui.Component.PlayersListTreeWidget" palette-category="General" allow-children="false" base-type="Gtk.Bin">
     <itemgroups />
     <signals>
@@ -218,6 +184,58 @@
     <itemgroups />
     <signals />
   </object>
+  <object type="LongoMatch.Gui.Component.TagsTreeView" palette-category="LongoMatch" allow-children="false" base-type="Gtk.TreeView">
+    <itemgroups />
+    <signals>
+      <itemgroup label="ListTreeViewBase Signals">
+        <signal name="TimeNodeChanged" />
+        <signal name="TimeNodeSelected" />
+        <signal name="TimeNodeDeleted" />
+        <signal name="PlayListNodeAdded" />
+        <signal name="SnapshotSeriesEvent" />
+        <signal name="PlayersTagged" />
+        <signal name="TagPlay" />
+      </itemgroup>
+    </signals>
+  </object>
+  <object type="LongoMatch.Gui.Component.PlayersTreeView" palette-category="LongoMatch" allow-children="false" base-type="Gtk.TreeView">
+    <itemgroups />
+    <signals>
+      <itemgroup label="ListTreeViewBase Signals">
+        <signal name="TimeNodeChanged" />
+        <signal name="TimeNodeSelected" />
+        <signal name="TimeNodeDeleted" />
+        <signal name="PlayListNodeAdded" />
+        <signal name="SnapshotSeriesEvent" />
+        <signal name="PlayersTagged" />
+        <signal name="TagPlay" />
+      </itemgroup>
+    </signals>
+  </object>
+  <object type="LongoMatch.Gui.Component.PlaysTreeView" palette-category="LongoMatch" allow-children="false" base-type="Gtk.TreeView">
+    <itemgroups />
+    <signals>
+      <itemgroup label="ListTreeViewBase Signals">
+        <signal name="TimeNodeChanged" />
+        <signal name="TimeNodeSelected" />
+        <signal name="TimeNodeDeleted" />
+        <signal name="PlayListNodeAdded" />
+        <signal name="SnapshotSeriesEvent" />
+        <signal name="PlayersTagged" />
+        <signal name="TagPlay" />
+      </itemgroup>
+    </signals>
+  </object>
+  <object type="LongoMatch.Gui.Component.PlayListWidget" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
+    <itemgroups />
+    <signals>
+      <itemgroup label="PlayListWidget Signals">
+        <signal name="PlayListNodeSelected" />
+        <signal name="ApplyCurrentRate" />
+        <signal name="Progress" />
+      </itemgroup>
+    </signals>
+  </object>
   <object type="LongoMatch.Gui.Component.TaggerWidget" palette-category="General" allow-children="false" base-type="Gtk.Bin">
     <itemgroups />
     <signals />
@@ -226,4 +244,30 @@
     <itemgroups />
     <signals />
   </object>
+  <object type="LongoMatch.Gui.Component.ProjectListWidget" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
+    <itemgroups />
+    <signals>
+      <itemgroup label="ProjectListWidget Signals">
+        <signal name="ProjectsSelected" />
+      </itemgroup>
+    </signals>
+  </object>
+  <object type="LongoMatch.Gui.Component.ButtonsWidget" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
+    <itemgroups />
+    <signals>
+      <itemgroup label="ButtonsWidget Signals">
+        <signal name="NewMarkEvent" />
+        <signal name="NewMarkStartEvent" />
+        <signal name="NewMarkStopEvent" />
+      </itemgroup>
+    </signals>
+  </object>
+  <object type="LongoMatch.Gui.Component.CategoryProperties" palette-category="LongoMatch" allow-children="false" base-type="Gtk.Bin">
+    <itemgroups />
+    <signals>
+      <itemgroup label="CategoryProperties Signals">
+        <signal name="HotKeyChanged" />
+      </itemgroup>
+    </signals>
+  </object>
 </objects>
\ No newline at end of file



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