[longomatch] Add support to display drawings in the player again
- From: Andoni Morales Alastruey <amorales src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [longomatch] Add support to display drawings in the player again
- Date: Mon, 7 Jul 2014 11:32:55 +0000 (UTC)
commit 636d1ccf5b4f3c9c9b13d25f21fd7f6e03010a28
Author: Andoni Morales Alastruey <ylatuya gmail com>
Date: Mon Jun 30 18:49:59 2014 +0200
Add support to display drawings in the player again
LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs | 70 ++++-
.../LongoMatch.GUI.Multimedia.mdp | 3 +
.../gtk-gui/LongoMatch.Gui.PlayerBin.cs | 328 ++++++++++----------
LongoMatch.GUI.Multimedia/gtk-gui/gui.stetic | 28 +-
4 files changed, 247 insertions(+), 182 deletions(-)
---
diff --git a/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs b/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs
index 4140f68..e58b69e 100644
--- a/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs
+++ b/LongoMatch.GUI.Multimedia/Gui/PlayerBin.cs
@@ -18,6 +18,7 @@
//
//
using System;
+using System.Linq;
using Gtk;
using Gdk;
using Mono.Unix;
@@ -33,6 +34,8 @@ using LongoMatch.Video.Player;
using LongoMatch.Video.Utils;
using LongoMatch.Store;
using LongoMatch.Multimedia.Utils;
+using LongoMatch.Drawing.Widgets;
+using LongoMatch.Drawing.Cairo;
namespace LongoMatch.Gui
@@ -55,7 +58,8 @@ namespace LongoMatch.Gui
const int THUMBNAIL_MAX_WIDTH = 100;
const int SCALE_FPS = 25;
IPlayer player;
- Time length;
+ Play loadedPlay;
+ Time length, lastTime;
bool seeking, IsPlayingPrevState, muted, emitRateScale, readyToSeek;
string filename;
double previousVLevel = 1;
@@ -64,6 +68,7 @@ namespace LongoMatch.Gui
protected VolumeWindow vwin;
Seeker seeker;
Segment segment;
+ Blackboard blackboard;
#region Constructors
@@ -72,6 +77,7 @@ namespace LongoMatch.Gui
this.Build();
vwin = new VolumeWindow();
ConnectSignals ();
+ blackboard = new Blackboard (new WidgetWrapper (blackboarddrawingarea));
controlsbox.Visible = false;
UnSensitive();
timescale.Adjustment.PageIncrement = 0.01;
@@ -86,6 +92,7 @@ namespace LongoMatch.Gui
seeker.SeekEvent += HandleSeekEvent;
segment.Start = new Time(-1);
segment.Stop = new Time(int.MaxValue);
+ lastTime = new Time (0);
CreatePlayer ();
}
@@ -160,6 +167,7 @@ namespace LongoMatch.Gui
}
public void Play() {
+ DrawingsVisible = false;
player.Play();
}
@@ -184,6 +192,8 @@ namespace LongoMatch.Gui
IsPlayingPrevState = false;
muted=false;
emitRateScale = true;
+ videodrawingarea.Visible = true;
+ blackboarddrawingarea.Visible = false;
}
public void LoadPlayListPlay (PlayListPlay play, bool hasNext) {
@@ -197,6 +207,7 @@ namespace LongoMatch.Gui
}
public void LoadPlay (string filename, Play play, Time seekTime, bool playing) {
+ loadedPlay = play;
LoadSegment (filename, play.Start, play.Stop, seekTime, playing, play.Rate);
}
@@ -209,12 +220,14 @@ namespace LongoMatch.Gui
}
public void Seek (Time time, bool accurate) {
+ DrawingsVisible = false;
player.Seek (time, accurate);
if(SeekEvent != null)
SeekEvent (time);
}
public void SeekToNextFrame () {
+ DrawingsVisible = false;
if (player.CurrentTime < segment.Stop) {
player.SeekToNextFrame ();
if(SeekEvent != null)
@@ -223,24 +236,29 @@ namespace LongoMatch.Gui
}
public void SeekToPreviousFrame () {
+ DrawingsVisible = false;
if (player.CurrentTime > segment.Start) {
seeker.Seek (SeekType.StepDown);
}
}
public void StepForward() {
+ DrawingsVisible = false;
Jump((int)jumpspinbutton.Value);
}
public void StepBackward() {
+ DrawingsVisible = false;
Jump(-(int)jumpspinbutton.Value);
}
public void FramerateUp() {
+ DrawingsVisible = false;
vscale1.Adjustment.Value += vscale1.Adjustment.StepIncrement;
}
public void FramerateDown() {
+ DrawingsVisible = false;
vscale1.Adjustment.Value -= vscale1.Adjustment.StepIncrement;
}
@@ -250,6 +268,7 @@ namespace LongoMatch.Gui
segment.Stop = new Time (int.MaxValue);
SetScaleValue (SCALE_FPS);
//timescale.Sensitive = true;
+ loadedPlay = null;
Config.EventsBroker.EmitSegmentClosed ();
}
@@ -267,6 +286,13 @@ namespace LongoMatch.Gui
#region Private methods
+ bool DrawingsVisible {
+ set {
+ videodrawingarea.Visible = !value;
+ blackboarddrawingarea.Visible = value;
+ }
+ }
+
void Open(string filename, bool seek) {
ResetGui();
CloseSegment();
@@ -317,7 +343,7 @@ namespace LongoMatch.Gui
if (filename != this.filename) {
Open (filename, false);
}
- player.Pause();
+ Pause ();
segment.Start = start;
segment.Stop = stop;
rate = rate == 0 ? 1 : rate;
@@ -329,7 +355,7 @@ namespace LongoMatch.Gui
player.Rate = (double) rate;
player.Seek (seekTime, true);
if (playing) {
- player.Play ();
+ Play ();
}
} else {
Log.Debug ("Delaying seek until player is ready");
@@ -337,6 +363,17 @@ namespace LongoMatch.Gui
}
}
+ void LoadDrawing (FrameDrawing drawing) {
+ Pause ();
+ player.Tick -= OnTick;
+ player.Seek (drawing.Render, true);
+ player.Tick += OnTick;
+ blackboard.Background = player.GetCurrentFrame () ;
+ blackboard.Drawing = drawing;
+ DrawingsVisible = true;
+ blackboarddrawingarea.QueueDraw ();
+ videodrawingarea.Visible = false;
+ }
void SetScaleValue (int value) {
emitRateScale = false;
@@ -362,6 +399,7 @@ namespace LongoMatch.Gui
if (pos.MSeconds < 0)
pos.MSeconds = 0;
Log.Debug (String.Format("Stepping {0} seconds from {1} to {2}", jump, CurrentTime,
pos));
+ DrawingsVisible = false;
Seek (pos, true);
}
@@ -369,7 +407,7 @@ namespace LongoMatch.Gui
if(SegmentLoaded) {
Time duration = segment.Stop - segment.Start;
Time seekPos = segment.Start + duration * pos;
- seeker.Seek (SeekType.Keyframe, seekPos);
+ seeker.Seek (SeekType.Accurate, seekPos);
timelabel.Text = seekPos.ToMSecondsString() + "/" +
duration.ToMSecondsString();
}
else {
@@ -424,7 +462,7 @@ namespace LongoMatch.Gui
player.Rate = (float) pendingSeek [1];
player.Seek ((Time)pendingSeek[0], true);
if ((bool)pendingSeek[2]) {
- player.Play();
+ Play();
}
pendingSeek = null;
}
@@ -443,13 +481,19 @@ namespace LongoMatch.Gui
dur = segment.Stop - segment.Start;
if (currentTime > segment.Stop) {
- player.Pause ();
+ Pause();
}
ct = currentTime - segment.Start;
cp = (float)ct.MSeconds/(float)(dur.MSeconds);
slength = dur.ToMSecondsString();
timelabel.Text = ct.ToMSecondsString() + "/" + slength;
timescale.Value = cp;
+ if (loadedPlay != null && loadedPlay.Drawings.Count > 0) {
+ FrameDrawing fd = loadedPlay.Drawings.FirstOrDefault (f => f.Render >
lastTime && f.Render <= currentTime);
+ if (fd != null) {
+ LoadDrawing (fd);
+ }
+ }
} else {
slength = length.ToMSecondsString ();
timelabel.Text = currentTime.ToMSecondsString() + "/" + slength;
@@ -457,6 +501,7 @@ namespace LongoMatch.Gui
timescale.Value = currentPosition;
}
}
+ lastTime = currentTime;
if (Tick != null) {
Tick (currentTime, streamLength, currentPosition);
@@ -473,7 +518,7 @@ namespace LongoMatch.Gui
seeking = true;
IsPlayingPrevState = player.Playing;
player.Tick -= OnTick;
- player.Pause();
+ Pause ();
seeksQueue [0] = -1;
seeksQueue [1] = -1;
}
@@ -494,7 +539,7 @@ namespace LongoMatch.Gui
seeking=false;
player.Tick += OnTick;
if(IsPlayingPrevState)
- player.Play();
+ Play ();
}
}
@@ -524,12 +569,12 @@ namespace LongoMatch.Gui
void OnPausebuttonClicked(object sender, System.EventArgs e)
{
- player.Pause();
+ Pause ();
}
void OnEndOfStream(object o, EventArgs args) {
player.Seek (new Time (0), true);
- player.Pause();
+ Pause ();
}
void OnError(string message) {
@@ -539,7 +584,7 @@ namespace LongoMatch.Gui
void OnClosebuttonClicked(object sender, System.EventArgs e)
{
CloseSegment();
- player.Play ();
+ Play ();
}
void OnPrevbuttonClicked(object sender, System.EventArgs e)
@@ -629,10 +674,11 @@ namespace LongoMatch.Gui
void HandleSeekEvent (SeekType type, Time start, float rate)
{
+ DrawingsVisible = false;
/* We only use it for backwards framestepping for now */
if (type == SeekType.StepDown || type == SeekType.StepUp) {
if(player.Playing)
- player.Pause ();
+ Pause ();
if (type == SeekType.StepDown)
player.SeekToPreviousFrame ();
else
diff --git a/LongoMatch.GUI.Multimedia/LongoMatch.GUI.Multimedia.mdp
b/LongoMatch.GUI.Multimedia/LongoMatch.GUI.Multimedia.mdp
index 814f60d..750461c 100644
--- a/LongoMatch.GUI.Multimedia/LongoMatch.GUI.Multimedia.mdp
+++ b/LongoMatch.GUI.Multimedia/LongoMatch.GUI.Multimedia.mdp
@@ -52,6 +52,9 @@
<ProjectReference type="Package" localcopy="True" refto="System.Drawing, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<ProjectReference type="Project" localcopy="True" refto="LongoMatch.GUI.Helpers" />
<ProjectReference type="Package" localcopy="False" refto="atk-sharp, Version=2.12.0.0, Culture=neutral,
PublicKeyToken=35e10195dab3c99f" />
+ <ProjectReference type="Package" specificVersion="False" localcopy="False" refto="System.Core,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+ <ProjectReference type="Project" localcopy="True" refto="LongoMatch.Drawing" />
+ <ProjectReference type="Project" localcopy="True" refto="LongoMatch.Drawing.Cairo" />
</References>
<LanguageParameters ApplicationIcon="." CodePage="65001" ctype="CSharpProjectParameters" />
</Project>
\ No newline at end of file
diff --git a/LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.PlayerBin.cs
b/LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.PlayerBin.cs
index 4ceac28..050f1aa 100644
--- a/LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.PlayerBin.cs
+++ b/LongoMatch.GUI.Multimedia/gtk-gui/LongoMatch.Gui.PlayerBin.cs
@@ -8,9 +8,10 @@ namespace LongoMatch.Gui
private global::Gtk.HBox mainbox;
private global::Gtk.VBox vbox2;
private global::Gtk.HBox videobox;
- private global::Gtk.HBox hbox2;
private global::Gtk.EventBox videoeventbox;
+ private global::Gtk.HBox hbox2;
private global::Gtk.DrawingArea videodrawingarea;
+ private global::Gtk.DrawingArea blackboarddrawingarea;
private global::Gtk.VBox vbox5;
private global::Gtk.VScale vscale1;
private global::Gtk.HBox controlsbox;
@@ -53,29 +54,35 @@ 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.videoeventbox = new global::Gtk.EventBox ();
- this.videoeventbox.Name = "videoeventbox";
- // Container child videoeventbox.Gtk.Container+ContainerChild
this.videodrawingarea = new global::Gtk.DrawingArea ();
this.videodrawingarea.CanFocus = true;
this.videodrawingarea.Name = "videodrawingarea";
- this.videoeventbox.Add (this.videodrawingarea);
- this.hbox2.Add (this.videoeventbox);
- global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox2
[this.videoeventbox]));
- w2.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 w4 = ((global::Gtk.Box.BoxChild)(this.vbox2
[this.videobox]));
+ this.hbox2.Add (this.videodrawingarea);
+ global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.hbox2
[this.videodrawingarea]));
+ w1.Position = 0;
+ // Container child hbox2.Gtk.Box+BoxChild
+ this.blackboarddrawingarea = new global::Gtk.DrawingArea ();
+ this.blackboarddrawingarea.Name = "blackboarddrawingarea";
+ 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.mainbox.Add (this.vbox2);
- global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.mainbox [this.vbox2]));
+ this.vbox2.Add (this.videobox);
+ global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox2
[this.videobox]));
w5.Position = 0;
+ this.mainbox.Add (this.vbox2);
+ global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.mainbox [this.vbox2]));
+ w6.Position = 0;
// Container child mainbox.Gtk.Box+BoxChild
this.vbox5 = new global::Gtk.VBox ();
this.vbox5.Name = "vbox5";
@@ -97,16 +104,16 @@ namespace LongoMatch.Gui
this.vscale1.Digits = 0;
this.vscale1.ValuePos = ((global::Gtk.PositionType)(3));
this.vbox5.Add (this.vscale1);
- global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.vbox5 [this.vscale1]));
- w6.Position = 0;
+ global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.vbox5 [this.vscale1]));
+ w7.Position = 0;
this.mainbox.Add (this.vbox5);
- global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.mainbox [this.vbox5]));
- w7.Position = 1;
- w7.Expand = false;
- w7.Fill = false;
+ global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.mainbox [this.vbox5]));
+ w8.Position = 1;
+ w8.Expand = false;
+ w8.Fill = false;
this.vbox3.Add (this.mainbox);
- global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.mainbox]));
- w8.Position = 0;
+ global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.mainbox]));
+ w9.Position = 0;
// Container child vbox3.Gtk.Box+BoxChild
this.controlsbox = new global::Gtk.HBox ();
this.controlsbox.Name = "controlsbox";
@@ -120,120 +127,120 @@ namespace LongoMatch.Gui
this.closebutton.Name = "closebutton";
this.closebutton.UseUnderline = true;
// Container child closebutton.Gtk.Container+ContainerChild
- global::Gtk.Alignment w9 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+ global::Gtk.Alignment w10 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
// Container child GtkAlignment.Gtk.Container+ContainerChild
- global::Gtk.HBox w10 = new global::Gtk.HBox ();
- w10.Spacing = 2;
+ global::Gtk.HBox w11 = new global::Gtk.HBox ();
+ w11.Spacing = 2;
// Container child GtkHBox.Gtk.Container+ContainerChild
- global::Gtk.Image w11 = new global::Gtk.Image ();
- w11.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-close",
global::Gtk.IconSize.Dnd);
- w10.Add (w11);
+ 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 w13 = new global::Gtk.Label ();
- w10.Add (w13);
- w9.Add (w10);
- this.closebutton.Add (w9);
+ global::Gtk.Label w14 = new global::Gtk.Label ();
+ w11.Add (w14);
+ w10.Add (w11);
+ this.closebutton.Add (w10);
this.buttonsbox.Add (this.closebutton);
- global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.buttonsbox
[this.closebutton]));
- w17.Position = 0;
- w17.Expand = false;
- w17.Fill = false;
+ global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.buttonsbox
[this.closebutton]));
+ w18.Position = 0;
+ w18.Expand = false;
+ w18.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 w18 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+ global::Gtk.Alignment w19 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
// Container child GtkAlignment.Gtk.Container+ContainerChild
- global::Gtk.HBox w19 = new global::Gtk.HBox ();
- w19.Spacing = 2;
+ global::Gtk.HBox w20 = new global::Gtk.HBox ();
+ w20.Spacing = 2;
// Container child GtkHBox.Gtk.Container+ContainerChild
- global::Gtk.Image w20 = new global::Gtk.Image ();
- w20.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-select-color",
global::Gtk.IconSize.Menu);
- w19.Add (w20);
+ 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);
// Container child GtkHBox.Gtk.Container+ContainerChild
- global::Gtk.Label w22 = new global::Gtk.Label ();
- w19.Add (w22);
- w18.Add (w19);
- this.drawbutton.Add (w18);
+ global::Gtk.Label w23 = new global::Gtk.Label ();
+ w20.Add (w23);
+ w19.Add (w20);
+ this.drawbutton.Add (w19);
this.buttonsbox.Add (this.drawbutton);
- global::Gtk.Box.BoxChild w26 = ((global::Gtk.Box.BoxChild)(this.buttonsbox
[this.drawbutton]));
- w26.Position = 1;
- w26.Expand = false;
- w26.Fill = false;
+ global::Gtk.Box.BoxChild w27 = ((global::Gtk.Box.BoxChild)(this.buttonsbox
[this.drawbutton]));
+ w27.Position = 1;
+ w27.Expand = false;
+ w27.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 w27 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+ global::Gtk.Alignment w28 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
// Container child GtkAlignment.Gtk.Container+ContainerChild
- global::Gtk.HBox w28 = new global::Gtk.HBox ();
- w28.Spacing = 2;
+ global::Gtk.HBox w29 = new global::Gtk.HBox ();
+ w29.Spacing = 2;
// Container child GtkHBox.Gtk.Container+ContainerChild
- global::Gtk.Image w29 = new global::Gtk.Image ();
- w29.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-media-play",
global::Gtk.IconSize.Button);
- w28.Add (w29);
+ 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);
// Container child GtkHBox.Gtk.Container+ContainerChild
- global::Gtk.Label w31 = new global::Gtk.Label ();
- w28.Add (w31);
- w27.Add (w28);
- this.playbutton.Add (w27);
+ global::Gtk.Label w32 = new global::Gtk.Label ();
+ w29.Add (w32);
+ w28.Add (w29);
+ this.playbutton.Add (w28);
this.buttonsbox.Add (this.playbutton);
- global::Gtk.Box.BoxChild w35 = ((global::Gtk.Box.BoxChild)(this.buttonsbox
[this.playbutton]));
- w35.Position = 2;
- w35.Expand = false;
- w35.Fill = false;
+ global::Gtk.Box.BoxChild w36 = ((global::Gtk.Box.BoxChild)(this.buttonsbox
[this.playbutton]));
+ w36.Position = 2;
+ w36.Expand = false;
+ w36.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 w36 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+ global::Gtk.Alignment w37 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
// Container child GtkAlignment.Gtk.Container+ContainerChild
- global::Gtk.HBox w37 = new global::Gtk.HBox ();
- w37.Spacing = 2;
+ global::Gtk.HBox w38 = new global::Gtk.HBox ();
+ w38.Spacing = 2;
// Container child GtkHBox.Gtk.Container+ContainerChild
- global::Gtk.Image w38 = new global::Gtk.Image ();
- w38.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-media-pause",
global::Gtk.IconSize.Button);
- w37.Add (w38);
+ 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);
// Container child GtkHBox.Gtk.Container+ContainerChild
- global::Gtk.Label w40 = new global::Gtk.Label ();
- w37.Add (w40);
- w36.Add (w37);
- this.pausebutton.Add (w36);
+ global::Gtk.Label w41 = new global::Gtk.Label ();
+ w38.Add (w41);
+ w37.Add (w38);
+ this.pausebutton.Add (w37);
this.buttonsbox.Add (this.pausebutton);
- global::Gtk.Box.BoxChild w44 = ((global::Gtk.Box.BoxChild)(this.buttonsbox
[this.pausebutton]));
- w44.Position = 3;
- w44.Expand = false;
- w44.Fill = false;
+ global::Gtk.Box.BoxChild w45 = ((global::Gtk.Box.BoxChild)(this.buttonsbox
[this.pausebutton]));
+ w45.Position = 3;
+ w45.Expand = false;
+ w45.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 w45 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+ global::Gtk.Alignment w46 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
// Container child GtkAlignment.Gtk.Container+ContainerChild
- global::Gtk.HBox w46 = new global::Gtk.HBox ();
- w46.Spacing = 2;
+ global::Gtk.HBox w47 = new global::Gtk.HBox ();
+ w47.Spacing = 2;
// Container child GtkHBox.Gtk.Container+ContainerChild
- global::Gtk.Image w47 = new global::Gtk.Image ();
- w47.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-media-previous",
global::Gtk.IconSize.Button);
- w46.Add (w47);
+ 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 w49 = new global::Gtk.Label ();
- w46.Add (w49);
- w45.Add (w46);
- this.prevbutton.Add (w45);
+ global::Gtk.Label w50 = new global::Gtk.Label ();
+ w47.Add (w50);
+ w46.Add (w47);
+ this.prevbutton.Add (w46);
this.buttonsbox.Add (this.prevbutton);
- global::Gtk.Box.BoxChild w53 = ((global::Gtk.Box.BoxChild)(this.buttonsbox
[this.prevbutton]));
- w53.Position = 4;
- w53.Expand = false;
- w53.Fill = false;
+ global::Gtk.Box.BoxChild w54 = ((global::Gtk.Box.BoxChild)(this.buttonsbox
[this.prevbutton]));
+ w54.Position = 4;
+ w54.Expand = false;
+ w54.Fill = false;
// Container child buttonsbox.Gtk.Box+BoxChild
this.nextbutton = new global::Gtk.Button ();
this.nextbutton.Sensitive = false;
@@ -241,29 +248,29 @@ namespace LongoMatch.Gui
this.nextbutton.UseUnderline = true;
this.nextbutton.Relief = ((global::Gtk.ReliefStyle)(2));
// Container child nextbutton.Gtk.Container+ContainerChild
- global::Gtk.Alignment w54 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+ global::Gtk.Alignment w55 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
// Container child GtkAlignment.Gtk.Container+ContainerChild
- global::Gtk.HBox w55 = new global::Gtk.HBox ();
- w55.Spacing = 2;
+ global::Gtk.HBox w56 = new global::Gtk.HBox ();
+ w56.Spacing = 2;
// Container child GtkHBox.Gtk.Container+ContainerChild
- global::Gtk.Image w56 = new global::Gtk.Image ();
- w56.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-media-next",
global::Gtk.IconSize.Button);
- w55.Add (w56);
+ 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 w58 = new global::Gtk.Label ();
- w55.Add (w58);
- w54.Add (w55);
- this.nextbutton.Add (w54);
+ global::Gtk.Label w59 = new global::Gtk.Label ();
+ w56.Add (w59);
+ w55.Add (w56);
+ this.nextbutton.Add (w55);
this.buttonsbox.Add (this.nextbutton);
- 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;
+ global::Gtk.Box.BoxChild w63 = ((global::Gtk.Box.BoxChild)(this.buttonsbox
[this.nextbutton]));
+ w63.Position = 5;
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";
@@ -273,10 +280,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 w64 = ((global::Gtk.Box.BoxChild)(this.hbox1
[this.jumplabel]));
- w64.Position = 0;
- w64.Expand = false;
- w64.Fill = false;
+ global::Gtk.Box.BoxChild w65 = ((global::Gtk.Box.BoxChild)(this.hbox1
[this.jumplabel]));
+ w65.Position = 0;
+ w65.Expand = false;
+ w65.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.";
@@ -286,24 +293,24 @@ namespace LongoMatch.Gui
this.jumpspinbutton.Numeric = true;
this.jumpspinbutton.Value = 10;
this.hbox1.Add (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]));
+ global::Gtk.Box.BoxChild w66 = ((global::Gtk.Box.BoxChild)(this.hbox1
[this.jumpspinbutton]));
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 w67 = ((global::Gtk.Box.BoxChild)(this.controlsbox
[this.tlabel]));
- w67.Position = 2;
- w67.Expand = false;
- w67.Fill = false;
+ global::Gtk.Box.BoxChild w68 = ((global::Gtk.Box.BoxChild)(this.controlsbox
[this.tlabel]));
+ w68.Position = 2;
+ w68.Expand = false;
+ w68.Fill = false;
// Container child controlsbox.Gtk.Box+BoxChild
this.timescale = new global::Gtk.HScale (null);
this.timescale.Name = "timescale";
@@ -316,72 +323,73 @@ namespace LongoMatch.Gui
this.timescale.Digits = 0;
this.timescale.ValuePos = ((global::Gtk.PositionType)(2));
this.controlsbox.Add (this.timescale);
- global::Gtk.Box.BoxChild w68 = ((global::Gtk.Box.BoxChild)(this.controlsbox
[this.timescale]));
- w68.Position = 3;
+ global::Gtk.Box.BoxChild w69 = ((global::Gtk.Box.BoxChild)(this.controlsbox
[this.timescale]));
+ w69.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 w69 = ((global::Gtk.Box.BoxChild)(this.controlsbox
[this.timelabel]));
- w69.Position = 4;
- w69.Expand = false;
+ global::Gtk.Box.BoxChild w70 = ((global::Gtk.Box.BoxChild)(this.controlsbox
[this.timelabel]));
+ w70.Position = 4;
+ w70.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 w70 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+ global::Gtk.Alignment w71 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
// Container child GtkAlignment.Gtk.Container+ContainerChild
- global::Gtk.HBox w71 = new global::Gtk.HBox ();
- w71.Spacing = 2;
+ global::Gtk.HBox w72 = new global::Gtk.HBox ();
+ w72.Spacing = 2;
// Container child GtkHBox.Gtk.Container+ContainerChild
- global::Gtk.Image w72 = new global::Gtk.Image ();
- w72.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "stock_volume",
global::Gtk.IconSize.Button);
- w71.Add (w72);
+ global::Gtk.Image w73 = new global::Gtk.Image ();
+ w73.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "stock_volume",
global::Gtk.IconSize.Button);
+ w72.Add (w73);
// Container child GtkHBox.Gtk.Container+ContainerChild
- global::Gtk.Label w74 = new global::Gtk.Label ();
- w71.Add (w74);
- w70.Add (w71);
- this.volumebutton.Add (w70);
+ global::Gtk.Label w75 = new global::Gtk.Label ();
+ w72.Add (w75);
+ w71.Add (w72);
+ this.volumebutton.Add (w71);
this.controlsbox.Add (this.volumebutton);
- global::Gtk.Box.BoxChild w78 = ((global::Gtk.Box.BoxChild)(this.controlsbox
[this.volumebutton]));
- w78.Position = 5;
- w78.Expand = false;
- w78.Fill = false;
+ global::Gtk.Box.BoxChild w79 = ((global::Gtk.Box.BoxChild)(this.controlsbox
[this.volumebutton]));
+ w79.Position = 5;
+ w79.Expand = false;
+ w79.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 w79 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+ global::Gtk.Alignment w80 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
// Container child GtkAlignment.Gtk.Container+ContainerChild
- global::Gtk.HBox w80 = new global::Gtk.HBox ();
- w80.Spacing = 2;
+ global::Gtk.HBox w81 = new global::Gtk.HBox ();
+ w81.Spacing = 2;
// Container child GtkHBox.Gtk.Container+ContainerChild
- global::Gtk.Image w81 = new global::Gtk.Image ();
- w81.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-disconnect",
global::Gtk.IconSize.Menu);
- w80.Add (w81);
+ global::Gtk.Image w82 = new global::Gtk.Image ();
+ w82.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-disconnect",
global::Gtk.IconSize.Menu);
+ w81.Add (w82);
// Container child GtkHBox.Gtk.Container+ContainerChild
- global::Gtk.Label w83 = new global::Gtk.Label ();
- w80.Add (w83);
- w79.Add (w80);
- this.detachbutton.Add (w79);
+ global::Gtk.Label w84 = new global::Gtk.Label ();
+ w81.Add (w84);
+ w80.Add (w81);
+ this.detachbutton.Add (w80);
this.controlsbox.Add (this.detachbutton);
- 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;
+ global::Gtk.Box.BoxChild w88 = ((global::Gtk.Box.BoxChild)(this.controlsbox
[this.detachbutton]));
+ w88.Position = 6;
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 ();
}
+ this.blackboarddrawingarea.Hide ();
this.closebutton.Hide ();
this.prevbutton.Hide ();
this.nextbutton.Hide ();
diff --git a/LongoMatch.GUI.Multimedia/gtk-gui/gui.stetic b/LongoMatch.GUI.Multimedia/gtk-gui/gui.stetic
index 10b78c4..2a4f243 100644
--- a/LongoMatch.GUI.Multimedia/gtk-gui/gui.stetic
+++ b/LongoMatch.GUI.Multimedia/gtk-gui/gui.stetic
@@ -8,6 +8,7 @@
<widget-library name="../../bin/LongoMatch.Multimedia.dll" />
<widget-library name="../../bin/LongoMatch.GUI.Helpers.dll" />
<widget-library name="../../bin/LongoMatch.GUI.Multimedia.dll" internal="true" />
+ <widget-library name="../../LongoMatch.Drawing.Cairo/bin/Debug/LongoMatch.Drawing.Cairo.dll" />
</import>
<widget class="Gtk.Window" id="LongoMatch.Gui.VolumeWindow" design-size="31 204">
<property name="MemberName" />
@@ -93,26 +94,33 @@
<property name="MemberName" />
<property name="Spacing">6</property>
<child>
- <widget class="Gtk.HBox" id="hbox2">
+ <widget class="Gtk.EventBox" id="videoeventbox">
<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="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>
</widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">True</property>
- </packing>
- </child>
- <child>
- <placeholder />
</child>
</widget>
<packing>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]