[longomatch] Add a new widget for coding
- From: Andoni Morales Alastruey <amorales src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [longomatch] Add a new widget for coding
- Date: Mon, 7 Jul 2014 11:21:35 +0000 (UTC)
commit 646e2acf5b0a20d9729102b082468611bf383d0d
Author: Andoni Morales Alastruey <ylatuya gmail com>
Date: Mon May 19 14:43:05 2014 +0200
Add a new widget for coding
LongoMatch.Core/Interfaces/GUI/IAnalysisWindow.cs | 3 +-
LongoMatch.GUI/Gui/Component/AnalysisComponent.cs | 341 ++++++--------------
.../Gui/Component/AnalysisTemplateEditor.cs | 2 +-
LongoMatch.GUI/Gui/Component/ButtonsWidget.cs | 106 ++++---
LongoMatch.GUI/Gui/Component/CodingWidget.cs | 121 +++++++
LongoMatch.GUI/Gui/Component/Timeline.cs | 2 +-
LongoMatch.GUI/LongoMatch.GUI.mdp | 2 +
.../LongoMatch.Gui.Component.AnalysisComponent.cs | 93 ++----
.../LongoMatch.Gui.Component.CodingWidget.cs | 100 ++++++
.../gtk-gui/LongoMatch.Gui.Component.Timeline.cs | 142 +++-----
.../gtk-gui/LongoMatch.Gui.MainWindow.cs | 2 +-
.../LongoMatch.Gui.Panel.ProjectsManagerPanel.cs | 1 -
.../gtk-gui/LongoMatch.Gui.Panel.WelcomePanel.cs | 1 -
LongoMatch.GUI/gtk-gui/gui.stetic | 254 ++++++++-------
LongoMatch.GUI/gtk-gui/objects.xml | 5 +
LongoMatch.Services/Services/EventsManager.cs | 2 +-
16 files changed, 621 insertions(+), 556 deletions(-)
---
diff --git a/LongoMatch.Core/Interfaces/GUI/IAnalysisWindow.cs
b/LongoMatch.Core/Interfaces/GUI/IAnalysisWindow.cs
index 15d7b74..3f255ba 100644
--- a/LongoMatch.Core/Interfaces/GUI/IAnalysisWindow.cs
+++ b/LongoMatch.Core/Interfaces/GUI/IAnalysisWindow.cs
@@ -67,11 +67,10 @@ namespace LongoMatch.Interfaces.GUI
void CloseOpenedProject ();
void AddPlay(Play play);
void UpdateSelectedPlay (Play play);
- void UpdateCategories (Categories categories);
+ void UpdateCategories ();
void DeletePlays (List<Play> plays);
bool Fullscreen {set;}
- bool WidgetsVisible {set;}
VideoAnalysisMode AnalysisMode {set;}
IPlayerBin Player{get;}
diff --git a/LongoMatch.GUI/Gui/Component/AnalysisComponent.cs
b/LongoMatch.GUI/Gui/Component/AnalysisComponent.cs
index 17c24ad..464f93f 100644
--- a/LongoMatch.GUI/Gui/Component/AnalysisComponent.cs
+++ b/LongoMatch.GUI/Gui/Component/AnalysisComponent.cs
@@ -71,7 +71,6 @@ namespace LongoMatch.Gui.Component
static Project openedProject;
ProjectType projectType;
- TimeNode selectedTimeNode;
bool detachedPlayer;
Gtk.Window playerWindow;
VideoAnalysisMode analysisMode;
@@ -80,6 +79,7 @@ namespace LongoMatch.Gui.Component
{
this.Build ();
projectType = ProjectType.None;
+ playsSelection.Visible = true;
playercapturer.Mode = PlayerCapturerBin.PlayerOperationMode.Player;
playercapturer.Tick += OnTick;
@@ -87,11 +87,8 @@ namespace LongoMatch.Gui.Component
playercapturer.Logo = System.IO.Path.Combine(Config.ImagesDir,"background.png");
playercapturer.CaptureFinished += (sender, e) => {
EmitCloseOpenedProject();
- (downbox[videowidgetsbox] as Box.BoxChild).Expand = true;
- (downbox[buttonswidget] as Box.BoxChild).Expand = false;
};
- buttonswidget.Mode = TagMode.Predifined;
ConnectSignals();
AnalysisMode = VideoAnalysisMode.PredefinedTagging;
@@ -128,93 +125,46 @@ namespace LongoMatch.Gui.Component
}
}
- public bool WidgetsVisible {
- set {
- if(openedProject == null)
- return;
-
- leftbox.Visible = value;
- timeline.Visible = value && AnalysisMode == VideoAnalysisMode.Timeline;
- buttonswidget.Visible = value && (AnalysisMode ==
VideoAnalysisMode.ManualTagging ||
- AnalysisMode ==
VideoAnalysisMode.PredefinedTagging);
- if(value) {
- SetTagsBoxVisibility (false);
- } else {
- if (selectedTimeNode != null)
- SetTagsBoxVisibility (true);
- }
- }
- }
-
public VideoAnalysisMode AnalysisMode {
set {
- buttonswidget.Visible = (value == VideoAnalysisMode.ManualTagging) ||
- (value == VideoAnalysisMode.PredefinedTagging);
- timeline.Visible = value == VideoAnalysisMode.Timeline;
- if(value == VideoAnalysisMode.ManualTagging)
- buttonswidget.Mode = TagMode.Free;
- else if (value == VideoAnalysisMode.ManualTagging)
- buttonswidget.Mode = TagMode.Predifined;
- analysisMode = value;
- timeline.Visible = true;
- }
- protected get {
- return analysisMode;
+ codingwidget.AnalysisMode = value;
}
}
public void AddPlay(Play play) {
playsSelection.AddPlay(play);
- timeline.AddPlay(play);
- timeline.QueueDraw();
+ codingwidget.AddPlay (play);
}
public void UpdateSelectedPlay (Play play) {
- selectedTimeNode = play;
- timeline.SelectedTimeNode = play;
+ codingwidget.SelectedPlay = play;
postagger.LoadPlay (play, false);
- SetTagsBoxVisibility (true);
notes.Play= play;
}
- public void UpdateCategories (Categories categories) {
- buttonswidget.Categories = openedProject.Categories;
+ public void UpdateCategories () {
+ codingwidget.UpdateCategories ();
}
public void DeletePlays (List<Play> plays) {
playsSelection.RemovePlays(plays);
- timeline.RemovePlays(plays);
- timeline.QueueDraw();
+ codingwidget.DeletePlays (plays);
}
private void ConnectSignals() {
/* Adding Handlers for each event */
- /* Connect new mark event */
- buttonswidget.NewMarkEvent += EmitNewTag;;
- buttonswidget.NewMarkStartEvent += EmitNewTagStart;
-
- buttonswidget.NewMarkStopEvent += EmitNewTagStop;
- buttonswidget.NewMarkCancelEvent += EmitNewTagCancel;
- timeline.NewTagAtPosEvent += EmitNewTagAtPos;
-
- /* Connect TimeNodeChanged events */
- timeline.TimeNodeChanged += EmitTimeNodeChanged;
notes.TimeNodeChanged += EmitTimeNodeChanged;
- /* Connect TimeNodeDeleted events */
playsSelection.PlaysDeleted += EmitPlaysDeleted;
- timeline.TimeNodeDeleted += EmitPlaysDeleted;
-
- /* Connect TimeNodeSelected events */
- playsSelection.PlaySelected += OnTimeNodeSelected;
- timeline.TimeNodeSelected += OnTimeNodeSelected;
-
- /* Connect TimeNodeChangedEvent */
+ playsSelection.PlaySelected += EmitPlaySelected;
playsSelection.TimeNodeChanged += EmitTimeNodeChanged;
-
- /* Connect PlayCategoryChanged events */
playsSelection.PlayCategoryChanged += EmitPlayCategoryChanged;
+ playsSelection.PlayListNodeAdded += EmitPlayListNodeAdded;
+ playsSelection.DuplicatePlay += EmitDuplicatePlay;
+ playsSelection.TagPlay += EmitTagPlay;
+ playsSelection.SnapshotSeries += EmitSnapshotSeries;
+ playsSelection.RenderPlaylist += EmitRenderPlaylist;
/* Connect playlist events */
// playlist.PlayListNodeSelected += EmitPlayListNodeSelected;
@@ -222,24 +172,6 @@ namespace LongoMatch.Gui.Component
// playlist.OpenPlaylistEvent += EmitOpenPlaylist;
// playlist.SavePlaylistEvent += EmitSavePlaylist;
- /* Connect PlayListNodeAdded events */
- playsSelection.PlayListNodeAdded += OnPlayListNodeAdded;
- timeline.PlayListNodeAdded += OnPlayListNodeAdded;
-
- /* Connect duplicate plays */
- playsSelection.DuplicatePlay += EmitDuplicatePlay;
-
- /* Connect tags events */
- playsSelection.TagPlay += EmitTagPlay;
- timeline.TagPlay += EmitTagPlay;
-
- /* Connect SnapshotSeries events */
- playsSelection.SnapshotSeries += EmitSnapshotSeries;
- timeline.SnapshotSeries += EmitSnapshotSeries;
-
- playsSelection.RenderPlaylist += EmitRenderPlaylist;
- timeline.RenderPlaylist += EmitRenderPlaylist;
-
playercapturer.Error += OnMultimediaError;
playercapturer.SegmentClosedEvent += OnSegmentClosedEvent;
@@ -269,10 +201,6 @@ namespace LongoMatch.Gui.Component
playercapturer.Reparent(box);
videowidgetsbox.Visible = false;
- if (openedProject != null) {
- buttonswidget.Visible = true;
- timeline.Visible = true;
- }
} else {
Log.Debug("Attaching player again");
videowidgetsbox.Visible = true;
@@ -296,7 +224,6 @@ namespace LongoMatch.Gui.Component
bool isLive = false;
if(projectType == ProjectType.FileProject) {
- timeline.SetProject (project, filter);
playercapturer.Mode = PlayerCapturerBin.PlayerOperationMode.Player;
} else {
isLive = true;
@@ -307,64 +234,98 @@ namespace LongoMatch.Gui.Component
}
}
- if(projectType == ProjectType.FakeCaptureProject) {
-#if OS_TYPE_LINUX
- /* This deadlocks in Windows and OS X */
- (downbox[videowidgetsbox] as Box.BoxChild).Expand = false;
-#endif
- (downbox[buttonswidget] as Box.BoxChild).Expand = true;
- }
+// FIXME
+// if(projectType == ProjectType.FakeCaptureProject) {
+//#if OS_TYPE_LINUX
+// /* This deadlocks in Windows and OS X */
+// (downbox[videowidgetsbox] as Box.BoxChild).Expand = false;
+//#endif
+// (downbox[buttonswidget] as Box.BoxChild).Expand = true;
+// }
openedProject = project;
this.projectType = projectType;
- playsSelection.SetProject(project, isLive, filter);
- buttonswidget.Categories = project.Categories;
- ShowWidgets ();
+ codingwidget.SetProject (project, isLive, filter, this);
+ playsSelection.SetProject (project, isLive, filter);
postagger.LoadBackgrounds (openedProject.Categories.FieldBackground,
openedProject.Categories.HalfFieldBackground,
openedProject.Categories.GoalBackground);
- ShowWidgets();
}
- void SetTagsBoxVisibility (bool visible) {
- if (visible) {
- righthbox.Visible = true;
- tagsvbox.Visible = true;
- } else {
- tagsvbox.Visible = false;
- }
+ public void EmitNewTagAtPos(Category category, Time pos) {
+ if (NewTagAtPosEvent != null)
+ NewTagAtPosEvent(category, pos);
+ }
+
+ public void EmitNewTag(Category category) {
+ if (NewTagEvent != null)
+ NewTagEvent(category);
+ }
+
+ public void EmitNewTagStart(Category category) {
+ if (NewTagStartEvent != null)
+ NewTagStartEvent (category);
+ }
+
+ public void EmitNewTagStop(Category category) {
+ if (NewTagStopEvent != null)
+ NewTagStopEvent (category);
}
- private void ResetGUI() {
- playercapturer.Mode = PlayerCapturerBin.PlayerOperationMode.Player;
- ClearWidgets();
- HideWidgets();
- SetTagsBoxVisibility (false);
- selectedTimeNode = null;
- if (detachedPlayer)
- DetachPlayer(false);
+ public void EmitNewTagCancel(Category category) {
+ if (NewTagCancelEvent != null)
+ NewTagCancelEvent (category);
}
- private void ShowWidgets() {
- leftbox.Show();
- if(analysisMode == VideoAnalysisMode.ManualTagging ||
- analysisMode == VideoAnalysisMode.PredefinedTagging) {
- buttonswidget.Show();
- } else if (analysisMode == VideoAnalysisMode.Timeline) {
- timeline.Show();
- }
+ public void EmitTimeNodeChanged(TimeNode tNode, object val)
+ {
+ if (TimeNodeChanged != null)
+ TimeNodeChanged(tNode, val);
+ }
+
+ public void EmitPlayListNodeAdded(List<Play> plays)
+ {
+ if (PlayListNodeAddedEvent != null)
+ PlayListNodeAddedEvent(plays);
+ }
+
+ public void EmitTagPlay(Play play) {
+ if (TagPlayEvent != null)
+ TagPlayEvent (play);
+ }
+
+ public void EmitSnapshotSeries(Play play) {
+ if (SnapshotSeriesEvent != null)
+ SnapshotSeriesEvent (play);
}
- private void HideWidgets() {
- leftbox.Hide();
- SetTagsBoxVisibility (false);
- buttonswidget.Hide();
- timeline.Hide();
+ public void EmitRenderPlaylist(IPlayList playlist) {
+ if (RenderPlaylistEvent != null)
+ RenderPlaylistEvent(playlist);
+ }
+
+ public void EmitPlaySelected(Play play)
+ {
+ if (PlaySelectedEvent != null)
+ PlaySelectedEvent(play);
}
- private void ClearWidgets() {
- buttonswidget.Categories = null;
+ public void EmitPlaysDeleted(List<Play> plays)
+ {
+ if (PlaysDeletedEvent != null)
+ PlaysDeletedEvent(plays);
+ }
+
+
+ void ResetGUI() {
+ playercapturer.Mode = PlayerCapturerBin.PlayerOperationMode.Player;
+ ClearWidgets();
+ if (detachedPlayer)
+ DetachPlayer(false);
+ }
+
+ void ClearWidgets() {
playsSelection.Clear();
}
@@ -415,29 +376,20 @@ namespace LongoMatch.Gui.Component
return ret;
}
- protected virtual void OnTimeNodeSelected(Play play)
- {
- SetTagsBoxVisibility (true);
- if (PlaySelectedEvent != null)
- PlaySelectedEvent(play);
- }
-
- protected virtual void OnSegmentClosedEvent()
+ void OnSegmentClosedEvent()
{
- SetTagsBoxVisibility (false);
- timeline.SelectedTimeNode = null;
- selectedTimeNode = null;
+ codingwidget.SelectedPlay = null;
}
- protected virtual void OnTick (Time currentTime, Time streamLength,
+ void OnTick (Time currentTime, Time streamLength,
double currentPosition)
{
- if (currentTime.MSeconds != 0 && timeline != null && openedProject != null) {
- timeline.CurrentTime = currentTime;
- }
+ //if (currentTime.MSeconds != 0 && timeline != null && openedProject != null) {
+ // timeline.CurrentTime = currentTime;
+ //}
}
- protected virtual void OnMultimediaError(string message)
+ void OnMultimediaError(string message)
{
MessagesHelpers.ErrorMessage (this,
Catalog.GetString("The following error happened and" +
@@ -445,128 +397,39 @@ namespace LongoMatch.Gui.Component
EmitCloseOpenedProject ();
}
- private void EmitCloseOpenedProject () {
+ void EmitCloseOpenedProject () {
if (CloseOpenedProjectEvent != null)
CloseOpenedProjectEvent ();
}
- private void EmitPlaySelected(Play play)
- {
- if (PlaySelectedEvent != null)
- PlaySelectedEvent(play);
- }
-
- private void EmitTimeNodeChanged(TimeNode tNode, object val)
- {
- if (TimeNodeChanged != null)
- TimeNodeChanged(tNode, val);
- }
-
- private void EmitPlaysDeleted(List<Play> plays)
- {
- if (PlaysDeletedEvent != null)
- PlaysDeletedEvent(plays);
- }
-
- protected virtual void EmitPlayCategoryChanged(Play play, Category cat)
+ void EmitPlayCategoryChanged(Play play, Category cat)
{
if(PlayCategoryChanged != null)
PlayCategoryChanged(play, cat);
}
- private void OnPlayListNodeAdded(List<Play> plays)
- {
- if (PlayListNodeAddedEvent != null)
- PlayListNodeAddedEvent(plays);
- }
-
- private void EmitPlayListNodeSelected(PlayListPlay plNode)
+ void EmitPlayListNodeSelected(PlayListPlay plNode)
{
if (PlayListNodeSelectedEvent != null)
PlayListNodeSelectedEvent(plNode);
}
- private void EmitSnapshotSeries(Play play) {
- if (SnapshotSeriesEvent != null)
- SnapshotSeriesEvent (play);
- }
-
- private void EmitNewTagAtPos(Category category, Time pos) {
- if (NewTagAtPosEvent != null)
- NewTagAtPosEvent(category, pos);
- }
-
- private void EmitNewTag(Category category) {
- if (NewTagEvent != null)
- NewTagEvent(category);
- }
-
- private void EmitNewTagStart(Category category) {
- if (NewTagStartEvent != null)
- NewTagStartEvent (category);
- }
-
- private void EmitNewTagStop(Category category) {
- if (NewTagStopEvent != null)
- NewTagStopEvent (category);
- }
-
- private void EmitNewTagCancel(Category category) {
- if (NewTagCancelEvent != null)
- NewTagCancelEvent (category);
- }
-
- private void EmitRenderPlaylist(IPlayList playlist) {
- if (RenderPlaylistEvent != null)
- RenderPlaylistEvent(playlist);
- }
-
- private void EmitTagPlay(Play play) {
- if (TagPlayEvent != null)
- TagPlayEvent (play);
- }
-
- private void EmitNewPlaylist() {
+ void EmitNewPlaylist() {
if (NewPlaylistEvent != null)
NewPlaylistEvent();
}
- private void EmitOpenPlaylist() {
+ void EmitOpenPlaylist() {
if (OpenPlaylistEvent != null)
OpenPlaylistEvent();
}
- private void EmitSavePlaylist() {
+ void EmitSavePlaylist() {
if (SavePlaylistEvent != null)
SavePlaylistEvent();
}
- private void EmitGameUnitEvent(GameUnit gameUnit, GameUnitEventType eType) {
- if (GameUnitEvent != null)
- GameUnitEvent(gameUnit, eType);
- }
-
- private void EmitUnitAdded(GameUnit gameUnit, int frame) {
- if (UnitAdded != null)
- UnitAdded(gameUnit, frame);
- }
-
- private void EmitUnitDeleted(GameUnit gameUnit, List<TimelineNode> units) {
- if (UnitDeleted != null)
- UnitDeleted(gameUnit, units);
- }
-
- private void EmitUnitSelected(GameUnit gameUnit, TimelineNode unit) {
- if (UnitSelected != null)
- UnitSelected(gameUnit, unit);
- }
-
- private void EmitUnitChanged(GameUnit gameUnit, TimelineNode unit, Time time) {
- if (UnitChanged != null)
- UnitChanged(gameUnit, unit, time);
- }
-
- private void EmitKeyPressed(object sender, int key, int modifier) {
+ void EmitKeyPressed(object sender, int key, int modifier) {
if (KeyPressed != null)
KeyPressed(sender, key, modifier);
}
diff --git a/LongoMatch.GUI/Gui/Component/AnalysisTemplateEditor.cs
b/LongoMatch.GUI/Gui/Component/AnalysisTemplateEditor.cs
index 2458ae3..36903e8 100644
--- a/LongoMatch.GUI/Gui/Component/AnalysisTemplateEditor.cs
+++ b/LongoMatch.GUI/Gui/Component/AnalysisTemplateEditor.cs
@@ -35,7 +35,7 @@ namespace LongoMatch.Gui.Component
public Categories Template {
set {
- buttonswidget.Categories = value;
+ buttonswidget.UpdateCategories (value);
}
}
diff --git a/LongoMatch.GUI/Gui/Component/ButtonsWidget.cs b/LongoMatch.GUI/Gui/Component/ButtonsWidget.cs
index 118554e..9c7a941 100644
--- a/LongoMatch.GUI/Gui/Component/ButtonsWidget.cs
+++ b/LongoMatch.GUI/Gui/Component/ButtonsWidget.cs
@@ -39,7 +39,6 @@ namespace LongoMatch.Gui.Component
public event NewTagStopHandler NewMarkStopEvent;
public event NewTagCancelHandler NewMarkCancelEvent;
- Categories categories;
TagMode tagMode;
Dictionary<ButtonTagger, Category> buttonsDic;
@@ -49,6 +48,13 @@ namespace LongoMatch.Gui.Component
buttonsDic = new Dictionary<ButtonTagger, Category>();
Mode = TagMode.Predifined;
}
+
+ public Project Project {
+ set {
+ if (value != null)
+ UpdateCategories (value.Categories);
+ }
+ }
public TagMode Mode {
set {
@@ -66,58 +72,56 @@ namespace LongoMatch.Gui.Component
}
}
}
+
+ public void UpdateCategories (Categories categories) {
+ foreach(Widget w in table1.AllChildren) {
+ table1.Remove(w);
+ w.Destroy();
+ }
+
+ if (categories == null)
+ return;
- public Categories Categories {
- set {
- foreach(Widget w in table1.AllChildren) {
- table1.Remove(w);
- w.Destroy();
- }
- categories = value;
- if(value == null)
- return;
-
- buttonsDic.Clear();
- int sectionsCount = value.Count;
-
- table1.NColumns =(uint) 10;
- table1.NRows =(uint)(sectionsCount/10);
-
- for(int i=0; i<sectionsCount; i++) {
- Category cat = value[i];
- ButtonTagger b = new ButtonTagger (cat);
+ buttonsDic.Clear();
+ int sectionsCount = categories.Count;
+
+ table1.NColumns =(uint) 10;
+ table1.NRows =(uint)(sectionsCount/10);
+
+ for(int i=0; i<sectionsCount; i++) {
+ Category cat = categories[i];
+ ButtonTagger b = new ButtonTagger (cat);
b.NewTag += (category) => {
- if (NewMarkEvent != null) {
- NewMarkEvent (category);
- }
- };
- b.NewTagStart += (category) => {
- if (NewMarkStartEvent != null) {
- NewMarkStartEvent (category);
- }
- };
- b.NewTagStop += (category) => {
- if (NewMarkStopEvent != null) {
- NewMarkStopEvent (category);
- }
- };
- b.NewTagCancel += (category) => {
- if (NewMarkCancelEvent != null) {
- NewMarkCancelEvent (category);
- }
- };
- b.Mode = tagMode;
-
- uint row_top =(uint)(i/table1.NColumns);
- uint row_bottom = (uint) row_top+1 ;
- uint col_left = (uint) i%table1.NColumns;
- uint col_right = (uint) col_left+1 ;
-
- table1.Attach(b,col_left,col_right,row_top,row_bottom);
-
- buttonsDic.Add(b, cat);
- b.Show();
- }
+ if (NewMarkEvent != null) {
+ NewMarkEvent (category);
+ }
+ };
+ b.NewTagStart += (category) => {
+ if (NewMarkStartEvent != null) {
+ NewMarkStartEvent (category);
+ }
+ };
+ b.NewTagStop += (category) => {
+ if (NewMarkStopEvent != null) {
+ NewMarkStopEvent (category);
+ }
+ };
+ b.NewTagCancel += (category) => {
+ if (NewMarkCancelEvent != null) {
+ NewMarkCancelEvent (category);
+ }
+ };
+ b.Mode = tagMode;
+
+ uint row_top =(uint)(i/table1.NColumns);
+ uint row_bottom = (uint) row_top+1 ;
+ uint col_left = (uint) i%table1.NColumns;
+ uint col_right = (uint) col_left+1 ;
+
+ table1.Attach(b,col_left,col_right,row_top,row_bottom);
+
+ buttonsDic.Add(b, cat);
+ b.Show();
}
}
}
diff --git a/LongoMatch.GUI/Gui/Component/CodingWidget.cs b/LongoMatch.GUI/Gui/Component/CodingWidget.cs
new file mode 100644
index 0000000..1997ab6
--- /dev/null
+++ b/LongoMatch.GUI/Gui/Component/CodingWidget.cs
@@ -0,0 +1,121 @@
+//
+// Copyright (C) 2014 Andoni Morales Alastruey
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+//
+using System;
+using LongoMatch.Handlers;
+using LongoMatch.Store;
+using LongoMatch.Common;
+using System.Collections.Generic;
+
+namespace LongoMatch.Gui.Component
+{
+ [System.ComponentModel.ToolboxItem(true)]
+ public partial class CodingWidget : Gtk.Bin
+ {
+ AnalysisComponent parent;
+ VideoAnalysisMode analysisMode;
+ Project project;
+
+ public CodingWidget ()
+ {
+ this.Build ();
+ buttonswidget.NewMarkEvent += (c) => parent.EmitNewTag (c);
+ buttonswidget.NewMarkStartEvent += (c) => parent.EmitNewTagStart (c);
+ buttonswidget.NewMarkStopEvent += (c) => parent.EmitNewTagStop (c);
+ buttonswidget.NewMarkCancelEvent += (c) => parent.EmitNewTagCancel (c);
+ timeline.NewTagAtPosEvent += (c, p) => parent.EmitNewTagAtPos (c, p);
+ timeline.TimeNodeChanged += (t, v) => parent.EmitTimeNodeChanged (t, v);
+ timeline.PlayListNodeAdded += (p) => parent.EmitPlayListNodeAdded (p);
+ timeline.TagPlay += (p) => parent.EmitTagPlay (p);
+ timeline.SnapshotSeries += (t) => parent.EmitSnapshotSeries (t);
+ timeline.RenderPlaylist += (p) => parent.EmitRenderPlaylist (p);
+ timeline.TimeNodeDeleted += (p) => parent.EmitPlaysDeleted (p);
+ timeline.TimeNodeSelected += (p) => parent.EmitPlaySelected (p);
+
+ autoTaggingMode.Toggled += HandleViewToggled;
+ autoTaggingMode.Active = true;
+ }
+
+ public void SetProject (Project project, bool isLive, PlaysFilter filter,
+ AnalysisComponent parent) {
+ this.parent = parent;
+ this.project = project;
+ autoTaggingMode.Active = true;
+ timeline.Visible = false;
+ buttonswidget.Visible = true;
+ buttonswidget.Project = project;
+ timeline.SetProject (project, filter);
+ }
+
+ public AnalysisComponent AnalysisComponentParent {
+ set;
+ protected get;
+ }
+
+ public void AddPlay(Play play) {
+ timeline.AddPlay(play);
+ }
+
+ public void DeletePlays (List<Play> plays) {
+ timeline.RemovePlays(plays);
+ }
+
+ public Play SelectedPlay {
+ set {
+ timeline.SelectedTimeNode = value;
+ }
+ }
+
+ public void UpdateCategories () {
+ buttonswidget.Project = project;
+ }
+
+ public VideoAnalysisMode AnalysisMode {
+ set {
+ buttonswidget.Visible = (value == VideoAnalysisMode.ManualTagging) ||
+ (value == VideoAnalysisMode.PredefinedTagging);
+ timeline.Visible = value == VideoAnalysisMode.Timeline;
+ if(value == VideoAnalysisMode.ManualTagging)
+ buttonswidget.Mode = TagMode.Free;
+ else if (value == VideoAnalysisMode.ManualTagging)
+ buttonswidget.Mode = TagMode.Predifined;
+ analysisMode = value;
+ timeline.Visible = true;
+ }
+ protected get {
+ return analysisMode;
+ }
+ }
+
+ public bool WidgetsVisible {
+ set {
+ timeline.Visible = value && AnalysisMode == VideoAnalysisMode.Timeline;
+ buttonswidget.Visible = value && (AnalysisMode ==
VideoAnalysisMode.ManualTagging ||
+ AnalysisMode ==
VideoAnalysisMode.PredefinedTagging);
+
+ }
+ }
+
+ void HandleViewToggled (object sender, EventArgs e)
+ {
+ buttonswidget.Visible = autoTaggingMode.Active;
+ timeline.Visible = timelineMode.Active;
+ }
+ }
+
+}
+
diff --git a/LongoMatch.GUI/Gui/Component/Timeline.cs b/LongoMatch.GUI/Gui/Component/Timeline.cs
index d65550a..ca87d2d 100644
--- a/LongoMatch.GUI/Gui/Component/Timeline.cs
+++ b/LongoMatch.GUI/Gui/Component/Timeline.cs
@@ -56,7 +56,7 @@ namespace LongoMatch.Gui.Component
this.labels = new CategoriesLabels (new WidgetWrapper (labelsarea));
timerulearea.HeightRequest = TIMERULE_HEIGHT;
labelsarea.WidthRequest = LongoMatch.Drawing.Common.CATEGORY_WIDTH;
- alignment1.HeightRequest = TIMERULE_HEIGHT;
+ hbox1.HeightRequest = TIMERULE_HEIGHT;
scrolledwindow1.Vadjustment.ValueChanged += HandleScrollEvent;
scrolledwindow1.Hadjustment.ValueChanged += HandleScrollEvent;
}
diff --git a/LongoMatch.GUI/LongoMatch.GUI.mdp b/LongoMatch.GUI/LongoMatch.GUI.mdp
index 642c6d5..179a176 100644
--- a/LongoMatch.GUI/LongoMatch.GUI.mdp
+++ b/LongoMatch.GUI/LongoMatch.GUI.mdp
@@ -188,6 +188,8 @@
<File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Panel.PreferencesPanel.cs" />
<File subtype="Code" buildaction="Compile" name="Gui/Component/Timeline.cs" />
<File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.Timeline.cs" />
+ <File subtype="Code" buildaction="Compile" name="Gui/Component/CodingWidget.cs" />
+ <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.CodingWidget.cs" />
</Contents>
<References>
<ProjectReference type="Gac" localcopy="True" refto="atk-sharp, Version=2.12.0.0, Culture=neutral,
PublicKeyToken=35e10195dab3c99f" />
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.AnalysisComponent.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.AnalysisComponent.cs
index e831b6e..6426852 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.AnalysisComponent.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.AnalysisComponent.cs
@@ -4,9 +4,9 @@ namespace LongoMatch.Gui.Component
{
public partial class AnalysisComponent
{
+ private global::Gtk.UIManager UIManager;
private global::Gtk.VPaned vpaned1;
private global::Gtk.HPaned hpaned;
- private global::Gtk.VBox leftbox;
private global::LongoMatch.Gui.Component.PlaysSelectionWidget playsSelection;
private global::Gtk.HPaned hpaned1;
private global::Gtk.VBox downbox;
@@ -19,15 +19,16 @@ namespace LongoMatch.Gui.Component
private global::Gtk.Alignment GtkAlignment22;
private global::LongoMatch.Gui.Component.NotesWidget notes;
private global::Gtk.Label GtkLabel31;
- private global::Gtk.HBox hbox7;
- private global::LongoMatch.Gui.Component.ButtonsWidget buttonswidget;
- private global::LongoMatch.Gui.Component.Timeline timeline;
+ private global::LongoMatch.Gui.Component.CodingWidget codingwidget;
protected virtual void Build ()
{
global::Stetic.Gui.Initialize (this);
// Widget LongoMatch.Gui.Component.AnalysisComponent
- global::Stetic.BinContainer.Attach (this);
+ Stetic.BinContainer w1 = global::Stetic.BinContainer.Attach (this);
+ this.UIManager = new global::Gtk.UIManager ();
+ global::Gtk.ActionGroup w2 = new global::Gtk.ActionGroup ("Default");
+ this.UIManager.InsertActionGroup (w2, 0);
this.Name = "LongoMatch.Gui.Component.AnalysisComponent";
// Container child
LongoMatch.Gui.Component.AnalysisComponent.Gtk.Container+ContainerChild
this.vpaned1 = new global::Gtk.VPaned ();
@@ -38,26 +39,19 @@ namespace LongoMatch.Gui.Component
this.hpaned = new global::Gtk.HPaned ();
this.hpaned.CanFocus = true;
this.hpaned.Name = "hpaned";
- this.hpaned.Position = 290;
+ this.hpaned.Position = 261;
// Container child hpaned.Gtk.Paned+PanedChild
- this.leftbox = new global::Gtk.VBox ();
- this.leftbox.Name = "leftbox";
- this.leftbox.Spacing = 6;
- // Container child leftbox.Gtk.Box+BoxChild
this.playsSelection = new global::LongoMatch.Gui.Component.PlaysSelectionWidget ();
this.playsSelection.Events = ((global::Gdk.EventMask)(256));
this.playsSelection.Name = "playsSelection";
- this.leftbox.Add (this.playsSelection);
- global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.leftbox
[this.playsSelection]));
- w1.Position = 0;
- this.hpaned.Add (this.leftbox);
- global::Gtk.Paned.PanedChild w2 = ((global::Gtk.Paned.PanedChild)(this.hpaned
[this.leftbox]));
- w2.Resize = false;
+ this.hpaned.Add (this.playsSelection);
+ global::Gtk.Paned.PanedChild w3 = ((global::Gtk.Paned.PanedChild)(this.hpaned
[this.playsSelection]));
+ w3.Resize = false;
// Container child hpaned.Gtk.Paned+PanedChild
this.hpaned1 = new global::Gtk.HPaned ();
this.hpaned1.CanFocus = true;
this.hpaned1.Name = "hpaned1";
- this.hpaned1.Position = 1015;
+ this.hpaned1.Position = 1046;
// Container child hpaned1.Gtk.Paned+PanedChild
this.downbox = new global::Gtk.VBox ();
this.downbox.Name = "downbox";
@@ -72,15 +66,15 @@ namespace LongoMatch.Gui.Component
this.playercapturer.Name = "playercapturer";
this.playercapturer.Detached = false;
this.videowidgetsbox.Add (this.playercapturer);
- global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.videowidgetsbox
[this.playercapturer]));
- w3.Position = 0;
- this.downbox.Add (this.videowidgetsbox);
- global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.downbox
[this.videowidgetsbox]));
+ global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.videowidgetsbox
[this.playercapturer]));
w4.Position = 0;
+ this.downbox.Add (this.videowidgetsbox);
+ global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.downbox
[this.videowidgetsbox]));
+ w5.Position = 0;
this.hpaned1.Add (this.downbox);
- global::Gtk.Paned.PanedChild w5 = ((global::Gtk.Paned.PanedChild)(this.hpaned1
[this.downbox]));
- w5.Resize = false;
- w5.Shrink = false;
+ global::Gtk.Paned.PanedChild w6 = ((global::Gtk.Paned.PanedChild)(this.hpaned1
[this.downbox]));
+ w6.Resize = false;
+ w6.Shrink = false;
// Container child hpaned1.Gtk.Paned+PanedChild
this.righthbox = new global::Gtk.HBox ();
this.righthbox.WidthRequest = 100;
@@ -96,8 +90,8 @@ namespace LongoMatch.Gui.Component
this.postagger.Events = ((global::Gdk.EventMask)(256));
this.postagger.Name = "postagger";
this.tagsvbox.Add (this.postagger);
- global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.tagsvbox
[this.postagger]));
- w6.Position = 0;
+ global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.tagsvbox
[this.postagger]));
+ w7.Position = 0;
// Container child tagsvbox.Gtk.Box+BoxChild
this.notesframe = new global::Gtk.Frame ();
this.notesframe.Name = "notesframe";
@@ -118,48 +112,33 @@ namespace LongoMatch.Gui.Component
this.GtkLabel31.UseMarkup = true;
this.notesframe.LabelWidget = this.GtkLabel31;
this.tagsvbox.Add (this.notesframe);
- global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.tagsvbox
[this.notesframe]));
- w9.Position = 1;
+ global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.tagsvbox
[this.notesframe]));
+ w10.Position = 1;
this.righthbox.Add (this.tagsvbox);
- global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.righthbox
[this.tagsvbox]));
- w10.Position = 0;
+ global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.righthbox
[this.tagsvbox]));
+ w11.Position = 0;
this.hpaned1.Add (this.righthbox);
- global::Gtk.Paned.PanedChild w11 = ((global::Gtk.Paned.PanedChild)(this.hpaned1
[this.righthbox]));
- w11.Resize = false;
- w11.Shrink = false;
- this.hpaned.Add (this.hpaned1);
- global::Gtk.Paned.PanedChild w12 = ((global::Gtk.Paned.PanedChild)(this.hpaned
[this.hpaned1]));
+ global::Gtk.Paned.PanedChild w12 = ((global::Gtk.Paned.PanedChild)(this.hpaned1
[this.righthbox]));
+ w12.Resize = false;
w12.Shrink = false;
+ this.hpaned.Add (this.hpaned1);
+ global::Gtk.Paned.PanedChild w13 = ((global::Gtk.Paned.PanedChild)(this.hpaned
[this.hpaned1]));
+ w13.Shrink = false;
this.vpaned1.Add (this.hpaned);
- global::Gtk.Paned.PanedChild w13 = ((global::Gtk.Paned.PanedChild)(this.vpaned1
[this.hpaned]));
- w13.Resize = false;
+ global::Gtk.Paned.PanedChild w14 = ((global::Gtk.Paned.PanedChild)(this.vpaned1
[this.hpaned]));
+ w14.Resize = false;
// Container child vpaned1.Gtk.Paned+PanedChild
- this.hbox7 = new global::Gtk.HBox ();
- this.hbox7.Name = "hbox7";
- this.hbox7.Spacing = 6;
- // Container child hbox7.Gtk.Box+BoxChild
- this.buttonswidget = new global::LongoMatch.Gui.Component.ButtonsWidget ();
- this.buttonswidget.Events = ((global::Gdk.EventMask)(256));
- this.buttonswidget.Name = "buttonswidget";
- this.hbox7.Add (this.buttonswidget);
- global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.hbox7
[this.buttonswidget]));
- w14.Position = 0;
- // Container child hbox7.Gtk.Box+BoxChild
- this.timeline = new global::LongoMatch.Gui.Component.Timeline ();
- this.timeline.Events = ((global::Gdk.EventMask)(256));
- this.timeline.Name = "timeline";
- this.hbox7.Add (this.timeline);
- global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.hbox7
[this.timeline]));
- w15.Position = 1;
- this.vpaned1.Add (this.hbox7);
+ this.codingwidget = new global::LongoMatch.Gui.Component.CodingWidget ();
+ this.codingwidget.Events = ((global::Gdk.EventMask)(256));
+ this.codingwidget.Name = "codingwidget";
+ this.vpaned1.Add (this.codingwidget);
this.Add (this.vpaned1);
if ((this.Child != null)) {
this.Child.ShowAll ();
}
- this.leftbox.Hide ();
+ w1.SetUiManager (UIManager);
this.tagsvbox.Hide ();
this.righthbox.Hide ();
- this.buttonswidget.Hide ();
this.Hide ();
}
}
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.CodingWidget.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.CodingWidget.cs
new file mode 100644
index 0000000..7977cb6
--- /dev/null
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.CodingWidget.cs
@@ -0,0 +1,100 @@
+
+// This file has been generated by the GUI designer. Do not modify.
+namespace LongoMatch.Gui.Component
+{
+ public partial class CodingWidget
+ {
+ private global::Gtk.UIManager UIManager;
+ private global::Gtk.RadioAction timelineMode;
+ private global::Gtk.RadioAction autoTaggingMode;
+ private global::Gtk.Action zoomFitAction;
+ private global::Gtk.VBox vbox2;
+ private global::Gtk.HBox hbox1;
+ private global::Gtk.Toolbar codingtoolbar;
+ private global::Gtk.Toolbar timelinetoolbar;
+ private global::Gtk.HBox hbox2;
+ private global::LongoMatch.Gui.Component.ButtonsWidget buttonswidget;
+ private global::LongoMatch.Gui.Component.Timeline timeline;
+
+ protected virtual void Build ()
+ {
+ global::Stetic.Gui.Initialize (this);
+ // Widget LongoMatch.Gui.Component.CodingWidget
+ Stetic.BinContainer w1 = global::Stetic.BinContainer.Attach (this);
+ this.UIManager = new global::Gtk.UIManager ();
+ global::Gtk.ActionGroup w2 = new global::Gtk.ActionGroup ("Default");
+ this.timelineMode = new global::Gtk.RadioAction ("timelineMode", null,
global::Mono.Unix.Catalog.GetString ("Timeline view"), "gtk-justify-fill", 0);
+ this.timelineMode.Group = new global::GLib.SList (global::System.IntPtr.Zero);
+ w2.Add (this.timelineMode, null);
+ this.autoTaggingMode = new global::Gtk.RadioAction ("autoTaggingMode", null,
global::Mono.Unix.Catalog.GetString ("Automatic tagging view"), "gtk-select-color", 0);
+ this.autoTaggingMode.Group = this.timelineMode.Group;
+ w2.Add (this.autoTaggingMode, null);
+ this.zoomFitAction = new global::Gtk.Action ("zoomFitAction", null, null,
"gtk-zoom-fit");
+ w2.Add (this.zoomFitAction, null);
+ this.UIManager.InsertActionGroup (w2, 0);
+ global::Gtk.ActionGroup w3 = new global::Gtk.ActionGroup ("Timeline");
+ this.UIManager.InsertActionGroup (w3, 1);
+ this.Name = "LongoMatch.Gui.Component.CodingWidget";
+ // Container child LongoMatch.Gui.Component.CodingWidget.Gtk.Container+ContainerChild
+ this.vbox2 = new global::Gtk.VBox ();
+ this.vbox2.Name = "vbox2";
+ this.vbox2.Spacing = 6;
+ // Container child vbox2.Gtk.Box+BoxChild
+ this.hbox1 = new global::Gtk.HBox ();
+ this.hbox1.Name = "hbox1";
+ this.hbox1.Spacing = 6;
+ // Container child hbox1.Gtk.Box+BoxChild
+ this.UIManager.AddUiFromString ("<ui><toolbar name='codingtoolbar'><toolitem
name='autoTaggingMode' action='autoTaggingMode'/><toolitem name='timelineMode'
action='timelineMode'/></toolbar></ui>");
+ this.codingtoolbar = ((global::Gtk.Toolbar)(this.UIManager.GetWidget
("/codingtoolbar")));
+ this.codingtoolbar.Name = "codingtoolbar";
+ this.codingtoolbar.ShowArrow = false;
+ this.hbox1.Add (this.codingtoolbar);
+ global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.hbox1
[this.codingtoolbar]));
+ w4.Position = 0;
+ w4.Expand = false;
+ w4.Fill = false;
+ // Container child hbox1.Gtk.Box+BoxChild
+ this.UIManager.AddUiFromString ("<ui><toolbar name='timelinetoolbar'><toolitem
name='zoomFitAction' action='zoomFitAction'/></toolbar></ui>");
+ this.timelinetoolbar = ((global::Gtk.Toolbar)(this.UIManager.GetWidget
("/timelinetoolbar")));
+ this.timelinetoolbar.Name = "timelinetoolbar";
+ this.timelinetoolbar.ShowArrow = false;
+ this.hbox1.Add (this.timelinetoolbar);
+ global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.hbox1
[this.timelinetoolbar]));
+ w5.Position = 1;
+ w5.Expand = false;
+ w5.Fill = false;
+ this.vbox2.Add (this.hbox1);
+ global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.hbox1]));
+ w6.Position = 0;
+ w6.Expand = false;
+ w6.Fill = false;
+ // Container child vbox2.Gtk.Box+BoxChild
+ this.hbox2 = new global::Gtk.HBox ();
+ this.hbox2.Name = "hbox2";
+ this.hbox2.Spacing = 6;
+ // Container child hbox2.Gtk.Box+BoxChild
+ this.buttonswidget = new global::LongoMatch.Gui.Component.ButtonsWidget ();
+ this.buttonswidget.Events = ((global::Gdk.EventMask)(256));
+ this.buttonswidget.Name = "buttonswidget";
+ this.hbox2.Add (this.buttonswidget);
+ global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.hbox2
[this.buttonswidget]));
+ w7.Position = 0;
+ // Container child hbox2.Gtk.Box+BoxChild
+ this.timeline = new global::LongoMatch.Gui.Component.Timeline ();
+ this.timeline.Events = ((global::Gdk.EventMask)(256));
+ this.timeline.Name = "timeline";
+ this.hbox2.Add (this.timeline);
+ global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.hbox2
[this.timeline]));
+ w8.Position = 1;
+ this.vbox2.Add (this.hbox2);
+ global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.hbox2]));
+ w9.Position = 1;
+ this.Add (this.vbox2);
+ if ((this.Child != null)) {
+ this.Child.ShowAll ();
+ }
+ w1.SetUiManager (UIManager);
+ this.Hide ();
+ }
+ }
+}
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.Timeline.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.Timeline.cs
index 7ecae55..de7dfd4 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.Timeline.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.Timeline.cs
@@ -5,14 +5,10 @@ namespace LongoMatch.Gui.Component
public partial class Timeline
{
private global::Gtk.HBox hbox1;
- private global::Gtk.VBox vbox2;
- private global::Gtk.VButtonBox vbuttonbox1;
- private global::Gtk.Button button7;
- private global::Gtk.Button button6;
- private global::Gtk.Button button8;
- private global::Gtk.Button button9;
private global::Gtk.VBox vbox4;
- private global::Gtk.Alignment alignment1;
+ private global::Gtk.HBox hbox2;
+ private global::Gtk.HScale hscale1;
+ private global::Gtk.Button button1;
private global::Gtk.DrawingArea labelsarea;
private global::Gtk.VBox vbox1;
private global::Gtk.DrawingArea timerulearea;
@@ -30,86 +26,54 @@ namespace LongoMatch.Gui.Component
this.hbox1.Name = "hbox1";
this.hbox1.Spacing = 6;
// Container child hbox1.Gtk.Box+BoxChild
- this.vbox2 = new global::Gtk.VBox ();
- this.vbox2.Name = "vbox2";
- this.vbox2.Spacing = 6;
- // Container child vbox2.Gtk.Box+BoxChild
- this.vbuttonbox1 = new global::Gtk.VButtonBox ();
- this.vbuttonbox1.Name = "vbuttonbox1";
- // Container child vbuttonbox1.Gtk.ButtonBox+ButtonBoxChild
- this.button7 = new global::Gtk.Button ();
- this.button7.CanFocus = true;
- this.button7.Name = "button7";
- this.button7.UseUnderline = true;
- this.button7.Label = global::Mono.Unix.Catalog.GetString ("GtkButton");
- this.vbuttonbox1.Add (this.button7);
- global::Gtk.ButtonBox.ButtonBoxChild w1 =
((global::Gtk.ButtonBox.ButtonBoxChild)(this.vbuttonbox1 [this.button7]));
- w1.Expand = false;
- w1.Fill = false;
- // Container child vbuttonbox1.Gtk.ButtonBox+ButtonBoxChild
- this.button6 = new global::Gtk.Button ();
- this.button6.CanFocus = true;
- this.button6.Name = "button6";
- this.button6.UseUnderline = true;
- this.button6.Label = global::Mono.Unix.Catalog.GetString ("GtkButton");
- this.vbuttonbox1.Add (this.button6);
- global::Gtk.ButtonBox.ButtonBoxChild w2 =
((global::Gtk.ButtonBox.ButtonBoxChild)(this.vbuttonbox1 [this.button6]));
+ this.vbox4 = new global::Gtk.VBox ();
+ this.vbox4.Name = "vbox4";
+ this.vbox4.Spacing = 6;
+ // Container child vbox4.Gtk.Box+BoxChild
+ this.hbox2 = new global::Gtk.HBox ();
+ this.hbox2.HeightRequest = 30;
+ this.hbox2.Name = "hbox2";
+ this.hbox2.Spacing = 6;
+ // Container child hbox2.Gtk.Box+BoxChild
+ this.hscale1 = new global::Gtk.HScale (null);
+ this.hscale1.CanFocus = true;
+ this.hscale1.Name = "hscale1";
+ this.hscale1.Adjustment.Upper = 100;
+ this.hscale1.Adjustment.PageIncrement = 10;
+ this.hscale1.Adjustment.StepIncrement = 1;
+ this.hscale1.DrawValue = true;
+ this.hscale1.Digits = 0;
+ this.hscale1.ValuePos = ((global::Gtk.PositionType)(2));
+ this.hbox2.Add (this.hscale1);
+ global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.hscale1]));
+ w1.Position = 0;
+ // Container child hbox2.Gtk.Box+BoxChild
+ this.button1 = new global::Gtk.Button ();
+ this.button1.CanFocus = true;
+ this.button1.Name = "button1";
+ this.button1.UseUnderline = true;
+ this.button1.Label = global::Mono.Unix.Catalog.GetString ("GtkButton");
+ this.hbox2.Add (this.button1);
+ global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.button1]));
w2.Position = 1;
w2.Expand = false;
w2.Fill = false;
- // Container child vbuttonbox1.Gtk.ButtonBox+ButtonBoxChild
- this.button8 = new global::Gtk.Button ();
- this.button8.CanFocus = true;
- this.button8.Name = "button8";
- this.button8.UseUnderline = true;
- this.button8.Label = global::Mono.Unix.Catalog.GetString ("GtkButton");
- this.vbuttonbox1.Add (this.button8);
- global::Gtk.ButtonBox.ButtonBoxChild w3 =
((global::Gtk.ButtonBox.ButtonBoxChild)(this.vbuttonbox1 [this.button8]));
- w3.Position = 2;
+ this.vbox4.Add (this.hbox2);
+ global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox4 [this.hbox2]));
+ w3.Position = 0;
w3.Expand = false;
w3.Fill = false;
- // Container child vbuttonbox1.Gtk.ButtonBox+ButtonBoxChild
- this.button9 = new global::Gtk.Button ();
- this.button9.CanFocus = true;
- this.button9.Name = "button9";
- this.button9.UseUnderline = true;
- this.button9.Label = global::Mono.Unix.Catalog.GetString ("GtkButton");
- this.vbuttonbox1.Add (this.button9);
- global::Gtk.ButtonBox.ButtonBoxChild w4 =
((global::Gtk.ButtonBox.ButtonBoxChild)(this.vbuttonbox1 [this.button9]));
- w4.Position = 3;
- w4.Expand = false;
- w4.Fill = false;
- this.vbox2.Add (this.vbuttonbox1);
- global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox2
[this.vbuttonbox1]));
- w5.Position = 2;
- this.hbox1.Add (this.vbox2);
- global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.vbox2]));
- w6.Position = 0;
- w6.Expand = false;
- w6.Fill = false;
- // Container child hbox1.Gtk.Box+BoxChild
- this.vbox4 = new global::Gtk.VBox ();
- this.vbox4.Name = "vbox4";
- this.vbox4.Spacing = 6;
- // Container child vbox4.Gtk.Box+BoxChild
- this.alignment1 = new global::Gtk.Alignment (0.5F, 0.5F, 1F, 1F);
- this.alignment1.Name = "alignment1";
- this.vbox4.Add (this.alignment1);
- global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.vbox4
[this.alignment1]));
- w7.Position = 0;
- w7.Expand = false;
- w7.Fill = false;
// Container child vbox4.Gtk.Box+BoxChild
this.labelsarea = new global::Gtk.DrawingArea ();
this.labelsarea.Name = "labelsarea";
this.vbox4.Add (this.labelsarea);
- global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.vbox4
[this.labelsarea]));
- w8.Position = 1;
+ global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.vbox4
[this.labelsarea]));
+ w4.Position = 1;
this.hbox1.Add (this.vbox4);
- global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.vbox4]));
- w9.Position = 1;
- w9.Expand = false;
- w9.Fill = false;
+ global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.vbox4]));
+ w5.Position = 0;
+ w5.Expand = false;
+ w5.Fill = false;
// Container child hbox1.Gtk.Box+BoxChild
this.vbox1 = new global::Gtk.VBox ();
this.vbox1.Name = "vbox1";
@@ -118,29 +82,29 @@ namespace LongoMatch.Gui.Component
this.timerulearea = new global::Gtk.DrawingArea ();
this.timerulearea.Name = "timerulearea";
this.vbox1.Add (this.timerulearea);
- global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.vbox1
[this.timerulearea]));
- w10.Position = 0;
- w10.Expand = false;
- w10.Fill = false;
+ global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.vbox1
[this.timerulearea]));
+ w6.Position = 0;
+ w6.Expand = false;
+ w6.Fill = false;
// Container child vbox1.Gtk.Box+BoxChild
this.scrolledwindow1 = new global::Gtk.ScrolledWindow ();
this.scrolledwindow1.CanFocus = true;
this.scrolledwindow1.Name = "scrolledwindow1";
this.scrolledwindow1.ShadowType = ((global::Gtk.ShadowType)(1));
// Container child scrolledwindow1.Gtk.Container+ContainerChild
- global::Gtk.Viewport w11 = new global::Gtk.Viewport ();
- w11.ShadowType = ((global::Gtk.ShadowType)(0));
+ global::Gtk.Viewport w7 = new global::Gtk.Viewport ();
+ w7.ShadowType = ((global::Gtk.ShadowType)(0));
// Container child GtkViewport.Gtk.Container+ContainerChild
this.timelinearea = new global::Gtk.DrawingArea ();
this.timelinearea.Name = "timelinearea";
- w11.Add (this.timelinearea);
- this.scrolledwindow1.Add (w11);
+ w7.Add (this.timelinearea);
+ this.scrolledwindow1.Add (w7);
this.vbox1.Add (this.scrolledwindow1);
- global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.vbox1
[this.scrolledwindow1]));
- w14.Position = 1;
+ global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.vbox1
[this.scrolledwindow1]));
+ w10.Position = 1;
this.hbox1.Add (this.vbox1);
- global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.vbox1]));
- w15.Position = 2;
+ global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.vbox1]));
+ w11.Position = 1;
this.Add (this.hbox1);
if ((this.Child != null)) {
this.Child.ShowAll ();
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.MainWindow.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.MainWindow.cs
index a5d4dbd..da25c3a 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.MainWindow.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.MainWindow.cs
@@ -131,7 +131,7 @@ namespace LongoMatch.Gui
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.ManualTaggingViewAction.Group;
+ this.GameUnitsViewAction.Group = this.TaggingViewAction.Group;
this.GameUnitsViewAction.Sensitive = false;
this.GameUnitsViewAction.ShortLabel = global::Mono.Unix.Catalog.GetString ("Game
units view");
w1.Add (this.GameUnitsViewAction, null);
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.ProjectsManagerPanel.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.ProjectsManagerPanel.cs
index 4169e1e..a392384 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.ProjectsManagerPanel.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.ProjectsManagerPanel.cs
@@ -463,7 +463,6 @@ namespace LongoMatch.Gui.Panel
w61.Position = 0;
// Container child rbox.Gtk.Box+BoxChild
this.hbuttonbox1 = new global::Gtk.HButtonBox ();
- this.hbuttonbox1.Name = "hbuttonbox1";
// Container child hbuttonbox1.Gtk.ButtonBox+ButtonBoxChild
this.savebutton = new global::Gtk.Button ();
this.savebutton.Sensitive = false;
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.WelcomePanel.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.WelcomePanel.cs
index e101721..4419a43 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.WelcomePanel.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.WelcomePanel.cs
@@ -48,7 +48,6 @@ namespace LongoMatch.Gui.Panel
w2.Fill = false;
// Container child vbox1.Gtk.Box+BoxChild
this.hbuttonbox1 = new global::Gtk.HButtonBox ();
- this.hbuttonbox1.Name = "hbuttonbox1";
this.hbuttonbox1.LayoutStyle = ((global::Gtk.ButtonBoxStyle)(1));
// Container child hbuttonbox1.Gtk.ButtonBox+ButtonBoxChild
this.newbutton = new global::Gtk.Button ();
diff --git a/LongoMatch.GUI/gtk-gui/gui.stetic b/LongoMatch.GUI/gtk-gui/gui.stetic
index a276388..d9effb6 100644
--- a/LongoMatch.GUI/gtk-gui/gui.stetic
+++ b/LongoMatch.GUI/gtk-gui/gui.stetic
@@ -263,7 +263,7 @@
<property name="DrawAsRadio">False</property>
<property name="Active">False</property>
<property name="Value">0</property>
- <property name="Group">group1</property>
+ <property name="Group">codingmode</property>
<signal name="Toggled" handler="OnViewToggled" />
</action>
<action id="TimelineViewAction">
@@ -275,7 +275,7 @@
<property name="DrawAsRadio">False</property>
<property name="Active">True</property>
<property name="Value">0</property>
- <property name="Group">group1</property>
+ <property name="Group">codingmode</property>
<signal name="Toggled" handler="OnViewToggled" />
</action>
<action id="SaveProjectAction">
@@ -341,7 +341,7 @@
<property name="DrawAsRadio">False</property>
<property name="Active">False</property>
<property name="Value">0</property>
- <property name="Group">group1</property>
+ <property name="Group">codingmode</property>
<signal name="Toggled" handler="OnViewToggled" />
</action>
<action id="GameUnitsViewAction">
@@ -352,7 +352,7 @@
<property name="DrawAsRadio">False</property>
<property name="Active">False</property>
<property name="Value">0</property>
- <property name="Group">group1</property>
+ <property name="Group">codingmode</property>
<signal name="Toggled" handler="OnViewToggled" />
</action>
<action id="ExportProjectAction">
@@ -6467,6 +6467,7 @@ Defining <b> Game Units </b> will help you during the analysis to in
</child>
</widget>
<widget class="Gtk.Bin" id="LongoMatch.Gui.Component.AnalysisComponent" design-size="1524 648">
+ <action-group name="Default" />
<property name="MemberName" />
<property name="Visible">False</property>
<child>
@@ -6478,22 +6479,11 @@ Defining <b> Game Units </b> will help you during the analysis to in
<widget class="Gtk.HPaned" id="hpaned">
<property name="MemberName" />
<property name="CanFocus">True</property>
- <property name="Position">290</property>
+ <property name="Position">261</property>
<child>
- <widget class="Gtk.VBox" id="leftbox">
+ <widget class="LongoMatch.Gui.Component.PlaysSelectionWidget" id="playsSelection">
<property name="MemberName" />
- <property name="Visible">False</property>
- <property name="Spacing">6</property>
- <child>
- <widget class="LongoMatch.Gui.Component.PlaysSelectionWidget" id="playsSelection">
- <property name="MemberName" />
- <property name="Events">ButtonPressMask</property>
- </widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">True</property>
- </packing>
- </child>
+ <property name="Events">ButtonPressMask</property>
</widget>
<packing>
<property name="Resize">False</property>
@@ -6503,7 +6493,7 @@ Defining <b> Game Units </b> will help you during the analysis to in
<widget class="Gtk.HPaned" id="hpaned1">
<property name="MemberName" />
<property name="CanFocus">True</property>
- <property name="Position">1015</property>
+ <property name="Position">1046</property>
<child>
<widget class="Gtk.VBox" id="downbox">
<property name="MemberName" />
@@ -6614,30 +6604,9 @@ Defining <b> Game Units </b> will help you during the analysis to in
</packing>
</child>
<child>
- <widget class="Gtk.HBox" id="hbox7">
+ <widget class="LongoMatch.Gui.Component.CodingWidget" id="codingwidget">
<property name="MemberName" />
- <property name="Spacing">6</property>
- <child>
- <widget class="LongoMatch.Gui.Component.ButtonsWidget" id="buttonswidget">
- <property name="MemberName" />
- <property name="Visible">False</property>
- <property name="Events">ButtonPressMask</property>
- </widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">True</property>
- </packing>
- </child>
- <child>
- <widget class="LongoMatch.Gui.Component.Timeline" id="timeline">
- <property name="MemberName" />
- <property name="Events">ButtonPressMask</property>
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="AutoSize">True</property>
- </packing>
- </child>
+ <property name="Events">ButtonPressMask</property>
</widget>
</child>
</widget>
@@ -10106,34 +10075,32 @@ Defining <b> Game Units </b> will help you during the analysis to in
<property name="MemberName" />
<property name="Spacing">6</property>
<child>
- <widget class="Gtk.VBox" id="vbox2">
+ <widget class="Gtk.VBox" id="vbox4">
<property name="MemberName" />
<property name="Spacing">6</property>
<child>
- <placeholder />
- </child>
- <child>
- <placeholder />
- </child>
- <child>
- <widget class="Gtk.VButtonBox" id="vbuttonbox1">
+ <widget class="Gtk.HBox" id="hbox2">
<property name="MemberName" />
- <property name="Size">4</property>
+ <property name="HeightRequest">30</property>
+ <property name="Spacing">6</property>
<child>
- <widget class="Gtk.Button" id="button7">
+ <widget class="Gtk.HScale" id="hscale1">
<property name="MemberName" />
<property name="CanFocus">True</property>
- <property name="Type">TextOnly</property>
- <property name="Label" translatable="yes">GtkButton</property>
- <property name="UseUnderline">True</property>
+ <property name="Upper">100</property>
+ <property name="PageIncrement">10</property>
+ <property name="StepIncrement">1</property>
+ <property name="DrawValue">True</property>
+ <property name="Digits">0</property>
+ <property name="ValuePos">Top</property>
</widget>
<packing>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
+ <property name="Position">0</property>
+ <property name="AutoSize">True</property>
</packing>
</child>
<child>
- <widget class="Gtk.Button" id="button6">
+ <widget class="Gtk.Button" id="button1">
<property name="MemberName" />
<property name="CanFocus">True</property>
<property name="Type">TextOnly</property>
@@ -10142,62 +10109,11 @@ Defining <b> Game Units </b> will help you during the analysis to in
</widget>
<packing>
<property name="Position">1</property>
+ <property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
</packing>
</child>
- <child>
- <widget class="Gtk.Button" id="button8">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Type">TextOnly</property>
- <property name="Label" translatable="yes">GtkButton</property>
- <property name="UseUnderline">True</property>
- </widget>
- <packing>
- <property name="Position">2</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Button" id="button9">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Type">TextOnly</property>
- <property name="Label" translatable="yes">GtkButton</property>
- <property name="UseUnderline">True</property>
- </widget>
- <packing>
- <property name="Position">3</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="Position">2</property>
- <property name="AutoSize">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.VBox" id="vbox4">
- <property name="MemberName" />
- <property name="Spacing">6</property>
- <child>
- <widget class="Gtk.Alignment" id="alignment1">
- <property name="MemberName" />
- <child>
- <placeholder />
- </child>
</widget>
<packing>
<property name="Position">0</property>
@@ -10217,7 +10133,7 @@ Defining <b> Game Units </b> will help you during the analysis to in
</child>
</widget>
<packing>
- <property name="Position">1</property>
+ <property name="Position">0</property>
<property name="AutoSize">False</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
@@ -10262,7 +10178,121 @@ Defining <b> Game Units </b> will help you during the analysis to in
</child>
</widget>
<packing>
- <property name="Position">2</property>
+ <property name="Position">1</property>
+ <property name="AutoSize">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.CodingWidget" design-size="673 300">
+ <action-group name="Default">
+ <action id="timelineMode">
+ <property name="Type">Radio</property>
+ <property name="Label" translatable="yes" />
+ <property name="StockId">gtk-justify-fill</property>
+ <property name="Tooltip" translatable="yes">Timeline view</property>
+ <property name="DrawAsRadio">False</property>
+ <property name="Active">False</property>
+ <property name="Value">0</property>
+ <property name="Group">codingmode</property>
+ </action>
+ <action id="autoTaggingMode">
+ <property name="Type">Radio</property>
+ <property name="Label" translatable="yes" />
+ <property name="StockId">gtk-select-color</property>
+ <property name="Tooltip" translatable="yes">Automatic tagging view</property>
+ <property name="DrawAsRadio">False</property>
+ <property name="Active">True</property>
+ <property name="Value">0</property>
+ <property name="Group">codingmode</property>
+ </action>
+ <action id="zoomFitAction">
+ <property name="Type">Action</property>
+ <property name="Label" translatable="yes" />
+ <property name="StockId">gtk-zoom-fit</property>
+ </action>
+ </action-group>
+ <action-group name="Timeline" />
+ <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="Gtk.HBox" id="hbox1">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="Gtk.Toolbar" id="codingtoolbar">
+ <property name="MemberName" />
+ <property name="ShowArrow">False</property>
+ <node name="codingtoolbar" type="Toolbar">
+ <node type="Toolitem" action="autoTaggingMode" />
+ <node type="Toolitem" action="timelineMode" />
+ </node>
+ </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.Toolbar" id="timelinetoolbar">
+ <property name="MemberName" />
+ <property name="ShowArrow">False</property>
+ <node name="timelinetoolbar" type="Toolbar">
+ <node type="Toolitem" action="zoomFitAction" />
+ </node>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">False</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder />
+ </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.HBox" id="hbox2">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="LongoMatch.Gui.Component.ButtonsWidget" id="buttonswidget">
+ <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.Component.Timeline" id="timeline">
+ <property name="MemberName" />
+ <property name="Events">ButtonPressMask</property>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
<property name="AutoSize">True</property>
</packing>
</child>
diff --git a/LongoMatch.GUI/gtk-gui/objects.xml b/LongoMatch.GUI/gtk-gui/objects.xml
index a57d4c8..cc4de42 100644
--- a/LongoMatch.GUI/gtk-gui/objects.xml
+++ b/LongoMatch.GUI/gtk-gui/objects.xml
@@ -486,4 +486,9 @@
</itemgroup>
</signals>
</object>
+ <object type="LongoMatch.Gui.Component.CodingWidget" palette-category="General" allow-children="false"
base-type="Gtk.Bin">
+ <itemgroups />
+ <signals>
+ </signals>
+ </object>
</objects>
\ No newline at end of file
diff --git a/LongoMatch.Services/Services/EventsManager.cs b/LongoMatch.Services/Services/EventsManager.cs
index 8009a9f..69c2464 100644
--- a/LongoMatch.Services/Services/EventsManager.cs
+++ b/LongoMatch.Services/Services/EventsManager.cs
@@ -317,7 +317,7 @@ namespace LongoMatch.Services
player.Seek (pos, true);
}
else if(tNode is Category) {
- analysisWindow.UpdateCategories(openedProject.Categories);
+ analysisWindow.UpdateCategories();
}
filter.Update();
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]