[longomatch] Add configurable coding panels
- From: Andoni Morales Alastruey <amorales src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [longomatch] Add configurable coding panels
- Date: Mon, 4 Aug 2014 11:53:57 +0000 (UTC)
commit 46ff0565cbaaac5176bba6eb43134490b6c877aa
Author: Andoni Morales Alastruey <ylatuya gmail com>
Date: Mon Aug 4 12:42:30 2014 +0200
Add configurable coding panels
LongoMatch.Core/Common/Constants.cs | 3 +-
LongoMatch.Core/Common/EventsBroker.cs | 30 +-
LongoMatch.Core/Common/PlaysFilter.cs | 2 +-
LongoMatch.Core/Handlers/Handlers.cs | 20 +-
.../Interfaces/Drawing/IDrawingToolkit.cs | 2 +
LongoMatch.Core/Interfaces/ITemplates.cs | 3 +-
LongoMatch.Core/LongoMatch.Core.mdp | 4 +-
LongoMatch.Core/Makefile.am | 4 +
LongoMatch.Core/Store/Category.cs | 32 +-
LongoMatch.Core/Store/PenaltyCard.cs | 14 +-
LongoMatch.Core/Store/Project.cs | 3 +-
LongoMatch.Core/Store/Score.cs | 9 +-
.../enums.cs => LongoMatch.Core/Store/TagButton.cs | 24 +-
LongoMatch.Core/Store/TaggerButton.cs | 117 ++
.../Store/Templates/CategoriesTemplate.cs | 125 +-
LongoMatch.Core/Store/Timer.cs | 30 +-
LongoMatch.Drawing.Cairo/CairoBackend.cs | 247 ++-
LongoMatch.Drawing.Cairo/CairoContext.cs | 10 +-
LongoMatch.Drawing.Cairo/Surface.cs | 21 +-
LongoMatch.Drawing.Cairo/WidgetWrapper.cs | 65 +-
LongoMatch.Drawing/Canvas.cs | 109 +-
LongoMatch.Drawing/CanvasObject/CardObject.cs | 71 +
LongoMatch.Drawing/CanvasObject/CategoryLabel.cs | 21 +-
LongoMatch.Drawing/CanvasObject/CategoryObject.cs | 224 ++-
LongoMatch.Drawing/CanvasObject/CounterObject.cs | 9 +-
LongoMatch.Drawing/CanvasObject/CrossObject.cs | 7 +-
LongoMatch.Drawing/CanvasObject/EllipseObject.cs | 7 +-
LongoMatch.Drawing/CanvasObject/LineObject.cs | 16 +-
LongoMatch.Drawing/CanvasObject/PlayObject.cs | 13 +-
LongoMatch.Drawing/CanvasObject/PlayerObject.cs | 40 +-
LongoMatch.Drawing/CanvasObject/PositionObject.cs | 41 +-
.../CanvasObject/QuadrilateralObject.cs | 7 +-
LongoMatch.Drawing/CanvasObject/RectangleObject.cs | 5 +-
LongoMatch.Drawing/CanvasObject/ScoreObject.cs | 55 +
LongoMatch.Drawing/CanvasObject/TagObject.cs | 55 +
LongoMatch.Drawing/CanvasObject/TaggerObject.cs | 190 ++
LongoMatch.Drawing/CanvasObject/TextObject.cs | 5 +-
LongoMatch.Drawing/CanvasObject/TimeNodeObject.cs | 66 +-
LongoMatch.Drawing/CanvasObject/TimelineObject.cs | 55 +-
LongoMatch.Drawing/CanvasObject/TimerObject.cs | 120 ++
LongoMatch.Drawing/Constants.cs | 5 +-
LongoMatch.Drawing/LongoMatch.Drawing.mdp | 8 +-
LongoMatch.Drawing/Makefile.am | 10 +-
LongoMatch.Drawing/Utils.cs | 43 +-
LongoMatch.Drawing/Widgets/Blackboard.cs | 121 +-
LongoMatch.Drawing/Widgets/CategoriesLabels.cs | 25 +-
LongoMatch.Drawing/Widgets/PlaysTagger.cs | 288 +++
LongoMatch.Drawing/Widgets/PlaysTimeline.cs | 86 +-
LongoMatch.Drawing/Widgets/PositionTagger.cs | 36 +-
LongoMatch.Drawing/Widgets/TeamTagger.cs | 92 +-
LongoMatch.Drawing/Widgets/TimersTimeline.cs | 45 +-
LongoMatch.Drawing/Widgets/Timerule.cs | 18 +-
LongoMatch.GUI.Multimedia/Gui/CapturerBin.cs | 6 +-
LongoMatch.GUI/Gui/Component/AnalysisComponent.cs | 6 +-
.../Gui/Component/AnalysisTemplateEditor.cs | 70 +-
LongoMatch.GUI/Gui/Component/ButtonsWidget.cs | 228 ++-
LongoMatch.GUI/Gui/Component/CategoryProperties.cs | 281 ++-
LongoMatch.GUI/Gui/Component/CodingWidget.cs | 40 +-
LongoMatch.GUI/Gui/Component/PeriodsRecoder.cs | 4 +-
.../Gui/Component/PlaysListTreeWidget.cs | 9 +-
LongoMatch.GUI/Gui/Component/ProjectPeriods.cs | 4 +-
LongoMatch.GUI/Gui/Dialog/EditCategoryDialog.cs | 7 +-
LongoMatch.GUI/Gui/Menu/PlaysMenu.cs | 2 +-
LongoMatch.GUI/Gui/Panel/SportsTemplatesPanel.cs | 22 +-
.../Gui/TreeView/CategoriesFilterTreeView.cs | 2 +-
LongoMatch.GUI/Gui/TreeView/ListTreeViewBase.cs | 4 +-
LongoMatch.GUI/Gui/TreeView/PlayListTreeView.cs | 3 +-
LongoMatch.GUI/Gui/TreeView/PlayersTreeView.cs | 2 +-
LongoMatch.GUI/Gui/TreeView/PlaysTreeView.cs | 13 +-
LongoMatch.GUI/LongoMatch.GUI.mdp | 4 -
LongoMatch.GUI/Makefile.am | 4 -
.../LongoMatch.Gui.Component.AnalysisComponent.cs | 48 +-
...goMatch.Gui.Component.AnalysisTemplateEditor.cs | 348 ----
.../LongoMatch.Gui.Component.ButtonTagger.cs | 50 -
.../LongoMatch.Gui.Component.ButtonsWidget.cs | 438 ++++-
.../LongoMatch.Gui.Component.CategoryProperties.cs | 695 ++++---
.../LongoMatch.Gui.Component.CodingWidget.cs | 106 +-
.../LongoMatch.Gui.Dialog.EditCategoryDialog.cs | 1 +
.../LongoMatch.Gui.Panel.NewProjectPanel.cs | 3 +-
.../LongoMatch.Gui.Panel.SportsTemplatesPanel.cs | 110 +-
LongoMatch.GUI/gtk-gui/gui.stetic | 2187 +++++++++++---------
LongoMatch.GUI/gtk-gui/objects.xml | 39 +-
LongoMatch.Migration/Makefile.am | 8 +-
LongoMatch.Multimedia/LongoMatch.Multimedia.mdp | 2 +-
LongoMatch.Services/Services/EventsManager.cs | 145 +-
LongoMatch.Services/Services/HotKeysManager.cs | 2 +-
LongoMatch.Services/Services/TemplatesService.cs | 2 +-
LongoMatch.mds | 3 +
Tests/Core/TestCategoriesTemplate.cs | 6 +-
Tests/Core/TestCategory.cs | 1 -
Tests/Core/TestPlaysFilter.cs | 46 +-
Tests/Core/TestProject.cs | 76 +-
92 files changed, 4672 insertions(+), 3013 deletions(-)
---
diff --git a/LongoMatch.Core/Common/Constants.cs b/LongoMatch.Core/Common/Constants.cs
index cce702c..bd0b8d8 100644
--- a/LongoMatch.Core/Common/Constants.cs
+++ b/LongoMatch.Core/Common/Constants.cs
@@ -116,7 +116,8 @@ Xavier Queralt Mateu (ca)";
public const int MAX_THUMBNAIL_SIZE = 100;
public const int MAX_BACKGROUND_WIDTH = 600;
public const int MAX_BACKGROUND_HEIGHT = 400;
-
+ public const int BUTTON_WIDTH = 120;
+ public const int BUTTON_HEIGHT = 80;
public static Color HOME_COLOR = Color.Red1;
public static Color AWAY_COLOR = Color.Blue1;
diff --git a/LongoMatch.Core/Common/EventsBroker.cs b/LongoMatch.Core/Common/EventsBroker.cs
index d78e337..36309a7 100644
--- a/LongoMatch.Core/Common/EventsBroker.cs
+++ b/LongoMatch.Core/Common/EventsBroker.cs
@@ -28,10 +28,6 @@ namespace LongoMatch.Common
{
public event NewTagHandler NewTagEvent;
- public event NewTagAtPosHandler NewTagAtPosEvent;
- public event NewTagStartHandler NewTagStartEvent;
- public event NewTagStopHandler NewTagStopEvent;
- public event NewTagCancelHandler NewTagCancelEvent;
public event PlaysDeletedHandler PlaysDeleted;
public event PlaySelectedHandler PlaySelected;
public event PlayCategoryChangedHandler PlayCategoryChanged;
@@ -96,32 +92,12 @@ namespace LongoMatch.Common
{
}
- public void EmitNewTagAtPos(Category category, Time pos) {
- if (NewTagAtPosEvent != null)
- NewTagAtPosEvent(category, pos);
- }
-
- public void EmitNewTag(Category category, List<Player> players = null) {
+ public void EmitNewTag (TaggerButton tagger, List<Player> players = null, List<Tag> tags =
null,
+ Time start = null, Time stop = null) {
if (NewTagEvent != null)
- NewTagEvent(category, players);
+ NewTagEvent (tagger, players, tags, start, stop);
}
- public void EmitNewTagStart(Category category) {
- if (NewTagStartEvent != null)
- NewTagStartEvent (category);
- }
-
- public void EmitNewTagStop(Category category) {
- if (NewTagStopEvent != null)
- NewTagStopEvent (category);
- }
-
- public void EmitNewTagCancel(Category category) {
- if (NewTagCancelEvent != null)
- NewTagCancelEvent (category);
- }
-
-
public void EmitPlaysDeleted(List<Play> plays)
{
if (PlaysDeleted != null)
diff --git a/LongoMatch.Core/Common/PlaysFilter.cs b/LongoMatch.Core/Common/PlaysFilter.cs
index 8444ded..69cc0b4 100644
--- a/LongoMatch.Core/Common/PlaysFilter.cs
+++ b/LongoMatch.Core/Common/PlaysFilter.cs
@@ -148,7 +148,7 @@ namespace LongoMatch.Common
void UpdateVisibleCategories () {
if (categoriesFilter.Count == 0) {
- VisibleCategories = project.Categories.List.ToList();
+ VisibleCategories = project.Categories.CategoriesList;
} else {
VisibleCategories = categoriesFilter.Keys.ToList();
}
diff --git a/LongoMatch.Core/Handlers/Handlers.cs b/LongoMatch.Core/Handlers/Handlers.cs
index f94b4e2..cef5b0f 100644
--- a/LongoMatch.Core/Handlers/Handlers.cs
+++ b/LongoMatch.Core/Handlers/Handlers.cs
@@ -34,17 +34,10 @@ namespace LongoMatch.Handlers
/* A Play was selected */
public delegate void PlaySelectedHandler(Play play);
/* A new play needs to be create for a specific category at the current play time */
- public delegate void NewTagHandler(Category category, List<Player> plays);
- /* Signal the start time to tag a new play */
- public delegate void NewTagStartHandler (Category category);
- /* Signal the stop time to tag a new play */
- public delegate void NewTagStopHandler(Category category);
- /* Signal cancellation of tag */
- public delegate void NewTagCancelHandler(Category category);
- /* A new play needs to be created at a defined frame */
- public delegate void NewTagAtPosHandler(Category category, Time position);
+ public delegate void NewTagHandler (TaggerButton tagger, List<Player> plays, List<Tag> tags, Time
start, Time stop);
//A play was edited
public delegate void TimeNodeChangedHandler(TimeNode tNode, object val);
+ public delegate void CategoryChangedHandler(Category cat);
/* A list of plays needs to be deleted */
public delegate void PlaysDeletedHandler(List<Play> plays);
/* Tag a play */
@@ -53,6 +46,15 @@ namespace LongoMatch.Handlers
public delegate void PlayCategoryChangedHandler(Play play, Category cat);
/* DUplicate play */
public delegate void DuplicatePlaysHandler (List<Play> plays);
+ /* Category Selected */
+ public delegate void TaggersSelectedHandler (List<TaggerButton> taggerbuttons);
+ public delegate void TaggerSelectedHandler (TaggerButton taggerbutton);
+ public delegate void ShowButtonsTaggerMenuHandler (TaggerButton taggerbutton, Tag tag);
+
+ /* Penalty Card */
+ public delegate void PenaltyCardHandler (PenaltyCard card);
+ /* Score */
+ public delegate void ScoreHandler (Score score);
public delegate void TeamsTagsChangedHandler ();
diff --git a/LongoMatch.Core/Interfaces/Drawing/IDrawingToolkit.cs
b/LongoMatch.Core/Interfaces/Drawing/IDrawingToolkit.cs
index 52b42d1..039f8fa 100644
--- a/LongoMatch.Core/Interfaces/Drawing/IDrawingToolkit.cs
+++ b/LongoMatch.Core/Interfaces/Drawing/IDrawingToolkit.cs
@@ -56,6 +56,8 @@ namespace LongoMatch.Interfaces.Drawing
SelectionPosition orientation);
void DrawRectangle (Point start, double width, double height);
void DrawRoundedRectangle (Point start, double width, double height, double radius);
+ void DrawButton (Point start, double width, double height, double radius,
+ Color startColor, Color stopColor);
void DrawArea (params Point[] vertices);
void DrawPoint (Point point);
void DrawCircle (Point center, double radius);
diff --git a/LongoMatch.Core/Interfaces/ITemplates.cs b/LongoMatch.Core/Interfaces/ITemplates.cs
index fad1fca..c5be324 100644
--- a/LongoMatch.Core/Interfaces/ITemplates.cs
+++ b/LongoMatch.Core/Interfaces/ITemplates.cs
@@ -30,7 +30,6 @@ namespace LongoMatch.Interfaces
public interface ITemplate<T>: ITemplate {
List<T> List {get;set;}
- T AddDefaultItem (int index);
}
public interface ITemplateProvider
@@ -51,7 +50,7 @@ namespace LongoMatch.Interfaces
void Update (ITemplate<U> template);
}
- public interface ICategoriesTemplatesProvider: ITemplateProvider<Categories, Category> {}
+ public interface ICategoriesTemplatesProvider: ITemplateProvider<Categories, TaggerButton> {}
public interface ITeamTemplatesProvider: ITemplateProvider<TeamTemplate, Player> {}
}
diff --git a/LongoMatch.Core/LongoMatch.Core.mdp b/LongoMatch.Core/LongoMatch.Core.mdp
index dbfe0e9..b819374 100644
--- a/LongoMatch.Core/LongoMatch.Core.mdp
+++ b/LongoMatch.Core/LongoMatch.Core.mdp
@@ -143,6 +143,8 @@
<File subtype="Code" buildaction="Compile" name="Store/TaggerButton.cs" />
<File subtype="Code" buildaction="Compile" name="Store/TagButton.cs" />
<File subtype="Code" buildaction="Compile" name="Interfaces/Multimedia/IDiscoverer.cs" />
+ <File subtype="Code" buildaction="Compile" name="Store/TaggerButton.cs" />
+ <File subtype="Code" buildaction="Compile" name="Store/TagButton.cs" />
</Contents>
<References>
<ProjectReference type="Package" localcopy="True" refto="System, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089" />
@@ -154,4 +156,4 @@
<ProjectReference type="Package" localcopy="True" refto="System.Drawing, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<ProjectReference type="Package" localcopy="False" refto="Newtonsoft.Json, Version=5.0.0.0,
Culture=neutral, PublicKeyToken=b9a188c8922137c6" />
</References>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/LongoMatch.Core/Makefile.am b/LongoMatch.Core/Makefile.am
index 3f93ff2..54af969 100644
--- a/LongoMatch.Core/Makefile.am
+++ b/LongoMatch.Core/Makefile.am
@@ -95,6 +95,10 @@ SOURCES = Common/Area.cs \
Store/Score.cs \
Store/ScoreEvent.cs \
Store/Tag.cs \
+ Store/TagButton.cs \
+ Store/TagButton.cs \
+ Store/TaggerButton.cs \
+ Store/TaggerButton.cs \
Store/Templates/CategoriesTemplate.cs \
Store/Templates/TeamTemplate.cs \
Store/Time.cs \
diff --git a/LongoMatch.Core/Store/Category.cs b/LongoMatch.Core/Store/Category.cs
index 4e4cbf4..8997dbb 100644
--- a/LongoMatch.Core/Store/Category.cs
+++ b/LongoMatch.Core/Store/Category.cs
@@ -36,7 +36,7 @@ namespace LongoMatch.Store
/// tagged in this category
/// </summary>
[Serializable]
- public class Category:TimeNode, IIDObject
+ public class Category:TaggerButton, IIDObject
{
#region Constructors
@@ -45,6 +45,14 @@ namespace LongoMatch.Store
Tags = new List<Tag>();
TagGoalPosition = false;
TagFieldPosition = true;
+ Position = new Point (0, 0);
+ ShowSubcategories = true;
+ TagsPerRow = 2;
+ Color = Color.Red;
+ TextColor = Color.Grey2;
+ TagMode = TagMode.Predifined;
+ Width = 30;
+ Height = 20;
}
#endregion
@@ -66,14 +74,6 @@ namespace LongoMatch.Store
set;
}
- /// <summary>
- /// A color to identify plays in this category
- /// </summary>
- public Color Color {
- get;
- set;
- }
-
//// <summary>
/// Sort method used to sort plays for this category
/// </summary>
@@ -82,15 +82,17 @@ namespace LongoMatch.Store
set;
}
- /// <summary>
- /// Position of the category in the list of categories
- /// </summary>
- public int Position {
+ public List<Tag> Tags {
get;
set;
}
-
- public List<Tag> Tags {
+
+ public bool ShowSubcategories {
+ get;
+ set;
+ }
+
+ public int TagsPerRow {
get;
set;
}
diff --git a/LongoMatch.Core/Store/PenaltyCard.cs b/LongoMatch.Core/Store/PenaltyCard.cs
index 623fda5..33bb955 100644
--- a/LongoMatch.Core/Store/PenaltyCard.cs
+++ b/LongoMatch.Core/Store/PenaltyCard.cs
@@ -17,10 +17,11 @@
//
using System;
using LongoMatch.Common;
+using LongoMatch.Interfaces;
namespace LongoMatch.Store
{
- public class PenaltyCard
+ public class PenaltyCard: EventButton
{
public PenaltyCard ()
{
@@ -33,21 +34,10 @@ namespace LongoMatch.Store
Shape = shape;
}
- public string Name {
- get;
- set;
- }
-
- public Color Color {
- get;
- set;
- }
-
public CardShape Shape {
get;
set;
}
-
}
}
diff --git a/LongoMatch.Core/Store/Project.cs b/LongoMatch.Core/Store/Project.cs
index ad7f6b9..5d3ae8e 100644
--- a/LongoMatch.Core/Store/Project.cs
+++ b/LongoMatch.Core/Store/Project.cs
@@ -218,10 +218,9 @@ namespace LongoMatch.Store
/// A <see cref="System.Int32"/>: category index
/// </param>
public void RemoveCategory(Category category) {
- if(Categories.List.Count == 1)
+ if(Categories.CategoriesList.Count == 1)
throw new Exception("You can't remove the last Category");
Categories.List.Remove(category);
-
Timeline.RemoveAll(p => p.Category.ID == category.ID);
}
diff --git a/LongoMatch.Core/Store/Score.cs b/LongoMatch.Core/Store/Score.cs
index e569971..926e894 100644
--- a/LongoMatch.Core/Store/Score.cs
+++ b/LongoMatch.Core/Store/Score.cs
@@ -16,11 +16,13 @@
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
//
using System;
+using LongoMatch.Interfaces;
+using LongoMatch.Common;
namespace LongoMatch.Store
{
[Serializable]
- public class Score
+ public class Score: EventButton
{
public Score ()
{
@@ -32,11 +34,6 @@ namespace LongoMatch.Store
Points = points;
}
- public string Name {
- get;
- set;
- }
-
public int Points {
get;
set;
diff --git a/LongoMatch.Drawing/enums.cs b/LongoMatch.Core/Store/TagButton.cs
similarity index 77%
rename from LongoMatch.Drawing/enums.cs
rename to LongoMatch.Core/Store/TagButton.cs
index ce6760c..1fcb182 100644
--- a/LongoMatch.Drawing/enums.cs
+++ b/LongoMatch.Core/Store/TagButton.cs
@@ -17,8 +17,24 @@
//
using System;
-namespace LongoMatch.Drawing
+namespace LongoMatch.Store
{
-
-}
-
+ [Serializable]
+ public class TagButton: TaggerButton
+ {
+ public TagButton ()
+ {
+ }
+
+ public TagButton (Tag tag)
+ {
+ Tag = tag;
+ Name = tag.Value;
+ }
+
+ public Tag Tag {
+ get;
+ set;
+ }
+ }
+}
\ No newline at end of file
diff --git a/LongoMatch.Core/Store/TaggerButton.cs b/LongoMatch.Core/Store/TaggerButton.cs
new file mode 100644
index 0000000..c29b13f
--- /dev/null
+++ b/LongoMatch.Core/Store/TaggerButton.cs
@@ -0,0 +1,117 @@
+//
+// 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.Common;
+using Newtonsoft.Json;
+
+namespace LongoMatch.Store
+{
+ [Serializable]
+ public class TaggerButton
+ {
+ Color color;
+
+ public TaggerButton () {
+ Position = new Point (0, 0);
+ Width = Constants.BUTTON_WIDTH;
+ Height = Constants.BUTTON_HEIGHT;
+ Color = Color.Red;
+ TextColor = Color.Grey2;
+ Start = new Time {Seconds = 10};
+ Stop = new Time {Seconds = 10};
+ }
+
+ public string Name {
+ get;
+ set;
+ }
+
+ public Point Position {
+ get;
+ set;
+ }
+
+ public int Width {
+ get;
+ set;
+ }
+
+ public int Height {
+ get;
+ set;
+ }
+
+ public Color Color {
+ get {
+ return color;
+ }
+ set {
+ byte y;
+ YCbCrColor c = YCbCrColor.YCbCrFromColor (value);
+ y = c.Y;
+ c.Y = (byte) (Math.Min (y + 50, 255));
+ LightColor = YCbCrColor.ColorFromYCbCr (c);
+ c.Y = (byte) (Math.Max (y - 50, 0));
+ DarkColor = YCbCrColor.ColorFromYCbCr (c);
+ color = value;
+ }
+ }
+
+ public Color TextColor {
+ get;
+ set;
+ }
+
+ public TagMode TagMode {
+ get;
+ set;
+ }
+
+ public Time Start {
+ get;
+ set;
+ }
+
+ public Time Stop {
+ get;
+ set;
+ }
+
+
+ [JsonIgnore]
+ public Color LightColor {
+ get;
+ set;
+ }
+
+ [JsonIgnore]
+ public Color DarkColor {
+ get;
+ set;
+ }
+
+ }
+
+ public class EventButton: TaggerButton {
+ public Time EventTime {
+ get;
+ set;
+ }
+ }
+}
+
diff --git a/LongoMatch.Core/Store/Templates/CategoriesTemplate.cs
b/LongoMatch.Core/Store/Templates/CategoriesTemplate.cs
index db4ac57..0933f41 100644
--- a/LongoMatch.Core/Store/Templates/CategoriesTemplate.cs
+++ b/LongoMatch.Core/Store/Templates/CategoriesTemplate.cs
@@ -40,9 +40,12 @@ namespace LongoMatch.Store.Templates
/// The <see cref="LongoMatch.DB.Project"/> must handle all the changes
/// </summary>
[Serializable]
- public class Categories: ITemplate, ITemplate<Category>
+ public class Categories: ITemplate<TaggerButton>
{
+ const int CAT_WIDTH = 120;
+ const int CAT_HEIGHT = 80;
+
/// <summary>
/// Creates a new template
/// </summary>
@@ -51,10 +54,7 @@ namespace LongoMatch.Store.Templates
HalfFieldBackground = Config.HalfFieldBackground;
GoalBackground = Config.GoalBackground;
ID = Guid.NewGuid ();
- List = new List<Category>();
- Scores = new List<Score> ();
- PenaltyCards = new List<PenaltyCard> ();
- CommonTags = new List<Tag>();
+ List = new List<TaggerButton>();
}
public Guid ID {
@@ -62,16 +62,11 @@ namespace LongoMatch.Store.Templates
set;
}
- public List<Category> List {
+ public List<TaggerButton> List {
get;
set;
}
- public List<Tag> CommonTags {
- get;
- set;
- }
-
public string Name {
get;
set;
@@ -82,16 +77,6 @@ namespace LongoMatch.Store.Templates
set;
}
- public List<Score> Scores {
- get;
- set;
- }
-
- public List<PenaltyCard> PenaltyCards {
- get;
- set;
- }
-
public Image Image {
get;
set;
@@ -112,6 +97,55 @@ namespace LongoMatch.Store.Templates
set;
}
+ [JsonIgnore]
+ public List<Score> Scores {
+ get {
+ return List.OfType<Score>().ToList();
+ }
+ }
+
+ [JsonIgnore]
+ public List<PenaltyCard> PenaltyCards {
+ get {
+ return List.OfType<PenaltyCard>().ToList();
+ }
+ }
+
+ [JsonIgnore]
+ public List<Timer> Timers {
+ get {
+ return List.OfType<Timer>().ToList();
+ }
+ }
+
+ [JsonIgnore]
+ public List<Category> CategoriesList {
+ get {
+ return List.OfType<Category>().ToList();
+ }
+ }
+
+ [JsonIgnore]
+ public List<TagButton> CommonTags {
+ get {
+ return List.OfType<TagButton>().ToList();
+ }
+ }
+
+ [JsonIgnore]
+ public int CanvasWidth {
+ get {
+ return (int) List.Max (c => c.Position.X + c.Width);
+ }
+ }
+
+ [JsonIgnore]
+ public int CanvasHeight {
+ get {
+ return (int) List.Max (c => c.Position.Y + c.Height);
+ }
+ }
+
public void Save(string filePath) {
Serializer.Save(this, filePath);
}
@@ -132,7 +166,11 @@ namespace LongoMatch.Store.Templates
Stop = new Time {Seconds = 10},
SortMethod = SortMethodType.SortByStartTime,
HotKey = h,
- Position = index-1,
+ /* Leave the first row for the timers and score */
+ Position = new Point (10 + (index % 7) * (CAT_WIDTH + 10),
+ 10 + (index / 7 + 1) * (CAT_HEIGHT + 10)),
+ Width = CAT_WIDTH,
+ Height = CAT_HEIGHT,
};
AddDefaultTags(cat);
List.Insert(index, cat);
@@ -150,6 +188,10 @@ namespace LongoMatch.Store.Templates
}
public static Categories DefaultTemplate(int count) {
+ Score score;
+ Timer timer;
+ PenaltyCard card;
+ TagButton tag;
List<string> periods = new List<string>();
Categories template = new Categories();
@@ -157,14 +199,37 @@ namespace LongoMatch.Store.Templates
periods.Add ("1");
periods.Add ("2");
template.GamePeriods = periods;
- template.CommonTags.Add (new Tag (Catalog.GetString ("Attack"),
- Constants.COMMON_TAG));
- template.CommonTags.Add (new Tag (Catalog.GetString ("Defense"),
- Constants.COMMON_TAG));
- template.PenaltyCards.Add (new PenaltyCard (Catalog.GetString ("Red"),
- Color.Red, CardShape.Rectangle));
- template.PenaltyCards.Add (new PenaltyCard (Catalog.GetString ("Yellow"),
- Color.Yellow, CardShape.Rectangle));
+ tag = new TagButton (new Tag (Catalog.GetString ("Attack"),
+ Constants.COMMON_TAG));
+ tag.Position = new Point (10, 10);
+ template.List.Add (tag);
+
+ tag = new TagButton (new Tag (Catalog.GetString ("Defense"),
+ Constants.COMMON_TAG));
+ tag.Position = new Point (10 + (10 + CAT_WIDTH) * 1, 10);
+ template.List.Add (tag);
+
+ card = new PenaltyCard (Catalog.GetString ("Red"),
+ Color.Red, CardShape.Rectangle);
+ card.Position = new Point (10 + (10 + CAT_WIDTH) * 2, 10);
+ template.List.Add (card);
+
+ card = new PenaltyCard (Catalog.GetString ("Yellow"),
+ Color.Yellow, CardShape.Rectangle);
+ card.Position = new Point (10 + (10 + CAT_WIDTH) * 3, 10);
+ template.List.Add (card);
+
+ score = new Score (Catalog.GetString ("Field goal"), 1);
+ score.Position = new Point (10 + (10 + CAT_WIDTH) * 4, 10);
+ template.List.Add (score);
+
+ score = new Score (Catalog.GetString ("Penalty goal"), 1);
+ score.Position = new Point (10 + (10 + CAT_WIDTH) * 5, 10);
+ template.List.Add (score);
+
+ timer = new Timer {Name = Catalog.GetString ("Ball playing")};
+ timer.Position = new Point (10 + (10 + CAT_WIDTH) * 6, 10);
+ template.List.Add (timer);
return template;
}
diff --git a/LongoMatch.Core/Store/Timer.cs b/LongoMatch.Core/Store/Timer.cs
index ee28aac..dd4cc21 100644
--- a/LongoMatch.Core/Store/Timer.cs
+++ b/LongoMatch.Core/Store/Timer.cs
@@ -20,21 +20,18 @@ using System.Linq;
using LongoMatch.Store;
using System.Collections.Generic;
using Newtonsoft.Json;
+using LongoMatch.Interfaces;
+using LongoMatch.Common;
namespace LongoMatch.Store
{
- public class Timer
+ public class Timer: TaggerButton
{
public Timer ()
{
Nodes = new List<TimeNode>();
}
- public string Name {
- get;
- set;
- }
-
public List<TimeNode> Nodes {
get;
set;
@@ -47,21 +44,34 @@ namespace LongoMatch.Store
}
}
- public void Start (Time start, string name = null) {
+ public TimeNode StartTimer (Time start, string name = null) {
+ TimeNode tn;
+
if (name == null)
name = Name;
- Stop (start);
- TimeNode tn = new TimeNode {Name = name, Start = start};
+ StopTimer (start);
+ tn = new TimeNode {Name = name, Start = start};
Nodes.Add (tn);
+ return tn;
}
- public void Stop (Time stop) {
+ public void StopTimer (Time stop) {
if (Nodes.Count > 0) {
TimeNode last = Nodes.Last ();
if (last.Stop == null) {
last.Stop = stop;
}
}
+ Nodes.OrderBy (tn => tn.Start.MSeconds);
+ }
+
+ public void CancelTimer () {
+ if (Nodes.Count > 0) {
+ TimeNode last = Nodes.Last ();
+ if (last.Stop == null) {
+ Nodes.Remove (last);
+ }
+ }
}
}
}
diff --git a/LongoMatch.Drawing.Cairo/CairoBackend.cs b/LongoMatch.Drawing.Cairo/CairoBackend.cs
index d1ffa93..5bcccfb 100644
--- a/LongoMatch.Drawing.Cairo/CairoBackend.cs
+++ b/LongoMatch.Drawing.Cairo/CairoBackend.cs
@@ -16,10 +16,8 @@
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
//
using System;
-using System.Collections.Generic;
using Cairo;
using LongoMatch.Common;
-using LongoMatch.Interfaces;
using LongoMatch.Interfaces.Drawing;
using Color = LongoMatch.Common.Color;
using FontSlant = Cairo.FontSlant;
@@ -44,7 +42,7 @@ namespace LongoMatch.Drawing.Cairo
LineStyle savedLineStyle;
string savedFontFamily;
bool disableScalling;
-
+
public CairoBackend ()
{
StrokeColor = Color.Black;
@@ -57,39 +55,39 @@ namespace LongoMatch.Drawing.Cairo
LineStyle = LineStyle.Normal;
ClearOperation = false;
}
-
+
public IContext Context {
set {
context = value;
}
}
-
+
public int LineWidth {
set;
protected get;
}
-
+
public Color StrokeColor {
set;
protected get;
}
-
+
public Color FillColor {
set;
protected get;
}
-
+
public string FontFamily {
set;
protected get;
}
-
+
public int FontSize {
set;
protected get;
}
-
+
public LFontSlant FontSlant {
set {
switch (value) {
@@ -105,7 +103,7 @@ namespace LongoMatch.Drawing.Cairo
}
}
}
-
+
public LFontWeight FontWeight {
set {
switch (value) {
@@ -118,29 +116,32 @@ namespace LongoMatch.Drawing.Cairo
}
}
}
-
+
public LineStyle LineStyle {
get;
set;
}
-
+
public bool ClearOperation {
get;
set;
}
-
- public ISurface CreateSurface (int width, int height, Image image=null) {
+
+ public ISurface CreateSurface (int width, int height, Image image=null)
+ {
return new Surface (width, height, image);
}
-
- public void Clear (Color color) {
+
+ public void Clear (Color color)
+ {
SetColor (color);
CContext.Operator = Operator.Source;
CContext.Paint ();
CContext.Operator = Operator.Over;
}
-
- public void Begin() {
+
+ public void Begin ()
+ {
savedStrokeColor = StrokeColor;
savedFillColor = FillColor;
savedFSlant = fSlant;
@@ -152,15 +153,17 @@ namespace LongoMatch.Drawing.Cairo
savedClear = ClearOperation;
CContext.Save ();
}
-
- public void TranslateAndScale (Point translation, Point scale) {
+
+ public void TranslateAndScale (Point translation, Point scale)
+ {
if (!disableScalling) {
CContext.Translate (translation.X, translation.Y);
CContext.Scale (scale.X, scale.Y);
}
}
-
- public void End() {
+
+ public void End ()
+ {
CContext.Restore ();
ClearOperation = savedClear;
StrokeColor = savedStrokeColor;
@@ -172,16 +175,18 @@ namespace LongoMatch.Drawing.Cairo
FontFamily = savedFontFamily;
LineStyle = savedLineStyle;
}
-
- public void DrawLine (Point start, Point stop) {
+
+ public void DrawLine (Point start, Point stop)
+ {
CContext.LineWidth = LineWidth;
CContext.MoveTo (start.X, start.Y);
CContext.LineTo (stop.X, stop.Y);
StrokeAndFill ();
}
-
+
public void DrawTriangle (Point corner, double width, double height,
- SelectionPosition position) {
+ SelectionPosition position)
+ {
double x1, y1, x2, y2, x3, y3;
x1 = corner.X;
@@ -189,16 +194,16 @@ namespace LongoMatch.Drawing.Cairo
switch (position) {
case SelectionPosition.Top:
- x2 = x1 + width/2;
+ x2 = x1 + width / 2;
y2 = y1 + height;
- x3 = x1 - width/2;
+ x3 = x1 - width / 2;
y3 = y1 + height;
break;
case SelectionPosition.Bottom:
default:
- x2 = x1 + width/2;
+ x2 = x1 + width / 2;
y2 = y1 - height;
- x3 = x1 - width/2;
+ x3 = x1 - width / 2;
y3 = y1 - height;
break;
}
@@ -207,40 +212,78 @@ namespace LongoMatch.Drawing.Cairo
CContext.MoveTo (x1, y1);
CContext.LineTo (x2, y2);
CContext.LineTo (x3, y3);
- CContext.ClosePath();
+ CContext.ClosePath ();
StrokeAndFill ();
}
-
- public void DrawArea (params Point[] vertices) {
+
+ public void DrawArea (params Point[] vertices)
+ {
for (int i=0; i < vertices.Length - 1; i++) {
double x1, y1, x2, y2;
- x1 = vertices[i].X;
- y1 = vertices[i].Y;
- x2 = vertices[i+1].X;
- y2 = vertices[i+1].Y;
+ x1 = vertices [i].X;
+ y1 = vertices [i].Y;
+ x2 = vertices [i + 1].X;
+ y2 = vertices [i + 1].Y;
CContext.MoveTo (x1, y1);
CContext.LineTo (x2, y2);
}
- CContext.ClosePath();
+ CContext.ClosePath ();
StrokeAndFill ();
}
-
- public void DrawRectangle (Point start, double width, double height) {
+
+ public void DrawRectangle (Point start, double width, double height)
+ {
CContext.Rectangle (start.X, start.Y, width, height);
StrokeAndFill ();
}
-
- public void DrawRoundedRectangle (Point start, double width, double height, double radius) {
+
+ static public double ByteToDouble (byte val)
+ {
+ return (double)(val) / byte.MaxValue;
+ }
+
+ public static global::Cairo.Color RGBToCairoColor (Color c)
+ {
+ return new global::Cairo.Color (ByteToDouble (c.R),
+ ByteToDouble (c.G),
+ ByteToDouble (c.B));
+ }
+
+ public void DrawButton (Point start, double width, double height, double radius, Color
startColor, Color stopColor)
+ {
+ LinearGradient p;
+ DrawRoundedRectangle (start, width, height, radius, false);
+ p = new LinearGradient (start.X, start.Y, start.X, start.Y + height);
+ p.AddColorStop (0, RGBToCairoColor (startColor));
+ p.AddColorStop (1, RGBToCairoColor (stopColor));
+ CContext.Pattern = p;
+ CContext.LineCap = LineCap.Round;
+ CContext.LineJoin = LineJoin.Round;
+ CContext.LineWidth = LineWidth;
+ CContext.FillPreserve ();
+ SetColor (StrokeColor);
+ CContext.StrokePreserve ();
+ CContext.Stroke ();
+ p.Dispose ();
+ }
+
+ public void DrawRoundedRectangle (Point start, double width, double height, double radius)
+ {
+ DrawRoundedRectangle (start, width, height, radius, true);
+ }
+
+ public void DrawRoundedRectangle (Point start, double width, double height, double radius,
bool strokeAndFill)
+ {
double x, y;
x = start.X + LineWidth / 2;
y = start.Y + LineWidth / 2;
- height -= LineWidth;
- width -= LineWidth;
+ height -= LineWidth / 2;
+ width -= LineWidth / 2;
- if((radius > height / 2) || (radius > width / 2))
+ if ((radius > height / 2) || (radius > width / 2))
radius = Math.Min (height / 2, width / 2);
CContext.MoveTo (x, y + radius);
@@ -251,20 +294,25 @@ namespace LongoMatch.Drawing.Cairo
CContext.Arc (x + width - radius, y + height - radius, radius, 0, Math.PI / 2);
CContext.LineTo (x + radius, y + height);
CContext.Arc (x + radius, y + height - radius, radius, Math.PI / 2, Math.PI);
- CContext.ClosePath();
- StrokeAndFill ();
+ CContext.ClosePath ();
+ if (strokeAndFill) {
+ StrokeAndFill ();
+ }
}
- public void DrawCircle (Point center, double radius) {
+ public void DrawCircle (Point center, double radius)
+ {
CContext.Arc (center.X, center.Y, radius, 0, 2 * Math.PI);
StrokeAndFill ();
}
- public void DrawPoint (Point point) {
+ public void DrawPoint (Point point)
+ {
DrawCircle (point, LineWidth);
}
-
- public void DrawText (Point point, double width, double height, string text) {
+
+ public void DrawText (Point point, double width, double height, string text)
+ {
TextExtents extents;
FontExtents fextents;
double x, y;
@@ -283,18 +331,20 @@ namespace LongoMatch.Drawing.Cairo
CContext.ShowText (text);
StrokeAndFill ();
}
-
- public void DrawImage (Image image) {
+
+ public void DrawImage (Image image)
+ {
CairoHelper.SetSourcePixbuf (CContext, image.Value, 0, 0);
CContext.Paint ();
}
- public void DrawImage (Point start, double width, double height, Image image, bool scale) {
+ public void DrawImage (Point start, double width, double height, Image image, bool scale)
+ {
double scaleX, scaleY;
Point offset;
if (scale) {
- image.ScaleFactor ((int) width, (int) height, out scaleX, out scaleY, out
offset);
+ image.ScaleFactor ((int)width, (int)height, out scaleX, out scaleY, out
offset);
} else {
offset = new Point (0, 0);
scaleX = width / image.Width;
@@ -308,7 +358,8 @@ namespace LongoMatch.Drawing.Cairo
CContext.Restore ();
}
- public void DrawEllipse (Point center, double axisX, double axisY) {
+ public void DrawEllipse (Point center, double axisX, double axisY)
+ {
double max = Math.Max (axisX, axisY);
CContext.Save ();
CContext.Translate (center.X, center.Y);
@@ -317,56 +368,60 @@ namespace LongoMatch.Drawing.Cairo
StrokeAndFill ();
CContext.Restore ();
}
-
- public void DrawArrow(Point start, Point stop, int lenght, double radians, bool closed) {
- double vx1,vy1,vx2,vy2;
- double angle = Math.Atan2(stop.Y - start.Y, stop.X - start.X) + Math.PI;
- vx1 = stop.X + (lenght + LineWidth) * Math.Cos(angle - radians);
- vy1 = stop.Y + (lenght + LineWidth) * Math.Sin(angle - radians);
- vx2 = stop.X + (lenght + LineWidth) * Math.Cos(angle + radians);
- vy2 = stop.Y + (lenght + LineWidth) * Math.Sin(angle + radians);
+ public void DrawArrow (Point start, Point stop, int lenght, double radians, bool closed)
+ {
+ double vx1, vy1, vx2, vy2;
+ double angle = Math.Atan2 (stop.Y - start.Y, stop.X - start.X) + Math.PI;
+
+ vx1 = stop.X + (lenght + LineWidth) * Math.Cos (angle - radians);
+ vy1 = stop.Y + (lenght + LineWidth) * Math.Sin (angle - radians);
+ vx2 = stop.X + (lenght + LineWidth) * Math.Cos (angle + radians);
+ vy2 = stop.Y + (lenght + LineWidth) * Math.Sin (angle + radians);
- CContext.MoveTo(stop.X, stop.Y);
- CContext.LineTo(vx1, vy1);
+ CContext.MoveTo (stop.X, stop.Y);
+ CContext.LineTo (vx1, vy1);
if (!closed) {
- CContext.MoveTo(stop.X, stop.Y);
- CContext.LineTo(vx2,vy2);
+ CContext.MoveTo (stop.X, stop.Y);
+ CContext.LineTo (vx2, vy2);
} else {
- CContext.LineTo(vx2,vy2);
+ CContext.LineTo (vx2, vy2);
CContext.ClosePath ();
}
- StrokeAndFill();
+ StrokeAndFill ();
}
- public void DrawSurface (ISurface surface) {
+ public void DrawSurface (ISurface surface)
+ {
CContext.SetSourceSurface (surface.Value as ImageSurface, 0, 0);
CContext.Paint ();
}
-
- public Image Copy (ICanvas canvas, double width, double height) {
+
+ public Image Copy (ICanvas canvas, double width, double height)
+ {
Image img;
Pixmap pm;
- pm = new Pixmap (null, (int) width, (int) height, 24);
+ pm = new Pixmap (null, (int)width, (int)height, 24);
disableScalling = true;
- using(CairoContext c = new CairoContext (CairoHelper.Create (pm))) {
+ using (CairoContext c = new CairoContext (CairoHelper.Create (pm))) {
canvas.Draw (c, new Area (new Point (0, 0), width, height));
}
img = new Image (Gdk.Pixbuf.FromDrawable (pm, Colormap.System, 0, 0, 0, 0,
- (int) width, (int)height));
+ (int)width, (int)height));
disableScalling = false;
Context = null;
return img;
}
- public void Save (ICanvas canvas, double width, double height, string filename) {
- ImageSurface pngSurface = new ImageSurface(Format.ARGB32, (int) width, (int) height);
+ public void Save (ICanvas canvas, double width, double height, string filename)
+ {
+ ImageSurface pngSurface = new ImageSurface (Format.ARGB32, (int)width, (int)height);
disableScalling = true;
- using(CairoContext c = new CairoContext (new Context(pngSurface))) {
+ using (CairoContext c = new CairoContext (new Context(pngSurface))) {
canvas.Draw (c, new Area (new Point (0, 0), width, height));
}
- pngSurface.WriteToPng(filename);
+ pngSurface.WriteToPng (filename);
disableScalling = false;
pngSurface.Dispose ();
}
@@ -376,19 +431,21 @@ namespace LongoMatch.Drawing.Cairo
return context.Value as Context;
}
}
-
- void SetDash() {
+
+ void SetDash ()
+ {
switch (LineStyle) {
case LineStyle.Normal:
- CContext.SetDash(new double[] {}, 0);
+ CContext.SetDash (new double[] { }, 0);
break;
default:
- CContext.SetDash(new double[] {10, 10}, 10);
+ CContext.SetDash (new double[] { 10, 10 }, 10);
break;
}
}
- void StrokeAndFill () {
+ void StrokeAndFill ()
+ {
SetDash ();
if (ClearOperation) {
CContext.Operator = Operator.Clear;
@@ -399,22 +456,22 @@ namespace LongoMatch.Drawing.Cairo
CContext.LineJoin = LineJoin.Round;
CContext.LineWidth = LineWidth;
SetColor (StrokeColor);
- CContext.StrokePreserve();
+ CContext.StrokePreserve ();
SetColor (FillColor);
- CContext.Fill();
+ CContext.Fill ();
}
-
- void SetColor (Color color) {
+
+ void SetColor (Color color)
+ {
if (color != null) {
- CContext.SetSourceRGBA ((double) color.R / byte.MaxValue,
- (double) color.G / byte.MaxValue,
- (double) color.B / byte.MaxValue,
- (double) color.A / byte.MaxValue);
+ CContext.SetSourceRGBA ((double)color.R / byte.MaxValue,
+ (double)color.G / byte.MaxValue,
+ (double)color.B / byte.MaxValue,
+ (double)color.A / byte.MaxValue);
} else {
CContext.SetSourceRGBA (0, 0, 0, 0);
}
}
-
}
}
diff --git a/LongoMatch.Drawing.Cairo/CairoContext.cs b/LongoMatch.Drawing.Cairo/CairoContext.cs
index 2a2f2ab..2eb66a4 100644
--- a/LongoMatch.Drawing.Cairo/CairoContext.cs
+++ b/LongoMatch.Drawing.Cairo/CairoContext.cs
@@ -15,7 +15,6 @@
// 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 Gdk;
using Cairo;
using LongoMatch.Interfaces.Drawing;
@@ -38,14 +37,15 @@ namespace LongoMatch.Drawing.Cairo
{
Value = context;
}
-
+
public object Value {
get;
protected set;
}
-
- public void Dispose () {
- (Value as Context).Dispose();
+
+ public void Dispose ()
+ {
+ (Value as Context).Dispose ();
}
}
}
diff --git a/LongoMatch.Drawing.Cairo/Surface.cs b/LongoMatch.Drawing.Cairo/Surface.cs
index 9a65c8b..cfa6c93 100644
--- a/LongoMatch.Drawing.Cairo/Surface.cs
+++ b/LongoMatch.Drawing.Cairo/Surface.cs
@@ -15,7 +15,6 @@
// 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 Cairo;
using LongoMatch.Interfaces.Drawing;
using LongoMatch.Common;
@@ -28,35 +27,37 @@ namespace LongoMatch.Drawing.Cairo
public Surface (int width, int height, Image image)
{
- surface = new ImageSurface(Format.ARGB32, width, height);
+ surface = new ImageSurface (Format.ARGB32, width, height);
if (image != null) {
using (Context context = new Context(surface)) {
Gdk.CairoHelper.SetSourcePixbuf (context, image.Value, 0, 0);
- context.Paint();
+ context.Paint ();
}
}
}
-
+
public object Value {
get {
return surface;
}
}
-
+
public IContext Context {
get {
return new CairoContext (surface);
}
}
-
- public Image Copy () {
- string tempFile = System.IO.Path.GetTempFileName();
+
+ public Image Copy ()
+ {
+ string tempFile = System.IO.Path.GetTempFileName ();
surface.WriteToPng (tempFile);
Gdk.Pixbuf pixbuf = new Gdk.Pixbuf (tempFile);
return new Image (pixbuf);
}
-
- public void Dispose () {
+
+ public void Dispose ()
+ {
surface.Dispose ();
}
}
diff --git a/LongoMatch.Drawing.Cairo/WidgetWrapper.cs b/LongoMatch.Drawing.Cairo/WidgetWrapper.cs
index 4046149..313e924 100644
--- a/LongoMatch.Drawing.Cairo/WidgetWrapper.cs
+++ b/LongoMatch.Drawing.Cairo/WidgetWrapper.cs
@@ -15,14 +15,11 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
//
-using System;
using Gtk;
using Gdk;
-using Cairo;
using LongoMatch.Common;
using LongoMatch.Interfaces.Drawing;
using LongoMatch.Handlers.Drawing;
-
using Rectangle = Gdk.Rectangle;
using Point = LongoMatch.Common.Point;
using CursorType = LongoMatch.Common.CursorType;
@@ -44,7 +41,7 @@ namespace LongoMatch.Drawing.Cairo
double lastX, lastY;
bool canMove;
uint moveTimerID, hoverTimerID;
-
+
public WidgetWrapper (DrawingArea widget)
{
this.widget = widget;
@@ -63,7 +60,7 @@ namespace LongoMatch.Drawing.Cairo
return currentWidth;
}
set {
- widget.WidthRequest = (int) value;
+ widget.WidthRequest = (int)value;
}
}
@@ -72,37 +69,41 @@ namespace LongoMatch.Drawing.Cairo
return currentHeight;
}
set {
- widget.HeightRequest = (int) value;
+ widget.HeightRequest = (int)value;
}
}
-
- public void ReDraw (Area area = null) {
+
+ public void ReDraw (Area area = null)
+ {
if (widget.GdkWindow == null) {
return;
}
if (area == null) {
Gdk.Region region = widget.GdkWindow.ClipRegion;
- widget.GdkWindow.InvalidateRegion(region,true);
+ widget.GdkWindow.InvalidateRegion (region, true);
} else {
widget.GdkWindow.InvalidateRect (
new Gdk.Rectangle ((int)area.Start.X, (int)area.Start.Y,
- (int)area.Width, (int)area.Height),
+ (int)area.Width, (int)area.Height),
true);
}
- widget.GdkWindow.ProcessUpdates(true);
+ widget.GdkWindow.ProcessUpdates (true);
}
-
- public void ReDraw (IMovableObject drawable) {
+
+ public void ReDraw (IMovableObject drawable)
+ {
/* FIXME: get region from drawable */
ReDraw ();
}
-
- public void ShowTooltip (string text) {
+
+ public void ShowTooltip (string text)
+ {
widget.HasTooltip = true;
widget.TooltipText = text;
}
- public void SetCursor (CursorType type) {
+ public void SetCursor (CursorType type)
+ {
GCursorType gtype;
switch (type) {
case CursorType.Arrow:
@@ -124,7 +125,8 @@ namespace LongoMatch.Drawing.Cairo
widget.GdkWindow.Cursor = new Cursor (gtype);
}
- public void SetCursorForTool (DrawTool tool) {
+ public void SetCursorForTool (DrawTool tool)
+ {
string cursor;
switch (tool) {
@@ -170,8 +172,9 @@ namespace LongoMatch.Drawing.Cairo
widget.GdkWindow.Cursor = c;
}
}
-
- void Draw (Area area) {
+
+ void Draw (Area area)
+ {
if (DrawEvent != null) {
using (CairoContext c = new CairoContext (widget.GdkWindow)) {
if (area == null) {
@@ -181,8 +184,9 @@ namespace LongoMatch.Drawing.Cairo
}
}
}
-
- ButtonType ParseButtonType (uint button) {
+
+ ButtonType ParseButtonType (uint button)
+ {
ButtonType bt;
switch (button) {
@@ -201,8 +205,9 @@ namespace LongoMatch.Drawing.Cairo
}
return bt;
}
-
- ButtonModifier ParseButtonModifier (ModifierType modifier) {
+
+ ButtonModifier ParseButtonModifier (ModifierType modifier)
+ {
ButtonModifier bm;
switch (modifier) {
@@ -218,14 +223,16 @@ namespace LongoMatch.Drawing.Cairo
}
return bm;
}
-
- bool ReadyToMove () {
+
+ bool ReadyToMove ()
+ {
canMove = true;
moveTimerID = 0;
return false;
}
-
- bool EmitShowTooltip () {
+
+ bool EmitShowTooltip ()
+ {
if (ShowTooltipEvent != null) {
ShowTooltipEvent (new Point (lastX, lastY));
}
@@ -235,7 +242,7 @@ namespace LongoMatch.Drawing.Cairo
void HandleMotionNotifyEvent (object o, MotionNotifyEventArgs args)
{
- if (hoverTimerID != 0){
+ if (hoverTimerID != 0) {
GLib.Source.Remove (hoverTimerID);
hoverTimerID = 0;
}
@@ -284,7 +291,7 @@ namespace LongoMatch.Drawing.Cairo
args.Event.Time, bt, bm);
}
}
-
+
void HandleExposeEvent (object o, ExposeEventArgs args)
{
Rectangle r;
diff --git a/LongoMatch.Drawing/Canvas.cs b/LongoMatch.Drawing/Canvas.cs
index 8dc4d27..3407cd3 100644
--- a/LongoMatch.Drawing/Canvas.cs
+++ b/LongoMatch.Drawing/Canvas.cs
@@ -32,30 +32,32 @@ namespace LongoMatch.Drawing
protected IWidget widget;
protected double scaleX, scaleY;
protected Point translation;
-
+
public Canvas (IWidget widget)
{
this.widget = widget;
tk = Config.DrawingToolkit;
- Objects = new List<ICanvasObject>();
+ Objects = new List<ICanvasObject> ();
widget.DrawEvent += Draw;
scaleX = 1;
scaleY = 1;
translation = new Point (0, 0);
}
-
+
public List<ICanvasObject> Objects {
get;
set;
}
-
- protected Point ToUserCoords (Point p) {
+
+ protected Point ToUserCoords (Point p)
+ {
return new Point ((p.X - translation.X) / scaleX,
(p.Y - translation.Y) / scaleY);
}
-
- public virtual void Draw (IContext context, Area area) {
+
+ public virtual void Draw (IContext context, Area area)
+ {
tk.Context = context;
tk.Begin ();
tk.TranslateAndScale (translation, new Point (scaleX, scaleY));
@@ -78,16 +80,17 @@ namespace LongoMatch.Drawing
tk.Context = null;
}
}
-
+
public class SelectionCanvas: Canvas
{
protected bool moving;
- protected Point start;
+ protected Point start;
uint lastTime;
Selection clickedSel;
-
- public SelectionCanvas (IWidget widget): base (widget) {
- Selections = new List<Selection>();
+
+ public SelectionCanvas (IWidget widget): base (widget)
+ {
+ Selections = new List<Selection> ();
SelectionMode = MultiSelectionMode.Single;
Accuracy = 1;
MoveWithoutSelection = false;
@@ -98,51 +101,58 @@ namespace LongoMatch.Drawing
widget.MotionEvent += HandleMotionEvent;
widget.ShowTooltipEvent += HandleShowTooltipEvent;
}
-
+
public double Accuracy {
get;
set;
}
-
+
public MultiSelectionMode SelectionMode {
get;
set;
}
-
+
protected bool MoveWithoutSelection {
get;
set;
}
-
+
protected List<Selection> Selections {
get;
set;
}
-
+
protected bool ObjectsCanMove {
get;
set;
}
-
- protected virtual void StartMove (Selection sel) {
+
+ protected virtual void StartMove (Selection sel)
+ {
}
-
- protected virtual void CursorMoved (Point coords) {
+
+ protected virtual void CursorMoved (Point coords)
+ {
}
- protected virtual void SelectionMoved (Selection sel) {
+ protected virtual void SelectionMoved (Selection sel)
+ {
}
-
- protected virtual void StopMove () {
+
+ protected virtual void StopMove ()
+ {
}
-
- protected virtual void SelectionChanged (List<Selection> sel) {
+
+ protected virtual void SelectionChanged (List<Selection> sel)
+ {
}
-
- protected virtual void ShowMenu (Point coords) {
+
+ protected virtual void ShowMenu (Point coords)
+ {
}
-
- public void ClearSelection () {
+
+ public void ClearSelection ()
+ {
foreach (Selection sel in Selections) {
ICanvasSelectableObject po = sel.Drawable as ICanvasSelectableObject;
po.Selected = false;
@@ -154,8 +164,9 @@ namespace LongoMatch.Drawing
widget.ReDraw ();
Selections.Clear ();
}
-
- protected void UpdateSelection (Selection sel, bool notify=true) {
+
+ protected void UpdateSelection (Selection sel, bool notify=true)
+ {
ICanvasSelectableObject so;
Selection seldup;
@@ -201,7 +212,7 @@ namespace LongoMatch.Drawing
}
return sel;
}
-
+
void HandleShowTooltipEvent (Point coords)
{
Selection sel = GetSelection (ToUserCoords (coords));
@@ -212,8 +223,9 @@ namespace LongoMatch.Drawing
}
}
}
-
- protected virtual void HandleLeftButton (Point coords, ButtonModifier modif) {
+
+ protected virtual void HandleLeftButton (Point coords, ButtonModifier modif)
+ {
Selection sel;
sel = GetSelection (coords);
@@ -224,10 +236,9 @@ namespace LongoMatch.Drawing
}
if ((SelectionMode == MultiSelectionMode.Multiple) ||
- (SelectionMode == MultiSelectionMode.MultipleWithModifier &&
- (modif == ButtonModifier.Control ||
- modif == ButtonModifier.Shift)))
- {
+ (SelectionMode == MultiSelectionMode.MultipleWithModifier &&
+ (modif == ButtonModifier.Control ||
+ modif == ButtonModifier.Shift))) {
if (sel != null) {
sel.Position = SelectionPosition.All;
UpdateSelection (sel);
@@ -241,15 +252,16 @@ namespace LongoMatch.Drawing
}
widget.ReDraw ();
}
-
- protected virtual void HandleRightButton (Point coords, ButtonModifier modif) {
+
+ protected virtual void HandleRightButton (Point coords, ButtonModifier modif)
+ {
if (Selections.Count <= 1) {
ClearSelection ();
UpdateSelection (GetSelection (coords));
}
ShowMenu (coords);
}
-
+
protected virtual void HandleMotionEvent (Point coords)
{
Selection sel;
@@ -259,7 +271,7 @@ namespace LongoMatch.Drawing
CursorMoved (coords);
start = coords;
} else if (moving) {
- sel = Selections[0];
+ sel = Selections [0];
sel.Drawable.Move (sel, coords, start);
widget.ReDraw (sel.Drawable);
SelectionMoved (sel);
@@ -293,13 +305,14 @@ namespace LongoMatch.Drawing
lastTime = time;
}
}
-
+
public abstract class BackgroundCanvas: SelectionCanvas
{
Image background;
- public BackgroundCanvas (IWidget widget): base (widget) {
+ public BackgroundCanvas (IWidget widget): base (widget)
+ {
widget.SizeChangedEvent += HandleSizeChangedEvent;
}
@@ -312,15 +325,15 @@ namespace LongoMatch.Drawing
return background;
}
}
-
+
protected virtual void HandleSizeChangedEvent ()
{
if (background != null) {
- background.ScaleFactor ((int) widget.Width, (int) widget.Height, out scaleX,
+ background.ScaleFactor ((int)widget.Width, (int)widget.Height, out scaleX,
out scaleY, out translation);
}
}
-
+
public override void Draw (IContext context, Area area)
{
if (Background != null) {
diff --git a/LongoMatch.Drawing/CanvasObject/CardObject.cs b/LongoMatch.Drawing/CanvasObject/CardObject.cs
new file mode 100644
index 0000000..3aed21e
--- /dev/null
+++ b/LongoMatch.Drawing/CanvasObject/CardObject.cs
@@ -0,0 +1,71 @@
+//
+// 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.Common;
+using LongoMatch.Interfaces.Drawing;
+using LongoMatch.Store;
+
+namespace LongoMatch.Drawing.CanvasObject
+{
+ public class CardObject: TaggerObject
+ {
+
+ public CardObject (PenaltyCard card): base (card)
+ {
+ Card = card;
+ }
+
+ public PenaltyCard Card {
+ get;
+ set;
+ }
+
+ public override void Draw (IDrawingToolkit tk, Area area)
+ {
+ tk.Begin ();
+
+ /* Draw Rectangle */
+ tk.FillColor = Color;
+ tk.StrokeColor = Color;
+ tk.LineWidth = 0;
+ switch (Card.Shape) {
+ case CardShape.Rectangle:
+ tk.DrawRoundedRectangle (Card.Position, Card.Width, Card.Height, 3);
+ break;
+ case CardShape.Circle:
+ tk.DrawCircle (new Point (Card.Position.X + Card.Width / 2,
+ Card.Position.Y + Card.Height / 2),
+ Math.Min (Card.Width, Card.Height) / 2);
+ break;
+ case CardShape.Triangle:
+ tk.DrawTriangle (new Point (Card.Position.X + Card.Width / 2,
Card.Position.Y),
+ Card.Width, Card.Height, SelectionPosition.Top);
+ break;
+ }
+
+ /* Draw header */
+ tk.LineWidth = 2;
+ tk.StrokeColor = Color.Grey2;
+ tk.FillColor = Color.Grey2;
+ tk.DrawText (Position, Card.Width, Card.Height, Card.Name);
+ DrawSelectionArea (tk);
+ tk.End ();
+ }
+ }
+}
+
diff --git a/LongoMatch.Drawing/CanvasObject/CategoryLabel.cs
b/LongoMatch.Drawing/CanvasObject/CategoryLabel.cs
index 970858a..98ec7a2 100644
--- a/LongoMatch.Drawing/CanvasObject/CategoryLabel.cs
+++ b/LongoMatch.Drawing/CanvasObject/CategoryLabel.cs
@@ -15,10 +15,8 @@
// 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.Store;
using LongoMatch.Interfaces.Drawing;
-using LongoMatch.Interfaces;
using LongoMatch.Common;
namespace LongoMatch.Drawing.CanvasObject
@@ -29,39 +27,40 @@ namespace LongoMatch.Drawing.CanvasObject
double width, height;
public CategoryLabel (Category category, double width, double height,
- double offsetY)
+ double offsetY)
{
this.category = category;
this.height = height;
this.width = width;
OffsetY = offsetY;
}
-
+
public double Scroll {
get;
set;
}
-
+
public double OffsetY {
set;
protected get;
}
-
- public override void Draw (IDrawingToolkit tk, Area area) {
+
+ public override void Draw (IDrawingToolkit tk, Area area)
+ {
double y;
y = OffsetY - Scroll;
- tk.Begin();
+ tk.Begin ();
tk.FillColor = category.Color;
tk.StrokeColor = category.Color;
tk.FontSlant = FontSlant.Normal;
tk.FontSize = 12;
- tk.DrawRoundedRectangle (new Point(0, y + 1), width, height - 1, 3);
+ tk.DrawRoundedRectangle (new Point (0, y + 1), width, height - 1, 3);
tk.FillColor = Constants.TEXT_COLOR;
tk.StrokeColor = Constants.TEXT_COLOR;
tk.DrawText (new Point (0, y), width, height,
- category.Name);
- tk.End();
+ category.Name);
+ tk.End ();
}
}
}
diff --git a/LongoMatch.Drawing/CanvasObject/CategoryObject.cs
b/LongoMatch.Drawing/CanvasObject/CategoryObject.cs
index eca4f2d..ebb63d4 100644
--- a/LongoMatch.Drawing/CanvasObject/CategoryObject.cs
+++ b/LongoMatch.Drawing/CanvasObject/CategoryObject.cs
@@ -16,75 +16,221 @@
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
//
using System;
+using System.Collections.Generic;
+using LongoMatch.Common;
using LongoMatch.Interfaces.Drawing;
using LongoMatch.Store;
-using LongoMatch.Interfaces;
-using LongoMatch.Common;
using LongoMatch.Store.Drawables;
namespace LongoMatch.Drawing.CanvasObject
{
- public class CategoryObject: BaseCanvasObject, ICanvasSelectableObject
+ public class CategoryObject: TaggerObject
{
- public CategoryObject (Category category)
+
+ Dictionary <Rectangle, object> rects;
+ bool catSelected;
+
+ public CategoryObject (Category category): base (category)
{
Category = category;
+ rects = new Dictionary <Rectangle, object> ();
+ SelectedTags = new List<Tag> ();
}
-
+
public Category Category {
get;
set;
}
-
- public Point Position {
+
+ public Tag AddTag {
get;
set;
}
-
- public double Width {
- get;
- set;
+
+ public override int NRows {
+ get {
+ /* Header */
+ int rows = 1;
+ int tagsPerRow = Math.Max (1, Category.TagsPerRow);
+
+ /* Recorder */
+ if (Category.TagMode == TagMode.Free) {
+ rows ++;
+ }
+ rows += (int)Math.Ceiling ((float)TagsCount / tagsPerRow);
+ return rows;
+ }
}
-
- public double Height {
+
+ int TagsCount {
+ get {
+ int tagsCount = Category.Tags.Count;
+ if (Mode == TagMode.Edit) {
+ tagsCount ++;
+ }
+ return tagsCount;
+ }
+ }
+
+ public List<Tag> SelectedTags {
get;
set;
}
-
- public int NRows {
- get {
- /* Header + recoder */
- int rows = 2;
- foreach (SubCategory subcat in Category.SubCategories) {
- rows += subcat.Options.Count / Common.CATEGORY_SUBCATEGORIES_COLUMNS
+ 1;
- }
- return rows;
+
+ public Tag GetTagForCoords (Point p)
+ {
+ Tag tag = null;
+
+ foreach (Rectangle rect in rects.Keys) {
+ Selection subsel = rect.GetSelection (p, 0);
+ if (subsel != null) {
+ if (rects [rect] is Tag) {
+ tag = rects [rect] as Tag;
+ }
+ break;
+ }
+ }
+ if (tag != AddTag) {
+ return tag;
+ } else {
+ return null;
}
}
-
- public override void Draw (IDrawingToolkit tk, Area area) {
- double heightPerRow;
- double ptr = 0;
-
- tk.Begin();
- heightPerRow = NRows / Height;
+
+ public override void ClickPressed (Point p)
+ {
+ foreach (Rectangle rect in rects.Keys) {
+ Selection subsel = rect.GetSelection (p, 0);
+ if (subsel != null) {
+ if (rects [rect] is Category) {
+ CategoryClicked (rects [rect] as Category);
+ } else if (rects [rect] is Tag) {
+ TagClicked (rects [rect] as Tag);
+ } else {
+ RecordClicked ();
+ }
+ break;
+ }
+ }
+ }
+
+ public override void ClickReleased ()
+ {
+ if (catSelected) {
+ EmitClickEvent ();
+ SelectedTags.Clear ();
+ catSelected = false;
+ }
+ }
+
+ public override void Draw (IDrawingToolkit tk, Area area)
+ {
+ Point position;
+ double heightPerRow, catWidth, rowwidth, yptr = 0;
+ int tagsPerRow, tagsCount, row = 0;
+
+ rects.Clear ();
+ position = Category.Position;
+ heightPerRow = Category.Height / NRows;
+ catWidth = Category.Width;
+ tagsCount = TagsCount;
+ tagsPerRow = Math.Max (1, Category.TagsPerRow);
+ rowwidth = catWidth / tagsPerRow;
+
+ tk.Begin ();
+ tk.FontWeight = FontWeight.Bold;
+
+ /* Draw Rectangle */
+ DrawButton (tk, true);
/* Draw header */
- tk.DrawRectangle (Position, Width, heightPerRow);
- tk.DrawText (Position, Width, heightPerRow, Category.Name);
- ptr += heightPerRow;
- /* Draw Tagger */
-
- tk.End();
+ tk.FillColor = LongoMatch.Common.Color.Grey2;
+ tk.LineWidth = 2;
+ if (catSelected && Mode != TagMode.Edit) {
+ tk.StrokeColor = Category.DarkColor;
+ tk.DrawText (position, catWidth, heightPerRow, Category.Name);
+ } else {
+ tk.StrokeColor = LongoMatch.Common.Color.Grey2;
+ tk.DrawText (position, catWidth, heightPerRow, Category.Name);
+ }
+ rects.Add (new Rectangle (position, catWidth, heightPerRow), Category);
+ yptr += heightPerRow;
+
+ /* Draw tags */
+ for (int i=0; i < tagsCount; i++) {
+ Point pos;
+ int col;
+ Tag tag;
+
+ row = i / tagsPerRow;
+ col = i % tagsPerRow;
+ pos = new Point (position.X + col * rowwidth,
+ position.Y + yptr + row * heightPerRow);
+
+ if (col == 0) {
+ if (i + tagsPerRow > tagsCount) {
+ rowwidth = catWidth / (tagsCount - i);
+ }
+ }
+ tk.StrokeColor = Category.DarkColor;
+ tk.LineWidth = 1;
+ if (col == 0) {
+ /* Horizontal line */
+ tk.DrawLine (pos, new Point (pos.X + catWidth, pos.Y));
+ } else {
+ /* Vertical line */
+ tk.DrawLine (pos, new Point (pos.X, pos.Y + heightPerRow));
+ }
+ tk.StrokeColor = Category.TextColor;
+ if (i < Category.Tags.Count) {
+ tag = Category.Tags [i];
+ if (Mode == TagMode.Edit || !SelectedTags.Contains (tag)) {
+ tk.DrawText (pos, rowwidth, heightPerRow, tag.Value);
+ } else {
+ tk.StrokeColor = Category.DarkColor;
+ tk.DrawText (pos, rowwidth, heightPerRow, tag.Value);
+ }
+ } else {
+ tag = AddTag;
+ tk.DrawText (pos, rowwidth, heightPerRow, "Add");
+ }
+ rects.Add (new Rectangle (pos, rowwidth, heightPerRow), tag);
+ }
+ yptr += heightPerRow * (row + 1);
+
+ if (Category.TagMode == TagMode.Free) {
+ /* Draw Tagger */
+ tk.DrawLine (new Point (position.X, position.Y + yptr),
+ new Point (position.X + catWidth, position.Y +
yptr));
+ tk.DrawText (new Point (position.X, position.Y + yptr), catWidth,
heightPerRow, "Record");
+ }
+ DrawSelectionArea (tk);
+ tk.End ();
}
-
- public Selection GetSelection (Point point, double precision) {
- return null;
+
+ void CategoryClicked (Category category)
+ {
+ if (Category.TagMode == TagMode.Predifined) {
+ catSelected = true;
+ }
}
- public void Move (Selection s, Point p, Point start) {
+ void TagClicked (Tag tag)
+ {
+ if (SelectedTags.Contains (tag)) {
+ SelectedTags.Remove (tag);
+ } else {
+ SelectedTags.Clear ();
+ SelectedTags.Add (tag);
+ if (Category.TagMode == TagMode.Predifined) {
+ catSelected = true;
+ }
+ }
}
+ void RecordClicked ()
+ {
+ }
}
}
diff --git a/LongoMatch.Drawing/CanvasObject/CounterObject.cs
b/LongoMatch.Drawing/CanvasObject/CounterObject.cs
index 6ba4315..c69a217 100644
--- a/LongoMatch.Drawing/CanvasObject/CounterObject.cs
+++ b/LongoMatch.Drawing/CanvasObject/CounterObject.cs
@@ -29,13 +29,14 @@ namespace LongoMatch.Drawing.CanvasObject
public CounterObject ()
{
}
-
+
public CounterObject (Counter counter)
{
Drawable = counter;
}
-
- public override void Draw (IDrawingToolkit tk, Area area) {
+
+ public override void Draw (IDrawingToolkit tk, Area area)
+ {
Area darea;
darea = Drawable.Area;
@@ -46,7 +47,7 @@ namespace LongoMatch.Drawing.CanvasObject
tk.DrawEllipse (Drawable.Center, Drawable.AxisX, Drawable.AxisY);
tk.StrokeColor = Drawable.TextColor;
tk.DrawText (darea.Start, darea.Width, darea.Height,
- Drawable.Count.ToString());
+ Drawable.Count.ToString ());
DrawSelectionArea (tk);
tk.End ();
}
diff --git a/LongoMatch.Drawing/CanvasObject/CrossObject.cs b/LongoMatch.Drawing/CanvasObject/CrossObject.cs
index 57c3a2d..1d6fcf1 100644
--- a/LongoMatch.Drawing/CanvasObject/CrossObject.cs
+++ b/LongoMatch.Drawing/CanvasObject/CrossObject.cs
@@ -28,13 +28,14 @@ namespace LongoMatch.Drawing.CanvasObject
public CrossObject ()
{
}
-
+
public CrossObject (Cross cross)
{
Drawable = cross;
}
-
- public override void Draw (IDrawingToolkit tk, Area area) {
+
+ public override void Draw (IDrawingToolkit tk, Area area)
+ {
tk.Begin ();
tk.FillColor = Drawable.FillColor;
tk.StrokeColor = Drawable.StrokeColor;
diff --git a/LongoMatch.Drawing/CanvasObject/EllipseObject.cs
b/LongoMatch.Drawing/CanvasObject/EllipseObject.cs
index 365f74f..e4975a9 100644
--- a/LongoMatch.Drawing/CanvasObject/EllipseObject.cs
+++ b/LongoMatch.Drawing/CanvasObject/EllipseObject.cs
@@ -29,13 +29,14 @@ namespace LongoMatch.Drawing.CanvasObject
public EllipseObject ()
{
}
-
+
public EllipseObject (Ellipse ellipse)
{
Drawable = ellipse;
}
-
- public override void Draw (IDrawingToolkit tk, Area area) {
+
+ public override void Draw (IDrawingToolkit tk, Area area)
+ {
tk.Begin ();
tk.FillColor = Drawable.FillColor;
tk.StrokeColor = Drawable.StrokeColor;
diff --git a/LongoMatch.Drawing/CanvasObject/LineObject.cs b/LongoMatch.Drawing/CanvasObject/LineObject.cs
index fb3a63a..04e79fb 100644
--- a/LongoMatch.Drawing/CanvasObject/LineObject.cs
+++ b/LongoMatch.Drawing/CanvasObject/LineObject.cs
@@ -28,13 +28,14 @@ namespace LongoMatch.Drawing.CanvasObject
public LineObject ()
{
}
-
+
public LineObject (Line line)
{
Drawable = line;
}
-
- public override void Draw (IDrawingToolkit tk, Area area) {
+
+ public override void Draw (IDrawingToolkit tk, Area area)
+ {
tk.Begin ();
tk.FillColor = Drawable.FillColor;
tk.StrokeColor = Drawable.StrokeColor;
@@ -43,18 +44,18 @@ namespace LongoMatch.Drawing.CanvasObject
tk.DrawLine (Drawable.Start, Drawable.Stop);
tk.LineStyle = LineStyle.Normal;
if (Drawable.Type == LineType.Arrow ||
- Drawable.Type == LineType.DoubleArrow) {
+ Drawable.Type == LineType.DoubleArrow) {
tk.DrawArrow (Drawable.Start, Drawable.Stop, 10, 0.3, true);
}
if (Drawable.Type == LineType.DoubleArrow) {
tk.DrawArrow (Drawable.Stop, Drawable.Start, 10, 0.3, true);
}
if (Drawable.Type == LineType.Dot ||
- Drawable.Type == LineType.DoubleDot) {
- tk.DrawPoint (Drawable.Stop);
+ Drawable.Type == LineType.DoubleDot) {
+ tk.DrawPoint (Drawable.Stop);
}
if (Drawable.Type == LineType.DoubleDot) {
- tk.DrawPoint (Drawable.Start);
+ tk.DrawPoint (Drawable.Start);
}
if (Selected) {
@@ -63,7 +64,6 @@ namespace LongoMatch.Drawing.CanvasObject
}
tk.End ();
}
-
}
}
diff --git a/LongoMatch.Drawing/CanvasObject/PlayObject.cs b/LongoMatch.Drawing/CanvasObject/PlayObject.cs
index 322416d..1f3bb59 100644
--- a/LongoMatch.Drawing/CanvasObject/PlayObject.cs
+++ b/LongoMatch.Drawing/CanvasObject/PlayObject.cs
@@ -29,7 +29,7 @@ namespace LongoMatch.Drawing.CanvasObject
public PlayObject (Play play):base (play)
{
}
-
+
public override string Description {
get {
return Play.Name;
@@ -41,11 +41,12 @@ namespace LongoMatch.Drawing.CanvasObject
return TimeNode as Play;
}
}
-
- public override void Draw (IDrawingToolkit tk, Area area) {
+
+ public override void Draw (IDrawingToolkit tk, Area area)
+ {
Color c = Play.Category.Color;
tk.Begin ();
- tk.FillColor = new Color (c.R, c.G, c.B, (byte) (0.8 * byte.MaxValue));
+ tk.FillColor = new Color (c.R, c.G, c.B, (byte)(0.8 * byte.MaxValue));
if (Selected) {
tk.StrokeColor = Constants.PLAY_OBJECT_SELECTED_COLOR;
} else {
@@ -53,8 +54,8 @@ namespace LongoMatch.Drawing.CanvasObject
}
tk.LineWidth = 2;
tk.DrawRoundedRectangle (new Point (StartX, OffsetY),
- Utils.TimeToPos (Play.Duration, SecondsPerPixel),
- Constants.CATEGORY_HEIGHT, 2);
+ Utils.TimeToPos (Play.Duration, SecondsPerPixel),
+ Constants.CATEGORY_HEIGHT, 2);
tk.End ();
}
}
diff --git a/LongoMatch.Drawing/CanvasObject/PlayerObject.cs b/LongoMatch.Drawing/CanvasObject/PlayerObject.cs
index dcf9ccc..6e201c8 100644
--- a/LongoMatch.Drawing/CanvasObject/PlayerObject.cs
+++ b/LongoMatch.Drawing/CanvasObject/PlayerObject.cs
@@ -36,37 +36,37 @@ namespace LongoMatch.Drawing.CanvasObject
UnSelectedColor = Constants.PLAYER_UNSELECTED_COLOR;
IconSize = PlayersIconSize.Medium;
}
-
- public Player Player {
+
+ public Player Player {
get;
protected set;
}
-
+
public Point Position {
get;
set;
}
-
+
public PlayersIconSize IconSize {
set;
get;
}
-
+
public bool DrawPhoto {
get;
set;
}
-
+
public Color SelectedColor {
get;
set;
}
-
+
public Color UnSelectedColor {
get;
set;
}
-
+
int Width {
get {
return (int)IconSize;
@@ -78,8 +78,9 @@ namespace LongoMatch.Drawing.CanvasObject
return (int)IconSize;
}
}
-
- public Selection GetSelection (Point point, double precision) {
+
+ public Selection GetSelection (Point point, double precision)
+ {
Point position = new Point (Position.X - Width / 2, Position.Y - Height / 2);
if (point.X >= position.X && point.X <= position.X + Width) {
@@ -89,15 +90,17 @@ namespace LongoMatch.Drawing.CanvasObject
}
return null;
}
-
- public void Move (Selection sel, Point p, Point start) {
+
+ public void Move (Selection sel, Point p, Point start)
+ {
}
- public override void Draw (IDrawingToolkit tk, Area area) {
+ public override void Draw (IDrawingToolkit tk, Area area)
+ {
Color background, line;
Point position = new Point (Position.X - Width / 2, Position.Y - Height / 2);
- tk.Begin();
+ tk.Begin ();
/* Background */
if (Selected) {
@@ -119,11 +122,11 @@ namespace LongoMatch.Drawing.CanvasObject
tk.FontWeight = FontWeight.Bold;
/* Only draw player number for the smaller size */
if (IconSize > PlayersIconSize.Small) {
- tk.DrawText (position, Width, Height - 20, Player.Number.ToString());
+ tk.DrawText (position, Width, Height - 20, Player.Number.ToString ());
tk.FontSize = 8;
tk.DrawText (new Point (position.X, position.Y + Height - 20), Width,
20, Player.Name);
} else {
- tk.DrawText (position, Width, Height, Player.Number.ToString());
+ tk.DrawText (position, Width, Height, Player.Number.ToString ());
}
} else {
tk.FillColor = Color.Black;
@@ -131,12 +134,11 @@ namespace LongoMatch.Drawing.CanvasObject
tk.DrawImage (position, Width, Height, Player.Photo, true);
tk.FontSize = 16;
tk.FontWeight = FontWeight.Bold;
- tk.DrawText (new Point (position.X, position.Y + Height - 20), Width, 20,
Player.Number.ToString());
+ tk.DrawText (new Point (position.X, position.Y + Height - 20), Width, 20,
Player.Number.ToString ());
}
- tk.End();
+ tk.End ();
}
-
}
}
diff --git a/LongoMatch.Drawing/CanvasObject/PositionObject.cs
b/LongoMatch.Drawing/CanvasObject/PositionObject.cs
index 05e9e66..be11be3 100644
--- a/LongoMatch.Drawing/CanvasObject/PositionObject.cs
+++ b/LongoMatch.Drawing/CanvasObject/PositionObject.cs
@@ -25,7 +25,6 @@ using System.Collections.Generic;
namespace LongoMatch.Drawing.CanvasObject
{
-
public class PositionObject: CanvasObject, ICanvasSelectableObject
{
@@ -35,7 +34,7 @@ namespace LongoMatch.Drawing.CanvasObject
Width = width;
Height = height;
}
-
+
public override string Description {
get {
if (Play != null) {
@@ -49,41 +48,40 @@ namespace LongoMatch.Drawing.CanvasObject
get;
set;
}
-
+
public int Height {
get;
set;
}
-
+
public Play Play {
get;
set;
}
-
+
public List<Point> Points {
get;
set;
}
-
+
Point Start {
get {
- return Points[0].Denormalize (Width, Height);
+ return Points [0].Denormalize (Width, Height);
}
- set{
- Points[0] = value.Normalize (Width, Height);
+ set {
+ Points [0] = value.Normalize (Width, Height);
}
}
-
+
Point Stop {
get {
- return Points[1].Denormalize (Width, Height);
+ return Points [1].Denormalize (Width, Height);
}
set {
- Points[1] = value.Normalize (Width, Height);
+ Points [1] = value.Normalize (Width, Height);
}
}
-
-
+
public Selection GetSelection (Point point, double precision)
{
if (point.Distance (Start) < precision) {
@@ -93,7 +91,7 @@ namespace LongoMatch.Drawing.CanvasObject
}
return null;
}
-
+
public void Move (Selection sel, Point p, Point start)
{
switch (sel.Position) {
@@ -107,12 +105,13 @@ namespace LongoMatch.Drawing.CanvasObject
throw new Exception ("Unsupported move for circle: " + sel.Position);
}
}
-
- public override void Draw (IDrawingToolkit tk, Area area) {
+
+ public override void Draw (IDrawingToolkit tk, Area area)
+ {
Color color, scolor;
double relSize;
- relSize = Math.Max (1, (double) Width / 200);
+ relSize = Math.Max (1, (double)Width / 200);
tk.Begin ();
if (Play != null) {
@@ -128,10 +127,10 @@ namespace LongoMatch.Drawing.CanvasObject
}
tk.FillColor = color;
tk.StrokeColor = scolor;
- tk.LineWidth = (int) relSize;
- tk.DrawCircle (Start, (int) relSize * 2);
+ tk.LineWidth = (int)relSize;
+ tk.DrawCircle (Start, (int)relSize * 2);
if (Points.Count == 2) {
- tk.LineWidth = (int) relSize * 2;
+ tk.LineWidth = (int)relSize * 2;
tk.DrawLine (Start, Stop);
tk.DrawArrow (Start, Stop, 10, 0.3, true);
}
diff --git a/LongoMatch.Drawing/CanvasObject/QuadrilateralObject.cs
b/LongoMatch.Drawing/CanvasObject/QuadrilateralObject.cs
index b165df2..78c544d 100644
--- a/LongoMatch.Drawing/CanvasObject/QuadrilateralObject.cs
+++ b/LongoMatch.Drawing/CanvasObject/QuadrilateralObject.cs
@@ -28,13 +28,14 @@ namespace LongoMatch.Drawing.CanvasObject
public QuadrilateralObject ()
{
}
-
+
public QuadrilateralObject (Quadrilateral quadrilateral)
{
Drawable = quadrilateral;
}
-
- public override void Draw (IDrawingToolkit tk, Area area) {
+
+ public override void Draw (IDrawingToolkit tk, Area area)
+ {
tk.Begin ();
tk.FillColor = Drawable.FillColor;
tk.StrokeColor = Drawable.StrokeColor;
diff --git a/LongoMatch.Drawing/CanvasObject/RectangleObject.cs
b/LongoMatch.Drawing/CanvasObject/RectangleObject.cs
index e779acb..1606f77 100644
--- a/LongoMatch.Drawing/CanvasObject/RectangleObject.cs
+++ b/LongoMatch.Drawing/CanvasObject/RectangleObject.cs
@@ -33,8 +33,9 @@ namespace LongoMatch.Drawing.CanvasObject
{
Drawable = rectangle;
}
-
- public override void Draw (IDrawingToolkit tk, Area area) {
+
+ public override void Draw (IDrawingToolkit tk, Area area)
+ {
tk.Begin ();
tk.FillColor = Drawable.FillColor;
tk.StrokeColor = Drawable.StrokeColor;
diff --git a/LongoMatch.Drawing/CanvasObject/ScoreObject.cs b/LongoMatch.Drawing/CanvasObject/ScoreObject.cs
new file mode 100644
index 0000000..8da051e
--- /dev/null
+++ b/LongoMatch.Drawing/CanvasObject/ScoreObject.cs
@@ -0,0 +1,55 @@
+//
+// 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.Interfaces.Drawing;
+using LongoMatch.Common;
+using LongoMatch.Interfaces;
+using LongoMatch.Store;
+
+namespace LongoMatch.Drawing.CanvasObject
+{
+ public class ScoreObject: TaggerObject
+ {
+ public ScoreObject (Score score): base (score)
+ {
+ Score = score;
+ }
+
+ public Score Score {
+ get;
+ set;
+ }
+
+ public override void Draw (IDrawingToolkit tk, Area area)
+ {
+ tk.Begin ();
+
+ /* Draw Rectangle */
+ DrawButton (tk);
+
+ /* Draw header */
+ tk.LineWidth = 2;
+ tk.StrokeColor = Score.TextColor;
+ tk.FillColor = Score.TextColor;
+ tk.DrawText (Position, Score.Width, Score.Height, Score.Name);
+ DrawSelectionArea (tk);
+ tk.End ();
+ }
+ }
+}
+
diff --git a/LongoMatch.Drawing/CanvasObject/TagObject.cs b/LongoMatch.Drawing/CanvasObject/TagObject.cs
new file mode 100644
index 0000000..0a12148
--- /dev/null
+++ b/LongoMatch.Drawing/CanvasObject/TagObject.cs
@@ -0,0 +1,55 @@
+//
+// 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.Interfaces.Drawing;
+using LongoMatch.Common;
+using LongoMatch.Interfaces;
+using LongoMatch.Store;
+
+namespace LongoMatch.Drawing.CanvasObject
+{
+ public class TagObject: TaggerObject
+ {
+ public TagObject (TagButton tagger): base (tagger)
+ {
+ TagButton = tagger;
+ Toggle = true;
+ }
+
+ public TagButton TagButton {
+ get;
+ set;
+ }
+
+ public override void Draw (IDrawingToolkit tk, Area area)
+ {
+ tk.Begin ();
+
+ /* Draw Rectangle */
+ DrawButton (tk);
+
+ /* Draw header */
+ tk.LineWidth = 2;
+ tk.StrokeColor = TagButton.TextColor;
+ tk.FillColor = TagButton.TextColor;
+ tk.DrawText (Position, TagButton.Width, TagButton.Height, TagButton.Name);
+ DrawSelectionArea (tk);
+ tk.End ();
+ }
+ }
+}
diff --git a/LongoMatch.Drawing/CanvasObject/TaggerObject.cs b/LongoMatch.Drawing/CanvasObject/TaggerObject.cs
new file mode 100644
index 0000000..f9b2904
--- /dev/null
+++ b/LongoMatch.Drawing/CanvasObject/TaggerObject.cs
@@ -0,0 +1,190 @@
+//
+// 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.Common;
+using LongoMatch.Interfaces;
+using LongoMatch.Interfaces.Drawing;
+using LongoMatch.Store.Drawables;
+using LongoMatch.Store;
+using LongoMatch.Handlers;
+
+namespace LongoMatch.Drawing.CanvasObject
+{
+ public delegate void TaggerObjectHandler (TaggerObject to);
+ public abstract class TaggerObject: CanvasObject, ICanvasSelectableObject
+ {
+ public event TaggerObjectHandler TaggerClickedEvent;
+
+ public TaggerObject (TaggerButton tagger)
+ {
+ Tagger = tagger;
+ Toggle = false;
+ }
+
+ public TaggerButton Tagger {
+ get;
+ set;
+ }
+
+ public Point Position {
+ get {
+ if (!Active) {
+ return Tagger.Position;
+ } else {
+ return new Point (Tagger.Position.X + 1, Tagger.Position.Y + 1);
+ }
+ }
+ }
+
+ public Color Color {
+ get {
+ if (!Active) {
+ return Tagger.Color;
+ } else {
+ return Tagger.DarkColor;
+ }
+ }
+ }
+
+ public TagMode Mode {
+ get;
+ set;
+ }
+
+ public virtual int NRows {
+ get {
+ return 1;
+ }
+ }
+
+ public bool Toggle {
+ get;
+ set;
+ }
+
+ public bool Active {
+ get;
+ set;
+ }
+
+ public Time Start {
+ get;
+ set;
+ }
+
+ public override void ClickPressed (Point p)
+ {
+ Active = !Active;
+ }
+
+ protected void EmitClickEvent ()
+ {
+ if (TaggerClickedEvent != null) {
+ TaggerClickedEvent (this);
+ }
+ }
+
+ public override void ClickReleased ()
+ {
+ if (!Toggle) {
+ Active = !Active;
+ }
+ EmitClickEvent ();
+ }
+
+ public virtual Selection GetSelection (Point p, double precision)
+ {
+ Selection s;
+
+ Rectangle r = new Rectangle (Tagger.Position, Tagger.Width,
+ Tagger.Height);
+ s = r.GetSelection (p, precision);
+ if (s != null) {
+ s.Drawable = this;
+ if (s.Position != SelectionPosition.BottomRight &&
+ s.Position != SelectionPosition.Right &&
+ s.Position != SelectionPosition.Bottom) {
+ s.Position = SelectionPosition.All;
+ }
+ }
+ return s;
+ }
+
+ public void Move (Selection s, Point p, Point start)
+ {
+ switch (s.Position) {
+ case SelectionPosition.Right:
+ Tagger.Width = (int)(p.X - Tagger.Position.X);
+ Tagger.Width = (int)Math.Max (10, Tagger.Width);
+ break;
+ case SelectionPosition.Bottom:
+ Tagger.Height = (int)(p.Y - Tagger.Position.Y);
+ Tagger.Height = (int)Math.Max (10, Tagger.Height);
+ break;
+ case SelectionPosition.BottomRight:
+ Tagger.Width = (int)(p.X - Tagger.Position.X);
+ Tagger.Height = (int)(p.Y - Tagger.Position.Y);
+ Tagger.Width = Math.Max (10, Tagger.Width);
+ Tagger.Height = Math.Max (10, Tagger.Height);
+ break;
+ case SelectionPosition.All:
+ {
+ Tagger.Position.X += p.X - start.X;
+ Tagger.Position.Y += p.Y - start.Y;
+ Tagger.Position.X = Math.Max (Tagger.Position.X, 0);
+ Tagger.Position.Y = Math.Max (Tagger.Position.Y, 0);
+ break;
+ }
+ default:
+ throw new Exception ("Unsupported move for tagger object: " + s.Position);
+ }
+ }
+
+ protected void DrawSelectionArea (IDrawingToolkit tk)
+ {
+ if (!Selected || Mode != TagMode.Edit) {
+ return;
+ }
+ tk.StrokeColor = Constants.SELECTION_INDICATOR_COLOR;
+ tk.StrokeColor = Constants.SELECTION_AREA_COLOR;
+ tk.FillColor = null;
+ tk.LineStyle = LineStyle.Dashed;
+ tk.LineWidth = 1;
+ tk.DrawRectangle (Tagger.Position, Tagger.Width, Tagger.Height);
+
+ tk.StrokeColor = tk.FillColor = Constants.SELECTION_INDICATOR_COLOR;
+ tk.LineStyle = LineStyle.Normal;
+ tk.DrawRectangle (new Point (Tagger.Position.X + Tagger.Width - 3,
+ Tagger.Position.Y + Tagger.Height - 3),
+ 6, 6);
+ }
+
+ protected void DrawButton (IDrawingToolkit tk, bool ignoreActive=false)
+ {
+ tk.LineWidth = 0;
+ if (Active && !ignoreActive) {
+ tk.DrawButton (Tagger.Position, Tagger.Width, Tagger.Height, 3, Tagger.Color,
Tagger.DarkColor);
+ } else {
+ tk.DrawButton (Tagger.Position, Tagger.Width, Tagger.Height, 3,
Tagger.LightColor, Tagger.Color);
+ }
+ }
+
+ public abstract override void Draw (IDrawingToolkit tk, Area area);
+ }
+}
+
diff --git a/LongoMatch.Drawing/CanvasObject/TextObject.cs b/LongoMatch.Drawing/CanvasObject/TextObject.cs
index e822311..8fb8996 100644
--- a/LongoMatch.Drawing/CanvasObject/TextObject.cs
+++ b/LongoMatch.Drawing/CanvasObject/TextObject.cs
@@ -33,8 +33,9 @@ namespace LongoMatch.Drawing.CanvasObject
{
Drawable = text;
}
-
- public override void Draw (IDrawingToolkit tk, Area area) {
+
+ public override void Draw (IDrawingToolkit tk, Area area)
+ {
tk.Begin ();
tk.FillColor = Drawable.FillColor;
tk.StrokeColor = Drawable.StrokeColor;
diff --git a/LongoMatch.Drawing/CanvasObject/TimeNodeObject.cs
b/LongoMatch.Drawing/CanvasObject/TimeNodeObject.cs
index 850a0f7..0dcd049 100644
--- a/LongoMatch.Drawing/CanvasObject/TimeNodeObject.cs
+++ b/LongoMatch.Drawing/CanvasObject/TimeNodeObject.cs
@@ -26,59 +26,60 @@ namespace LongoMatch.Drawing.CanvasObject
{
public class TimeNodeObject: CanvasObject, ICanvasSelectableObject
{
- const int MAX_TIME_SPAN=1000;
-
+ const int MAX_TIME_SPAN = 1000;
+
public TimeNodeObject (TimeNode node)
{
TimeNode = node;
SelectWhole = true;
}
-
+
public TimeNode TimeNode {
get;
set;
}
-
+
public bool SelectWhole {
get;
set;
}
-
+
public Time MaxTime {
set;
protected get;
}
-
+
public double OffsetY {
get;
set;
}
-
+
public double SecondsPerPixel {
set;
protected get;
}
-
+
protected double StartX {
get {
return Utils.TimeToPos (TimeNode.Start, SecondsPerPixel);
}
}
-
+
protected double StopX {
get {
return Utils.TimeToPos (TimeNode.Stop, SecondsPerPixel);
}
}
-
+
protected double CenterX {
get {
return Utils.TimeToPos (TimeNode.Start + TimeNode.Duration / 2,
SecondsPerPixel);
}
}
-
- public Selection GetSelection (Point point, double precision) {
+
+ public Selection GetSelection (Point point, double precision)
+ {
double accuracy;
if (point.Y >= OffsetY && point.Y < OffsetY + Constants.CATEGORY_HEIGHT) {
if (Drawable.MatchAxis (point.X, StartX, precision, out accuracy)) {
@@ -92,8 +93,9 @@ namespace LongoMatch.Drawing.CanvasObject
}
return null;
}
-
- public void Move (Selection sel, Point p, Point start) {
+
+ public void Move (Selection sel, Point p, Point start)
+ {
Time newTime = Utils.PosToTime (p, SecondsPerPixel);
if (p.X < 0) {
@@ -104,26 +106,29 @@ namespace LongoMatch.Drawing.CanvasObject
newTime = Utils.PosToTime (p, SecondsPerPixel);
switch (sel.Position) {
- case SelectionPosition.Left: {
- if (newTime.MSeconds + MAX_TIME_SPAN > TimeNode.Stop.MSeconds) {
- TimeNode.Start.MSeconds = TimeNode.Stop.MSeconds - MAX_TIME_SPAN;
- } else {
- TimeNode.Start = newTime;
+ case SelectionPosition.Left:
+ {
+ if (newTime.MSeconds + MAX_TIME_SPAN > TimeNode.Stop.MSeconds) {
+ TimeNode.Start.MSeconds = TimeNode.Stop.MSeconds -
MAX_TIME_SPAN;
+ } else {
+ TimeNode.Start = newTime;
+ }
+ break;
}
- break;
- }
- case SelectionPosition.Right: {
- if (newTime.MSeconds - MAX_TIME_SPAN < TimeNode.Start.MSeconds) {
- TimeNode.Stop.MSeconds = TimeNode.Start.MSeconds + MAX_TIME_SPAN;
- } else {
- TimeNode.Stop = newTime;
+ case SelectionPosition.Right:
+ {
+ if (newTime.MSeconds - MAX_TIME_SPAN < TimeNode.Start.MSeconds) {
+ TimeNode.Stop.MSeconds = TimeNode.Start.MSeconds +
MAX_TIME_SPAN;
+ } else {
+ TimeNode.Stop = newTime;
+ }
+ break;
}
- break;
- }
}
}
-
- public override void Draw (IDrawingToolkit tk, Area area) {
+
+ public override void Draw (IDrawingToolkit tk, Area area)
+ {
double mid, bottom, stop;
Color c;
@@ -153,6 +158,5 @@ namespace LongoMatch.Drawing.CanvasObject
tk.End ();
}
-
}
}
diff --git a/LongoMatch.Drawing/CanvasObject/TimelineObject.cs
b/LongoMatch.Drawing/CanvasObject/TimelineObject.cs
index c8ae890..a5c5d85 100644
--- a/LongoMatch.Drawing/CanvasObject/TimelineObject.cs
+++ b/LongoMatch.Drawing/CanvasObject/TimelineObject.cs
@@ -31,7 +31,7 @@ namespace LongoMatch.Drawing.CanvasObject
List<TimeNodeObject> nodes;
double secondsPerPixel;
protected Time maxTime;
-
+
public TimelineObject (Time maxTime, double offsetY, Color background)
{
this.background = background;
@@ -39,10 +39,10 @@ namespace LongoMatch.Drawing.CanvasObject
this.maxTime = maxTime;
Visible = true;
CurrentTime = new Time (0);
- OffsetY = offsetY;
+ OffsetY = offsetY;
SecondsPerPixel = 0.1;
}
-
+
public double SecondsPerPixel {
set {
secondsPerPixel = value;
@@ -54,35 +54,38 @@ namespace LongoMatch.Drawing.CanvasObject
return secondsPerPixel;
}
}
-
+
public Time CurrentTime {
set;
protected get;
}
-
+
public double Width {
set;
protected get;
}
-
+
public double OffsetY {
set;
get;
}
-
- public void AddNode (TimeNodeObject o) {
+
+ public void AddNode (TimeNodeObject o)
+ {
nodes.Add (o);
}
-
- public void RemoveNode (TimeNode node) {
+
+ public void RemoveNode (TimeNode node)
+ {
nodes.RemoveAll (po => po.TimeNode == node);
}
- public override void Draw (IDrawingToolkit tk, Area area) {
+ public override void Draw (IDrawingToolkit tk, Area area)
+ {
double position;
List<TimeNodeObject> selected;
- selected = new List<TimeNodeObject>();
+ selected = new List<TimeNodeObject> ();
tk.Begin ();
tk.FillColor = background;
@@ -108,10 +111,11 @@ namespace LongoMatch.Drawing.CanvasObject
tk.DrawLine (new Point (position, OffsetY),
new Point (position, OffsetY + Constants.CATEGORY_HEIGHT));
- tk.End();
+ tk.End ();
}
-
- public Selection GetSelection (Point point, double precision) {
+
+ public Selection GetSelection (Point point, double precision)
+ {
Selection selection = null;
if (point.Y >= OffsetY && point.Y < OffsetY + Constants.CATEGORY_HEIGHT) {
@@ -132,13 +136,15 @@ namespace LongoMatch.Drawing.CanvasObject
}
return selection;
}
-
- public void Move (Selection s, Point p, Point start) {
+
+ public void Move (Selection s, Point p, Point start)
+ {
s.Drawable.Move (s, p, start);
}
}
-
- public class CategoryTimeline: TimelineObject {
+
+ public class CategoryTimeline: TimelineObject
+ {
public CategoryTimeline (List<Play> plays, Time maxTime, double offsetY, Color background):
base (maxTime, offsetY, background)
@@ -147,18 +153,19 @@ namespace LongoMatch.Drawing.CanvasObject
AddPlay (p);
}
}
-
- public void AddPlay (Play play){
+
+ public void AddPlay (Play play)
+ {
PlayObject po = new PlayObject (play);
po.OffsetY = OffsetY;
po.SecondsPerPixel = SecondsPerPixel;
po.MaxTime = maxTime;
AddNode (po);
}
-
}
-
- public class TimerTimeline: TimelineObject {
+
+ public class TimerTimeline: TimelineObject
+ {
public TimerTimeline (List<Timer> timers, Time maxTime, double offsetY, Color background):
base (maxTime, offsetY, background)
diff --git a/LongoMatch.Drawing/CanvasObject/TimerObject.cs b/LongoMatch.Drawing/CanvasObject/TimerObject.cs
new file mode 100644
index 0000000..197ab6d
--- /dev/null
+++ b/LongoMatch.Drawing/CanvasObject/TimerObject.cs
@@ -0,0 +1,120 @@
+//
+// 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 System.Linq;
+using LongoMatch.Common;
+using LongoMatch.Interfaces;
+using LongoMatch.Interfaces.Drawing;
+using LongoMatch.Store;
+
+namespace LongoMatch.Drawing.CanvasObject
+{
+ public class TimerObject: TaggerObject
+ {
+ Time currentTime;
+
+ public TimerObject (Timer timer): base (timer)
+ {
+ Timer = timer;
+ Toggle = true;
+ CurrentTime = new Time (0);
+ }
+
+ public Timer Timer {
+ get;
+ set;
+ }
+
+ public Time CurrentTime {
+ set {
+ if (CurrentTimeNode != null) {
+ if (value < CurrentTimeNode.Start) {
+ Timer.CancelTimer ();
+ CurrentTimeNode = null;
+ }
+ }
+ currentTime = value;
+ }
+ get {
+ return currentTime;
+ }
+ }
+
+ TimeNode CurrentTimeNode {
+ get;
+ set;
+ }
+
+ Time PartialTime {
+ get {
+ if (CurrentTimeNode == null) {
+ return new Time (0);
+ } else {
+ return CurrentTime - CurrentTimeNode.Start;
+ }
+ }
+ }
+
+ public override void ClickReleased ()
+ {
+ TimeNode tn;
+
+ base.ClickReleased ();
+ tn = CurrentTimeNode;
+ if (tn == null) {
+ Log.Debug ("Start timer at " + CurrentTime.ToMSecondsString ());
+ CurrentTimeNode = Timer.StartTimer (CurrentTime);
+ } else {
+ Log.Debug ("Stop timer at " + CurrentTime.ToMSecondsString ());
+ Timer.StopTimer (CurrentTime);
+ tn.Stop = CurrentTime;
+ CurrentTimeNode = null;
+ }
+ }
+
+ public override void Draw (IDrawingToolkit tk, Area area)
+ {
+ double h;
+
+ if (CurrentTimeNode == null || Mode == TagMode.Edit) {
+ h = Timer.Height;
+ } else {
+ h = Timer.Height / 2;
+ }
+
+ tk.Begin ();
+
+ /* Draw Rectangle */
+ DrawButton (tk);
+
+ /* Draw header */
+ tk.LineWidth = 2;
+ tk.StrokeColor = Timer.TextColor;
+ tk.FillColor = Timer.TextColor;
+ tk.FontWeight = FontWeight.Bold;
+ tk.DrawText (Position, Timer.Width, h, Timer.Name);
+ if (CurrentTimeNode != null && Mode != TagMode.Edit) {
+ tk.DrawText (new Point (Position.X, Position.Y + h), Timer.Width, h,
+ PartialTime.ToSecondsString ());
+ }
+ DrawSelectionArea (tk);
+ tk.End ();
+ }
+ }
+}
+
diff --git a/LongoMatch.Drawing/Constants.cs b/LongoMatch.Drawing/Constants.cs
index 61d8d83..f2a852c 100644
--- a/LongoMatch.Drawing/Constants.cs
+++ b/LongoMatch.Drawing/Constants.cs
@@ -29,12 +29,11 @@ namespace LongoMatch.Drawing
public const int CATEGORY_H_SPACE = 5;
public const int TIMER_HEIGHT = 20;
public const int TIMERULE_HEIGHT = 30;
-
public const int TAGGER_POINT_SIZE = 5;
public const int TAGGER_LINE_WIDTH = 3;
public static Color TAGGER_POINT_COLOR = Color.Blue1;
public static Color TAGGER_SELECTION_COLOR = Color.Grey1;
-
+ public const int CATEGORY_TPL_GRID = 10;
public const double TIMELINE_ACCURACY = 5;
public static Color TEXT_COLOR = Color.Black;
public static Color TIMELINE_LINE_COLOR = Color.Black;
@@ -49,9 +48,7 @@ namespace LongoMatch.Drawing
public static Color TIMER_SELECTED_COLOR = Color.Red1;
public static Color SELECTION_INDICATOR_COLOR = Color.Blue1;
public static Color SELECTION_AREA_COLOR = Color.Grey1;
-
public const int TIMELINE_LINE_WIDTH = 1;
-
}
}
diff --git a/LongoMatch.Drawing/LongoMatch.Drawing.mdp b/LongoMatch.Drawing/LongoMatch.Drawing.mdp
index 27d410f..57d4b38 100644
--- a/LongoMatch.Drawing/LongoMatch.Drawing.mdp
+++ b/LongoMatch.Drawing/LongoMatch.Drawing.mdp
@@ -16,7 +16,6 @@
<Contents>
<File subtype="Directory" buildaction="Compile" name="CanvasObject" />
<File subtype="Code" buildaction="Compile" name="Canvas.cs" />
- <File subtype="Code" buildaction="Compile" name="enums.cs" />
<File subtype="Directory" buildaction="Compile" name="CanvasObject" />
<File subtype="Directory" buildaction="Compile" name="Widgets" />
<File subtype="Code" buildaction="Compile" name="CanvasObject/CategoryLabel.cs" />
@@ -43,6 +42,13 @@
<File subtype="Code" buildaction="Compile" name="CanvasObject/TextObject.cs" />
<File subtype="Code" buildaction="Compile" name="CanvasObject/CounterObject.cs" />
<File subtype="Code" buildaction="Compile" name="Utils.cs" />
+ <File subtype="Code" buildaction="Compile" name="CanvasObject/CategoryObject.cs" />
+ <File subtype="Code" buildaction="Compile" name="Widgets/PlaysTagger.cs" />
+ <File subtype="Code" buildaction="Compile" name="CanvasObject/TaggerObject.cs" />
+ <File subtype="Code" buildaction="Compile" name="CanvasObject/ScoreObject.cs" />
+ <File subtype="Code" buildaction="Compile" name="CanvasObject/CardObject.cs" />
+ <File subtype="Code" buildaction="Compile" name="CanvasObject/TimerObject.cs" />
+ <File subtype="Code" buildaction="Compile" name="CanvasObject/TagObject.cs" />
</Contents>
<References>
<ProjectReference type="Package" localcopy="True" refto="System, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089" />
diff --git a/LongoMatch.Drawing/Makefile.am b/LongoMatch.Drawing/Makefile.am
index 55c9d42..92a8cbb 100644
--- a/LongoMatch.Drawing/Makefile.am
+++ b/LongoMatch.Drawing/Makefile.am
@@ -6,7 +6,9 @@ LINK = $(REF_DEP_LONGOMATCH_DRAWING)
SOURCES = Canvas.cs \
CanvasObject/CanvasObject.cs \
+ CanvasObject/CardObject.cs \
CanvasObject/CategoryLabel.cs \
+ CanvasObject/CategoryObject.cs \
CanvasObject/CounterObject.cs \
CanvasObject/CrossObject.cs \
CanvasObject/EllipseObject.cs \
@@ -16,19 +18,23 @@ SOURCES = Canvas.cs \
CanvasObject/PositionObject.cs \
CanvasObject/QuadrilateralObject.cs \
CanvasObject/RectangleObject.cs \
+ CanvasObject/ScoreObject.cs \
+ CanvasObject/TagObject.cs \
+ CanvasObject/TaggerObject.cs \
CanvasObject/TextObject.cs \
CanvasObject/TimeNodeObject.cs \
CanvasObject/TimelineObject.cs \
+ CanvasObject/TimerObject.cs \
Constants.cs \
Utils.cs \
Widgets/Blackboard.cs \
Widgets/CategoriesLabels.cs \
+ Widgets/PlaysTagger.cs \
Widgets/PlaysTimeline.cs \
Widgets/PositionTagger.cs \
Widgets/TeamTagger.cs \
Widgets/TimersTimeline.cs \
- Widgets/Timerule.cs \
- enums.cs
+ Widgets/Timerule.cs
RESOURCES =
diff --git a/LongoMatch.Drawing/Utils.cs b/LongoMatch.Drawing/Utils.cs
index 5a5b059..a2d224e 100644
--- a/LongoMatch.Drawing/Utils.cs
+++ b/LongoMatch.Drawing/Utils.cs
@@ -27,24 +27,47 @@ namespace LongoMatch.Drawing
{
public class Utils
{
- public static double TimeToPos (Time time, double secondsPerPixel) {
+ public static double Round (double n, int multiple)
+ {
+ if (n % multiple > multiple / 2) {
+ return RoundUp (n, multiple);
+ } else {
+ return RoundDown (n, multiple);
+ }
+ }
+
+ public static double RoundUp (double n, int multiple)
+ {
+ return (multiple - n % multiple) + n;
+ }
+
+ public static double RoundDown (double n, int multiple)
+ {
+ return n - n % multiple;
+ }
+
+ public static double TimeToPos (Time time, double secondsPerPixel)
+ {
return (double)time.MSeconds / 1000 / secondsPerPixel;
}
-
- public static Time PosToTime (Point p, double secondsPerPixel) {
- return new Time ((int) (p.X * 1000 * secondsPerPixel));
+
+ public static Time PosToTime (Point p, double secondsPerPixel)
+ {
+ return new Time ((int)(p.X * 1000 * secondsPerPixel));
}
-
- public static ICanvasSelectableObject CanvasFromDrawableObject (IBlackboardObject drawable) {
+
+ public static ICanvasSelectableObject CanvasFromDrawableObject (IBlackboardObject drawable)
+ {
string objecttype = String.Format ("LongoMatch.Drawing.CanvasObject.{0}Object",
- drawable.GetType().ToString().Split('.').Last());
- ObjectHandle handle = Activator.CreateInstance(null, objecttype);
- ICanvasDrawableObject d = (ICanvasDrawableObject) handle.Unwrap();
+ drawable.GetType ().ToString ().Split ('.').Last
());
+ ObjectHandle handle = Activator.CreateInstance (null, objecttype);
+ ICanvasDrawableObject d = (ICanvasDrawableObject)handle.Unwrap ();
d.IDrawableObject = drawable;
return d;
}
- public static Image RenderFrameDrawingToImage (IDrawingToolkit tk, Image image, FrameDrawing
fd) {
+ public static Image RenderFrameDrawingToImage (IDrawingToolkit tk, Image image, FrameDrawing
fd)
+ {
Image img;
ISurface surface;
diff --git a/LongoMatch.Drawing/Widgets/Blackboard.cs b/LongoMatch.Drawing/Widgets/Blackboard.cs
index ca0d267..f6f0695 100644
--- a/LongoMatch.Drawing/Widgets/Blackboard.cs
+++ b/LongoMatch.Drawing/Widgets/Blackboard.cs
@@ -34,6 +34,7 @@ namespace LongoMatch.Drawing.Widgets
public event ShowDrawToolMenuHandler ShowMenuEvent;
public event ConfigureDrawingObjectHandler ConfigureObjectEvent;
public event DrawableChangedHandler DrawableChangedEvent;
+
DrawTool tool;
FrameDrawing drawing;
ISurface backbuffer;
@@ -48,22 +49,23 @@ namespace LongoMatch.Drawing.Widgets
LineStyle = LineStyle.Normal;
LineType = LineType.Arrow;
tool = DrawTool.Selection;
-
}
- public void Dispose(){
- Dispose(true);
- GC.SuppressFinalize(this);
+ public void Dispose ()
+ {
+ Dispose (true);
+ GC.SuppressFinalize (this);
}
- protected virtual void Dispose(bool disposing){
+ protected virtual void Dispose (bool disposing)
+ {
if (disposing) {
if (backbuffer != null)
- backbuffer.Dispose();
- backbuffer = null;
+ backbuffer.Dispose ();
+ backbuffer = null;
}
- }
-
+ }
+
public FrameDrawing Drawing {
set {
Clear (false);
@@ -71,7 +73,7 @@ namespace LongoMatch.Drawing.Widgets
foreach (IBlackboardObject d in value.Drawables) {
Add (d);
}
- if (backbuffer != null) {
+ if (backbuffer != null) {
backbuffer.Dispose ();
}
backbuffer = tk.CreateSurface (Background.Width, Background.Height,
@@ -83,12 +85,12 @@ namespace LongoMatch.Drawing.Widgets
get;
set;
}
-
+
public Color TextColor {
get;
set;
}
-
+
public Color TextBackgroundColor {
get;
set;
@@ -98,7 +100,7 @@ namespace LongoMatch.Drawing.Widgets
get;
set;
}
-
+
public LineType LineType {
get;
set;
@@ -108,7 +110,7 @@ namespace LongoMatch.Drawing.Widgets
get;
set;
}
-
+
public DrawTool Tool {
get {
return tool;
@@ -118,8 +120,9 @@ namespace LongoMatch.Drawing.Widgets
widget.SetCursorForTool (tool);
}
}
-
- public void DeleteSelection () {
+
+ public void DeleteSelection ()
+ {
foreach (ICanvasDrawableObject o in Selections.Select (s => s.Drawable)) {
Objects.Remove (o);
drawing.Drawables.Remove ((Drawable)o.IDrawableObject);
@@ -128,8 +131,9 @@ namespace LongoMatch.Drawing.Widgets
UpdateCounters ();
widget.ReDraw ();
}
-
- public void Clear (bool resetDrawing = true) {
+
+ public void Clear (bool resetDrawing = true)
+ {
ClearSelection ();
Objects.Clear ();
if (drawing != null && resetDrawing) {
@@ -140,28 +144,32 @@ namespace LongoMatch.Drawing.Widgets
tk.Context = c;
tk.Clear (new Color (0, 0, 0, 0));
tk.Context = null;
- };
+ }
+ ;
}
widget.ReDraw ();
}
-
- public Image Save () {
+
+ public Image Save ()
+ {
ClearSelection ();
- drawing.Freehand = backbuffer.Copy();
+ drawing.Freehand = backbuffer.Copy ();
return tk.Copy (this, Background.Width, Background.Height);
}
- public void Save (string filename) {
+ public void Save (string filename)
+ {
ClearSelection ();
tk.Save (this, Background.Width, Background.Height, filename);
}
-
- ICanvasSelectableObject Add (IBlackboardObject drawable) {
+
+ ICanvasSelectableObject Add (IBlackboardObject drawable)
+ {
ICanvasSelectableObject cso = Utils.CanvasFromDrawableObject (drawable);
Objects.Add (cso);
return cso;
}
-
+
protected override void StartMove (Selection sel)
{
Drawable drawable = null;
@@ -174,7 +182,7 @@ namespace LongoMatch.Drawing.Widgets
switch (Tool) {
case DrawTool.Line:
drawable = new Line (start, new Point (start.X + 1, start.Y + 1),
- LineType, LineStyle);
+ LineType, LineStyle);
drawable.FillColor = Color;
pos = SelectionPosition.LineStop;
break;
@@ -190,37 +198,38 @@ namespace LongoMatch.Drawing.Widgets
break;
case DrawTool.CircleArea:
drawable = new Ellipse (start, 2, 2);
- drawable.FillColor = Color.Copy();
+ drawable.FillColor = Color.Copy ();
drawable.FillColor.A = byte.MaxValue / 2;
break;
case DrawTool.RectangleArea:
drawable = new Rectangle (start, 2, 2);
- drawable.FillColor = Color.Copy();
+ drawable.FillColor = Color.Copy ();
drawable.FillColor.A = byte.MaxValue / 2;
break;
case DrawTool.Counter:
drawable = new Counter (start, 10, 10, 0);
- drawable.FillColor = Color.Copy();
+ drawable.FillColor = Color.Copy ();
drawable.FillColor.A = byte.MaxValue / 2;
(drawable as Counter).TextColor = Color.Grey2;
resize = false;
break;
- case DrawTool.Text: {
- Text text = new Text (start, 1, 20, "");
- if (ConfigureObjectEvent != null) {
- ConfigureObjectEvent (text);
- }
- if (text.Value == null) {
- return;
+ case DrawTool.Text:
+ {
+ Text text = new Text (start, 1, 20, "");
+ if (ConfigureObjectEvent != null) {
+ ConfigureObjectEvent (text);
+ }
+ if (text.Value == null) {
+ return;
+ }
+ text.TopRight.X += text.Value.Length * 12;
+ text.BottomRight.X += text.Value.Length * 12;
+ text.TextColor = TextColor.Copy ();
+ text.FillColor = text.StrokeColor = TextBackgroundColor.Copy ();
+ resize = copycolor = false;
+ drawable = text;
+ break;
}
- text.TopRight.X += text.Value.Length * 12;
- text.BottomRight.X += text.Value.Length * 12;
- text.TextColor = TextColor.Copy();
- text.FillColor = text.StrokeColor = TextBackgroundColor.Copy();
- resize = copycolor = false;
- drawable = text;
- break;
- }
case DrawTool.Pen:
case DrawTool.Eraser:
handdrawing = true;
@@ -246,16 +255,16 @@ namespace LongoMatch.Drawing.Widgets
widget.ReDraw ();
}
}
-
+
protected override void StopMove ()
{
- Selection sel = Selections.FirstOrDefault();
+ Selection sel = Selections.FirstOrDefault ();
if (sel != null) {
- (sel.Drawable as ICanvasDrawableObject).IDrawableObject.Reorder();
+ (sel.Drawable as ICanvasDrawableObject).IDrawableObject.Reorder ();
}
handdrawing = false;
}
-
+
protected override void ShowMenu (Point coords)
{
Selection sel = Selections.FirstOrDefault ();
@@ -264,19 +273,20 @@ namespace LongoMatch.Drawing.Widgets
}
}
-
+
protected override void SelectionChanged (System.Collections.Generic.List<Selection> sel)
{
if (DrawableChangedEvent != null) {
if (sel != null && sel.Count > 0) {
- DrawableChangedEvent ((sel[0].Drawable as
ICanvasDrawableObject).IDrawableObject);
+ DrawableChangedEvent ((sel [0].Drawable as
ICanvasDrawableObject).IDrawableObject);
} else {
DrawableChangedEvent (null);
}
}
}
- void UpdateCounters () {
+ void UpdateCounters ()
+ {
int index = 1;
foreach (IBlackboardObject bo in
@@ -287,7 +297,7 @@ namespace LongoMatch.Drawing.Widgets
}
}
}
-
+
protected override void CursorMoved (Point coords)
{
if (handdrawing) {
@@ -306,10 +316,10 @@ namespace LongoMatch.Drawing.Widgets
tk.DrawLine (start, coords);
tk.End ();
}
- widget.ReDraw();
+ widget.ReDraw ();
}
}
-
+
public override void Draw (IContext context, Area area)
{
tk.Context = context;
@@ -321,6 +331,7 @@ namespace LongoMatch.Drawing.Widgets
if (backbuffer != null) {
tk.Context = context;
tk.Begin ();
+ tk.TranslateAndScale (translation, new Point (scaleX, scaleY));
tk.DrawSurface (backbuffer);
tk.End ();
}
diff --git a/LongoMatch.Drawing/Widgets/CategoriesLabels.cs b/LongoMatch.Drawing/Widgets/CategoriesLabels.cs
index a196f0e..cc40798 100644
--- a/LongoMatch.Drawing/Widgets/CategoriesLabels.cs
+++ b/LongoMatch.Drawing/Widgets/CategoriesLabels.cs
@@ -32,9 +32,9 @@ namespace LongoMatch.Drawing.Widgets
public CategoriesLabels (IWidget widget): base (widget)
{
- categories = new Dictionary<Category, CategoryLabel>();
+ categories = new Dictionary<Category, CategoryLabel> ();
}
-
+
public double Scroll {
set {
foreach (var o in Objects) {
@@ -43,8 +43,9 @@ namespace LongoMatch.Drawing.Widgets
}
}
}
-
- public void LoadProject (Project project, PlaysFilter filter) {
+
+ public void LoadProject (Project project, PlaysFilter filter)
+ {
Objects.Clear ();
this.project = project;
this.filter = filter;
@@ -54,31 +55,33 @@ namespace LongoMatch.Drawing.Widgets
filter.FilterUpdated += UpdateVisibleCategories;
}
}
-
- void FillCanvas () {
+
+ void FillCanvas ()
+ {
int i = 0;
widget.Width = Constants.CATEGORY_WIDTH;
/* Start from bottom to top with categories */
- foreach (Category cat in project.Categories.List) {
+ foreach (Category cat in project.Categories.CategoriesList) {
CategoryLabel l;
/* Add the category label */
l = new CategoryLabel (cat, Constants.CATEGORY_WIDTH,
Constants.CATEGORY_HEIGHT,
i * Constants.CATEGORY_HEIGHT);
- categories[cat] = l;
+ categories [cat] = l;
Objects.Add (l);
i++;
}
}
-
- void UpdateVisibleCategories () {
+
+ void UpdateVisibleCategories ()
+ {
int i = 0;
foreach (Category cat in categories.Keys) {
- CategoryLabel label = categories[cat];
+ CategoryLabel label = categories [cat];
if (filter.VisibleCategories.Contains (cat)) {
label.OffsetY = i * Constants.CATEGORY_HEIGHT;
diff --git a/LongoMatch.Drawing/Widgets/PlaysTagger.cs b/LongoMatch.Drawing/Widgets/PlaysTagger.cs
new file mode 100644
index 0000000..b1b5fa5
--- /dev/null
+++ b/LongoMatch.Drawing/Widgets/PlaysTagger.cs
@@ -0,0 +1,288 @@
+//
+// 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 System.Linq;
+using LongoMatch.Store.Templates;
+using System.Collections.Generic;
+using LongoMatch.Common;
+using LongoMatch.Drawing.CanvasObject;
+using LongoMatch.Handlers;
+using LongoMatch.Store;
+using LongoMatch.Store.Drawables;
+using LongoMatch.Interfaces.Drawing;
+using LongoMatch.Interfaces;
+
+namespace LongoMatch.Drawing.Widgets
+{
+ public class PlaysTagger: SelectionCanvas
+ {
+
+ public event TaggersSelectedHandler TaggersSelectedEvent;
+ public event TaggerSelectedHandler AddNewTagEvent;
+ public event ShowButtonsTaggerMenuHandler ShowMenuEvent;
+ public event NewTagHandler NewTagEvent;
+
+ Categories template;
+ TagMode tagMode;
+ Time currentTime;
+ int templateWidth, templateHeight;
+
+ public PlaysTagger (IWidget widget): base (widget)
+ {
+ Accuracy = 5;
+ TagMode = TagMode.Edit;
+ widget.SizeChangedEvent += SizeChanged;
+ FitMode = FitMode.Fit;
+ AddTag = new Tag ("", "");
+ }
+
+ public Categories Template {
+ set {
+ template = value;
+ LoadTemplate ();
+ }
+ }
+
+ public Tag AddTag {
+ get;
+ set;
+ }
+
+ public bool Edited {
+ get;
+ set;
+ }
+
+ public Time CurrentTime {
+ set {
+ currentTime = value;
+ foreach (TimerObject to in Objects.OfType<TimerObject>()) {
+ to.CurrentTime = value;
+ }
+ }
+ get {
+ return currentTime;
+ }
+ }
+
+ public TagMode TagMode {
+ set {
+ tagMode = value;
+ ObjectsCanMove = tagMode == TagMode.Edit;
+ }
+ get {
+ return tagMode;
+ }
+ }
+
+ public FitMode FitMode {
+ set;
+ get;
+ }
+
+ public void Refresh (TaggerButton b)
+ {
+ TaggerObject to;
+
+ LoadTemplate ();
+ to = (TaggerObject)Objects.FirstOrDefault (o => (o as TaggerObject).Tagger == b);
+ if (to != null) {
+ UpdateSelection (new Selection (to, SelectionPosition.All, 0));
+ }
+ }
+
+ protected override void ShowMenu (Point coords)
+ {
+ Selection sel;
+ if (ShowMenuEvent == null)
+ return;
+
+ sel = Selections.LastOrDefault ();
+ if (sel != null) {
+ TaggerObject to = sel.Drawable as TaggerObject;
+ Tag tag = null;
+
+ if (to is CategoryObject) {
+ tag = (to as CategoryObject).GetTagForCoords (coords);
+ }
+ ShowMenuEvent (to.Tagger, tag);
+ }
+ }
+
+ protected override void SelectionMoved (Selection sel)
+ {
+ SizeChanged ();
+ Edited = true;
+ base.SelectionMoved (sel);
+ }
+
+ protected override void SelectionChanged (List<Selection> sel)
+ {
+ List<TaggerButton> taggers;
+
+ taggers = sel.Select (s => (s.Drawable as TaggerObject).Tagger).ToList ();
+ if (TagMode == TagMode.Edit) {
+ if (TaggersSelectedEvent != null) {
+ TaggersSelectedEvent (taggers);
+ }
+ }
+ base.SelectionChanged (sel);
+ }
+
+ protected override void StopMove ()
+ {
+ Selection sel = Selections.FirstOrDefault ();
+
+ if (sel != null) {
+ int i = Constants.CATEGORY_TPL_GRID;
+ TaggerButton tb = (sel.Drawable as TaggerObject).Tagger;
+ tb.Position.X = Utils.Round (tb.Position.X, i);
+ tb.Position.Y = Utils.Round (tb.Position.Y, i);
+ tb.Width = (int)Utils.Round (tb.Width, i);
+ tb.Height = (int)Utils.Round (tb.Height, i);
+ widget.ReDraw ();
+ }
+
+ base.StopMove ();
+ }
+
+ public override void Draw (IContext context, Area area)
+ {
+ if (TagMode == TagMode.Edit) {
+ tk.Context = context;
+ tk.Begin ();
+ tk.TranslateAndScale (translation, new Point (scaleX, scaleY));
+ /* Draw grid */
+ tk.LineWidth = 1;
+ tk.StrokeColor = Color.Grey1;
+ tk.FillColor = Color.Grey1;
+ /* Vertical lines */
+ for (int i = 0; i <= templateHeight; i += Constants.CATEGORY_TPL_GRID) {
+ tk.DrawLine (new Point (0, i), new Point (templateWidth, i));
+ }
+ /* Horizontal lines */
+ for (int i = 0; i < templateWidth; i += Constants.CATEGORY_TPL_GRID) {
+ tk.DrawLine (new Point (i, 0), new Point (i, templateHeight));
+ }
+ tk.End ();
+ }
+
+ base.Draw (context, area);
+ }
+
+ void LoadTemplate ()
+ {
+ Objects.Clear ();
+ foreach (TagButton tag in template.CommonTags) {
+ TagObject to = new TagObject (tag);
+ to.TaggerClickedEvent += HandleTaggerClickedEvent;
+ to.Mode = TagMode;
+ Objects.Add (to);
+ }
+
+ foreach (Category cat in template.CategoriesList) {
+ CategoryObject co = new CategoryObject (cat);
+ co.TaggerClickedEvent += HandleTaggerClickedEvent;
+ co.Mode = TagMode;
+ co.AddTag = AddTag;
+ Objects.Add (co);
+ }
+
+ foreach (PenaltyCard c in template.PenaltyCards) {
+ CardObject co = new CardObject (c);
+ co.TaggerClickedEvent += HandleTaggerClickedEvent;
+ co.Mode = TagMode;
+ Objects.Add (co);
+ }
+ foreach (Score s in template.Scores) {
+ ScoreObject co = new ScoreObject (s);
+ co.TaggerClickedEvent += HandleTaggerClickedEvent;
+ co.Mode = TagMode;
+ Objects.Add (co);
+ }
+
+ foreach (Timer t in template.Timers) {
+ TimerObject to = new TimerObject (t);
+ to.TaggerClickedEvent += HandleTaggerClickedEvent;
+ to.Mode = TagMode;
+ Objects.Add (to);
+ }
+ Edited = false;
+ SizeChanged ();
+ widget.ReDraw ();
+ }
+
+ void SizeChanged ()
+ {
+ templateHeight = template.CanvasHeight;
+ templateWidth = template.CanvasWidth;
+ if (FitMode == FitMode.Original) {
+ widget.Width = templateWidth;
+ widget.Height = templateHeight;
+ } else if (FitMode == FitMode.Fill) {
+ scaleX = (double)widget.Width / templateWidth;
+ scaleY = (double)widget.Height / templateHeight;
+ } else if (FitMode == FitMode.Fit) {
+ Image.ScaleFactor (templateWidth, templateHeight,
+ (int)widget.Width, (int)widget.Height,
+ out scaleX, out scaleY, out translation);
+ }
+ }
+
+ void HandleTaggerClickedEvent (TaggerObject tagger)
+ {
+ Time start = null, stop = null;
+ List<Tag> tags = null;
+
+ if (NewTagEvent == null || tagger is TimerObject ||
+ tagger is TagObject) {
+ return;
+ }
+
+ if (TagMode == TagMode.Edit) {
+ if (tagger is CategoryObject) {
+ if ((tagger as CategoryObject).SelectedTags.Contains (AddTag)) {
+ AddNewTagEvent (tagger.Tagger);
+ }
+ }
+ return;
+ }
+
+ if (tagger.Tagger.TagMode == TagMode.Predifined) {
+ stop = CurrentTime + tagger.Tagger.Stop;
+ start = CurrentTime - tagger.Tagger.Start;
+ } else {
+ stop = CurrentTime;
+ start = tagger.Start - tagger.Tagger.Start;
+ }
+
+ if (tagger is CategoryObject) {
+ tags = new List<Tag> ();
+ tags.AddRange ((tagger as CategoryObject).SelectedTags);
+ foreach (TagObject to in Objects.OfType<TagObject>()) {
+ if (to.Active) {
+ tags.Add (to.TagButton.Tag);
+ }
+ to.Active = false;
+ }
+ }
+ NewTagEvent (tagger.Tagger, null, tags, start, stop);
+ }
+ }
+}
+
diff --git a/LongoMatch.Drawing/Widgets/PlaysTimeline.cs b/LongoMatch.Drawing/Widgets/PlaysTimeline.cs
index 012ef23..45a3f03 100644
--- a/LongoMatch.Drawing/Widgets/PlaysTimeline.cs
+++ b/LongoMatch.Drawing/Widgets/PlaysTimeline.cs
@@ -27,7 +27,6 @@ using LongoMatch.Store.Drawables;
namespace LongoMatch.Drawing.Widgets
{
-
public class PlaysTimeline: SelectionCanvas
{
@@ -38,7 +37,7 @@ namespace LongoMatch.Drawing.Widgets
double secondsPerPixel;
Time duration;
Dictionary<Category, CategoryTimeline> categories;
-
+
public PlaysTimeline (IWidget widget): base(widget)
{
categories = new Dictionary<Category, CategoryTimeline> ();
@@ -47,17 +46,18 @@ namespace LongoMatch.Drawing.Widgets
SelectionMode = MultiSelectionMode.MultipleWithModifier;
}
- public void LoadProject (Project project, PlaysFilter filter) {
+ public void LoadProject (Project project, PlaysFilter filter)
+ {
this.project = project;
- Objects.Clear();
- categories.Clear();
+ Objects.Clear ();
+ categories.Clear ();
duration = project.Description.File.Duration;
widget.Height = project.Categories.List.Count * Constants.CATEGORY_HEIGHT;
playsFilter = filter;
FillCanvas ();
filter.FilterUpdated += UpdateVisibleCategories;
}
-
+
public Time CurrentTime {
set {
foreach (CategoryTimeline tl in categories.Values) {
@@ -65,7 +65,7 @@ namespace LongoMatch.Drawing.Widgets
}
}
}
-
+
public double SecondsPerPixel {
set {
secondsPerPixel = value;
@@ -75,19 +75,22 @@ namespace LongoMatch.Drawing.Widgets
return secondsPerPixel;
}
}
-
- public void AddPlay(Play play) {
- categories[play.Category].AddPlay (play);
+
+ public void AddPlay (Play play)
+ {
+ categories [play.Category].AddPlay (play);
}
- public void RemovePlays(List<Play> plays) {
+ public void RemovePlays (List<Play> plays)
+ {
foreach (Play p in plays) {
- categories[p.Category].RemoveNode (p);
+ categories [p.Category].RemoveNode (p);
Selections.RemoveAll (s => (s.Drawable as PlayObject).Play == p);
}
}
-
- void Update () {
+
+ void Update ()
+ {
double width = duration.Seconds / SecondsPerPixel;
widget.Width = width + 10;
foreach (TimelineObject tl in categories.Values) {
@@ -95,9 +98,10 @@ namespace LongoMatch.Drawing.Widgets
tl.SecondsPerPixel = SecondsPerPixel;
}
}
-
- void FillCanvas () {
- for (int i=0; i<project.Categories.List.Count; i++) {
+
+ void FillCanvas ()
+ {
+ for (int i=0; i<project.Categories.CategoriesList.Count; i++) {
Category cat;
CategoryTimeline tl;
Color c;
@@ -108,20 +112,21 @@ namespace LongoMatch.Drawing.Widgets
c = Color.Grey1;
}
- cat = project.Categories.List[i];
+ cat = project.Categories.CategoriesList [i];
tl = new CategoryTimeline (project.PlaysInCategory (cat),
duration, i * Constants.CATEGORY_HEIGHT, c);
- categories[cat] = tl;
+ categories [cat] = tl;
Objects.Add (tl);
}
UpdateVisibleCategories ();
Update ();
}
-
- void UpdateVisibleCategories () {
- int i=0;
+
+ void UpdateVisibleCategories ()
+ {
+ int i = 0;
foreach (Category cat in categories.Keys) {
- TimelineObject timeline = categories[cat];
+ TimelineObject timeline = categories [cat];
if (playsFilter.VisibleCategories.Contains (cat)) {
timeline.OffsetY = i * Constants.CATEGORY_HEIGHT;
timeline.Visible = true;
@@ -136,17 +141,19 @@ namespace LongoMatch.Drawing.Widgets
void RedrawSelection (Selection sel)
{
PlayObject po = sel.Drawable as PlayObject;
- widget.ReDraw (categories[po.Play.Category]);
- }
-
- protected override void SelectionChanged (List<Selection> selections) {
+ widget.ReDraw (categories [po.Play.Category]);
+ }
+
+ protected override void SelectionChanged (List<Selection> selections)
+ {
if (selections.Count > 0) {
- PlayObject po = selections.Last().Drawable as PlayObject;
+ PlayObject po = selections.Last ().Drawable as PlayObject;
Config.EventsBroker.EmitPlaySelected (po.Play);
}
}
-
- protected override void StartMove (Selection sel) {
+
+ protected override void StartMove (Selection sel)
+ {
if (sel == null)
return;
@@ -154,17 +161,19 @@ namespace LongoMatch.Drawing.Widgets
widget.SetCursor (CursorType.DoubleArrow);
}
}
-
- protected override void StopMove () {
+
+ protected override void StopMove ()
+ {
widget.SetCursor (CursorType.Arrow);
}
- protected override void ShowMenu (Point coords) {
+ protected override void ShowMenu (Point coords)
+ {
Category cat = null;
- List<Play> plays = Selections.Select (p => (p.Drawable as PlayObject).Play).ToList();
+ List<Play> plays = Selections.Select (p => (p.Drawable as PlayObject).Play).ToList ();
foreach (Category c in categories.Keys) {
- TimelineObject tl = categories[c];
+ TimelineObject tl = categories [c];
if (!tl.Visible)
continue;
if (coords.Y >= tl.OffsetY && coords.Y < tl.OffsetY +
Constants.CATEGORY_HEIGHT) {
@@ -175,11 +184,12 @@ namespace LongoMatch.Drawing.Widgets
if (cat != null && ShowMenuEvent != null) {
ShowMenuEvent (plays, cat,
- Utils.PosToTime (coords, SecondsPerPixel));
+ Utils.PosToTime (coords, SecondsPerPixel));
}
}
-
- protected override void SelectionMoved (Selection sel) {
+
+ protected override void SelectionMoved (Selection sel)
+ {
Time moveTime;
Play play = (sel.Drawable as PlayObject).Play;
diff --git a/LongoMatch.Drawing/Widgets/PositionTagger.cs b/LongoMatch.Drawing/Widgets/PositionTagger.cs
index 4ce5202..cab1e47 100644
--- a/LongoMatch.Drawing/Widgets/PositionTagger.cs
+++ b/LongoMatch.Drawing/Widgets/PositionTagger.cs
@@ -31,6 +31,7 @@ namespace LongoMatch.Drawing.Widgets
{
public event ShowTaggerMenuHandler ShowMenuEvent;
+
Play playSelected;
public PositionTagger (IWidget widget): base (widget)
@@ -39,14 +40,14 @@ namespace LongoMatch.Drawing.Widgets
EmitSignals = true;
SelectionMode = MultiSelectionMode.MultipleWithModifier;
}
-
+
public PositionTagger (IWidget widget, List<Play> plays, Image background, FieldPositionType
position): base (widget)
{
Background = background;
Plays = plays;
FieldPosition = position;
}
-
+
public FieldPositionType FieldPosition {
get;
set;
@@ -56,8 +57,9 @@ namespace LongoMatch.Drawing.Widgets
get;
set;
}
-
- public void SelectPlay (Play play) {
+
+ public void SelectPlay (Play play)
+ {
PositionObject po;
if (play == playSelected) {
@@ -73,14 +75,14 @@ namespace LongoMatch.Drawing.Widgets
widget.ReDraw ();
}
}
-
+
public List<Point> Points {
set {
Objects.Clear ();
Objects.Add (new PositionObject (value, Background.Width, Background.Height));
}
}
-
+
public List<Play> Plays {
set {
Objects.Clear ();
@@ -89,8 +91,9 @@ namespace LongoMatch.Drawing.Widgets
}
}
}
-
- public void AddPlay(Play play) {
+
+ public void AddPlay (Play play)
+ {
PositionObject po;
Coordinates coords;
@@ -104,23 +107,26 @@ namespace LongoMatch.Drawing.Widgets
Objects.Add (po);
}
- public void RemovePlays(List<Play> plays) {
- Objects.RemoveAll (o => plays.Contains((o as PositionObject).Play));
+ public void RemovePlays (List<Play> plays)
+ {
+ Objects.RemoveAll (o => plays.Contains ((o as PositionObject).Play));
}
- protected override void SelectionChanged (List<Selection> selections) {
+ protected override void SelectionChanged (List<Selection> selections)
+ {
if (selections.Count > 0) {
- Play p = (selections.Last().Drawable as PositionObject).Play;
+ Play p = (selections.Last ().Drawable as PositionObject).Play;
playSelected = p;
if (EmitSignals) {
Config.EventsBroker.EmitPlaySelected (p);
}
}
}
-
- protected override void ShowMenu (Point coords) {
+
+ protected override void ShowMenu (Point coords)
+ {
if (ShowMenuEvent != null) {
- List<Play> plays = Selections.Select (p => (p.Drawable as
PositionObject).Play).ToList();
+ List<Play> plays = Selections.Select (p => (p.Drawable as
PositionObject).Play).ToList ();
ShowMenuEvent (plays);
}
}
diff --git a/LongoMatch.Drawing/Widgets/TeamTagger.cs b/LongoMatch.Drawing/Widgets/TeamTagger.cs
index 72e2d55..398de12 100644
--- a/LongoMatch.Drawing/Widgets/TeamTagger.cs
+++ b/LongoMatch.Drawing/Widgets/TeamTagger.cs
@@ -36,11 +36,10 @@ namespace LongoMatch.Drawing.Widgets
TeamTemplate homeTeam, awayTeam;
Image background;
- double currentWidth, currentHeight, scaleX, scaleY;
+ double currentWidth, currentHeight;
double backgroundWidth;
Point offset;
MultiSelectionMode prevMode;
- PlayersIconSize iconSize;
bool inSubs;
public TeamTagger (IWidget widget): base (widget)
@@ -53,34 +52,35 @@ namespace LongoMatch.Drawing.Widgets
PlayersPorRowInBench = 2;
BenchIconSize = PlayersIconSize.Small;
}
-
+
public Color HomeColor {
get;
set;
}
-
+
public Color AwayColor {
get;
set;
}
-
+
public int PlayersPorRowInBench {
get;
set;
}
-
+
public PlayersIconSize BenchIconSize {
get;
set;
}
-
- public void LoadTeams (TeamTemplate homeTeam, TeamTemplate awayTeam, Image background) {
+
+ public void LoadTeams (TeamTemplate homeTeam, TeamTemplate awayTeam, Image background)
+ {
this.homeTeam = homeTeam;
this.awayTeam = awayTeam;
this.background = background;
Resize ();
}
-
+
public bool SubstitutionsMode {
set {
if (value) {
@@ -97,7 +97,8 @@ namespace LongoMatch.Drawing.Widgets
}
}
- public void Select (List<Player> players) {
+ public void Select (List<Player> players)
+ {
ClearSelection ();
if (players != null) {
foreach (Player p in players) {
@@ -107,14 +108,16 @@ namespace LongoMatch.Drawing.Widgets
widget.ReDraw ();
}
- public void Select (Player p) {
+ public void Select (Player p)
+ {
ClearSelection ();
SelectPlayer (p, false);
widget.ReDraw ();
}
-
- public void Reload () {
- Objects.Clear();
+
+ public void Reload ()
+ {
+ Objects.Clear ();
if (homeTeam != null) {
LoadTeam (homeTeam, Team.LOCAL);
}
@@ -123,19 +126,19 @@ namespace LongoMatch.Drawing.Widgets
}
widget.ReDraw ();
}
-
+
int NTeams {
get {
return awayTeam == null ? 1 : 2;
}
}
-
+
int BenchWidth {
get {
return PlayersPorRowInBench * (int)BenchIconSize;
}
}
-
+
void SelectPlayer (Player p, bool notify=true)
{
if (p != null) {
@@ -146,27 +149,29 @@ namespace LongoMatch.Drawing.Widgets
}
}
}
-
- PlayersIconSize BestIconSize (int[] formation) {
+
+ PlayersIconSize BestIconSize (int[] formation)
+ {
double width = backgroundWidth / NTeams;
- double optWidth = width / formation.Count();
- double optHeight = currentHeight / formation.Max();
+ double optWidth = width / formation.Count ();
+ double optHeight = currentHeight / formation.Max ();
double size = Math.Min (optWidth, optHeight);
- if (size < (int) PlayersIconSize.Small) {
+ if (size < (int)PlayersIconSize.Small) {
return PlayersIconSize.Smallest;
- } else if (size < (int) PlayersIconSize.Medium) {
+ } else if (size < (int)PlayersIconSize.Medium) {
return PlayersIconSize.Small;
- } else if (size < (int) PlayersIconSize.Large) {
+ } else if (size < (int)PlayersIconSize.Large) {
return PlayersIconSize.Medium;
- } else if (size < (int) PlayersIconSize.ExtraLarge) {
+ } else if (size < (int)PlayersIconSize.ExtraLarge) {
return PlayersIconSize.Large;
} else {
return PlayersIconSize.ExtraLarge;
}
}
- void LoadTeam (TeamTemplate template, Team team) {
+ void LoadTeam (TeamTemplate template, Team team)
+ {
int index = 0;
double width, colWidth, offsetX;
Color color;
@@ -194,7 +199,7 @@ namespace LongoMatch.Drawing.Widgets
} else {
colX = offsetX - colWidth * col - colWidth / 2;
}
- rowHeight = currentHeight / template.Formation[col];
+ rowHeight = currentHeight / template.Formation [col];
for (int row=0; row < template.Formation[col]; row ++) {
Point p = new Point (colX, rowHeight * row + rowHeight / 2);
@@ -227,37 +232,39 @@ namespace LongoMatch.Drawing.Widgets
Objects.Add (po);
}
}
-
- void Resize () {
+
+ void Resize ()
+ {
currentWidth = widget.Width;
currentHeight = widget.Height;
backgroundWidth = currentWidth - BenchWidth * NTeams;
if (background != null) {
- background.ScaleFactor ((int) backgroundWidth, (int) currentHeight,
+ background.ScaleFactor ((int)backgroundWidth, (int)currentHeight,
out scaleX, out scaleY, out offset);
}
Reload ();
}
-
- protected override void SelectionChanged (List<Selection> selections) {
+
+ protected override void SelectionChanged (List<Selection> selections)
+ {
List<Player> players;
- players = selections.Select (s => (s.Drawable as PlayerObject).Player).ToList();
+ players = selections.Select (s => (s.Drawable as PlayerObject).Player).ToList ();
if (SubstitutionsMode) {
bool subsDone = false;
if (homeTeam != null) {
- List<Player> hplayers = players.Where (p => homeTeam.List.Contains
(p)).ToList();
+ List<Player> hplayers = players.Where (p => homeTeam.List.Contains
(p)).ToList ();
if (hplayers.Count == 2) {
- homeTeam.List.Swap (hplayers[0], hplayers[1]);
+ homeTeam.List.Swap (hplayers [0], hplayers [1]);
subsDone = true;
}
}
if (awayTeam != null) {
- List<Player> aplayers = players.Where (p => awayTeam.List.Contains
(p)).ToList();
+ List<Player> aplayers = players.Where (p => awayTeam.List.Contains
(p)).ToList ();
if (aplayers.Count == 2) {
- awayTeam.List.Swap (aplayers[0], aplayers[1]);
+ awayTeam.List.Swap (aplayers [0], aplayers [1]);
subsDone = true;
}
}
@@ -272,14 +279,15 @@ namespace LongoMatch.Drawing.Widgets
}
}
}
-
- protected override void ShowMenu (Point coords) {
- if (ShowMenuEvent != null && Selections.Count > 0){
+
+ protected override void ShowMenu (Point coords)
+ {
+ if (ShowMenuEvent != null && Selections.Count > 0) {
ShowMenuEvent (
- Selections.Select (s => (s.Drawable as
PlayerObject).Player).ToList());
+ Selections.Select (s => (s.Drawable as PlayerObject).Player).ToList
());
}
}
-
+
public override void Draw (IContext context, Area area)
{
if (currentWidth != widget.Width || currentHeight != widget.Height) {
diff --git a/LongoMatch.Drawing/Widgets/TimersTimeline.cs b/LongoMatch.Drawing/Widgets/TimersTimeline.cs
index 93b7a8d..4441a16 100644
--- a/LongoMatch.Drawing/Widgets/TimersTimeline.cs
+++ b/LongoMatch.Drawing/Widgets/TimersTimeline.cs
@@ -13,13 +13,11 @@ namespace LongoMatch.Drawing.Widgets
{
public event TimeNodeChangedHandler TimeNodeChanged;
- public event PlaySelectedHandler TimeNodeSelected;
- public event ShowTimelineMenuHandler ShowMenuEvent;
double secondsPerPixel;
Time duration;
Dictionary <Timer, TimerTimeline> timers;
-
+
public TimersTimeline (IWidget widget): base(widget)
{
secondsPerPixel = 0.1;
@@ -27,17 +25,19 @@ namespace LongoMatch.Drawing.Widgets
SelectionMode = MultiSelectionMode.MultipleWithModifier;
}
- public void LoadPeriods (List<Period> periods, Time duration) {
- LoadTimers (periods.Select (p => p as Timer).ToList(), duration, false);
+ public void LoadPeriods (List<Period> periods, Time duration)
+ {
+ LoadTimers (periods.Select (p => p as Timer).ToList (), duration, false);
}
- public void LoadTimers (List<Timer> timers, Time duration, bool splitTimers = true) {
- Objects.Clear();
- this.timers = new Dictionary<Timer, TimerTimeline>();
+ public void LoadTimers (List<Timer> timers, Time duration, bool splitTimers = true)
+ {
+ Objects.Clear ();
+ this.timers = new Dictionary<Timer, TimerTimeline> ();
this.duration = duration;
FillCanvas (timers, splitTimers);
}
-
+
public Time CurrentTime {
set {
foreach (TimerTimeline tl in timers.Values) {
@@ -45,7 +45,7 @@ namespace LongoMatch.Drawing.Widgets
}
}
}
-
+
public double SecondsPerPixel {
set {
secondsPerPixel = value;
@@ -55,8 +55,9 @@ namespace LongoMatch.Drawing.Widgets
return secondsPerPixel;
}
}
-
- void Update () {
+
+ void Update ()
+ {
double width;
if (duration == null)
@@ -68,13 +69,14 @@ namespace LongoMatch.Drawing.Widgets
tl.SecondsPerPixel = SecondsPerPixel;
}
}
-
- void FillCanvas (List<Timer> timers, bool splitTimers) {
+
+ void FillCanvas (List<Timer> timers, bool splitTimers)
+ {
if (!splitTimers) {
widget.Height = Constants.TIMER_HEIGHT;
TimerTimeline tl = new TimerTimeline (timers, duration, 0, Color.White);
foreach (Timer t in timers) {
- this.timers[t] = tl;
+ this.timers [t] = tl;
}
Objects.Add (tl);
} else {
@@ -82,8 +84,9 @@ namespace LongoMatch.Drawing.Widgets
}
Update ();
}
-
- protected override void StartMove (Selection sel) {
+
+ protected override void StartMove (Selection sel)
+ {
if (sel == null)
return;
@@ -91,12 +94,14 @@ namespace LongoMatch.Drawing.Widgets
widget.SetCursor (CursorType.DoubleArrow);
}
}
-
- protected override void StopMove () {
+
+ protected override void StopMove ()
+ {
widget.SetCursor (CursorType.Arrow);
}
- protected override void SelectionMoved (Selection sel) {
+ protected override void SelectionMoved (Selection sel)
+ {
if (TimeNodeChanged != null) {
Time moveTime;
TimeNode tn = (sel.Drawable as TimeNodeObject).TimeNode;
diff --git a/LongoMatch.Drawing/Widgets/Timerule.cs b/LongoMatch.Drawing/Widgets/Timerule.cs
index 7a553ce..9d559d5 100644
--- a/LongoMatch.Drawing/Widgets/Timerule.cs
+++ b/LongoMatch.Drawing/Widgets/Timerule.cs
@@ -35,12 +35,12 @@ namespace LongoMatch.Drawing.Widgets
SecondsPerPixel = 0.1;
CurrentTime = new Time (0);
}
-
+
public double Scroll {
set;
protected get;
}
-
+
public Time Duration {
set;
protected get;
@@ -50,12 +50,12 @@ namespace LongoMatch.Drawing.Widgets
get;
set;
}
-
+
public double SecondsPerPixel {
set;
get;
}
-
+
public override void Draw (IContext context, Area area)
{
double height = widget.Height;
@@ -70,7 +70,7 @@ namespace LongoMatch.Drawing.Widgets
tk.Begin ();
tk.FillColor = Constants.TIMERULE_BACKGROUND;
tk.StrokeColor = Constants.TIMERULE_BACKGROUND;
- tk.DrawRectangle (new Point(0, 0), width, height);
+ tk.DrawRectangle (new Point (0, 0), width, height);
tk.StrokeColor = Constants.TIMELINE_LINE_COLOR;
tk.LineWidth = Constants.TIMELINE_LINE_WIDTH;
@@ -79,16 +79,16 @@ namespace LongoMatch.Drawing.Widgets
tk.DrawLine (new Point (0, height), new Point (width, height));
/* Draw big lines each 10 * secondsPerPixel */
- for(int i=0; i <= Duration.Seconds / SecondsPerPixel; i += TIME_SPACING) {
+ for (int i=0; i <= Duration.Seconds / SecondsPerPixel; i += TIME_SPACING) {
double pos = i - Scroll;
tk.DrawLine (new Point (pos, height),
new Point (pos, height - BIG_LINE_HEIGHT));
- tk.DrawText (new Point (pos - TEXT_WIDTH/2, 0), TEXT_WIDTH, height -
BIG_LINE_HEIGHT - 4,
- new Time {Seconds = (int) (i *
SecondsPerPixel)}.ToSecondsString());
+ tk.DrawText (new Point (pos - TEXT_WIDTH / 2, 0), TEXT_WIDTH, height -
BIG_LINE_HEIGHT - 4,
+ new Time { Seconds = (int) (i * SecondsPerPixel)
}.ToSecondsString ());
}
/* Draw small lines each 1 * secondsPerPixel */
- for(int i=0; i<= Duration.Seconds / SecondsPerPixel; i+= TIME_SPACING / 10) {
+ for (int i=0; i<= Duration.Seconds / SecondsPerPixel; i+= TIME_SPACING / 10) {
double pos;
if (i % TIME_SPACING == 0)
diff --git a/LongoMatch.GUI.Multimedia/Gui/CapturerBin.cs b/LongoMatch.GUI.Multimedia/Gui/CapturerBin.cs
index 9474881..630adec 100644
--- a/LongoMatch.GUI.Multimedia/Gui/CapturerBin.cs
+++ b/LongoMatch.GUI.Multimedia/Gui/CapturerBin.cs
@@ -117,7 +117,7 @@ namespace LongoMatch.Gui
}
currentPeriod = new Period {Name = periods[periodIndex]};
- currentPeriod.Start (ellapsedTime);
+ currentPeriod.StartTimer (ellapsedTime);
Log.Information (String.Format ("Start new period {0} at {1}",
currentPeriod.Name, ellapsedTime.ToSecondsString()));
Capturing = true;
@@ -153,7 +153,7 @@ namespace LongoMatch.Gui
periodIndex ++;
Capturing = false;
capturer.TogglePause ();
- currentPeriod.Stop (ellapsedTime);
+ currentPeriod.StopTimer (ellapsedTime);
UpdateLabel (periods[periodIndex]);
currentPeriod = null;
recbutton.Visible = true;
@@ -164,7 +164,7 @@ namespace LongoMatch.Gui
if (currentPeriod != null) {
Log.Information (String.Format ("Stop period {0} at {1}",
currentPeriod.Name,
ellapsedTime.ToSecondsString()));
- currentPeriod.Stop (ellapsedTime);
+ currentPeriod.StopTimer (ellapsedTime);
}
Log.Information ("Stop capture");
capturer.Stop ();
diff --git a/LongoMatch.GUI/Gui/Component/AnalysisComponent.cs
b/LongoMatch.GUI/Gui/Component/AnalysisComponent.cs
index d760bef..8437c3e 100644
--- a/LongoMatch.GUI/Gui/Component/AnalysisComponent.cs
+++ b/LongoMatch.GUI/Gui/Component/AnalysisComponent.cs
@@ -37,15 +37,17 @@ namespace LongoMatch.Gui.Component
ProjectType projectType;
bool detachedPlayer;
Gtk.Window playerWindow;
+ PlaysSelectionWidget playsSelection;
+ PlayerCapturerBin playercapturer;
+ CodingWidget codingwidget;
+ HBox videowidgetsbox;
public AnalysisComponent ()
{
this.Build ();
projectType = ProjectType.None;
- playsSelection.Visible = true;
detachedPlayer = false;
- playercapturer.Mode = PlayerCapturerBin.PlayerOperationMode.Player;
ConnectSignals();
}
diff --git a/LongoMatch.GUI/Gui/Component/AnalysisTemplateEditor.cs
b/LongoMatch.GUI/Gui/Component/AnalysisTemplateEditor.cs
index 6e372df..fb2ec3a 100644
--- a/LongoMatch.GUI/Gui/Component/AnalysisTemplateEditor.cs
+++ b/LongoMatch.GUI/Gui/Component/AnalysisTemplateEditor.cs
@@ -31,33 +31,18 @@ namespace LongoMatch.Gui.Component
{
bool edited;
Categories template;
- Category selectedCategory;
public AnalysisTemplateEditor ()
{
this.Build ();
- buttonswidget.Mode = LongoMatch.Common.TagMode.Predifined;
- buttonswidget.NewTagEvent += HandleCategorySelected;
- categoryproperties.Visible = false;
+ buttonswidget.Mode = TagMode.Edit;
savebutton.Clicked += HandleSaveClicked;
- deletebutton.Sensitive = false;
- newbutton.Sensitive = false;
- newbutton.Clicked += HandleNewClicked;
- deletebutton.Clicked += HandleDeleteClicked;
- fieldeventbox.ButtonPressEvent += HandleFieldButtonPressEvent;
- hfieldeventbox.ButtonPressEvent += HandleFieldButtonPressEvent;
- goaleventbox.ButtonPressEvent += HandleFieldButtonPressEvent;
}
public Categories Template {
set {
template = value;
- categoryproperties.Template = value;
- newbutton.Sensitive = true;
- buttonswidget.UpdateCategories (value);
- fieldimage.Pixbuf = value.FieldBackground.Scale (50, 50).Value;
- hfieldimage.Pixbuf = value.HalfFieldBackground.Scale (50, 50).Value;
- goalimage.Pixbuf = value.GoalBackground.Scale (50, 50).Value;
+ buttonswidget.Template = value;
Edited = false;
}
}
@@ -67,36 +52,10 @@ namespace LongoMatch.Gui.Component
edited = value;
}
get {
- return edited;
+ return buttonswidget.Edited;
}
}
- void HandleDeleteClicked (object sender, EventArgs e)
- {
- string msg = Catalog.GetString ("Do you want to delete: ") +
- selectedCategory.Name + "?";
- if (Config.GUIToolkit.QuestionMessage (msg, null, this)) {
- template.List.Remove (selectedCategory);
- buttonswidget.UpdateCategories (template);
- Edited = true;
- }
- }
-
- void HandleNewClicked (object sender, EventArgs e)
- {
- template.AddDefaultItem (template.List.Count);
- buttonswidget.UpdateCategories (template);
- Edited = true;
- }
-
- void HandleCategorySelected (Category category, List<Player> players)
- {
- categoryproperties.Visible = true;
- deletebutton.Sensitive = true;
- categoryproperties.Category = category;
- selectedCategory = category;
- }
-
void HandleSaveClicked (object sender, EventArgs e)
{
if (template != null) {
@@ -104,29 +63,6 @@ namespace LongoMatch.Gui.Component
}
}
- void HandleFieldButtonPressEvent (object o, Gtk.ButtonPressEventArgs args)
- {
- LongoMatch.Common.Image background;
- Pixbuf pix = Helpers.Misc.OpenImage (this);
-
- if (pix == null) {
- return;
- }
-
- background = new LongoMatch.Common.Image (pix);
- background.ScaleInplace (Constants.MAX_BACKGROUND_WIDTH,
- Constants.MAX_BACKGROUND_HEIGHT);
- if (o == fieldeventbox) {
- template.FieldBackground = background;
- fieldimage.Pixbuf = background.Scale (50, 50).Value;
- } else if (o == hfieldeventbox) {
- template.HalfFieldBackground = background;
- hfieldimage.Pixbuf = background.Scale (50, 50).Value;
- } else if (o == goaleventbox) {
- template.GoalBackground = background;
- goalimage.Pixbuf = background.Scale (50, 50).Value;
- }
- }
}
}
diff --git a/LongoMatch.GUI/Gui/Component/ButtonsWidget.cs b/LongoMatch.GUI/Gui/Component/ButtonsWidget.cs
index 652daf1..2cdb51f 100644
--- a/LongoMatch.GUI/Gui/Component/ButtonsWidget.cs
+++ b/LongoMatch.GUI/Gui/Component/ButtonsWidget.cs
@@ -21,12 +21,16 @@
using System;
using System.Collections.Generic;
using Gtk;
-using Gdk;
using LongoMatch.Common;
using LongoMatch.Handlers;
using LongoMatch.Store;
using LongoMatch.Store.Templates;
using LongoMatch.Gui;
+using LongoMatch.Drawing.Widgets;
+using LongoMatch.Drawing.Cairo;
+using Mono.Unix;
+using Image = LongoMatch.Common.Image;
+using LongoMatch.Gui.Helpers;
namespace LongoMatch.Gui.Component
{
@@ -35,91 +39,201 @@ namespace LongoMatch.Gui.Component
public partial class ButtonsWidget : Gtk.Bin
{
public event NewTagHandler NewTagEvent;
- public event NewTagStartHandler NewTagStartEvent;
- public event NewTagStopHandler NewTagStopEvent;
- public event NewTagCancelHandler NewTagCancelEvent;
TagMode tagMode;
- Dictionary<ButtonTagger, Category> buttonsDic;
- const int N_COLUMNS = 5;
+ PlaysTagger tagger;
+ Categories template;
+ TaggerButton selected;
+ bool edited;
public ButtonsWidget()
{
this.Build();
- buttonsDic = new Dictionary<ButtonTagger, Category>();
+ tagger = new PlaysTagger (new WidgetWrapper (drawingarea1));
+ tagger.TaggersSelectedEvent += HandleTaggersSelectedEvent;
+ tagger.ShowMenuEvent += HandleShowMenuEvent;
+ tagger.NewTagEvent += HandleNewTagEvent;
+ tagger.AddNewTagEvent += HandleAddNewTagEvent;
+ drawingarea1.CanFocus = true;
+ drawingarea1.KeyPressEvent += HandleKeyPressEvent;
Mode = TagMode.Predifined;
+ fieldeventbox.ButtonPressEvent += HandleFieldButtonPressEvent;
+ hfieldeventbox.ButtonPressEvent += HandleFieldButtonPressEvent;
+ goaleventbox.ButtonPressEvent += HandleFieldButtonPressEvent;
+ categoryproperties1.EditedEvent += (sender, e) => {drawingarea1.QueueDraw();};
+ addcatbutton.Clicked += HandleAddClicked;
+ addtimerbutton.Clicked += HandleAddClicked;
+ addscorebutton.Clicked += HandleAddClicked;
+ addtagbutton.Clicked += HandleAddClicked;
+ addcardbutton.Clicked += HandleAddClicked;
+ Config.EventsBroker.Tick += HandleTick;
+ Edited = false;
+ }
+
+ public override void Destroy ()
+ {
+ Config.EventsBroker.Tick -= HandleTick;
+ base.Destroy ();
}
- public Project Project {
+ public bool Edited {
+ get {
+ return edited || tagger.Edited || categoryproperties1.Edited;
+ }
+ set {
+ edited = value;
+ }
+ }
+
+ public Categories Template {
set {
- if (value != null)
- UpdateCategories (value.Categories);
+ template = value;
+ tagger.Template = value;
+ fieldimage.Pixbuf = value.FieldBackground.Scale (50, 50).Value;
+ hfieldimage.Pixbuf = value.HalfFieldBackground.Scale (50, 50).Value;
+ goalimage.Pixbuf = value.GoalBackground.Scale (50, 50).Value;
+ Edited = false;
}
}
public TagMode Mode {
set {
tagMode = value;
- foreach (ButtonTagger b in buttonsDic.Keys) {
- b.Mode = tagMode;
- }
+ tagger.TagMode = value;
+ hbuttonbox2.Visible = rightbox.Visible = tagMode == TagMode.Edit;
}
}
- public Time CurrentTime {
- set {
- foreach (ButtonTagger b in buttonsDic.Keys) {
- b.CurrentTime = value;
- }
+ public void Refresh (TaggerButton b = null) {
+ tagger.Refresh (b);
+ }
+
+ void RemoveButton (TaggerButton button) {
+ string msg = Catalog.GetString ("Do you want to delete: ") +
+ button.Name + "?";
+ if (Config.GUIToolkit.QuestionMessage (msg, null, this)) {
+ template.List.Remove (button);
+ Refresh ();
}
}
- public void UpdateCategories (Categories categories) {
- foreach(Widget w in table1.AllChildren) {
- table1.Remove(w);
- w.Destroy();
+ void HandleTaggersSelectedEvent (List<TaggerButton> taggers)
+ {
+ if (taggers.Count == 1) {
+ selected = taggers[0];
+ categoryproperties1.Tagger = taggers[0];
+ propsframe.Sensitive = true;
+ } else {
+ selected = null;
+ propsframe.Sensitive = false;
}
+ }
+
+ void HandleFieldButtonPressEvent (object o, Gtk.ButtonPressEventArgs args)
+ {
+ LongoMatch.Common.Image background;
+ Gdk.Pixbuf pix = Helpers.Misc.OpenImage (this);
- if (categories == null)
+ if (pix == null) {
return;
+ }
+
+ background = new Image (pix);
+ background.ScaleInplace (Constants.MAX_BACKGROUND_WIDTH,
+ Constants.MAX_BACKGROUND_HEIGHT);
+ if (o == fieldeventbox) {
+ template.FieldBackground = background;
+ fieldimage.Pixbuf = background.Scale (50, 50).Value;
+ } else if (o == hfieldeventbox) {
+ template.HalfFieldBackground = background;
+ hfieldimage.Pixbuf = background.Scale (50, 50).Value;
+ } else if (o == goaleventbox) {
+ template.GoalBackground = background;
+ goalimage.Pixbuf = background.Scale (50, 50).Value;
+ }
+ Edited = true;
+ }
- buttonsDic.Clear();
- int sectionsCount = categories.List.Count;
+ void HandleTick (Time currentTime)
+ {
+ tagger.CurrentTime = currentTime;
+ drawingarea1.QueueDraw ();
+ }
+
+ void HandleKeyPressEvent (object o, KeyPressEventArgs args)
+ {
+ if (args.Event.Key == Gdk.Key.Delete && selected != null) {
+ RemoveButton (selected);
+ }
+ }
+
+ void HandleShowMenuEvent (TaggerButton taggerbutton, Tag tag)
+ {
+ Menu menu;
+ MenuItem delbut, deltag;
- table1.NColumns =(uint) N_COLUMNS;
- table1.NRows =(uint)(sectionsCount/N_COLUMNS);
+ menu = new Menu ();
+ delbut = new MenuItem (Catalog.GetString ("Delete"));
+ delbut.Activated += (sender, e) => {RemoveButton (taggerbutton);};
+ menu.Add (delbut);
- for(int i=0; i<sectionsCount; i++) {
- Category cat = categories.List[i];
- ButtonTagger b = new ButtonTagger (cat);
- b.NewTag += (category, p) => {
- if (NewTagEvent != null) {
- NewTagEvent (category, p);
- }
- };
- b.NewTagStart += (category) => {
- if (NewTagStartEvent != null)
- NewTagStartEvent (category);
- };
- b.NewTagStop += (category) => {
- if (NewTagStopEvent != null)
- NewTagStopEvent (category);
- };
- b.NewTagCancel += (category) => {
- if (NewTagCancelEvent != null)
- NewTagCancelEvent (category);
+ if (tag != null) {
+ deltag = new MenuItem (String.Format ("{0} \"{1}\"",
+ Catalog.GetString ("Delete tag:"),
+ tag.Value));
+ deltag.Activated += (sender, e) => {
+ (taggerbutton as Category).Tags.Remove (tag);
+ Edited = true;
+ tagger.Refresh (taggerbutton);
};
- 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();
+ menu.Add (deltag);
+ }
+
+ menu.ShowAll ();
+ menu.Popup ();
+ }
+
+ void HandleAddClicked (object sender, EventArgs e) {
+ TaggerButton tagger = null;
+
+ if (sender == addcardbutton) {
+ tagger = new PenaltyCard ("Red", Color.Red, CardShape.Rectangle);
+ } else if (sender == addscorebutton) {
+ tagger = new Score ("Score", 1);
+ } else if (sender == addtimerbutton) {
+ tagger = new Timer {Name = "Timer"};
+ } else if (sender == addtagbutton) {
+ tagger = new TagButton {Name = "Tag"};
+ } else if (sender == addcatbutton) {
+ tagger = template.AddDefaultItem (template.List.Count);
+ } else {
+ return;
+ }
+
+ if (!(tagger is Category)) {
+ template.List.Add (tagger);
+ }
+ tagger.Position = new Point (template.CanvasWidth, 0);
+ Refresh (tagger);
+ }
+
+ void HandleNewTagEvent (TaggerButton button, List<Player> players,
+ List<Tag> tags, Time start, Time stop)
+ {
+ if (button is TagButton || button is Timer) {
+ return;
+ }
+
+ Config.EventsBroker.EmitNewTag (button, players, tags, start, stop);
+ }
+
+ void HandleAddNewTagEvent (TaggerButton taggerbutton)
+ {
+ string res = MessagesHelpers.QueryMessage (this, Catalog.GetString ("Name"),
+ Catalog.GetString ("New tag"));
+ if (res != null && res != "") {
+ (taggerbutton as Category).Tags.Add (new Tag (res));
+ tagger.Refresh (null);
}
}
}
diff --git a/LongoMatch.GUI/Gui/Component/CategoryProperties.cs
b/LongoMatch.GUI/Gui/Component/CategoryProperties.cs
index 4105601..1302b8f 100644
--- a/LongoMatch.GUI/Gui/Component/CategoryProperties.cs
+++ b/LongoMatch.GUI/Gui/Component/CategoryProperties.cs
@@ -44,36 +44,74 @@ namespace LongoMatch.Gui.Component
{
public event HotKeyChangeHandler HotKeyChanged;
+ public event EventHandler EditedEvent;
+ SizeGroup sizegroup;
+ TaggerButton tagger;
Category cat;
- ListStore model;
- CoordinatesTagger fieldcoordinatestagger;
- CoordinatesTagger halffieldcoordinatestagger;
- CoordinatesTagger goalcoordinatestagger;
+ PenaltyCard card;
+ Score score;
+ Time lastLeadTime;
+ bool edited, ignore;
public CategoryProperties()
{
this.Build();
- leadtimebutton.ValueChanged += OnLeadTimeChanged;;
- lagtimebutton.ValueChanged += OnLagTimeChanged;
- fieldcoordinatestagger = new CoordinatesTagger ();
- halffieldcoordinatestagger = new CoordinatesTagger ();
- goalcoordinatestagger = new CoordinatesTagger ();
- table1.Attach (fieldcoordinatestagger, 0, 1, 0, 1);
- table1.Attach (halffieldcoordinatestagger, 1, 2, 0, 1);
- table1.Attach (goalcoordinatestagger, 2, 3, 0, 1);
+ nameentry.Changed += HandleNameentryChanged;
+ colorbutton1.ColorSet += HandleColorSet;
+ colorbutton2.ColorSet += HandleColorSet;
+ tagmodecombobox.Changed += HandleTagModeChanged;
+ tagscheckbutton.Toggled += HandleTagsToggled;
+ tprbutton.ValueChanged += HandleTagsPerRowValueChanged;
+ leadtimebutton.ValueChanged += HandleLeadTimeChanged;
+ lagtimebutton.ValueChanged += HandleLagTimeChanged;
+ changebuton.Clicked += HandleChangeHotkey;
+ sortmethodcombobox.Changed += HandleSortMethodChanged;
+ fieldcombobox.Changed += HandlePositionChanged;
+ hfieldcombobox.Changed += HandlePositionChanged;
+ goalcombobox.Changed += HandlePositionChanged;
+ shapecombobox.Changed += HandleShapeChanged;
+ pointsbutton.Changed += HandlePointsChanged;
+ sizegroup = new SizeGroup (SizeGroupMode.Horizontal);
+ sizegroup.IgnoreHidden = false;
+ foreach (Widget w in vbox3.Children) {
+ foreach (Widget t in (w as Table).Children) {
+ if (!(t is Label)) {
+ sizegroup.AddWidget (t);
+ }
+ }
+ }
+ CanChangeHotkey = true;
}
-
+
+ public bool Edited {
+ set {
+ edited = value;
+ if (!ignore && EditedEvent != null) {
+ EditedEvent (this, null);
+ }
+ }
+ get {
+ return edited;
+ }
+ }
+
public bool CanChangeHotkey {
set {
if (value == true)
changebuton.Sensitive = true;
}
}
-
- public Category Category {
+
+ public TaggerButton Tagger {
set {
- cat = value;
+ tagger = value;
+ cat = value as Category;
+ card = value as PenaltyCard;
+ score = value as Score;
+ cattable.Visible = cat != null;
+ scoretable.Visible = score != null;
+ cardtable.Visible = card != null;
UpdateGui();
}
get {
@@ -86,75 +124,64 @@ namespace LongoMatch.Gui.Component
get;
}
- public Categories Template {
- set {
- fieldcoordinatestagger.Tagger.Background = value.FieldBackground;
- halffieldcoordinatestagger.Tagger.Background = value.HalfFieldBackground;
- goalcoordinatestagger.Tagger.Background = value.GoalBackground;
+ void SetPositionCombo (ComboBox box, bool tagField, bool asTrayectory) {
+ if (!tagField) {
+ box.Active = 0;
+ } else if (!asTrayectory) {
+ box.Active = 1;
+ } else {
+ box.Active = 2;
}
+ Edited = true;
}
-
- private void UpdateGui() {
- ListStore list;
-
- if(cat == null)
- return;
-
- nameentry.Text = cat.Name;
-
- leadtimebutton.Value = cat.Start.Seconds;
- lagtimebutton.Value = cat.Stop.Seconds;
- colorbutton1.Color = Helpers.Misc.ToGdkColor(cat.Color);
- sortmethodcombobox.Active = (int)cat.SortMethod;
-
- tagfieldcheckbutton.Active = cat.TagFieldPosition;
- fieldcoordinatestagger.Visible = cat.TagFieldPosition;
- UpdatePosition (FieldPositionType.Field);
- trajectorycheckbutton.Active = cat.FieldPositionIsDistance;
-
- taghalffieldcheckbutton.Active = cat.TagHalfFieldPosition;
- halffieldcoordinatestagger.Visible = cat.TagHalfFieldPosition;
- UpdatePosition (FieldPositionType.HalfField);
- trajectoryhalfcheckbutton.Active = cat.HalfFieldPositionIsDistance;
-
- taggoalcheckbutton.Active = cat.TagGoalPosition;
- UpdatePosition (FieldPositionType.Goal);
- goalcoordinatestagger.Visible = cat.TagGoalPosition;
-
- if(cat.HotKey.Defined)
- hotKeyLabel.Text = cat.HotKey.ToString();
- else hotKeyLabel.Text = Catalog.GetString("none");
+
+ void ReadPositionCombo (ComboBox box, out bool tagField, out bool asTrayectory) {
+ if (box.Active == 0) {
+ tagField = true;
+ asTrayectory = false;
+ } else if (box.Active == 1) {
+ tagField = true;
+ asTrayectory = true;
+ } else {
+ tagField = false;
+ asTrayectory = false;
+ }
}
- void UpdatePosition (FieldPositionType position) {
- CoordinatesTagger tagger;
- List<Point> points;
- bool isDistance;
-
- switch (position) {
- case FieldPositionType.Field:
- tagger = fieldcoordinatestagger;
- isDistance = cat.FieldPositionIsDistance;
- break;
- case FieldPositionType.HalfField:
- tagger = halffieldcoordinatestagger;
- isDistance = cat.HalfFieldPositionIsDistance;
- break;
- default:
- case FieldPositionType.Goal:
- tagger = goalcoordinatestagger;
- isDistance = false;
- break;
- }
- points = new List<Point> ();
- points.Add (new Point (0.5, 0.5));
- if (isDistance) {
- points.Add (new Point (0.5, 0.1));
- }
- tagger.Tagger.Points = points;
+ private void UpdateGui() {
+ ignore = true;
+ if (tagger != null) {
+ nameentry.Text = tagger.Name;
+ colorbutton1.Color = Helpers.Misc.ToGdkColor(tagger.Color);
+ colorbutton2.Color = Helpers.Misc.ToGdkColor(tagger.TextColor);
+ lastLeadTime = tagger.Start;
+ tagmodecombobox.Active = (int)tagger.TagMode;
+ leadtimebutton.Value = tagger.Start.Seconds;
+ lagtimebutton.Value = tagger.Stop.Seconds;
+ }
+ if(cat != null) {
+ tagscheckbutton.Active = cat.ShowSubcategories;
+ tprbutton.Value = cat.TagsPerRow;
+ sortmethodcombobox.Active = (int)cat.SortMethod;
+ SetPositionCombo (fieldcombobox, cat.TagFieldPosition,
cat.FieldPositionIsDistance);
+ SetPositionCombo (hfieldcombobox, cat.TagHalfFieldPosition,
cat.HalfFieldPositionIsDistance);
+ SetPositionCombo (goalcombobox, cat.TagGoalPosition, false);
+ if(cat.HotKey.Defined)
+ hotKeyLabel.Text = cat.HotKey.ToString();
+ else
+ hotKeyLabel.Text = Catalog.GetString("none");
+ }
+ if (score != null) {
+ pointsbutton.Value = score.Points;
+ }
+ if (card != null) {
+ shapecombobox.Active = (int) card.Shape;
+ }
+ ignore = false;
+ Edited = false;
}
- protected virtual void OnChangebutonClicked(object sender, System.EventArgs e)
+ void HandleChangeHotkey(object sender, System.EventArgs e)
{
HotKeySelectorDialog dialog = new HotKeySelectorDialog();
dialog.TransientFor=(Gtk.Window)this.Toplevel;
@@ -166,66 +193,98 @@ namespace LongoMatch.Gui.Component
dialog.Destroy();
if(HotKeyChanged != null)
HotKeyChanged(prevHotKey,cat);
+ Edited = true;
}
- protected virtual void OnColorbutton1ColorSet(object sender, System.EventArgs e)
+ void HandlePositionChanged (object sender, EventArgs e)
{
- if(cat != null)
- cat.Color= Helpers.Misc.ToLgmColor(colorbutton1.Color);
+ bool tag = false, trayectory = false;
+
+ ReadPositionCombo (sender as ComboBox, out tag, out trayectory);
+ if (sender == fieldcombobox) {
+ cat.TagFieldPosition = tag;
+ cat.FieldPositionIsDistance = trayectory;
+ } else if (sender == hfieldcombobox) {
+ cat.TagHalfFieldPosition = tag;
+ cat.HalfFieldPositionIsDistance = trayectory;
+ } else {
+ cat.TagGoalPosition = tag;
+ }
+ Edited = true;
}
- protected virtual void OnLeadTimeChanged(object sender, System.EventArgs e)
+ void HandleTagsPerRowValueChanged (object sender, EventArgs e)
{
- cat.Start = new Time{Seconds=(int)leadtimebutton.Value};
+ cat.TagsPerRow = tprbutton.ValueAsInt;
+ Edited = true;
}
-
- protected virtual void OnLagTimeChanged(object sender, System.EventArgs e)
+
+ void HandleTagsToggled (object sender, EventArgs e)
{
- cat.Stop = new Time{Seconds=(int)lagtimebutton.Value};
+ cat.ShowSubcategories = tagscheckbutton.Active;
+ Edited = true;
}
- protected virtual void OnNameentryChanged(object sender, System.EventArgs e)
+ void HandleTagModeChanged (object sender, EventArgs e)
{
- cat.Name = nameentry.Text;
+ tagger.TagMode = (TagMode) tagmodecombobox.Active;
+ if (tagger.TagMode == TagMode.Predifined) {
+ lagtimebutton.Sensitive = true;
+ leadtimebutton.Value = lastLeadTime.Seconds;
+ } else {
+ lagtimebutton.Sensitive = false;
+ lastLeadTime = tagger.Start;
+ leadtimebutton.Value = 0;
+ }
+ Edited = true;
}
-
- protected virtual void OnSortmethodcomboboxChanged(object sender, System.EventArgs e)
+
+ void HandleColorSet (object sender, EventArgs e)
{
- cat.SortMethodString = sortmethodcombobox.ActiveText;
+ LongoMatch.Common.Color c = Helpers.Misc.ToLgmColor((sender as ColorButton).Color);
+ if (sender == colorbutton1) {
+ tagger.Color = c;
+ } else {
+ tagger.TextColor = c;
+ }
+ Edited = true;
}
- protected virtual void OnAddbuttonClicked (object sender, System.EventArgs e)
+ void HandleLeadTimeChanged(object sender, System.EventArgs e)
{
+ tagger.Start = new Time{Seconds=(int)leadtimebutton.Value};
+ Edited = true;
}
-
- protected void OnTaggoalcheckbuttonClicked (object sender, EventArgs e)
+
+ void HandleLagTimeChanged(object sender, System.EventArgs e)
{
- goalcoordinatestagger.Visible = taggoalcheckbutton.Active;
- cat.TagGoalPosition = taggoalcheckbutton.Active;
+ tagger.Stop = new Time{Seconds=(int)lagtimebutton.Value};
+ Edited = true;
}
-
- protected void OnTaghalffieldcheckbuttonClicked (object sender, EventArgs e)
+
+ void HandleNameentryChanged(object sender, System.EventArgs e)
{
- halffieldcoordinatestagger.Visible = taghalffieldcheckbutton.Active;
- cat.TagHalfFieldPosition = taghalffieldcheckbutton.Active;
+ tagger.Name = nameentry.Text;
+ Edited = true;
}
-
- protected void OnTagfieldcheckbuttonClicked (object sender, EventArgs e)
+
+ void HandleSortMethodChanged(object sender, System.EventArgs e)
{
- fieldcoordinatestagger.Visible = tagfieldcheckbutton.Active;
- cat.TagFieldPosition = tagfieldcheckbutton.Active;
+ cat.SortMethodString = sortmethodcombobox.ActiveText;
+ Edited = true;
}
- protected void OnTrajectoryhalffieldcheckbuttonClicked (object sender, EventArgs e)
+ void HandleShapeChanged (object sender, EventArgs e)
{
- cat.HalfFieldPositionIsDistance = trajectoryhalfcheckbutton.Active;
- UpdatePosition (FieldPositionType.HalfField);
+ card.Shape = (CardShape) shapecombobox.Active;
+ Edited = true;
}
- protected void OnTrajectorycheckbuttonClicked (object sender, EventArgs e)
+ void HandlePointsChanged (object sender, EventArgs e)
{
- cat.FieldPositionIsDistance = trajectorycheckbutton.Active;
- UpdatePosition (FieldPositionType.Field);
+ score.Points = pointsbutton.ValueAsInt;
+ Edited = true;
}
+
}
}
diff --git a/LongoMatch.GUI/Gui/Component/CodingWidget.cs b/LongoMatch.GUI/Gui/Component/CodingWidget.cs
index 8214c46..844c4e9 100644
--- a/LongoMatch.GUI/Gui/Component/CodingWidget.cs
+++ b/LongoMatch.GUI/Gui/Component/CodingWidget.cs
@@ -16,10 +16,11 @@
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
//
using System;
+using System.Collections.Generic;
+using Gtk;
using LongoMatch.Handlers;
using LongoMatch.Store;
using LongoMatch.Common;
-using System.Collections.Generic;
using LongoMatch.Drawing.Widgets;
using LongoMatch.Drawing.Cairo;
using LongoMatch.Gui.Helpers;
@@ -29,7 +30,6 @@ namespace LongoMatch.Gui.Component
[System.ComponentModel.ToolboxItem(true)]
public partial class CodingWidget : Gtk.Bin
{
- VideoAnalysisMode analysisMode;
TeamTagger teamtagger;
Project project;
ProjectType projectType;
@@ -39,28 +39,32 @@ namespace LongoMatch.Gui.Component
public CodingWidget ()
{
this.Build ();
+
+ notebook.ShowTabs = false;
+ notebook.ShowBorder = false;
autoTaggingMode.Activated += HandleViewToggled;
timelineMode.Activated += HandleViewToggled;
positionMode.Activated += HandleViewToggled;
autoTaggingMode.Active = true;
- teamtagger = new TeamTagger (new WidgetWrapper (drawingarea1));
+ teamtagger = new TeamTagger (new WidgetWrapper (teamsdrawingarea));
teamtagger.HomeColor = Constants.HOME_COLOR;
teamtagger.AwayColor = Constants.AWAY_COLOR;
teamtagger.SelectionMode = MultiSelectionMode.Multiple;
teamtagger.PlayersSelectionChangedEvent += HandlePlayersSelectionChangedEvent;
- drawingarea1.HeightRequest = 200;
- drawingarea1.WidthRequest = 300;
+ teamsdrawingarea.HeightRequest = 200;
+ teamsdrawingarea.WidthRequest = 300;
timeline.HeightRequest = 200;
playspositionviewer1.HeightRequest = 200;
Config.EventsBroker.Tick += HandleTick;
Config.EventsBroker.PlaySelected += HandlePlaySelected;
- Misc.DisableFocus (vbox2);
+ LongoMatch.Gui.Helpers.Misc.DisableFocus (vbox);
- buttonswidget.NewTagEvent += HandleNewTagEvent;
+ //buttonswidget.NewTagEvent += HandleNewTagEvent;
+ buttonswidget.Mode = TagMode.Free;
}
protected override void OnDestroyed ()
@@ -78,9 +82,9 @@ namespace LongoMatch.Gui.Component
this.projectType = projectType;
autoTaggingMode.Active = true;
buttonswidget.Visible = true;
- timeline.Visible = false;
- playspositionviewer1.Visible = false;
- buttonswidget.Project = project;
+ if (project != null) {
+ buttonswidget.Template = project.Categories;
+ }
teamtagger.LoadTeams (project.LocalTeamTemplate, project.VisitorTeamTemplate,
project.Categories.FieldBackground);
if (projectType != ProjectType.FileProject) {
@@ -107,15 +111,21 @@ namespace LongoMatch.Gui.Component
}
public void UpdateCategories () {
- buttonswidget.Project = project;
+ buttonswidget.Refresh ();
}
void HandleViewToggled (object sender, EventArgs e)
{
- buttonswidget.Visible = autoTaggingMode.Active;
- drawingarea1.Visible = buttonswidget.Visible;
- timeline.Visible = timelineMode.Active;
- playspositionviewer1.Visible = positionMode.Active;
+ if (!(sender as RadioAction).Active) {
+ return;
+ }
+ if (autoTaggingMode.Active) {
+ notebook.Page = 0;
+ } else if (timelineMode.Active) {
+ notebook.Page = 1;
+ } else if (positionMode.Active) {
+ notebook.CurrentPage = 2;
+ }
}
void HandlePlaySelected (Play play)
diff --git a/LongoMatch.GUI/Gui/Component/PeriodsRecoder.cs b/LongoMatch.GUI/Gui/Component/PeriodsRecoder.cs
index 8c3d0f4..4bd3f6c 100644
--- a/LongoMatch.GUI/Gui/Component/PeriodsRecoder.cs
+++ b/LongoMatch.GUI/Gui/Component/PeriodsRecoder.cs
@@ -58,7 +58,7 @@ namespace LongoMatch.Gui.Component
void HandleStopClicked (object sender, EventArgs e)
{
GLib.Source.Remove (timeoutID);
- Period.Stop (CurrentTime);
+ Period.StopTimer (CurrentTime);
startbutton.Visible = false;
stopbutton.Visible = true;
@@ -76,7 +76,7 @@ namespace LongoMatch.Gui.Component
} else {
periodName = (currentPeriod + 1).ToString ();
}
- Period.Start (new Time (0), periodName);
+ Period.StartTimer (new Time (0), periodName);
currentPeriodStart = DateTime.UtcNow;
timeoutID = GLib.Timeout.Add (200, UpdateTime);
}
diff --git a/LongoMatch.GUI/Gui/Component/PlaysListTreeWidget.cs
b/LongoMatch.GUI/Gui/Component/PlaysListTreeWidget.cs
index b77cb4b..eb730f3 100644
--- a/LongoMatch.GUI/Gui/Component/PlaysListTreeWidget.cs
+++ b/LongoMatch.GUI/Gui/Component/PlaysListTreeWidget.cs
@@ -121,7 +121,7 @@ namespace LongoMatch.Gui.Component
Dictionary<Category, TreeIter> itersDic = new Dictionary<Category, TreeIter>();
Gtk.TreeStore dataFileListStore = new Gtk.TreeStore(typeof(Play));
- foreach(Category cat in project.Categories.List) {
+ foreach(Category cat in project.Categories.CategoriesList) {
Gtk.TreeIter iter = dataFileListStore.AppendValues(cat);
itersDic.Add(cat, iter);
}
@@ -139,14 +139,13 @@ namespace LongoMatch.Gui.Component
}
private string CategoryPath(Category cat) {
- return project.Categories.List.IndexOf(cat).ToString();
+ return project.Categories.CategoriesList.IndexOf(cat).ToString();
}
- protected virtual void OnEditProperties(TimeNode tNode, object val) {
- EditCategoryDialog dialog = new EditCategoryDialog(project, tNode as Category);
+ protected virtual void OnEditProperties(Category cat) {
+ EditCategoryDialog dialog = new EditCategoryDialog(project, cat);
dialog.Run();
dialog.Destroy();
- Config.EventsBroker.EmitTimeNodeChanged (tNode, tNode.Name);
}
protected virtual void OnNewRenderingJob (object sender, EventArgs args)
diff --git a/LongoMatch.GUI/Gui/Component/ProjectPeriods.cs b/LongoMatch.GUI/Gui/Component/ProjectPeriods.cs
index 4907878..fea8aae 100644
--- a/LongoMatch.GUI/Gui/Component/ProjectPeriods.cs
+++ b/LongoMatch.GUI/Gui/Component/ProjectPeriods.cs
@@ -76,8 +76,8 @@ namespace LongoMatch.Gui.Component
foreach (string s in gamePeriods) {
Period period = new Period {Name = s};
- period.Start (start);
- period.Stop (start + pDuration);
+ period.StartTimer (start);
+ period.StopTimer (start + pDuration);
periods.Add (period);
start += pDuration;
}
diff --git a/LongoMatch.GUI/Gui/Dialog/EditCategoryDialog.cs b/LongoMatch.GUI/Gui/Dialog/EditCategoryDialog.cs
index 7fb010c..4280e4f 100644
--- a/LongoMatch.GUI/Gui/Dialog/EditCategoryDialog.cs
+++ b/LongoMatch.GUI/Gui/Dialog/EditCategoryDialog.cs
@@ -37,11 +37,10 @@ namespace LongoMatch.Gui.Dialog
{
private List<HotKey> hkList;
- public EditCategoryDialog(Project project, Category cat)
+ public EditCategoryDialog(Project project, TaggerButton tagger)
{
this.Build();
- timenodeproperties2.Template = project.Categories;
- timenodeproperties2.Category = cat;
+ timenodeproperties2.Tagger = tagger;
timenodeproperties2.Project = project;
timenodeproperties2.HotKeyChanged += OnHotKeyChanged;
}
@@ -58,7 +57,7 @@ namespace LongoMatch.Gui.Dialog
MessagesHelpers.WarningMessage(this,
Catalog.GetString("This hotkey is already in
use."));
category.HotKey=prevHotKey;
- timenodeproperties2.Category = category; //Update Gui
+ timenodeproperties2.Tagger = category; //Update Gui
}
else if(category.HotKey.Defined) {
hkList.Remove(prevHotKey);
diff --git a/LongoMatch.GUI/Gui/Menu/PlaysMenu.cs b/LongoMatch.GUI/Gui/Menu/PlaysMenu.cs
index 216d69f..f168554 100644
--- a/LongoMatch.GUI/Gui/Menu/PlaysMenu.cs
+++ b/LongoMatch.GUI/Gui/Menu/PlaysMenu.cs
@@ -184,7 +184,7 @@ namespace LongoMatch.Gui.Menus
void HandleNePlayActivated (object sender, EventArgs e)
{
- Config.EventsBroker.EmitNewTagAtPos (cat, time);
+ Config.EventsBroker.EmitNewTag (cat, null, null, time - cat.Start, time + cat.Stop);
}
void EmitRenderPlaylist (List<Play> plays)
diff --git a/LongoMatch.GUI/Gui/Panel/SportsTemplatesPanel.cs
b/LongoMatch.GUI/Gui/Panel/SportsTemplatesPanel.cs
index 1836181..1384334 100644
--- a/LongoMatch.GUI/Gui/Panel/SportsTemplatesPanel.cs
+++ b/LongoMatch.GUI/Gui/Panel/SportsTemplatesPanel.cs
@@ -26,6 +26,7 @@ using Gdk;
using Mono.Unix;
using LongoMatch.Gui.Helpers;
using LongoMatch.Gui.Dialog;
+using LongoMatch.Common;
namespace LongoMatch.Gui.Panel
{
@@ -58,20 +59,21 @@ namespace LongoMatch.Gui.Panel
teamsvbox.WidthRequest = 280;
- //teamtemplateeditor1.Visible = false;
+ buttonswidget.Sensitive = false;
+ buttonswidget.Mode = TagMode.Edit;
newteam.Visible = true;
deleteteambutton.Visible = false;
selectedTemplate = new List<string>();
newteam.Clicked += HandleNewTeamClicked;
deleteteambutton.Clicked += HandleDeleteTeamClicked;
+ savebutton.Clicked += (sender, e) => Save ();
backbutton.Clicked += (sender, o) => {
if (BackEvent != null)
BackEvent();
};
Load (null);
-
}
void Load (string templateName) {
@@ -100,19 +102,21 @@ namespace LongoMatch.Gui.Panel
}
}
- void LoadTemplate (string templateName) {
- if (loadedTemplate != null && analysistemplateeditor.Edited) {
+ void Save () {
+ if (loadedTemplate != null && buttonswidget.Edited) {
string msg = Catalog.GetString ("Do you want to save the current template");
if (Config.GUIToolkit.QuestionMessage (msg, null, this)) {
provider.Update (loadedTemplate);
- } else {
- return;
}
}
+ }
+
+ void LoadTemplate (string templateName) {
+ Save ();
- try {
+ try {
loadedTemplate = provider.Load (templateName);
- analysistemplateeditor.Template = loadedTemplate;
+ buttonswidget.Template = loadedTemplate;
} catch (Exception ex) {
Log.Exception (ex);
GUIToolkit.Instance.ErrorMessage (Catalog.GetString ("Could not load
template"));
@@ -134,7 +138,7 @@ namespace LongoMatch.Gui.Panel
}
deleteteambutton.Visible = selectedTemplate.Count >= 1;
- analysistemplateeditor.Visible = true;
+ buttonswidget.Sensitive = true;
if (selectedTemplate.Count == 1) {
LoadTemplate (selectedTemplate[0]);
diff --git a/LongoMatch.GUI/Gui/TreeView/CategoriesFilterTreeView.cs
b/LongoMatch.GUI/Gui/TreeView/CategoriesFilterTreeView.cs
index 49a64a7..2ee1df9 100644
--- a/LongoMatch.GUI/Gui/TreeView/CategoriesFilterTreeView.cs
+++ b/LongoMatch.GUI/Gui/TreeView/CategoriesFilterTreeView.cs
@@ -47,7 +47,7 @@ namespace LongoMatch.Gui.Component
protected override void FillTree () {
store = new TreeStore (typeof (object), typeof (bool));
- foreach (Category cat in categories.List) {
+ foreach (Category cat in categories.CategoriesList) {
TreeIter catIter;
catIter = store.AppendValues(cat, filter.VisibleCategories.Contains(cat));
diff --git a/LongoMatch.GUI/Gui/TreeView/ListTreeViewBase.cs b/LongoMatch.GUI/Gui/TreeView/ListTreeViewBase.cs
index 5ded8d9..dc4965f 100644
--- a/LongoMatch.GUI/Gui/TreeView/ListTreeViewBase.cs
+++ b/LongoMatch.GUI/Gui/TreeView/ListTreeViewBase.cs
@@ -132,7 +132,7 @@ namespace LongoMatch.Gui.Component
protected void ShowMenu () {
playsMenu.ShowListMenu (SelectedPlays, Project.Description.File,
- Project.Categories.List);
+ Project.Categories.CategoriesList);
}
protected object GetValueFromPath(TreePath path) {
@@ -200,7 +200,7 @@ namespace LongoMatch.Gui.Component
} else if(o is Category) {
c.Background = "white";
c.CellBackground = "white";
- c.Markup = String.Format("{0} ({1})", GLib.Markup.EscapeText ((o as
TimeNode).Name),
+ c.Markup = String.Format("{0} ({1})", GLib.Markup.EscapeText ((o as
Category).Name),
modelFilter.IterNChildren(iter));
}
}
diff --git a/LongoMatch.GUI/Gui/TreeView/PlayListTreeView.cs b/LongoMatch.GUI/Gui/TreeView/PlayListTreeView.cs
index 13fc975..c6a21a5 100644
--- a/LongoMatch.GUI/Gui/TreeView/PlayListTreeView.cs
+++ b/LongoMatch.GUI/Gui/TreeView/PlayListTreeView.cs
@@ -87,7 +87,7 @@ namespace LongoMatch.Gui.Component
{
}
- protected override bool OnButtonPressEvent(EventButton evnt)
+ protected override bool OnButtonPressEvent(Gdk.EventButton evnt)
{
if((evnt.Type == EventType.ButtonPress) && (evnt.Button == 3))
{
@@ -148,7 +148,6 @@ namespace LongoMatch.Gui.Component
Model.GetIter(out selectedIter, Selection.GetSelectedRows()[0]);
selectedPlay = (PlayListPlay) Model.GetValue(selectedIter, 0);
preDragPos = Model.GetPath(selectedIter).Indices[0];
- Console.WriteLine (Model.GetPath(selectedIter));
base.OnDragBegin (context);
}
diff --git a/LongoMatch.GUI/Gui/TreeView/PlayersTreeView.cs b/LongoMatch.GUI/Gui/TreeView/PlayersTreeView.cs
index e7b9842..141c168 100644
--- a/LongoMatch.GUI/Gui/TreeView/PlayersTreeView.cs
+++ b/LongoMatch.GUI/Gui/TreeView/PlayersTreeView.cs
@@ -95,7 +95,7 @@ namespace LongoMatch.Gui.Component
Model.SetSortFunc(0, SortFunction);
}
- override protected bool OnButtonPressEvent(EventButton evnt)
+ override protected bool OnButtonPressEvent(Gdk.EventButton evnt)
{
TreePath[] paths = Selection.GetSelectedRows();
diff --git a/LongoMatch.GUI/Gui/TreeView/PlaysTreeView.cs b/LongoMatch.GUI/Gui/TreeView/PlaysTreeView.cs
index e5570c2..715ed4c 100644
--- a/LongoMatch.GUI/Gui/TreeView/PlaysTreeView.cs
+++ b/LongoMatch.GUI/Gui/TreeView/PlaysTreeView.cs
@@ -35,7 +35,7 @@ namespace LongoMatch.Gui.Component
public class PlaysTreeView : ListTreeViewBase
{
- public event TimeNodeChangedHandler EditProperties;
+ public event CategoryChangedHandler EditProperties;
//Categories menu
Menu categoriesMenu;
@@ -112,7 +112,7 @@ namespace LongoMatch.Gui.Component
sortByStop.Activated += OnSortActivated;
sortByDuration.Activated += OnSortActivated;
editProp.Activated += delegate(object sender, EventArgs e) {
- EditProperties(GetValueFromPath(Selection.GetSelectedRows()[0]) as Category,
null);
+ EditProperties(GetValueFromPath(Selection.GetSelectedRows()[0]) as Category);
};
}
@@ -218,7 +218,7 @@ namespace LongoMatch.Gui.Component
Model.SetSortFunc(0, SortFunction);
}
- override protected bool OnButtonPressEvent(EventButton evnt)
+ override protected bool OnButtonPressEvent(Gdk.EventButton evnt)
{
TreePath[] paths = Selection.GetSelectedRows();
@@ -234,11 +234,10 @@ namespace LongoMatch.Gui.Component
if(paths.Length == 1) {
TimeNode selectedTimeNode = GetValueFromPath(paths[0]) as TimeNode;
- if(selectedTimeNode is Play) {
+ if (selectedTimeNode != null) {
ShowMenu ();
- }
- else {
- SetupSortMenu((selectedTimeNode as Category).SortMethod);
+ } else {
+ SetupSortMenu((GetValueFromPath(paths[0]) as
Category).SortMethod);
categoriesMenu.Popup();
}
}
diff --git a/LongoMatch.GUI/LongoMatch.GUI.mdp b/LongoMatch.GUI/LongoMatch.GUI.mdp
index 2aaf88b..60ace37 100644
--- a/LongoMatch.GUI/LongoMatch.GUI.mdp
+++ b/LongoMatch.GUI/LongoMatch.GUI.mdp
@@ -126,8 +126,6 @@
<File subtype="Code" buildaction="Compile"
name="gtk-gui/LongoMatch.Gui.Component.Stats.PlayerCategoryViewer.cs" />
<File subtype="Code" buildaction="Compile" name="Gui/Component/Stats/PlayerSubcategoryViewer.cs" />
<File subtype="Code" buildaction="Compile"
name="gtk-gui/LongoMatch.Gui.Component.Stats.PlayerSubcategoryViewer.cs" />
- <File subtype="Code" buildaction="Compile" name="Gui/Component/ButtonTagger.cs" />
- <File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.ButtonTagger.cs" />
<File subtype="Code" buildaction="Compile" name="Gui/Component/AnalysisComponent.cs" />
<File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Component.AnalysisComponent.cs"
/>
<File subtype="Code" buildaction="EmbedAsResource" name="../images/background.svg" />
@@ -149,8 +147,6 @@
<File subtype="Code" buildaction="Compile" name="Gui/Panel/SportsTemplatesPanel.cs" />
<File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Panel.SportsTemplatesPanel.cs" />
<File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Dialog.CalendarDialog.cs" />
- <File subtype="Code" buildaction="Compile" name="Gui/Component/AnalysisTemplateEditor.cs" />
- <File subtype="Code" buildaction="Compile"
name="gtk-gui/LongoMatch.Gui.Component.AnalysisTemplateEditor.cs" />
<File subtype="Code" buildaction="Compile" name="Gui/Component/BackgroundWidget.cs" />
<File subtype="Code" buildaction="Compile" name="Gui/Panel/PreferencesPanel.cs" />
<File subtype="Code" buildaction="Compile" name="gtk-gui/LongoMatch.Gui.Panel.PreferencesPanel.cs" />
diff --git a/LongoMatch.GUI/Makefile.am b/LongoMatch.GUI/Makefile.am
index 56c1d4d..3d42753 100644
--- a/LongoMatch.GUI/Makefile.am
+++ b/LongoMatch.GUI/Makefile.am
@@ -5,9 +5,7 @@ LINK = $(REF_DEP_LONGOMATCH_GUI)
SOURCES = Gui/Cairo.cs \
Gui/Component/AnalysisComponent.cs \
- Gui/Component/AnalysisTemplateEditor.cs \
Gui/Component/BackgroundWidget.cs \
- Gui/Component/ButtonTagger.cs \
Gui/Component/ButtonsWidget.cs \
Gui/Component/CategoryProperties.cs \
Gui/Component/CodingWidget.cs \
@@ -78,9 +76,7 @@ SOURCES = Gui/Cairo.cs \
Gui/TreeView/PlaysTreeView.cs \
Gui/TreeView/RenderingJobsTreeView.cs \
gtk-gui/LongoMatch.Gui.Component.AnalysisComponent.cs \
- gtk-gui/LongoMatch.Gui.Component.AnalysisTemplateEditor.cs \
gtk-gui/LongoMatch.Gui.Component.BackgroundWidget.cs \
- gtk-gui/LongoMatch.Gui.Component.ButtonTagger.cs \
gtk-gui/LongoMatch.Gui.Component.ButtonsWidget.cs \
gtk-gui/LongoMatch.Gui.Component.CategoryProperties.cs \
gtk-gui/LongoMatch.Gui.Component.CodingWidget.cs \
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.AnalysisComponent.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.AnalysisComponent.cs
index c286d1d..e0c7e2d 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.AnalysisComponent.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.AnalysisComponent.cs
@@ -5,12 +5,7 @@ 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::LongoMatch.Gui.Component.PlaysSelectionWidget playsSelection;
- private global::Gtk.HBox videowidgetsbox;
- private global::LongoMatch.Gui.PlayerCapturerBin playercapturer;
- private global::LongoMatch.Gui.Component.CodingWidget codingwidget;
+ private global::Gtk.HBox hbox1;
protected virtual void Build ()
{
@@ -22,43 +17,10 @@ namespace LongoMatch.Gui.Component
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 ();
- this.vpaned1.CanFocus = true;
- this.vpaned1.Name = "vpaned1";
- this.vpaned1.Position = 438;
- // Container child vpaned1.Gtk.Paned+PanedChild
- this.hpaned = new global::Gtk.HPaned ();
- this.hpaned.CanFocus = true;
- this.hpaned.Name = "hpaned";
- this.hpaned.Position = 261;
- // Container child hpaned.Gtk.Paned+PanedChild
- this.playsSelection = new global::LongoMatch.Gui.Component.PlaysSelectionWidget ();
- this.playsSelection.Events = ((global::Gdk.EventMask)(256));
- this.playsSelection.Name = "playsSelection";
- 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.videowidgetsbox = new global::Gtk.HBox ();
- this.videowidgetsbox.Name = "videowidgetsbox";
- this.videowidgetsbox.Spacing = 6;
- // Container child videowidgetsbox.Gtk.Box+BoxChild
- this.playercapturer = new global::LongoMatch.Gui.PlayerCapturerBin ();
- this.playercapturer.Events = ((global::Gdk.EventMask)(256));
- this.playercapturer.Name = "playercapturer";
- this.videowidgetsbox.Add (this.playercapturer);
- global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.videowidgetsbox
[this.playercapturer]));
- w4.Position = 0;
- this.hpaned.Add (this.videowidgetsbox);
- this.vpaned1.Add (this.hpaned);
- global::Gtk.Paned.PanedChild w6 = ((global::Gtk.Paned.PanedChild)(this.vpaned1
[this.hpaned]));
- w6.Resize = false;
- // Container child vpaned1.Gtk.Paned+PanedChild
- 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);
+ this.hbox1 = new global::Gtk.HBox ();
+ this.hbox1.Name = "hbox1";
+ this.hbox1.Spacing = 6;
+ this.Add (this.hbox1);
if ((this.Child != null)) {
this.Child.ShowAll ();
}
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ButtonsWidget.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ButtonsWidget.cs
index 172ec69..01c5ae4 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ButtonsWidget.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.ButtonsWidget.cs
@@ -4,8 +4,44 @@ namespace LongoMatch.Gui.Component
{
public partial class ButtonsWidget
{
- private global::Gtk.VBox vbox1;
- private global::Gtk.Table table1;
+ private global::Gtk.HBox hbox2;
+ private global::Gtk.VBox vbox2;
+ private global::Gtk.HButtonBox hbuttonbox2;
+ private global::Gtk.Button addcatbutton;
+ private global::Gtk.Button addtimerbutton;
+ private global::Gtk.Button addscorebutton;
+ private global::Gtk.Button addcardbutton;
+ private global::Gtk.Button addtagbutton;
+ private global::Gtk.ScrolledWindow scrolledwindow4;
+ private global::Gtk.DrawingArea drawingarea1;
+ private global::Gtk.VBox rightbox;
+ private global::Gtk.HBox positionsbox;
+ private global::Gtk.Frame frame8;
+ private global::Gtk.Alignment GtkAlignment13;
+ private global::Gtk.HBox hbox6;
+ private global::Gtk.EventBox fieldeventbox;
+ private global::Gtk.Image fieldimage;
+ private global::Gtk.Button resetfieldbutton;
+ private global::Gtk.Label GtkLabel17;
+ private global::Gtk.Frame frame9;
+ private global::Gtk.Alignment GtkAlignment15;
+ private global::Gtk.HBox hbox7;
+ private global::Gtk.EventBox hfieldeventbox;
+ private global::Gtk.Image hfieldimage;
+ private global::Gtk.Button resethfieldbutton;
+ private global::Gtk.Label GtkLabel20;
+ private global::Gtk.Frame frame10;
+ private global::Gtk.Alignment GtkAlignment17;
+ private global::Gtk.HBox hbox8;
+ private global::Gtk.EventBox goaleventbox;
+ private global::Gtk.Image goalimage;
+ private global::Gtk.Button resetfgoalbutton;
+ private global::Gtk.Label GtkLabel22;
+ private global::Gtk.Frame propsframe;
+ private global::Gtk.Alignment GtkAlignment7;
+ private global::Gtk.ScrolledWindow scrolledwindow5;
+ private global::LongoMatch.Gui.Component.CategoryProperties categoryproperties1;
+ private global::Gtk.Label GtkLabel10;
protected virtual void Build ()
{
@@ -14,21 +50,395 @@ namespace LongoMatch.Gui.Component
global::Stetic.BinContainer.Attach (this);
this.Name = "LongoMatch.Gui.Component.ButtonsWidget";
// Container child LongoMatch.Gui.Component.ButtonsWidget.Gtk.Container+ContainerChild
- this.vbox1 = new global::Gtk.VBox ();
- this.vbox1.Name = "vbox1";
- this.vbox1.Spacing = 6;
- // Container child vbox1.Gtk.Box+BoxChild
- this.table1 = new global::Gtk.Table (((uint)(5)), ((uint)(4)), false);
- this.table1.Name = "table1";
- this.table1.RowSpacing = ((uint)(1));
- this.table1.ColumnSpacing = ((uint)(1));
- this.vbox1.Add (this.table1);
- global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.table1]));
- w1.Position = 0;
- this.Add (this.vbox1);
+ this.hbox2 = new global::Gtk.HBox ();
+ this.hbox2.Name = "hbox2";
+ this.hbox2.Spacing = 6;
+ // Container child hbox2.Gtk.Box+BoxChild
+ this.vbox2 = new global::Gtk.VBox ();
+ this.vbox2.CanFocus = true;
+ this.vbox2.Name = "vbox2";
+ this.vbox2.Spacing = 6;
+ // Container child vbox2.Gtk.Box+BoxChild
+ this.hbuttonbox2 = new global::Gtk.HButtonBox ();
+ this.hbuttonbox2.Name = "hbuttonbox2";
+ this.hbuttonbox2.LayoutStyle = ((global::Gtk.ButtonBoxStyle)(1));
+ // Container child hbuttonbox2.Gtk.ButtonBox+ButtonBoxChild
+ this.addcatbutton = new global::Gtk.Button ();
+ this.addcatbutton.CanFocus = true;
+ this.addcatbutton.Name = "addcatbutton";
+ this.addcatbutton.UseUnderline = true;
+ // Container child addcatbutton.Gtk.Container+ContainerChild
+ global::Gtk.Alignment w1 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+ // Container child GtkAlignment.Gtk.Container+ContainerChild
+ global::Gtk.HBox w2 = new global::Gtk.HBox ();
+ w2.Spacing = 2;
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Image w3 = new global::Gtk.Image ();
+ w3.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-add",
global::Gtk.IconSize.Menu);
+ w2.Add (w3);
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Label w5 = new global::Gtk.Label ();
+ w5.LabelProp = global::Mono.Unix.Catalog.GetString ("Add category");
+ w5.UseUnderline = true;
+ w2.Add (w5);
+ w1.Add (w2);
+ this.addcatbutton.Add (w1);
+ this.hbuttonbox2.Add (this.addcatbutton);
+ global::Gtk.ButtonBox.ButtonBoxChild w9 =
((global::Gtk.ButtonBox.ButtonBoxChild)(this.hbuttonbox2 [this.addcatbutton]));
+ w9.Expand = false;
+ w9.Fill = false;
+ // Container child hbuttonbox2.Gtk.ButtonBox+ButtonBoxChild
+ this.addtimerbutton = new global::Gtk.Button ();
+ this.addtimerbutton.CanFocus = true;
+ this.addtimerbutton.Name = "addtimerbutton";
+ this.addtimerbutton.UseUnderline = true;
+ // Container child addtimerbutton.Gtk.Container+ContainerChild
+ global::Gtk.Alignment w10 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+ // Container child GtkAlignment.Gtk.Container+ContainerChild
+ global::Gtk.HBox w11 = new global::Gtk.HBox ();
+ w11.Spacing = 2;
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Image w12 = new global::Gtk.Image ();
+ w12.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "stock_alarm",
global::Gtk.IconSize.Menu);
+ w11.Add (w12);
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Label w14 = new global::Gtk.Label ();
+ w14.LabelProp = global::Mono.Unix.Catalog.GetString ("Add timer");
+ w14.UseUnderline = true;
+ w11.Add (w14);
+ w10.Add (w11);
+ this.addtimerbutton.Add (w10);
+ this.hbuttonbox2.Add (this.addtimerbutton);
+ global::Gtk.ButtonBox.ButtonBoxChild w18 =
((global::Gtk.ButtonBox.ButtonBoxChild)(this.hbuttonbox2 [this.addtimerbutton]));
+ w18.Position = 1;
+ w18.Expand = false;
+ w18.Fill = false;
+ // Container child hbuttonbox2.Gtk.ButtonBox+ButtonBoxChild
+ this.addscorebutton = new global::Gtk.Button ();
+ this.addscorebutton.CanFocus = true;
+ this.addscorebutton.Name = "addscorebutton";
+ this.addscorebutton.UseUnderline = true;
+ // Container child addscorebutton.Gtk.Container+ContainerChild
+ global::Gtk.Alignment w19 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+ // Container child GtkAlignment.Gtk.Container+ContainerChild
+ global::Gtk.HBox w20 = new global::Gtk.HBox ();
+ w20.Spacing = 2;
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Image w21 = new global::Gtk.Image ();
+ w21.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-zoom-100",
global::Gtk.IconSize.Menu);
+ w20.Add (w21);
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Label w23 = new global::Gtk.Label ();
+ w23.LabelProp = global::Mono.Unix.Catalog.GetString ("Add score");
+ w23.UseUnderline = true;
+ w20.Add (w23);
+ w19.Add (w20);
+ this.addscorebutton.Add (w19);
+ this.hbuttonbox2.Add (this.addscorebutton);
+ global::Gtk.ButtonBox.ButtonBoxChild w27 =
((global::Gtk.ButtonBox.ButtonBoxChild)(this.hbuttonbox2 [this.addscorebutton]));
+ w27.Position = 2;
+ w27.Expand = false;
+ w27.Fill = false;
+ // Container child hbuttonbox2.Gtk.ButtonBox+ButtonBoxChild
+ this.addcardbutton = new global::Gtk.Button ();
+ this.addcardbutton.CanFocus = true;
+ this.addcardbutton.Name = "addcardbutton";
+ this.addcardbutton.UseUnderline = true;
+ // Container child addcardbutton.Gtk.Container+ContainerChild
+ global::Gtk.Alignment w28 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+ // Container child GtkAlignment.Gtk.Container+ContainerChild
+ global::Gtk.HBox w29 = new global::Gtk.HBox ();
+ w29.Spacing = 2;
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Image w30 = new global::Gtk.Image ();
+ w30.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "stock_media-stop",
global::Gtk.IconSize.Menu);
+ w29.Add (w30);
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Label w32 = new global::Gtk.Label ();
+ w32.LabelProp = global::Mono.Unix.Catalog.GetString ("Add penalty card");
+ w32.UseUnderline = true;
+ w29.Add (w32);
+ w28.Add (w29);
+ this.addcardbutton.Add (w28);
+ this.hbuttonbox2.Add (this.addcardbutton);
+ global::Gtk.ButtonBox.ButtonBoxChild w36 =
((global::Gtk.ButtonBox.ButtonBoxChild)(this.hbuttonbox2 [this.addcardbutton]));
+ w36.Position = 3;
+ w36.Expand = false;
+ w36.Fill = false;
+ // Container child hbuttonbox2.Gtk.ButtonBox+ButtonBoxChild
+ this.addtagbutton = new global::Gtk.Button ();
+ this.addtagbutton.CanFocus = true;
+ this.addtagbutton.Name = "addtagbutton";
+ this.addtagbutton.UseUnderline = true;
+ // Container child addtagbutton.Gtk.Container+ContainerChild
+ global::Gtk.Alignment w37 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+ // Container child GtkAlignment.Gtk.Container+ContainerChild
+ global::Gtk.HBox w38 = new global::Gtk.HBox ();
+ w38.Spacing = 2;
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Image w39 = new global::Gtk.Image ();
+ w39.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "stock_zoom-in",
global::Gtk.IconSize.Menu);
+ w38.Add (w39);
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Label w41 = new global::Gtk.Label ();
+ w41.LabelProp = global::Mono.Unix.Catalog.GetString ("Add tag");
+ w41.UseUnderline = true;
+ w38.Add (w41);
+ w37.Add (w38);
+ this.addtagbutton.Add (w37);
+ this.hbuttonbox2.Add (this.addtagbutton);
+ global::Gtk.ButtonBox.ButtonBoxChild w45 =
((global::Gtk.ButtonBox.ButtonBoxChild)(this.hbuttonbox2 [this.addtagbutton]));
+ w45.Position = 4;
+ w45.Expand = false;
+ w45.Fill = false;
+ this.vbox2.Add (this.hbuttonbox2);
+ global::Gtk.Box.BoxChild w46 = ((global::Gtk.Box.BoxChild)(this.vbox2
[this.hbuttonbox2]));
+ w46.Position = 0;
+ w46.Expand = false;
+ w46.Fill = false;
+ // Container child vbox2.Gtk.Box+BoxChild
+ this.scrolledwindow4 = new global::Gtk.ScrolledWindow ();
+ this.scrolledwindow4.CanFocus = true;
+ this.scrolledwindow4.Name = "scrolledwindow4";
+ // Container child scrolledwindow4.Gtk.Container+ContainerChild
+ global::Gtk.Viewport w47 = new global::Gtk.Viewport ();
+ w47.ShadowType = ((global::Gtk.ShadowType)(0));
+ // Container child GtkViewport.Gtk.Container+ContainerChild
+ this.drawingarea1 = new global::Gtk.DrawingArea ();
+ this.drawingarea1.CanFocus = true;
+ this.drawingarea1.Name = "drawingarea1";
+ w47.Add (this.drawingarea1);
+ this.scrolledwindow4.Add (w47);
+ this.vbox2.Add (this.scrolledwindow4);
+ global::Gtk.Box.BoxChild w50 = ((global::Gtk.Box.BoxChild)(this.vbox2
[this.scrolledwindow4]));
+ w50.Position = 1;
+ this.hbox2.Add (this.vbox2);
+ global::Gtk.Box.BoxChild w51 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.vbox2]));
+ w51.Position = 0;
+ // Container child hbox2.Gtk.Box+BoxChild
+ this.rightbox = new global::Gtk.VBox ();
+ this.rightbox.Name = "rightbox";
+ this.rightbox.Spacing = 6;
+ // Container child rightbox.Gtk.Box+BoxChild
+ this.positionsbox = new global::Gtk.HBox ();
+ this.positionsbox.Name = "positionsbox";
+ this.positionsbox.Spacing = 6;
+ // Container child positionsbox.Gtk.Box+BoxChild
+ this.frame8 = new global::Gtk.Frame ();
+ this.frame8.Name = "frame8";
+ this.frame8.ShadowType = ((global::Gtk.ShadowType)(0));
+ // Container child frame8.Gtk.Container+ContainerChild
+ this.GtkAlignment13 = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
+ this.GtkAlignment13.Name = "GtkAlignment13";
+ this.GtkAlignment13.LeftPadding = ((uint)(12));
+ // Container child GtkAlignment13.Gtk.Container+ContainerChild
+ this.hbox6 = new global::Gtk.HBox ();
+ this.hbox6.Name = "hbox6";
+ this.hbox6.Spacing = 6;
+ // Container child hbox6.Gtk.Box+BoxChild
+ this.fieldeventbox = new global::Gtk.EventBox ();
+ this.fieldeventbox.Name = "fieldeventbox";
+ // Container child fieldeventbox.Gtk.Container+ContainerChild
+ this.fieldimage = new global::Gtk.Image ();
+ this.fieldimage.Name = "fieldimage";
+ this.fieldeventbox.Add (this.fieldimage);
+ this.hbox6.Add (this.fieldeventbox);
+ global::Gtk.Box.BoxChild w53 = ((global::Gtk.Box.BoxChild)(this.hbox6
[this.fieldeventbox]));
+ w53.Position = 0;
+ // Container child hbox6.Gtk.Box+BoxChild
+ this.resetfieldbutton = new global::Gtk.Button ();
+ this.resetfieldbutton.CanFocus = true;
+ this.resetfieldbutton.Name = "resetfieldbutton";
+ this.resetfieldbutton.UseUnderline = true;
+ // Container child resetfieldbutton.Gtk.Container+ContainerChild
+ global::Gtk.Alignment w54 = 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;
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Image w56 = new global::Gtk.Image ();
+ w56.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-refresh",
global::Gtk.IconSize.Menu);
+ w55.Add (w56);
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Label w58 = new global::Gtk.Label ();
+ w55.Add (w58);
+ w54.Add (w55);
+ this.resetfieldbutton.Add (w54);
+ this.hbox6.Add (this.resetfieldbutton);
+ global::Gtk.Box.BoxChild w62 = ((global::Gtk.Box.BoxChild)(this.hbox6
[this.resetfieldbutton]));
+ w62.Position = 1;
+ w62.Expand = false;
+ w62.Fill = false;
+ this.GtkAlignment13.Add (this.hbox6);
+ this.frame8.Add (this.GtkAlignment13);
+ this.GtkLabel17 = new global::Gtk.Label ();
+ this.GtkLabel17.Name = "GtkLabel17";
+ this.GtkLabel17.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Field</b>");
+ this.GtkLabel17.UseMarkup = true;
+ this.frame8.LabelWidget = this.GtkLabel17;
+ this.positionsbox.Add (this.frame8);
+ global::Gtk.Box.BoxChild w65 = ((global::Gtk.Box.BoxChild)(this.positionsbox
[this.frame8]));
+ w65.Position = 0;
+ // Container child positionsbox.Gtk.Box+BoxChild
+ this.frame9 = new global::Gtk.Frame ();
+ this.frame9.Name = "frame9";
+ this.frame9.ShadowType = ((global::Gtk.ShadowType)(0));
+ // Container child frame9.Gtk.Container+ContainerChild
+ this.GtkAlignment15 = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
+ this.GtkAlignment15.Name = "GtkAlignment15";
+ this.GtkAlignment15.LeftPadding = ((uint)(12));
+ // Container child GtkAlignment15.Gtk.Container+ContainerChild
+ this.hbox7 = new global::Gtk.HBox ();
+ this.hbox7.Name = "hbox7";
+ this.hbox7.Spacing = 6;
+ // Container child hbox7.Gtk.Box+BoxChild
+ this.hfieldeventbox = new global::Gtk.EventBox ();
+ this.hfieldeventbox.Name = "hfieldeventbox";
+ // Container child hfieldeventbox.Gtk.Container+ContainerChild
+ this.hfieldimage = new global::Gtk.Image ();
+ this.hfieldimage.Name = "hfieldimage";
+ this.hfieldeventbox.Add (this.hfieldimage);
+ this.hbox7.Add (this.hfieldeventbox);
+ global::Gtk.Box.BoxChild w67 = ((global::Gtk.Box.BoxChild)(this.hbox7
[this.hfieldeventbox]));
+ w67.Position = 0;
+ // Container child hbox7.Gtk.Box+BoxChild
+ this.resethfieldbutton = new global::Gtk.Button ();
+ this.resethfieldbutton.CanFocus = true;
+ this.resethfieldbutton.Name = "resethfieldbutton";
+ this.resethfieldbutton.UseUnderline = true;
+ // Container child resethfieldbutton.Gtk.Container+ContainerChild
+ global::Gtk.Alignment w68 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+ // Container child GtkAlignment.Gtk.Container+ContainerChild
+ global::Gtk.HBox w69 = new global::Gtk.HBox ();
+ w69.Spacing = 2;
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Image w70 = new global::Gtk.Image ();
+ w70.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-refresh",
global::Gtk.IconSize.Menu);
+ w69.Add (w70);
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Label w72 = new global::Gtk.Label ();
+ w69.Add (w72);
+ w68.Add (w69);
+ this.resethfieldbutton.Add (w68);
+ this.hbox7.Add (this.resethfieldbutton);
+ global::Gtk.Box.BoxChild w76 = ((global::Gtk.Box.BoxChild)(this.hbox7
[this.resethfieldbutton]));
+ w76.Position = 1;
+ w76.Expand = false;
+ w76.Fill = false;
+ this.GtkAlignment15.Add (this.hbox7);
+ this.frame9.Add (this.GtkAlignment15);
+ this.GtkLabel20 = new global::Gtk.Label ();
+ this.GtkLabel20.Name = "GtkLabel20";
+ this.GtkLabel20.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Half field</b>");
+ this.GtkLabel20.UseMarkup = true;
+ this.frame9.LabelWidget = this.GtkLabel20;
+ this.positionsbox.Add (this.frame9);
+ global::Gtk.Box.BoxChild w79 = ((global::Gtk.Box.BoxChild)(this.positionsbox
[this.frame9]));
+ w79.Position = 1;
+ // Container child positionsbox.Gtk.Box+BoxChild
+ this.frame10 = new global::Gtk.Frame ();
+ this.frame10.Name = "frame10";
+ this.frame10.ShadowType = ((global::Gtk.ShadowType)(0));
+ // Container child frame10.Gtk.Container+ContainerChild
+ this.GtkAlignment17 = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
+ this.GtkAlignment17.Name = "GtkAlignment17";
+ this.GtkAlignment17.LeftPadding = ((uint)(12));
+ // Container child GtkAlignment17.Gtk.Container+ContainerChild
+ this.hbox8 = new global::Gtk.HBox ();
+ this.hbox8.Name = "hbox8";
+ this.hbox8.Spacing = 6;
+ // Container child hbox8.Gtk.Box+BoxChild
+ this.goaleventbox = new global::Gtk.EventBox ();
+ this.goaleventbox.Name = "goaleventbox";
+ // Container child goaleventbox.Gtk.Container+ContainerChild
+ this.goalimage = new global::Gtk.Image ();
+ this.goalimage.Name = "goalimage";
+ this.goaleventbox.Add (this.goalimage);
+ this.hbox8.Add (this.goaleventbox);
+ global::Gtk.Box.BoxChild w81 = ((global::Gtk.Box.BoxChild)(this.hbox8
[this.goaleventbox]));
+ w81.Position = 0;
+ // Container child hbox8.Gtk.Box+BoxChild
+ this.resetfgoalbutton = new global::Gtk.Button ();
+ this.resetfgoalbutton.CanFocus = true;
+ this.resetfgoalbutton.Name = "resetfgoalbutton";
+ this.resetfgoalbutton.UseUnderline = true;
+ // Container child resetfgoalbutton.Gtk.Container+ContainerChild
+ global::Gtk.Alignment w82 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+ // Container child GtkAlignment.Gtk.Container+ContainerChild
+ global::Gtk.HBox w83 = new global::Gtk.HBox ();
+ w83.Spacing = 2;
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Image w84 = new global::Gtk.Image ();
+ w84.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-refresh",
global::Gtk.IconSize.Menu);
+ w83.Add (w84);
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Label w86 = new global::Gtk.Label ();
+ w83.Add (w86);
+ w82.Add (w83);
+ this.resetfgoalbutton.Add (w82);
+ this.hbox8.Add (this.resetfgoalbutton);
+ global::Gtk.Box.BoxChild w90 = ((global::Gtk.Box.BoxChild)(this.hbox8
[this.resetfgoalbutton]));
+ w90.Position = 1;
+ w90.Expand = false;
+ w90.Fill = false;
+ this.GtkAlignment17.Add (this.hbox8);
+ this.frame10.Add (this.GtkAlignment17);
+ this.GtkLabel22 = new global::Gtk.Label ();
+ this.GtkLabel22.Name = "GtkLabel22";
+ this.GtkLabel22.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Goal</b>");
+ this.GtkLabel22.UseMarkup = true;
+ this.frame10.LabelWidget = this.GtkLabel22;
+ this.positionsbox.Add (this.frame10);
+ global::Gtk.Box.BoxChild w93 = ((global::Gtk.Box.BoxChild)(this.positionsbox
[this.frame10]));
+ w93.Position = 2;
+ this.rightbox.Add (this.positionsbox);
+ global::Gtk.Box.BoxChild w94 = ((global::Gtk.Box.BoxChild)(this.rightbox
[this.positionsbox]));
+ w94.Position = 0;
+ w94.Expand = false;
+ w94.Fill = false;
+ // Container child rightbox.Gtk.Box+BoxChild
+ this.propsframe = new global::Gtk.Frame ();
+ this.propsframe.Sensitive = false;
+ this.propsframe.Name = "propsframe";
+ // Container child propsframe.Gtk.Container+ContainerChild
+ this.GtkAlignment7 = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
+ this.GtkAlignment7.Name = "GtkAlignment7";
+ this.GtkAlignment7.LeftPadding = ((uint)(12));
+ // Container child GtkAlignment7.Gtk.Container+ContainerChild
+ this.scrolledwindow5 = new global::Gtk.ScrolledWindow ();
+ this.scrolledwindow5.CanFocus = true;
+ this.scrolledwindow5.Name = "scrolledwindow5";
+ this.scrolledwindow5.HscrollbarPolicy = ((global::Gtk.PolicyType)(2));
+ // Container child scrolledwindow5.Gtk.Container+ContainerChild
+ global::Gtk.Viewport w95 = new global::Gtk.Viewport ();
+ w95.ShadowType = ((global::Gtk.ShadowType)(0));
+ // Container child GtkViewport1.Gtk.Container+ContainerChild
+ this.categoryproperties1 = new global::LongoMatch.Gui.Component.CategoryProperties ();
+ this.categoryproperties1.Events = ((global::Gdk.EventMask)(256));
+ this.categoryproperties1.Name = "categoryproperties1";
+ this.categoryproperties1.Edited = false;
+ w95.Add (this.categoryproperties1);
+ this.scrolledwindow5.Add (w95);
+ this.GtkAlignment7.Add (this.scrolledwindow5);
+ this.propsframe.Add (this.GtkAlignment7);
+ this.GtkLabel10 = new global::Gtk.Label ();
+ this.GtkLabel10.Name = "GtkLabel10";
+ this.GtkLabel10.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Properties</b>");
+ this.GtkLabel10.UseMarkup = true;
+ this.propsframe.LabelWidget = this.GtkLabel10;
+ this.rightbox.Add (this.propsframe);
+ global::Gtk.Box.BoxChild w100 = ((global::Gtk.Box.BoxChild)(this.rightbox
[this.propsframe]));
+ w100.Position = 1;
+ this.hbox2.Add (this.rightbox);
+ global::Gtk.Box.BoxChild w101 = ((global::Gtk.Box.BoxChild)(this.hbox2
[this.rightbox]));
+ w101.Position = 1;
+ w101.Expand = false;
+ w101.Fill = false;
+ this.Add (this.hbox2);
if ((this.Child != null)) {
this.Child.ShowAll ();
}
+ this.propsframe.Hide ();
this.Show ();
}
}
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.CategoryProperties.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.CategoryProperties.cs
index 308ec17..90e3839 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.CategoryProperties.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.CategoryProperties.cs
@@ -4,44 +4,43 @@ namespace LongoMatch.Gui.Component
{
public partial class CategoryProperties
{
- private global::Gtk.Frame frame4;
- private global::Gtk.Alignment GtkAlignment1;
private global::Gtk.VBox vbox3;
private global::Gtk.Table table2;
private global::Gtk.ColorButton colorbutton1;
- private global::Gtk.HBox hbox5;
- private global::Gtk.Label hotKeyLabel;
- private global::Gtk.Button changebuton;
+ private global::Gtk.ColorButton colorbutton2;
private global::Gtk.Label label1;
+ private global::Gtk.Label label13;
private global::Gtk.Label label4;
- private global::Gtk.Label label6;
private global::Gtk.Label label7;
private global::Gtk.Label label8;
- private global::Gtk.Label label9;
private global::Gtk.SpinButton lagtimebutton;
private global::Gtk.SpinButton leadtimebutton;
private global::Gtk.Entry nameentry;
+ private global::Gtk.Label taglabel;
+ private global::Gtk.ComboBox tagmodecombobox;
+ private global::Gtk.Table cattable;
+ private global::Gtk.ComboBox fieldcombobox;
+ private global::Gtk.ComboBox goalcombobox;
+ private global::Gtk.HBox hbox5;
+ private global::Gtk.Label hotKeyLabel;
+ private global::Gtk.Button changebuton;
+ private global::Gtk.ComboBox hfieldcombobox;
+ private global::Gtk.Label label10;
+ private global::Gtk.Label label11;
+ private global::Gtk.Label label12;
+ private global::Gtk.Label label14;
+ private global::Gtk.Label label15;
+ private global::Gtk.Label label6;
+ private global::Gtk.Label label9;
private global::Gtk.ComboBox sortmethodcombobox;
- private global::Gtk.VBox vbox5;
- private global::Gtk.HBox hbox1;
- private global::Gtk.Frame frame5;
- private global::Gtk.Alignment GtkAlignment7;
- private global::Gtk.VBox vbox4;
- private global::Gtk.CheckButton tagfieldcheckbutton;
- private global::Gtk.CheckButton trajectorycheckbutton;
- private global::Gtk.Label GtkLabel9;
- private global::Gtk.Frame frame6;
- private global::Gtk.Alignment GtkAlignment8;
- private global::Gtk.VBox vbox6;
- private global::Gtk.CheckButton taghalffieldcheckbutton;
- private global::Gtk.CheckButton trajectoryhalfcheckbutton;
- private global::Gtk.Label GtkLabel12;
- private global::Gtk.Frame frame7;
- private global::Gtk.Alignment GtkAlignment9;
- private global::Gtk.CheckButton taggoalcheckbutton;
- private global::Gtk.Label GtkLabel13;
- private global::Gtk.Table table1;
- private global::Gtk.Label GtkLabel6;
+ private global::Gtk.CheckButton tagscheckbutton;
+ private global::Gtk.SpinButton tprbutton;
+ private global::Gtk.Table cardtable;
+ private global::Gtk.Label label16;
+ private global::Gtk.ComboBox shapecombobox;
+ private global::Gtk.Table scoretable;
+ private global::Gtk.Label label17;
+ private global::Gtk.SpinButton pointsbutton;
protected virtual void Build ()
{
@@ -50,19 +49,11 @@ namespace LongoMatch.Gui.Component
global::Stetic.BinContainer.Attach (this);
this.Name = "LongoMatch.Gui.Component.CategoryProperties";
// Container child
LongoMatch.Gui.Component.CategoryProperties.Gtk.Container+ContainerChild
- this.frame4 = new global::Gtk.Frame ();
- this.frame4.Name = "frame4";
- this.frame4.ShadowType = ((global::Gtk.ShadowType)(1));
- // Container child frame4.Gtk.Container+ContainerChild
- this.GtkAlignment1 = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
- this.GtkAlignment1.Name = "GtkAlignment1";
- this.GtkAlignment1.LeftPadding = ((uint)(12));
- // Container child GtkAlignment1.Gtk.Container+ContainerChild
this.vbox3 = new global::Gtk.VBox ();
this.vbox3.Name = "vbox3";
this.vbox3.Spacing = 6;
// Container child vbox3.Gtk.Box+BoxChild
- this.table2 = new global::Gtk.Table (((uint)(3)), ((uint)(4)), false);
+ this.table2 = new global::Gtk.Table (((uint)(6)), ((uint)(2)), true);
this.table2.Name = "table2";
this.table2.RowSpacing = ((uint)(6));
this.table2.ColumnSpacing = ((uint)(6));
@@ -73,43 +64,25 @@ namespace LongoMatch.Gui.Component
this.colorbutton1.Name = "colorbutton1";
this.table2.Add (this.colorbutton1);
global::Gtk.Table.TableChild w1 = ((global::Gtk.Table.TableChild)(this.table2
[this.colorbutton1]));
- w1.LeftAttach = ((uint)(3));
- w1.RightAttach = ((uint)(4));
+ w1.TopAttach = ((uint)(1));
+ w1.BottomAttach = ((uint)(2));
+ w1.LeftAttach = ((uint)(1));
+ w1.RightAttach = ((uint)(2));
w1.XOptions = ((global::Gtk.AttachOptions)(4));
- w1.YOptions = ((global::Gtk.AttachOptions)(0));
+ w1.YOptions = ((global::Gtk.AttachOptions)(4));
// Container child table2.Gtk.Table+TableChild
- this.hbox5 = new global::Gtk.HBox ();
- this.hbox5.Name = "hbox5";
- this.hbox5.Spacing = 6;
- // Container child hbox5.Gtk.Box+BoxChild
- this.hotKeyLabel = new global::Gtk.Label ();
- this.hotKeyLabel.Name = "hotKeyLabel";
- this.hotKeyLabel.LabelProp = global::Mono.Unix.Catalog.GetString ("none");
- this.hbox5.Add (this.hotKeyLabel);
- global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.hbox5
[this.hotKeyLabel]));
- w2.Position = 0;
- w2.Expand = false;
- w2.Fill = false;
- // Container child hbox5.Gtk.Box+BoxChild
- this.changebuton = new global::Gtk.Button ();
- this.changebuton.Sensitive = false;
- this.changebuton.CanFocus = true;
- this.changebuton.Name = "changebuton";
- this.changebuton.UseUnderline = true;
- this.changebuton.Label = global::Mono.Unix.Catalog.GetString ("Change");
- this.hbox5.Add (this.changebuton);
- global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox5
[this.changebuton]));
- w3.Position = 1;
- w3.Expand = false;
- w3.Fill = false;
- this.table2.Add (this.hbox5);
- global::Gtk.Table.TableChild w4 = ((global::Gtk.Table.TableChild)(this.table2
[this.hbox5]));
- w4.TopAttach = ((uint)(2));
- w4.BottomAttach = ((uint)(3));
- w4.LeftAttach = ((uint)(1));
- w4.RightAttach = ((uint)(2));
- w4.XOptions = ((global::Gtk.AttachOptions)(4));
- w4.YOptions = ((global::Gtk.AttachOptions)(0));
+ this.colorbutton2 = new global::Gtk.ColorButton ();
+ this.colorbutton2.CanFocus = true;
+ this.colorbutton2.Events = ((global::Gdk.EventMask)(784));
+ this.colorbutton2.Name = "colorbutton2";
+ this.table2.Add (this.colorbutton2);
+ global::Gtk.Table.TableChild w2 = ((global::Gtk.Table.TableChild)(this.table2
[this.colorbutton2]));
+ w2.TopAttach = ((uint)(2));
+ w2.BottomAttach = ((uint)(3));
+ w2.LeftAttach = ((uint)(1));
+ w2.RightAttach = ((uint)(2));
+ w2.XOptions = ((global::Gtk.AttachOptions)(4));
+ w2.YOptions = ((global::Gtk.AttachOptions)(4));
// Container child table2.Gtk.Table+TableChild
this.label1 = new global::Gtk.Label ();
this.label1.Name = "label1";
@@ -117,9 +90,20 @@ namespace LongoMatch.Gui.Component
this.label1.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Name:</b>");
this.label1.UseMarkup = true;
this.table2.Add (this.label1);
- global::Gtk.Table.TableChild w5 = ((global::Gtk.Table.TableChild)(this.table2
[this.label1]));
- w5.XOptions = ((global::Gtk.AttachOptions)(4));
- w5.YOptions = ((global::Gtk.AttachOptions)(4));
+ global::Gtk.Table.TableChild w3 = ((global::Gtk.Table.TableChild)(this.table2
[this.label1]));
+ w3.XOptions = ((global::Gtk.AttachOptions)(4));
+ w3.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child table2.Gtk.Table+TableChild
+ this.label13 = new global::Gtk.Label ();
+ this.label13.Name = "label13";
+ this.label13.Xalign = 0F;
+ this.label13.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Text color:</b>
");
+ this.label13.UseMarkup = true;
+ this.table2.Add (this.label13);
+ global::Gtk.Table.TableChild w4 = ((global::Gtk.Table.TableChild)(this.table2
[this.label13]));
+ w4.TopAttach = ((uint)(2));
+ w4.BottomAttach = ((uint)(3));
+ w4.YOptions = ((global::Gtk.AttachOptions)(4));
// Container child table2.Gtk.Table+TableChild
this.label4 = new global::Gtk.Label ();
this.label4.Name = "label4";
@@ -127,63 +111,35 @@ namespace LongoMatch.Gui.Component
this.label4.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Color:</b> ");
this.label4.UseMarkup = true;
this.table2.Add (this.label4);
- global::Gtk.Table.TableChild w6 = ((global::Gtk.Table.TableChild)(this.table2
[this.label4]));
- w6.LeftAttach = ((uint)(2));
- w6.RightAttach = ((uint)(3));
- w6.XOptions = ((global::Gtk.AttachOptions)(4));
- w6.YOptions = ((global::Gtk.AttachOptions)(4));
- // Container child table2.Gtk.Table+TableChild
- this.label6 = new global::Gtk.Label ();
- this.label6.Name = "label6";
- this.label6.Xalign = 0F;
- this.label6.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>HotKey:</b>");
- this.label6.UseMarkup = true;
- this.table2.Add (this.label6);
- global::Gtk.Table.TableChild w7 = ((global::Gtk.Table.TableChild)(this.table2
[this.label6]));
- w7.TopAttach = ((uint)(2));
- w7.BottomAttach = ((uint)(3));
- w7.XOptions = ((global::Gtk.AttachOptions)(4));
- w7.YOptions = ((global::Gtk.AttachOptions)(4));
+ global::Gtk.Table.TableChild w5 = ((global::Gtk.Table.TableChild)(this.table2
[this.label4]));
+ w5.TopAttach = ((uint)(1));
+ w5.BottomAttach = ((uint)(2));
+ w5.XOptions = ((global::Gtk.AttachOptions)(4));
+ w5.YOptions = ((global::Gtk.AttachOptions)(4));
// Container child table2.Gtk.Table+TableChild
this.label7 = new global::Gtk.Label ();
this.label7.Name = "label7";
this.label7.Xalign = 0F;
- this.label7.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Lead time:</b>");
+ this.label7.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Lead time (s):</b>");
this.label7.UseMarkup = true;
this.table2.Add (this.label7);
- global::Gtk.Table.TableChild w8 = ((global::Gtk.Table.TableChild)(this.table2
[this.label7]));
- w8.TopAttach = ((uint)(1));
- w8.BottomAttach = ((uint)(2));
- w8.XOptions = ((global::Gtk.AttachOptions)(4));
- w8.YOptions = ((global::Gtk.AttachOptions)(4));
+ global::Gtk.Table.TableChild w6 = ((global::Gtk.Table.TableChild)(this.table2
[this.label7]));
+ w6.TopAttach = ((uint)(4));
+ w6.BottomAttach = ((uint)(5));
+ w6.XOptions = ((global::Gtk.AttachOptions)(4));
+ w6.YOptions = ((global::Gtk.AttachOptions)(4));
// Container child table2.Gtk.Table+TableChild
this.label8 = new global::Gtk.Label ();
this.label8.Name = "label8";
this.label8.Xalign = 0F;
- this.label8.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Lag time:</b>");
+ this.label8.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Lag time (s):</b>");
this.label8.UseMarkup = true;
this.table2.Add (this.label8);
- global::Gtk.Table.TableChild w9 = ((global::Gtk.Table.TableChild)(this.table2
[this.label8]));
- w9.TopAttach = ((uint)(1));
- w9.BottomAttach = ((uint)(2));
- w9.LeftAttach = ((uint)(2));
- w9.RightAttach = ((uint)(3));
- w9.XOptions = ((global::Gtk.AttachOptions)(4));
- w9.YOptions = ((global::Gtk.AttachOptions)(4));
- // Container child table2.Gtk.Table+TableChild
- this.label9 = new global::Gtk.Label ();
- this.label9.Name = "label9";
- this.label9.Xalign = 0F;
- this.label9.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Sort Method</b>");
- this.label9.UseMarkup = true;
- this.table2.Add (this.label9);
- global::Gtk.Table.TableChild w10 = ((global::Gtk.Table.TableChild)(this.table2
[this.label9]));
- w10.TopAttach = ((uint)(2));
- w10.BottomAttach = ((uint)(3));
- w10.LeftAttach = ((uint)(2));
- w10.RightAttach = ((uint)(3));
- w10.XOptions = ((global::Gtk.AttachOptions)(4));
- w10.YOptions = ((global::Gtk.AttachOptions)(4));
+ global::Gtk.Table.TableChild w7 = ((global::Gtk.Table.TableChild)(this.table2
[this.label8]));
+ w7.TopAttach = ((uint)(5));
+ w7.BottomAttach = ((uint)(6));
+ w7.XOptions = ((global::Gtk.AttachOptions)(4));
+ w7.YOptions = ((global::Gtk.AttachOptions)(4));
// Container child table2.Gtk.Table+TableChild
this.lagtimebutton = new global::Gtk.SpinButton (0, 1000, 1);
this.lagtimebutton.CanFocus = true;
@@ -192,12 +148,13 @@ namespace LongoMatch.Gui.Component
this.lagtimebutton.ClimbRate = 1;
this.lagtimebutton.Numeric = true;
this.table2.Add (this.lagtimebutton);
- global::Gtk.Table.TableChild w11 = ((global::Gtk.Table.TableChild)(this.table2
[this.lagtimebutton]));
- w11.TopAttach = ((uint)(1));
- w11.BottomAttach = ((uint)(2));
- w11.LeftAttach = ((uint)(3));
- w11.RightAttach = ((uint)(4));
- w11.YOptions = ((global::Gtk.AttachOptions)(4));
+ global::Gtk.Table.TableChild w8 = ((global::Gtk.Table.TableChild)(this.table2
[this.lagtimebutton]));
+ w8.TopAttach = ((uint)(5));
+ w8.BottomAttach = ((uint)(6));
+ w8.LeftAttach = ((uint)(1));
+ w8.RightAttach = ((uint)(2));
+ w8.XOptions = ((global::Gtk.AttachOptions)(4));
+ w8.YOptions = ((global::Gtk.AttachOptions)(4));
// Container child table2.Gtk.Table+TableChild
this.leadtimebutton = new global::Gtk.SpinButton (0, 1000, 1);
this.leadtimebutton.CanFocus = true;
@@ -206,207 +163,335 @@ namespace LongoMatch.Gui.Component
this.leadtimebutton.ClimbRate = 1;
this.leadtimebutton.Numeric = true;
this.table2.Add (this.leadtimebutton);
- global::Gtk.Table.TableChild w12 = ((global::Gtk.Table.TableChild)(this.table2
[this.leadtimebutton]));
- w12.TopAttach = ((uint)(1));
- w12.BottomAttach = ((uint)(2));
- w12.LeftAttach = ((uint)(1));
- w12.RightAttach = ((uint)(2));
- w12.XOptions = ((global::Gtk.AttachOptions)(4));
- w12.YOptions = ((global::Gtk.AttachOptions)(4));
+ global::Gtk.Table.TableChild w9 = ((global::Gtk.Table.TableChild)(this.table2
[this.leadtimebutton]));
+ w9.TopAttach = ((uint)(4));
+ w9.BottomAttach = ((uint)(5));
+ w9.LeftAttach = ((uint)(1));
+ w9.RightAttach = ((uint)(2));
+ w9.XOptions = ((global::Gtk.AttachOptions)(4));
+ w9.YOptions = ((global::Gtk.AttachOptions)(4));
// Container child table2.Gtk.Table+TableChild
this.nameentry = new global::Gtk.Entry ();
+ this.nameentry.WidthRequest = 76;
this.nameentry.CanFocus = true;
this.nameentry.Name = "nameentry";
this.nameentry.IsEditable = true;
this.nameentry.InvisibleChar = '●';
this.table2.Add (this.nameentry);
- global::Gtk.Table.TableChild w13 = ((global::Gtk.Table.TableChild)(this.table2
[this.nameentry]));
- w13.LeftAttach = ((uint)(1));
- w13.RightAttach = ((uint)(2));
- w13.YOptions = ((global::Gtk.AttachOptions)(4));
+ global::Gtk.Table.TableChild w10 = ((global::Gtk.Table.TableChild)(this.table2
[this.nameentry]));
+ w10.LeftAttach = ((uint)(1));
+ w10.RightAttach = ((uint)(2));
+ w10.YOptions = ((global::Gtk.AttachOptions)(4));
// Container child table2.Gtk.Table+TableChild
- this.sortmethodcombobox = global::Gtk.ComboBox.NewText ();
- this.sortmethodcombobox.AppendText (global::Mono.Unix.Catalog.GetString ("Sort by
name"));
- this.sortmethodcombobox.AppendText (global::Mono.Unix.Catalog.GetString ("Sort by
start time"));
- this.sortmethodcombobox.AppendText (global::Mono.Unix.Catalog.GetString ("Sort by
stop time"));
- this.sortmethodcombobox.AppendText (global::Mono.Unix.Catalog.GetString ("Sort by
duration"));
- this.sortmethodcombobox.Name = "sortmethodcombobox";
- this.sortmethodcombobox.Active = 3;
- this.table2.Add (this.sortmethodcombobox);
- global::Gtk.Table.TableChild w14 = ((global::Gtk.Table.TableChild)(this.table2
[this.sortmethodcombobox]));
- w14.TopAttach = ((uint)(2));
- w14.BottomAttach = ((uint)(3));
- w14.LeftAttach = ((uint)(3));
- w14.RightAttach = ((uint)(4));
- w14.XOptions = ((global::Gtk.AttachOptions)(4));
- w14.YOptions = ((global::Gtk.AttachOptions)(0));
+ this.taglabel = new global::Gtk.Label ();
+ this.taglabel.Name = "taglabel";
+ this.taglabel.Xalign = 0F;
+ this.taglabel.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Tag mode:</b>
");
+ this.taglabel.UseMarkup = true;
+ this.table2.Add (this.taglabel);
+ global::Gtk.Table.TableChild w11 = ((global::Gtk.Table.TableChild)(this.table2
[this.taglabel]));
+ w11.TopAttach = ((uint)(3));
+ w11.BottomAttach = ((uint)(4));
+ w11.XOptions = ((global::Gtk.AttachOptions)(4));
+ w11.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child table2.Gtk.Table+TableChild
+ this.tagmodecombobox = global::Gtk.ComboBox.NewText ();
+ this.tagmodecombobox.AppendText (global::Mono.Unix.Catalog.GetString ("Automatic"));
+ this.tagmodecombobox.AppendText (global::Mono.Unix.Catalog.GetString ("Manual"));
+ this.tagmodecombobox.Name = "tagmodecombobox";
+ this.tagmodecombobox.Active = 0;
+ this.table2.Add (this.tagmodecombobox);
+ global::Gtk.Table.TableChild w12 = ((global::Gtk.Table.TableChild)(this.table2
[this.tagmodecombobox]));
+ w12.TopAttach = ((uint)(3));
+ w12.BottomAttach = ((uint)(4));
+ w12.LeftAttach = ((uint)(1));
+ w12.RightAttach = ((uint)(2));
+ w12.XOptions = ((global::Gtk.AttachOptions)(4));
+ w12.YOptions = ((global::Gtk.AttachOptions)(4));
this.vbox3.Add (this.table2);
- global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.table2]));
- w15.Position = 0;
- w15.Expand = false;
- w15.Fill = false;
+ global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.table2]));
+ w13.Position = 0;
+ w13.Expand = false;
+ w13.Fill = false;
// Container child vbox3.Gtk.Box+BoxChild
- this.vbox5 = new global::Gtk.VBox ();
- this.vbox5.Name = "vbox5";
- this.vbox5.Spacing = 6;
- // Container child vbox5.Gtk.Box+BoxChild
- this.hbox1 = new global::Gtk.HBox ();
- this.hbox1.Name = "hbox1";
- this.hbox1.Spacing = 6;
- // Container child hbox1.Gtk.Box+BoxChild
- this.frame5 = new global::Gtk.Frame ();
- this.frame5.Name = "frame5";
- this.frame5.ShadowType = ((global::Gtk.ShadowType)(0));
- // Container child frame5.Gtk.Container+ContainerChild
- this.GtkAlignment7 = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
- this.GtkAlignment7.Name = "GtkAlignment7";
- this.GtkAlignment7.LeftPadding = ((uint)(12));
- // Container child GtkAlignment7.Gtk.Container+ContainerChild
- this.vbox4 = new global::Gtk.VBox ();
- this.vbox4.Name = "vbox4";
- this.vbox4.Spacing = 6;
- // Container child vbox4.Gtk.Box+BoxChild
- this.tagfieldcheckbutton = new global::Gtk.CheckButton ();
- this.tagfieldcheckbutton.CanFocus = true;
- this.tagfieldcheckbutton.Name = "tagfieldcheckbutton";
- this.tagfieldcheckbutton.Label = global::Mono.Unix.Catalog.GetString ("Enable");
- this.tagfieldcheckbutton.DrawIndicator = true;
- this.tagfieldcheckbutton.UseUnderline = true;
- this.vbox4.Add (this.tagfieldcheckbutton);
- global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.vbox4
[this.tagfieldcheckbutton]));
+ this.cattable = new global::Gtk.Table (((uint)(7)), ((uint)(2)), true);
+ this.cattable.Name = "cattable";
+ this.cattable.RowSpacing = ((uint)(6));
+ this.cattable.ColumnSpacing = ((uint)(6));
+ // Container child cattable.Gtk.Table+TableChild
+ this.fieldcombobox = global::Gtk.ComboBox.NewText ();
+ this.fieldcombobox.AppendText (global::Mono.Unix.Catalog.GetString ("Not tagged"));
+ this.fieldcombobox.AppendText (global::Mono.Unix.Catalog.GetString ("Tag as point"));
+ this.fieldcombobox.AppendText (global::Mono.Unix.Catalog.GetString ("Tag as
trayectory"));
+ this.fieldcombobox.Name = "fieldcombobox";
+ this.fieldcombobox.Active = 0;
+ this.cattable.Add (this.fieldcombobox);
+ global::Gtk.Table.TableChild w14 = ((global::Gtk.Table.TableChild)(this.cattable
[this.fieldcombobox]));
+ w14.TopAttach = ((uint)(4));
+ w14.BottomAttach = ((uint)(5));
+ w14.LeftAttach = ((uint)(1));
+ w14.RightAttach = ((uint)(2));
+ w14.XOptions = ((global::Gtk.AttachOptions)(4));
+ w14.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child cattable.Gtk.Table+TableChild
+ this.goalcombobox = global::Gtk.ComboBox.NewText ();
+ this.goalcombobox.AppendText (global::Mono.Unix.Catalog.GetString ("Not tagged"));
+ this.goalcombobox.AppendText (global::Mono.Unix.Catalog.GetString ("Tag as point"));
+ this.goalcombobox.Name = "goalcombobox";
+ this.goalcombobox.Active = 0;
+ this.cattable.Add (this.goalcombobox);
+ global::Gtk.Table.TableChild w15 = ((global::Gtk.Table.TableChild)(this.cattable
[this.goalcombobox]));
+ w15.TopAttach = ((uint)(6));
+ w15.BottomAttach = ((uint)(7));
+ w15.LeftAttach = ((uint)(1));
+ w15.RightAttach = ((uint)(2));
+ w15.XOptions = ((global::Gtk.AttachOptions)(4));
+ w15.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child cattable.Gtk.Table+TableChild
+ this.hbox5 = new global::Gtk.HBox ();
+ this.hbox5.Name = "hbox5";
+ this.hbox5.Spacing = 6;
+ // Container child hbox5.Gtk.Box+BoxChild
+ this.hotKeyLabel = new global::Gtk.Label ();
+ this.hotKeyLabel.Name = "hotKeyLabel";
+ this.hotKeyLabel.LabelProp = global::Mono.Unix.Catalog.GetString ("none");
+ this.hbox5.Add (this.hotKeyLabel);
+ global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.hbox5
[this.hotKeyLabel]));
w16.Position = 0;
w16.Expand = false;
w16.Fill = false;
- // Container child vbox4.Gtk.Box+BoxChild
- this.trajectorycheckbutton = new global::Gtk.CheckButton ();
- this.trajectorycheckbutton.CanFocus = true;
- this.trajectorycheckbutton.Name = "trajectorycheckbutton";
- this.trajectorycheckbutton.Label = global::Mono.Unix.Catalog.GetString ("Trajectory");
- this.trajectorycheckbutton.DrawIndicator = true;
- this.trajectorycheckbutton.UseUnderline = true;
- this.vbox4.Add (this.trajectorycheckbutton);
- global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.vbox4
[this.trajectorycheckbutton]));
+ // Container child hbox5.Gtk.Box+BoxChild
+ this.changebuton = new global::Gtk.Button ();
+ this.changebuton.Sensitive = false;
+ this.changebuton.CanFocus = true;
+ this.changebuton.Name = "changebuton";
+ this.changebuton.UseUnderline = true;
+ this.changebuton.Label = global::Mono.Unix.Catalog.GetString ("Change");
+ this.hbox5.Add (this.changebuton);
+ global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.hbox5
[this.changebuton]));
w17.Position = 1;
w17.Expand = false;
w17.Fill = false;
- this.GtkAlignment7.Add (this.vbox4);
- this.frame5.Add (this.GtkAlignment7);
- this.GtkLabel9 = new global::Gtk.Label ();
- this.GtkLabel9.Name = "GtkLabel9";
- this.GtkLabel9.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Field
position</b>");
- this.GtkLabel9.UseMarkup = true;
- this.frame5.LabelWidget = this.GtkLabel9;
- this.hbox1.Add (this.frame5);
- global::Gtk.Box.BoxChild w20 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.frame5]));
- w20.Position = 0;
- // Container child hbox1.Gtk.Box+BoxChild
- this.frame6 = new global::Gtk.Frame ();
- this.frame6.Name = "frame6";
- this.frame6.ShadowType = ((global::Gtk.ShadowType)(0));
- // Container child frame6.Gtk.Container+ContainerChild
- this.GtkAlignment8 = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
- this.GtkAlignment8.Name = "GtkAlignment8";
- this.GtkAlignment8.LeftPadding = ((uint)(12));
- // Container child GtkAlignment8.Gtk.Container+ContainerChild
- this.vbox6 = new global::Gtk.VBox ();
- this.vbox6.Name = "vbox6";
- this.vbox6.Spacing = 6;
- // Container child vbox6.Gtk.Box+BoxChild
- this.taghalffieldcheckbutton = new global::Gtk.CheckButton ();
- this.taghalffieldcheckbutton.CanFocus = true;
- this.taghalffieldcheckbutton.Name = "taghalffieldcheckbutton";
- this.taghalffieldcheckbutton.Label = global::Mono.Unix.Catalog.GetString ("Enable");
- this.taghalffieldcheckbutton.DrawIndicator = true;
- this.taghalffieldcheckbutton.UseUnderline = true;
- this.vbox6.Add (this.taghalffieldcheckbutton);
- global::Gtk.Box.BoxChild w21 = ((global::Gtk.Box.BoxChild)(this.vbox6
[this.taghalffieldcheckbutton]));
- w21.Position = 0;
- w21.Expand = false;
- w21.Fill = false;
- // Container child vbox6.Gtk.Box+BoxChild
- this.trajectoryhalfcheckbutton = new global::Gtk.CheckButton ();
- this.trajectoryhalfcheckbutton.CanFocus = true;
- this.trajectoryhalfcheckbutton.Name = "trajectoryhalfcheckbutton";
- this.trajectoryhalfcheckbutton.Label = global::Mono.Unix.Catalog.GetString
("Trajectory");
- this.trajectoryhalfcheckbutton.DrawIndicator = true;
- this.trajectoryhalfcheckbutton.UseUnderline = true;
- this.vbox6.Add (this.trajectoryhalfcheckbutton);
- global::Gtk.Box.BoxChild w22 = ((global::Gtk.Box.BoxChild)(this.vbox6
[this.trajectoryhalfcheckbutton]));
- w22.Position = 1;
- w22.Expand = false;
- w22.Fill = false;
- this.GtkAlignment8.Add (this.vbox6);
- this.frame6.Add (this.GtkAlignment8);
- this.GtkLabel12 = new global::Gtk.Label ();
- this.GtkLabel12.Name = "GtkLabel12";
- this.GtkLabel12.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Half field
position</b>");
- this.GtkLabel12.UseMarkup = true;
- this.frame6.LabelWidget = this.GtkLabel12;
- this.hbox1.Add (this.frame6);
- global::Gtk.Box.BoxChild w25 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.frame6]));
- w25.Position = 1;
- // Container child hbox1.Gtk.Box+BoxChild
- this.frame7 = new global::Gtk.Frame ();
- this.frame7.Name = "frame7";
- this.frame7.ShadowType = ((global::Gtk.ShadowType)(0));
- // Container child frame7.Gtk.Container+ContainerChild
- this.GtkAlignment9 = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
- this.GtkAlignment9.Name = "GtkAlignment9";
- this.GtkAlignment9.LeftPadding = ((uint)(12));
- // Container child GtkAlignment9.Gtk.Container+ContainerChild
- this.taggoalcheckbutton = new global::Gtk.CheckButton ();
- this.taggoalcheckbutton.CanFocus = true;
- this.taggoalcheckbutton.Name = "taggoalcheckbutton";
- this.taggoalcheckbutton.Label = global::Mono.Unix.Catalog.GetString ("Enable");
- this.taggoalcheckbutton.DrawIndicator = true;
- this.taggoalcheckbutton.UseUnderline = true;
- this.GtkAlignment9.Add (this.taggoalcheckbutton);
- this.frame7.Add (this.GtkAlignment9);
- this.GtkLabel13 = new global::Gtk.Label ();
- this.GtkLabel13.Name = "GtkLabel13";
- this.GtkLabel13.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Goal
Position</b>");
- this.GtkLabel13.UseMarkup = true;
- this.frame7.LabelWidget = this.GtkLabel13;
- this.hbox1.Add (this.frame7);
- global::Gtk.Box.BoxChild w28 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.frame7]));
- w28.Position = 2;
- this.vbox5.Add (this.hbox1);
- global::Gtk.Box.BoxChild w29 = ((global::Gtk.Box.BoxChild)(this.vbox5 [this.hbox1]));
- w29.Position = 0;
- w29.Expand = false;
- w29.Fill = false;
- // Container child vbox5.Gtk.Box+BoxChild
- this.table1 = new global::Gtk.Table (((uint)(1)), ((uint)(3)), false);
- this.table1.Name = "table1";
- this.table1.RowSpacing = ((uint)(6));
- this.table1.ColumnSpacing = ((uint)(6));
- this.vbox5.Add (this.table1);
- global::Gtk.Box.BoxChild w30 = ((global::Gtk.Box.BoxChild)(this.vbox5 [this.table1]));
+ this.cattable.Add (this.hbox5);
+ global::Gtk.Table.TableChild w18 = ((global::Gtk.Table.TableChild)(this.cattable
[this.hbox5]));
+ w18.TopAttach = ((uint)(2));
+ w18.BottomAttach = ((uint)(3));
+ w18.LeftAttach = ((uint)(1));
+ w18.RightAttach = ((uint)(2));
+ w18.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child cattable.Gtk.Table+TableChild
+ this.hfieldcombobox = global::Gtk.ComboBox.NewText ();
+ this.hfieldcombobox.AppendText (global::Mono.Unix.Catalog.GetString ("Not tagged"));
+ this.hfieldcombobox.AppendText (global::Mono.Unix.Catalog.GetString ("Tag as point"));
+ this.hfieldcombobox.AppendText (global::Mono.Unix.Catalog.GetString ("Tag as
trayectory"));
+ this.hfieldcombobox.Name = "hfieldcombobox";
+ this.hfieldcombobox.Active = 0;
+ this.cattable.Add (this.hfieldcombobox);
+ global::Gtk.Table.TableChild w19 = ((global::Gtk.Table.TableChild)(this.cattable
[this.hfieldcombobox]));
+ w19.TopAttach = ((uint)(5));
+ w19.BottomAttach = ((uint)(6));
+ w19.LeftAttach = ((uint)(1));
+ w19.RightAttach = ((uint)(2));
+ w19.XOptions = ((global::Gtk.AttachOptions)(4));
+ w19.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child cattable.Gtk.Table+TableChild
+ this.label10 = new global::Gtk.Label ();
+ this.label10.Name = "label10";
+ this.label10.Xalign = 0F;
+ this.label10.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Field
position:</b>");
+ this.label10.UseMarkup = true;
+ this.cattable.Add (this.label10);
+ global::Gtk.Table.TableChild w20 = ((global::Gtk.Table.TableChild)(this.cattable
[this.label10]));
+ w20.TopAttach = ((uint)(4));
+ w20.BottomAttach = ((uint)(5));
+ w20.XOptions = ((global::Gtk.AttachOptions)(4));
+ w20.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child cattable.Gtk.Table+TableChild
+ this.label11 = new global::Gtk.Label ();
+ this.label11.Name = "label11";
+ this.label11.Xalign = 0F;
+ this.label11.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Half field
position:</b>");
+ this.label11.UseMarkup = true;
+ this.cattable.Add (this.label11);
+ global::Gtk.Table.TableChild w21 = ((global::Gtk.Table.TableChild)(this.cattable
[this.label11]));
+ w21.TopAttach = ((uint)(5));
+ w21.BottomAttach = ((uint)(6));
+ w21.XOptions = ((global::Gtk.AttachOptions)(4));
+ w21.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child cattable.Gtk.Table+TableChild
+ this.label12 = new global::Gtk.Label ();
+ this.label12.Name = "label12";
+ this.label12.Xalign = 0F;
+ this.label12.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Goal
position:</b>");
+ this.label12.UseMarkup = true;
+ this.cattable.Add (this.label12);
+ global::Gtk.Table.TableChild w22 = ((global::Gtk.Table.TableChild)(this.cattable
[this.label12]));
+ w22.TopAttach = ((uint)(6));
+ w22.BottomAttach = ((uint)(7));
+ w22.XOptions = ((global::Gtk.AttachOptions)(4));
+ w22.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child cattable.Gtk.Table+TableChild
+ this.label14 = new global::Gtk.Label ();
+ this.label14.Name = "label14";
+ this.label14.Xalign = 0F;
+ this.label14.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Show tags:</b>
");
+ this.label14.UseMarkup = true;
+ this.cattable.Add (this.label14);
+ global::Gtk.Table.TableChild w23 = ((global::Gtk.Table.TableChild)(this.cattable
[this.label14]));
+ w23.XOptions = ((global::Gtk.AttachOptions)(4));
+ w23.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child cattable.Gtk.Table+TableChild
+ this.label15 = new global::Gtk.Label ();
+ this.label15.Name = "label15";
+ this.label15.Xalign = 0F;
+ this.label15.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Tags per row:</b>
");
+ this.label15.UseMarkup = true;
+ this.cattable.Add (this.label15);
+ global::Gtk.Table.TableChild w24 = ((global::Gtk.Table.TableChild)(this.cattable
[this.label15]));
+ w24.TopAttach = ((uint)(1));
+ w24.BottomAttach = ((uint)(2));
+ w24.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child cattable.Gtk.Table+TableChild
+ this.label6 = new global::Gtk.Label ();
+ this.label6.Name = "label6";
+ this.label6.Xalign = 0F;
+ this.label6.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>HotKey:</b>");
+ this.label6.UseMarkup = true;
+ this.cattable.Add (this.label6);
+ global::Gtk.Table.TableChild w25 = ((global::Gtk.Table.TableChild)(this.cattable
[this.label6]));
+ w25.TopAttach = ((uint)(2));
+ w25.BottomAttach = ((uint)(3));
+ w25.XOptions = ((global::Gtk.AttachOptions)(4));
+ w25.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child cattable.Gtk.Table+TableChild
+ this.label9 = new global::Gtk.Label ();
+ this.label9.Name = "label9";
+ this.label9.Xalign = 0F;
+ this.label9.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Sort Method</b>");
+ this.label9.UseMarkup = true;
+ this.cattable.Add (this.label9);
+ global::Gtk.Table.TableChild w26 = ((global::Gtk.Table.TableChild)(this.cattable
[this.label9]));
+ w26.TopAttach = ((uint)(3));
+ w26.BottomAttach = ((uint)(4));
+ w26.XOptions = ((global::Gtk.AttachOptions)(4));
+ w26.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child cattable.Gtk.Table+TableChild
+ this.sortmethodcombobox = global::Gtk.ComboBox.NewText ();
+ this.sortmethodcombobox.AppendText (global::Mono.Unix.Catalog.GetString ("Sort by
name"));
+ this.sortmethodcombobox.AppendText (global::Mono.Unix.Catalog.GetString ("Sort by
start time"));
+ this.sortmethodcombobox.AppendText (global::Mono.Unix.Catalog.GetString ("Sort by
stop time"));
+ this.sortmethodcombobox.AppendText (global::Mono.Unix.Catalog.GetString ("Sort by
duration"));
+ this.sortmethodcombobox.Name = "sortmethodcombobox";
+ this.sortmethodcombobox.Active = 0;
+ this.cattable.Add (this.sortmethodcombobox);
+ global::Gtk.Table.TableChild w27 = ((global::Gtk.Table.TableChild)(this.cattable
[this.sortmethodcombobox]));
+ w27.TopAttach = ((uint)(3));
+ w27.BottomAttach = ((uint)(4));
+ w27.LeftAttach = ((uint)(1));
+ w27.RightAttach = ((uint)(2));
+ w27.XOptions = ((global::Gtk.AttachOptions)(4));
+ w27.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child cattable.Gtk.Table+TableChild
+ this.tagscheckbutton = new global::Gtk.CheckButton ();
+ this.tagscheckbutton.CanFocus = true;
+ this.tagscheckbutton.Name = "tagscheckbutton";
+ this.tagscheckbutton.Label = "";
+ this.tagscheckbutton.Active = true;
+ this.tagscheckbutton.DrawIndicator = true;
+ this.cattable.Add (this.tagscheckbutton);
+ global::Gtk.Table.TableChild w28 = ((global::Gtk.Table.TableChild)(this.cattable
[this.tagscheckbutton]));
+ w28.LeftAttach = ((uint)(1));
+ w28.RightAttach = ((uint)(2));
+ w28.XOptions = ((global::Gtk.AttachOptions)(4));
+ w28.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child cattable.Gtk.Table+TableChild
+ this.tprbutton = new global::Gtk.SpinButton (1, 10, 1);
+ this.tprbutton.CanFocus = true;
+ this.tprbutton.Name = "tprbutton";
+ this.tprbutton.Adjustment.PageIncrement = 1;
+ this.tprbutton.ClimbRate = 1;
+ this.tprbutton.Numeric = true;
+ this.tprbutton.Value = 2;
+ this.cattable.Add (this.tprbutton);
+ global::Gtk.Table.TableChild w29 = ((global::Gtk.Table.TableChild)(this.cattable
[this.tprbutton]));
+ w29.TopAttach = ((uint)(1));
+ w29.BottomAttach = ((uint)(2));
+ w29.LeftAttach = ((uint)(1));
+ w29.RightAttach = ((uint)(2));
+ w29.YOptions = ((global::Gtk.AttachOptions)(4));
+ this.vbox3.Add (this.cattable);
+ global::Gtk.Box.BoxChild w30 = ((global::Gtk.Box.BoxChild)(this.vbox3
[this.cattable]));
w30.Position = 1;
- this.vbox3.Add (this.vbox5);
- global::Gtk.Box.BoxChild w31 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.vbox5]));
- w31.Position = 1;
- this.GtkAlignment1.Add (this.vbox3);
- this.frame4.Add (this.GtkAlignment1);
- this.GtkLabel6 = new global::Gtk.Label ();
- this.GtkLabel6.Name = "GtkLabel6";
- this.GtkLabel6.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Properties</b>");
- this.GtkLabel6.UseMarkup = true;
- this.frame4.LabelWidget = this.GtkLabel6;
- this.Add (this.frame4);
+ w30.Expand = false;
+ w30.Fill = false;
+ // Container child vbox3.Gtk.Box+BoxChild
+ this.cardtable = new global::Gtk.Table (((uint)(1)), ((uint)(2)), true);
+ this.cardtable.Name = "cardtable";
+ this.cardtable.RowSpacing = ((uint)(6));
+ this.cardtable.ColumnSpacing = ((uint)(6));
+ // Container child cardtable.Gtk.Table+TableChild
+ this.label16 = new global::Gtk.Label ();
+ this.label16.Name = "label16";
+ this.label16.Xalign = 0F;
+ this.label16.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Shape:</b> ");
+ this.label16.UseMarkup = true;
+ this.cardtable.Add (this.label16);
+ global::Gtk.Table.TableChild w31 = ((global::Gtk.Table.TableChild)(this.cardtable
[this.label16]));
+ w31.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child cardtable.Gtk.Table+TableChild
+ this.shapecombobox = global::Gtk.ComboBox.NewText ();
+ this.shapecombobox.AppendText (global::Mono.Unix.Catalog.GetString ("Rectangle"));
+ this.shapecombobox.AppendText (global::Mono.Unix.Catalog.GetString ("Triangle"));
+ this.shapecombobox.AppendText (global::Mono.Unix.Catalog.GetString ("Circle"));
+ this.shapecombobox.Name = "shapecombobox";
+ this.shapecombobox.Active = 0;
+ this.cardtable.Add (this.shapecombobox);
+ global::Gtk.Table.TableChild w32 = ((global::Gtk.Table.TableChild)(this.cardtable
[this.shapecombobox]));
+ w32.LeftAttach = ((uint)(1));
+ w32.RightAttach = ((uint)(2));
+ w32.YOptions = ((global::Gtk.AttachOptions)(4));
+ this.vbox3.Add (this.cardtable);
+ global::Gtk.Box.BoxChild w33 = ((global::Gtk.Box.BoxChild)(this.vbox3
[this.cardtable]));
+ w33.Position = 2;
+ w33.Expand = false;
+ w33.Fill = false;
+ // Container child vbox3.Gtk.Box+BoxChild
+ this.scoretable = new global::Gtk.Table (((uint)(1)), ((uint)(2)), true);
+ this.scoretable.Name = "scoretable";
+ this.scoretable.RowSpacing = ((uint)(6));
+ this.scoretable.ColumnSpacing = ((uint)(6));
+ // Container child scoretable.Gtk.Table+TableChild
+ this.label17 = new global::Gtk.Label ();
+ this.label17.Name = "label17";
+ this.label17.Xalign = 0F;
+ this.label17.LabelProp = global::Mono.Unix.Catalog.GetString ("<b>Points:</b> ");
+ this.label17.UseMarkup = true;
+ this.scoretable.Add (this.label17);
+ global::Gtk.Table.TableChild w34 = ((global::Gtk.Table.TableChild)(this.scoretable
[this.label17]));
+ w34.YOptions = ((global::Gtk.AttachOptions)(4));
+ // Container child scoretable.Gtk.Table+TableChild
+ this.pointsbutton = new global::Gtk.SpinButton (0, 1000, 1);
+ this.pointsbutton.CanFocus = true;
+ this.pointsbutton.Name = "pointsbutton";
+ this.pointsbutton.Adjustment.PageIncrement = 1;
+ this.pointsbutton.ClimbRate = 1;
+ this.pointsbutton.Numeric = true;
+ this.scoretable.Add (this.pointsbutton);
+ global::Gtk.Table.TableChild w35 = ((global::Gtk.Table.TableChild)(this.scoretable
[this.pointsbutton]));
+ w35.LeftAttach = ((uint)(1));
+ w35.RightAttach = ((uint)(2));
+ w35.XOptions = ((global::Gtk.AttachOptions)(4));
+ w35.YOptions = ((global::Gtk.AttachOptions)(4));
+ this.vbox3.Add (this.scoretable);
+ global::Gtk.Box.BoxChild w36 = ((global::Gtk.Box.BoxChild)(this.vbox3
[this.scoretable]));
+ w36.Position = 3;
+ w36.Expand = false;
+ w36.Fill = false;
+ this.Add (this.vbox3);
if ((this.Child != null)) {
this.Child.ShowAll ();
}
this.Show ();
- this.sortmethodcombobox.Changed += new global::System.EventHandler
(this.OnSortmethodcomboboxChanged);
- this.nameentry.Changed += new global::System.EventHandler (this.OnNameentryChanged);
- this.changebuton.Clicked += new global::System.EventHandler
(this.OnChangebutonClicked);
- this.colorbutton1.ColorSet += new global::System.EventHandler
(this.OnColorbutton1ColorSet);
- this.tagfieldcheckbutton.Clicked += new global::System.EventHandler
(this.OnTagfieldcheckbuttonClicked);
- this.trajectorycheckbutton.Clicked += new global::System.EventHandler
(this.OnTrajectorycheckbuttonClicked);
- this.taghalffieldcheckbutton.Clicked += new global::System.EventHandler
(this.OnTaghalffieldcheckbuttonClicked);
- this.trajectoryhalfcheckbutton.Clicked += new global::System.EventHandler
(this.OnTrajectoryhalffieldcheckbuttonClicked);
- this.taggoalcheckbutton.Clicked += new global::System.EventHandler
(this.OnTaggoalcheckbuttonClicked);
}
}
}
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.CodingWidget.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.CodingWidget.cs
index 1943ce8..e4d9cdd 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.CodingWidget.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Component.CodingWidget.cs
@@ -10,14 +10,19 @@ namespace LongoMatch.Gui.Component
private global::Gtk.RadioAction autoTaggingMode;
private global::Gtk.Action zoomFitAction;
private global::Gtk.RadioAction convertAction;
- private global::Gtk.VBox vbox2;
+ private global::Gtk.VBox vbox;
private global::Gtk.HBox hbox1;
private global::Gtk.Toolbar codingtoolbar;
- private global::Gtk.HBox hbox2;
- private global::Gtk.DrawingArea drawingarea1;
+ private global::Gtk.Notebook notebook;
+ private global::Gtk.HPaned hpaned1;
+ private global::Gtk.DrawingArea teamsdrawingarea;
+ private global::Gtk.HBox hbox5;
private global::LongoMatch.Gui.Component.ButtonsWidget buttonswidget;
+ private global::Gtk.Label label18;
private global::LongoMatch.Gui.Component.Timeline timeline;
+ private global::Gtk.Label label21;
private global::LongoMatch.Gui.Component.PlaysPositionViewer playspositionviewer1;
+ private global::Gtk.Label label19;
protected virtual void Build ()
{
@@ -45,10 +50,10 @@ namespace LongoMatch.Gui.Component
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.vbox = new global::Gtk.VBox ();
+ this.vbox.Name = "vbox";
+ this.vbox.Spacing = 6;
+ // Container child vbox.Gtk.Box+BoxChild
this.hbox1 = new global::Gtk.HBox ();
this.hbox1.Name = "hbox1";
this.hbox1.Spacing = 6;
@@ -62,46 +67,77 @@ namespace LongoMatch.Gui.Component
w4.Position = 0;
w4.Expand = false;
w4.Fill = false;
- this.vbox2.Add (this.hbox1);
- global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.hbox1]));
+ this.vbox.Add (this.hbox1);
+ global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox [this.hbox1]));
w5.Position = 0;
w5.Expand = false;
w5.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.drawingarea1 = new global::Gtk.DrawingArea ();
- this.drawingarea1.Name = "drawingarea1";
- this.hbox2.Add (this.drawingarea1);
- global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.hbox2
[this.drawingarea1]));
- w6.Position = 0;
- // Container child hbox2.Gtk.Box+BoxChild
+ // Container child vbox.Gtk.Box+BoxChild
+ this.notebook = new global::Gtk.Notebook ();
+ this.notebook.CanFocus = true;
+ this.notebook.Name = "notebook";
+ this.notebook.CurrentPage = 2;
+ // Container child notebook.Gtk.Notebook+NotebookChild
+ this.hpaned1 = new global::Gtk.HPaned ();
+ this.hpaned1.CanFocus = true;
+ this.hpaned1.Name = "hpaned1";
+ this.hpaned1.Position = 276;
+ // Container child hpaned1.Gtk.Paned+PanedChild
+ this.teamsdrawingarea = new global::Gtk.DrawingArea ();
+ this.teamsdrawingarea.Name = "teamsdrawingarea";
+ this.hpaned1.Add (this.teamsdrawingarea);
+ global::Gtk.Paned.PanedChild w6 = ((global::Gtk.Paned.PanedChild)(this.hpaned1
[this.teamsdrawingarea]));
+ w6.Resize = false;
+ // Container child hpaned1.Gtk.Paned+PanedChild
+ this.hbox5 = new global::Gtk.HBox ();
+ this.hbox5.Name = "hbox5";
+ this.hbox5.Spacing = 6;
+ // Container child hbox5.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 = 1;
- // Container child hbox2.Gtk.Box+BoxChild
+ this.buttonswidget.Edited = false;
+ this.hbox5.Add (this.buttonswidget);
+ global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.hbox5
[this.buttonswidget]));
+ w7.Position = 0;
+ this.hpaned1.Add (this.hbox5);
+ this.notebook.Add (this.hpaned1);
+ // Notebook tab
+ this.label18 = new global::Gtk.Label ();
+ this.label18.Name = "label18";
+ this.label18.LabelProp = global::Mono.Unix.Catalog.GetString ("page2");
+ this.notebook.SetTabLabel (this.hpaned1, this.label18);
+ this.label18.ShowAll ();
+ // Container child notebook.Gtk.Notebook+NotebookChild
this.timeline = new global::LongoMatch.Gui.Component.Timeline ();
this.timeline.Events = ((global::Gdk.EventMask)(256));
this.timeline.Name = "timeline";
- this.hbox2.Add (this.timeline);
- global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.hbox2
[this.timeline]));
- w8.Position = 2;
- // Container child hbox2.Gtk.Box+BoxChild
+ this.notebook.Add (this.timeline);
+ global::Gtk.Notebook.NotebookChild w10 =
((global::Gtk.Notebook.NotebookChild)(this.notebook [this.timeline]));
+ w10.Position = 1;
+ // Notebook tab
+ this.label21 = new global::Gtk.Label ();
+ this.label21.Name = "label21";
+ this.label21.LabelProp = global::Mono.Unix.Catalog.GetString ("page1");
+ this.notebook.SetTabLabel (this.timeline, this.label21);
+ this.label21.ShowAll ();
+ // Container child notebook.Gtk.Notebook+NotebookChild
this.playspositionviewer1 = new global::LongoMatch.Gui.Component.PlaysPositionViewer
();
this.playspositionviewer1.Events = ((global::Gdk.EventMask)(256));
this.playspositionviewer1.Name = "playspositionviewer1";
- this.hbox2.Add (this.playspositionviewer1);
- global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.hbox2
[this.playspositionviewer1]));
- w9.Position = 3;
- this.vbox2.Add (this.hbox2);
- global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.hbox2]));
- w10.Position = 1;
- this.Add (this.vbox2);
+ this.notebook.Add (this.playspositionviewer1);
+ global::Gtk.Notebook.NotebookChild w11 =
((global::Gtk.Notebook.NotebookChild)(this.notebook [this.playspositionviewer1]));
+ w11.Position = 2;
+ // Notebook tab
+ this.label19 = new global::Gtk.Label ();
+ this.label19.Name = "label19";
+ this.label19.LabelProp = global::Mono.Unix.Catalog.GetString ("page3");
+ this.notebook.SetTabLabel (this.playspositionviewer1, this.label19);
+ this.label19.ShowAll ();
+ this.vbox.Add (this.notebook);
+ global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.vbox
[this.notebook]));
+ w12.Position = 1;
+ this.Add (this.vbox);
if ((this.Child != null)) {
this.Child.ShowAll ();
}
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.EditCategoryDialog.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.EditCategoryDialog.cs
index 9ac85bc..67db6f5 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.EditCategoryDialog.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Dialog.EditCategoryDialog.cs
@@ -24,6 +24,7 @@ namespace LongoMatch.Gui.Dialog
this.timenodeproperties2 = new global::LongoMatch.Gui.Component.CategoryProperties ();
this.timenodeproperties2.Events = ((global::Gdk.EventMask)(256));
this.timenodeproperties2.Name = "timenodeproperties2";
+ this.timenodeproperties2.Edited = false;
w1.Add (this.timenodeproperties2);
global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(w1
[this.timenodeproperties2]));
w2.Position = 0;
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.NewProjectPanel.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.NewProjectPanel.cs
index a1212e1..b5430ec 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.NewProjectPanel.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.NewProjectPanel.cs
@@ -113,7 +113,7 @@ namespace LongoMatch.Gui.Panel
this.notebook1 = new global::Gtk.Notebook ();
this.notebook1.CanFocus = true;
this.notebook1.Name = "notebook1";
- this.notebook1.CurrentPage = 1;
+ this.notebook1.CurrentPage = 2;
this.notebook1.ShowBorder = false;
this.notebook1.Scrollable = true;
// Container child notebook1.Gtk.Notebook+NotebookChild
@@ -148,7 +148,6 @@ namespace LongoMatch.Gui.Panel
this.fromfileradiobutton = new global::Gtk.RadioButton
(global::Mono.Unix.Catalog.GetString ("New project using a video file"));
this.fromfileradiobutton.CanFocus = true;
this.fromfileradiobutton.Name = "fromfileradiobutton";
- this.fromfileradiobutton.Active = true;
this.fromfileradiobutton.DrawIndicator = true;
this.fromfileradiobutton.UseUnderline = true;
this.fromfileradiobutton.FocusOnClick = false;
diff --git a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.SportsTemplatesPanel.cs
b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.SportsTemplatesPanel.cs
index a157901..ed6cb56 100644
--- a/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.SportsTemplatesPanel.cs
+++ b/LongoMatch.GUI/gtk-gui/LongoMatch.Gui.Panel.SportsTemplatesPanel.cs
@@ -16,7 +16,10 @@ namespace LongoMatch.Gui.Panel
private global::Gtk.Button newteam;
private global::Gtk.Button deleteteambutton;
private global::Gtk.VSeparator vseparator2;
- private global::LongoMatch.Gui.Component.AnalysisTemplateEditor analysistemplateeditor;
+ private global::Gtk.VBox vbox4;
+ private global::LongoMatch.Gui.Component.ButtonsWidget buttonswidget;
+ private global::Gtk.HButtonBox hbuttonbox5;
+ private global::Gtk.Button savebutton;
private global::Gtk.HSeparator hseparator1;
private global::Gtk.HButtonBox hbuttonbox3;
private global::Gtk.Button backbutton;
@@ -140,24 +143,65 @@ namespace LongoMatch.Gui.Panel
w25.Expand = false;
w25.Fill = false;
// Container child hbox1.Gtk.Box+BoxChild
- this.analysistemplateeditor = new
global::LongoMatch.Gui.Component.AnalysisTemplateEditor ();
- this.analysistemplateeditor.Events = ((global::Gdk.EventMask)(256));
- this.analysistemplateeditor.Name = "analysistemplateeditor";
- this.analysistemplateeditor.Edited = false;
- this.hbox1.Add (this.analysistemplateeditor);
- global::Gtk.Box.BoxChild w26 = ((global::Gtk.Box.BoxChild)(this.hbox1
[this.analysistemplateeditor]));
- w26.Position = 2;
+ this.vbox4 = new global::Gtk.VBox ();
+ this.vbox4.Name = "vbox4";
+ this.vbox4.Spacing = 6;
+ // Container child vbox4.Gtk.Box+BoxChild
+ this.buttonswidget = new global::LongoMatch.Gui.Component.ButtonsWidget ();
+ this.buttonswidget.Events = ((global::Gdk.EventMask)(256));
+ this.buttonswidget.Name = "buttonswidget";
+ this.buttonswidget.Edited = false;
+ this.vbox4.Add (this.buttonswidget);
+ global::Gtk.Box.BoxChild w26 = ((global::Gtk.Box.BoxChild)(this.vbox4
[this.buttonswidget]));
+ w26.Position = 0;
+ // Container child vbox4.Gtk.Box+BoxChild
+ this.hbuttonbox5 = new global::Gtk.HButtonBox ();
+ this.hbuttonbox5.Name = "hbuttonbox5";
+ this.hbuttonbox5.LayoutStyle = ((global::Gtk.ButtonBoxStyle)(1));
+ // Container child hbuttonbox5.Gtk.ButtonBox+ButtonBoxChild
+ this.savebutton = new global::Gtk.Button ();
+ this.savebutton.CanFocus = true;
+ this.savebutton.Name = "savebutton";
+ this.savebutton.UseUnderline = true;
+ // Container child savebutton.Gtk.Container+ContainerChild
+ global::Gtk.Alignment w27 = 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;
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Image w29 = new global::Gtk.Image ();
+ w29.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-save",
global::Gtk.IconSize.Dialog);
+ w28.Add (w29);
+ // Container child GtkHBox.Gtk.Container+ContainerChild
+ global::Gtk.Label w31 = new global::Gtk.Label ();
+ w31.LabelProp = global::Mono.Unix.Catalog.GetString ("Save template");
+ w31.UseUnderline = true;
+ w28.Add (w31);
+ w27.Add (w28);
+ this.savebutton.Add (w27);
+ this.hbuttonbox5.Add (this.savebutton);
+ global::Gtk.ButtonBox.ButtonBoxChild w35 =
((global::Gtk.ButtonBox.ButtonBoxChild)(this.hbuttonbox5 [this.savebutton]));
+ w35.Expand = false;
+ w35.Fill = false;
+ this.vbox4.Add (this.hbuttonbox5);
+ global::Gtk.Box.BoxChild w36 = ((global::Gtk.Box.BoxChild)(this.vbox4
[this.hbuttonbox5]));
+ w36.Position = 1;
+ w36.Expand = false;
+ w36.Fill = false;
+ this.hbox1.Add (this.vbox4);
+ global::Gtk.Box.BoxChild w37 = ((global::Gtk.Box.BoxChild)(this.hbox1 [this.vbox4]));
+ w37.Position = 2;
this.vbox3.Add (this.hbox1);
- global::Gtk.Box.BoxChild w27 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.hbox1]));
- w27.Position = 0;
+ global::Gtk.Box.BoxChild w38 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.hbox1]));
+ w38.Position = 0;
// Container child vbox3.Gtk.Box+BoxChild
this.hseparator1 = new global::Gtk.HSeparator ();
this.hseparator1.Name = "hseparator1";
this.vbox3.Add (this.hseparator1);
- global::Gtk.Box.BoxChild w28 = ((global::Gtk.Box.BoxChild)(this.vbox3
[this.hseparator1]));
- w28.Position = 1;
- w28.Expand = false;
- w28.Fill = false;
+ global::Gtk.Box.BoxChild w39 = ((global::Gtk.Box.BoxChild)(this.vbox3
[this.hseparator1]));
+ w39.Position = 1;
+ w39.Expand = false;
+ w39.Fill = false;
// Container child vbox3.Gtk.Box+BoxChild
this.hbuttonbox3 = new global::Gtk.HButtonBox ();
this.hbuttonbox3.Name = "hbuttonbox3";
@@ -168,30 +212,30 @@ namespace LongoMatch.Gui.Panel
this.backbutton.Name = "backbutton";
this.backbutton.UseUnderline = true;
// Container child backbutton.Gtk.Container+ContainerChild
- global::Gtk.Alignment w29 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
+ global::Gtk.Alignment w40 = new global::Gtk.Alignment (0.5F, 0.5F, 0F, 0F);
// Container child GtkAlignment.Gtk.Container+ContainerChild
- global::Gtk.HBox w30 = new global::Gtk.HBox ();
- w30.Spacing = 2;
+ global::Gtk.HBox w41 = new global::Gtk.HBox ();
+ w41.Spacing = 2;
// Container child GtkHBox.Gtk.Container+ContainerChild
- global::Gtk.Image w31 = new global::Gtk.Image ();
- w31.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-go-back",
global::Gtk.IconSize.Dialog);
- w30.Add (w31);
+ global::Gtk.Image w42 = new global::Gtk.Image ();
+ w42.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-go-back",
global::Gtk.IconSize.Dialog);
+ w41.Add (w42);
// Container child GtkHBox.Gtk.Container+ContainerChild
- global::Gtk.Label w33 = new global::Gtk.Label ();
- w33.LabelProp = global::Mono.Unix.Catalog.GetString ("_Back");
- w33.UseUnderline = true;
- w30.Add (w33);
- w29.Add (w30);
- this.backbutton.Add (w29);
+ global::Gtk.Label w44 = new global::Gtk.Label ();
+ w44.LabelProp = global::Mono.Unix.Catalog.GetString ("_Back");
+ w44.UseUnderline = true;
+ w41.Add (w44);
+ w40.Add (w41);
+ this.backbutton.Add (w40);
this.hbuttonbox3.Add (this.backbutton);
- global::Gtk.ButtonBox.ButtonBoxChild w37 =
((global::Gtk.ButtonBox.ButtonBoxChild)(this.hbuttonbox3 [this.backbutton]));
- w37.Expand = false;
- w37.Fill = false;
+ global::Gtk.ButtonBox.ButtonBoxChild w48 =
((global::Gtk.ButtonBox.ButtonBoxChild)(this.hbuttonbox3 [this.backbutton]));
+ w48.Expand = false;
+ w48.Fill = false;
this.vbox3.Add (this.hbuttonbox3);
- global::Gtk.Box.BoxChild w38 = ((global::Gtk.Box.BoxChild)(this.vbox3
[this.hbuttonbox3]));
- w38.Position = 2;
- w38.Expand = false;
- w38.Fill = false;
+ global::Gtk.Box.BoxChild w49 = ((global::Gtk.Box.BoxChild)(this.vbox3
[this.hbuttonbox3]));
+ w49.Position = 2;
+ w49.Expand = false;
+ w49.Fill = false;
this.Add (this.vbox3);
if ((this.Child != null)) {
this.Child.ShowAll ();
diff --git a/LongoMatch.GUI/gtk-gui/gui.stetic b/LongoMatch.GUI/gtk-gui/gui.stetic
index 065015b..c5be4e2 100644
--- a/LongoMatch.GUI/gtk-gui/gui.stetic
+++ b/LongoMatch.GUI/gtk-gui/gui.stetic
@@ -95,83 +95,395 @@
</widget>
</child>
</widget>
- <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.ButtonsWidget" design-size="532 149">
+ <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.ButtonsWidget" design-size="1215 560">
<property name="MemberName" />
<child>
- <widget class="Gtk.VBox" id="vbox1">
+ <widget class="Gtk.HBox" id="hbox2">
<property name="MemberName" />
<property name="Spacing">6</property>
<child>
- <widget class="Gtk.Table" id="table1">
+ <widget class="Gtk.VBox" id="vbox2">
<property name="MemberName" />
- <property name="NRows">5</property>
- <property name="NColumns">4</property>
- <property name="RowSpacing">1</property>
- <property name="ColumnSpacing">1</property>
- <child>
- <placeholder />
- </child>
- <child>
- <placeholder />
- </child>
- <child>
- <placeholder />
- </child>
- <child>
- <placeholder />
- </child>
- <child>
- <placeholder />
- </child>
- <child>
- <placeholder />
- </child>
- <child>
- <placeholder />
- </child>
- <child>
- <placeholder />
- </child>
- <child>
- <placeholder />
- </child>
- <child>
- <placeholder />
- </child>
- <child>
- <placeholder />
- </child>
- <child>
- <placeholder />
- </child>
- <child>
- <placeholder />
- </child>
- <child>
- <placeholder />
- </child>
- <child>
- <placeholder />
- </child>
- <child>
- <placeholder />
- </child>
+ <property name="CanFocus">True</property>
+ <property name="Spacing">6</property>
<child>
- <placeholder />
+ <widget class="Gtk.HButtonBox" id="hbuttonbox2">
+ <property name="MemberName" />
+ <property name="Size">5</property>
+ <property name="LayoutStyle">Spread</property>
+ <child>
+ <widget class="Gtk.Button" id="addcatbutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Type">TextAndIcon</property>
+ <property name="Icon">stock:gtk-add Menu</property>
+ <property name="Label" translatable="yes">Add category</property>
+ <property name="UseUnderline">True</property>
+ </widget>
+ <packing>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Button" id="addtimerbutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Type">TextAndIcon</property>
+ <property name="Icon">stock:stock_alarm Menu</property>
+ <property name="Label" translatable="yes">Add timer</property>
+ <property name="UseUnderline">True</property>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Button" id="addscorebutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Type">TextAndIcon</property>
+ <property name="Icon">stock:gtk-zoom-100 Menu</property>
+ <property name="Label" translatable="yes">Add score</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="addcardbutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Type">TextAndIcon</property>
+ <property name="Icon">stock:stock_media-stop Menu</property>
+ <property name="Label" translatable="yes">Add penalty card</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>
+ <child>
+ <widget class="Gtk.Button" id="addtagbutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Type">TextAndIcon</property>
+ <property name="Icon">stock:stock_zoom-in Menu</property>
+ <property name="Label" translatable="yes">Add tag</property>
+ <property name="UseUnderline">True</property>
+ </widget>
+ <packing>
+ <property name="Position">4</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">False</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
</child>
<child>
- <placeholder />
+ <widget class="Gtk.ScrolledWindow" id="scrolledwindow4">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <child>
+ <widget class="Gtk.Viewport" id="GtkViewport">
+ <property name="MemberName" />
+ <property name="ShadowType">None</property>
+ <child>
+ <widget class="Gtk.DrawingArea" id="drawingarea1">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">True</property>
+ </packing>
</child>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">True</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.VBox" id="rightbox">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
<child>
- <placeholder />
+ <widget class="Gtk.HBox" id="positionsbox">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="Gtk.Frame" id="frame8">
+ <property name="MemberName" />
+ <property name="ShadowType">None</property>
+ <child>
+ <widget class="Gtk.Alignment" id="GtkAlignment13">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="Yalign">0</property>
+ <property name="LeftPadding">12</property>
+ <child>
+ <widget class="Gtk.HBox" id="hbox6">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="Gtk.EventBox" id="fieldeventbox">
+ <property name="MemberName" />
+ <child>
+ <widget class="Gtk.Image" id="fieldimage">
+ <property name="MemberName" />
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Button" id="resetfieldbutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Type">TextAndIcon</property>
+ <property name="Icon">stock:gtk-refresh Menu</property>
+ <property name="Label" translatable="yes" />
+ <property name="UseUnderline">True</property>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="GtkLabel17">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes"><b>Field</b></property>
+ <property name="UseMarkup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Frame" id="frame9">
+ <property name="MemberName" />
+ <property name="ShadowType">None</property>
+ <child>
+ <widget class="Gtk.Alignment" id="GtkAlignment15">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="Yalign">0</property>
+ <property name="LeftPadding">12</property>
+ <child>
+ <widget class="Gtk.HBox" id="hbox7">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="Gtk.EventBox" id="hfieldeventbox">
+ <property name="MemberName" />
+ <child>
+ <widget class="Gtk.Image" id="hfieldimage">
+ <property name="MemberName" />
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Button" id="resethfieldbutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Type">TextAndIcon</property>
+ <property name="Icon">stock:gtk-refresh Menu</property>
+ <property name="Label" translatable="yes" />
+ <property name="UseUnderline">True</property>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="GtkLabel20">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes"><b>Half
field</b></property>
+ <property name="UseMarkup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Frame" id="frame10">
+ <property name="MemberName" />
+ <property name="ShadowType">None</property>
+ <child>
+ <widget class="Gtk.Alignment" id="GtkAlignment17">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="Yalign">0</property>
+ <property name="LeftPadding">12</property>
+ <child>
+ <widget class="Gtk.HBox" id="hbox8">
+ <property name="MemberName" />
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="Gtk.EventBox" id="goaleventbox">
+ <property name="MemberName" />
+ <child>
+ <widget class="Gtk.Image" id="goalimage">
+ <property name="MemberName" />
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Button" id="resetfgoalbutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Type">TextAndIcon</property>
+ <property name="Icon">stock:gtk-refresh Menu</property>
+ <property name="Label" translatable="yes" />
+ <property name="UseUnderline">True</property>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="GtkLabel22">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes"><b>Goal</b></property>
+ <property name="UseMarkup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</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>
- <placeholder />
+ <widget class="Gtk.Frame" id="propsframe">
+ <property name="MemberName" />
+ <property name="Visible">False</property>
+ <property name="Sensitive">False</property>
+ <child>
+ <widget class="Gtk.Alignment" id="GtkAlignment7">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="Yalign">0</property>
+ <property name="LeftPadding">12</property>
+ <child>
+ <widget class="Gtk.ScrolledWindow" id="scrolledwindow5">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="HscrollbarPolicy">Never</property>
+ <child>
+ <widget class="Gtk.Viewport" id="GtkViewport1">
+ <property name="MemberName" />
+ <property name="ShadowType">None</property>
+ <child>
+ <widget class="LongoMatch.Gui.Component.CategoryProperties"
id="categoryproperties1">
+ <property name="MemberName" />
+ <property name="Events">ButtonPressMask</property>
+ <property name="Edited">False</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="GtkLabel10">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes"><b>Properties</b></property>
+ <property name="UseMarkup">True</property>
+ </widget>
+ <packing>
+ <property name="type">label_item</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">True</property>
+ </packing>
</child>
</widget>
<packing>
- <property name="Position">0</property>
+ <property name="Position">1</property>
<property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
</packing>
</child>
</widget>
@@ -467,328 +779,359 @@
</widget>
</child>
</widget>
- <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.CategoryProperties" design-size="674 370">
+ <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.CategoryProperties" design-size="318 557">
<property name="MemberName" />
<child>
- <widget class="Gtk.Frame" id="frame4">
+ <widget class="Gtk.VBox" id="vbox3">
<property name="MemberName" />
- <property name="ShadowType">In</property>
+ <property name="Spacing">6</property>
<child>
- <widget class="Gtk.Alignment" id="GtkAlignment1">
+ <widget class="Gtk.Table" id="table2">
<property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="Yalign">0</property>
- <property name="LeftPadding">12</property>
+ <property name="NRows">6</property>
+ <property name="NColumns">2</property>
+ <property name="Homogeneous">True</property>
+ <property name="RowSpacing">6</property>
+ <property name="ColumnSpacing">6</property>
+ <child>
+ <widget class="Gtk.ColorButton" id="colorbutton1">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Events">ButtonMotionMask, ButtonPressMask, ButtonReleaseMask</property>
+ <property name="Alpha">-1</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">1</property>
+ <property name="BottomAttach">2</property>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.ColorButton" id="colorbutton2">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Events">ButtonMotionMask, ButtonPressMask, ButtonReleaseMask</property>
+ <property name="Alpha">-1</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">2</property>
+ <property name="BottomAttach">3</property>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
<child>
- <widget class="Gtk.VBox" id="vbox3">
+ <widget class="Gtk.Label" id="label1">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes"><b>Name:</b></property>
+ <property name="UseMarkup">True</property>
+ </widget>
+ <packing>
+ <property name="AutoSize">False</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label13">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes"><b>Text color:</b> </property>
+ <property name="UseMarkup">True</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">2</property>
+ <property name="BottomAttach">3</property>
+ <property name="AutoSize">False</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">True</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label4">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes"><b>Color:</b> </property>
+ <property name="UseMarkup">True</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">1</property>
+ <property name="BottomAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label7">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes"><b>Lead time (s):</b></property>
+ <property name="UseMarkup">True</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">4</property>
+ <property name="BottomAttach">5</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label8">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes"><b>Lag time (s):</b></property>
+ <property name="UseMarkup">True</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">5</property>
+ <property name="BottomAttach">6</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.SpinButton" id="lagtimebutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Upper">1000</property>
+ <property name="PageIncrement">1</property>
+ <property name="StepIncrement">1</property>
+ <property name="ClimbRate">1</property>
+ <property name="Numeric">True</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">5</property>
+ <property name="BottomAttach">6</property>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.SpinButton" id="leadtimebutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Upper">1000</property>
+ <property name="PageIncrement">1</property>
+ <property name="StepIncrement">1</property>
+ <property name="ClimbRate">1</property>
+ <property name="Numeric">True</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">4</property>
+ <property name="BottomAttach">5</property>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Entry" id="nameentry">
+ <property name="MemberName" />
+ <property name="WidthRequest">76</property>
+ <property name="CanFocus">True</property>
+ <property name="IsEditable">True</property>
+ <property name="InvisibleChar">●</property>
+ </widget>
+ <packing>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">False</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">True</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="taglabel">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes"><b>Tag mode:</b> </property>
+ <property name="UseMarkup">True</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">3</property>
+ <property name="BottomAttach">4</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.ComboBox" id="tagmodecombobox">
+ <property name="MemberName" />
+ <property name="IsTextCombo">True</property>
+ <property name="Items" translatable="yes">Automatic
+Manual</property>
+ <property name="Active">0</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">3</property>
+ <property name="BottomAttach">4</property>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">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.Table" id="cattable">
+ <property name="MemberName" />
+ <property name="NRows">7</property>
+ <property name="NColumns">2</property>
+ <property name="Homogeneous">True</property>
+ <property name="RowSpacing">6</property>
+ <property name="ColumnSpacing">6</property>
+ <child>
+ <widget class="Gtk.ComboBox" id="fieldcombobox">
+ <property name="MemberName" />
+ <property name="IsTextCombo">True</property>
+ <property name="Items" translatable="yes">Not tagged
+Tag as point
+Tag as trayectory</property>
+ <property name="Active">0</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">4</property>
+ <property name="BottomAttach">5</property>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.ComboBox" id="goalcombobox">
+ <property name="MemberName" />
+ <property name="IsTextCombo">True</property>
+ <property name="Items" translatable="yes">Not tagged
+Tag as point</property>
+ <property name="Active">0</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">6</property>
+ <property name="BottomAttach">7</property>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.HBox" id="hbox5">
<property name="MemberName" />
<property name="Spacing">6</property>
<child>
- <widget class="Gtk.Table" id="table2">
+ <widget class="Gtk.Label" id="hotKeyLabel">
<property name="MemberName" />
- <property name="NRows">3</property>
- <property name="NColumns">4</property>
- <property name="RowSpacing">6</property>
- <property name="ColumnSpacing">6</property>
- <child>
- <widget class="Gtk.ColorButton" id="colorbutton1">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Events">ButtonMotionMask, ButtonPressMask,
ButtonReleaseMask</property>
- <property name="Alpha">-1</property>
- <signal name="ColorSet" handler="OnColorbutton1ColorSet" />
- </widget>
- <packing>
- <property name="LeftAttach">3</property>
- <property name="RightAttach">4</property>
- <property name="AutoSize">False</property>
- <property name="XOptions">Fill</property>
- <property name="YOptions">0</property>
- <property name="XExpand">False</property>
- <property name="XFill">True</property>
- <property name="XShrink">False</property>
- <property name="YExpand">False</property>
- <property name="YFill">False</property>
- <property name="YShrink">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.HBox" id="hbox5">
- <property name="MemberName" />
- <property name="Spacing">6</property>
- <child>
- <widget class="Gtk.Label" id="hotKeyLabel">
- <property name="MemberName" />
- <property name="LabelProp" translatable="yes">none</property>
- </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.Button" id="changebuton">
- <property name="MemberName" />
- <property name="Sensitive">False</property>
- <property name="CanFocus">True</property>
- <property name="Type">TextOnly</property>
- <property name="Label" translatable="yes">Change</property>
- <property name="UseUnderline">True</property>
- <signal name="Clicked" handler="OnChangebutonClicked" />
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="AutoSize">False</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="TopAttach">2</property>
- <property name="BottomAttach">3</property>
- <property name="LeftAttach">1</property>
- <property name="RightAttach">2</property>
- <property name="AutoSize">False</property>
- <property name="XOptions">Fill</property>
- <property name="YOptions">0</property>
- <property name="XExpand">False</property>
- <property name="XFill">True</property>
- <property name="XShrink">False</property>
- <property name="YExpand">False</property>
- <property name="YFill">False</property>
- <property name="YShrink">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Label" id="label1">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="LabelProp" translatable="yes"><b>Name:</b></property>
- <property name="UseMarkup">True</property>
- </widget>
- <packing>
- <property name="AutoSize">False</property>
- <property name="XOptions">Fill</property>
- <property name="YOptions">Fill</property>
- <property name="XExpand">False</property>
- <property name="XFill">True</property>
- <property name="XShrink">False</property>
- <property name="YExpand">False</property>
- <property name="YFill">True</property>
- <property name="YShrink">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Label" id="label4">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="LabelProp" translatable="yes"><b>Color:</b>
</property>
- <property name="UseMarkup">True</property>
- </widget>
- <packing>
- <property name="LeftAttach">2</property>
- <property name="RightAttach">3</property>
- <property name="AutoSize">True</property>
- <property name="XOptions">Fill</property>
- <property name="YOptions">Fill</property>
- <property name="XExpand">False</property>
- <property name="XFill">True</property>
- <property name="XShrink">False</property>
- <property name="YExpand">False</property>
- <property name="YFill">True</property>
- <property name="YShrink">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Label" id="label6">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="LabelProp" translatable="yes"><b>HotKey:</b></property>
- <property name="UseMarkup">True</property>
- </widget>
- <packing>
- <property name="TopAttach">2</property>
- <property name="BottomAttach">3</property>
- <property name="AutoSize">False</property>
- <property name="XOptions">Fill</property>
- <property name="YOptions">Fill</property>
- <property name="XExpand">False</property>
- <property name="XFill">True</property>
- <property name="XShrink">False</property>
- <property name="YExpand">False</property>
- <property name="YFill">True</property>
- <property name="YShrink">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Label" id="label7">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="LabelProp" translatable="yes"><b>Lead
time:</b></property>
- <property name="UseMarkup">True</property>
- </widget>
- <packing>
- <property name="TopAttach">1</property>
- <property name="BottomAttach">2</property>
- <property name="AutoSize">False</property>
- <property name="XOptions">Fill</property>
- <property name="YOptions">Fill</property>
- <property name="XExpand">False</property>
- <property name="XFill">True</property>
- <property name="XShrink">False</property>
- <property name="YExpand">False</property>
- <property name="YFill">True</property>
- <property name="YShrink">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Label" id="label8">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="LabelProp" translatable="yes"><b>Lag time:</b></property>
- <property name="UseMarkup">True</property>
- </widget>
- <packing>
- <property name="TopAttach">1</property>
- <property name="BottomAttach">2</property>
- <property name="LeftAttach">2</property>
- <property name="RightAttach">3</property>
- <property name="AutoSize">True</property>
- <property name="XOptions">Fill</property>
- <property name="YOptions">Fill</property>
- <property name="XExpand">False</property>
- <property name="XFill">True</property>
- <property name="XShrink">False</property>
- <property name="YExpand">False</property>
- <property name="YFill">True</property>
- <property name="YShrink">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Label" id="label9">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="LabelProp" translatable="yes"><b>Sort
Method</b></property>
- <property name="UseMarkup">True</property>
- </widget>
- <packing>
- <property name="TopAttach">2</property>
- <property name="BottomAttach">3</property>
- <property name="LeftAttach">2</property>
- <property name="RightAttach">3</property>
- <property name="AutoSize">True</property>
- <property name="XOptions">Fill</property>
- <property name="YOptions">Fill</property>
- <property name="XExpand">False</property>
- <property name="XFill">True</property>
- <property name="XShrink">False</property>
- <property name="YExpand">False</property>
- <property name="YFill">True</property>
- <property name="YShrink">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.SpinButton" id="lagtimebutton">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Upper">1000</property>
- <property name="PageIncrement">1</property>
- <property name="StepIncrement">1</property>
- <property name="ClimbRate">1</property>
- <property name="Numeric">True</property>
- </widget>
- <packing>
- <property name="TopAttach">1</property>
- <property name="BottomAttach">2</property>
- <property name="LeftAttach">3</property>
- <property name="RightAttach">4</property>
- <property name="AutoSize">False</property>
- <property name="YOptions">Fill</property>
- <property name="XExpand">True</property>
- <property name="XFill">True</property>
- <property name="XShrink">False</property>
- <property name="YExpand">False</property>
- <property name="YFill">True</property>
- <property name="YShrink">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.SpinButton" id="leadtimebutton">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Upper">1000</property>
- <property name="PageIncrement">1</property>
- <property name="StepIncrement">1</property>
- <property name="ClimbRate">1</property>
- <property name="Numeric">True</property>
- </widget>
- <packing>
- <property name="TopAttach">1</property>
- <property name="BottomAttach">2</property>
- <property name="LeftAttach">1</property>
- <property name="RightAttach">2</property>
- <property name="AutoSize">True</property>
- <property name="XOptions">Fill</property>
- <property name="YOptions">Fill</property>
- <property name="XExpand">False</property>
- <property name="XFill">True</property>
- <property name="XShrink">False</property>
- <property name="YExpand">False</property>
- <property name="YFill">True</property>
- <property name="YShrink">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Entry" id="nameentry">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="IsEditable">True</property>
- <property name="InvisibleChar">●</property>
- <signal name="Changed" handler="OnNameentryChanged" />
- </widget>
- <packing>
- <property name="LeftAttach">1</property>
- <property name="RightAttach">2</property>
- <property name="AutoSize">False</property>
- <property name="YOptions">Fill</property>
- <property name="XExpand">True</property>
- <property name="XFill">True</property>
- <property name="XShrink">False</property>
- <property name="YExpand">False</property>
- <property name="YFill">True</property>
- <property name="YShrink">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.ComboBox" id="sortmethodcombobox">
- <property name="MemberName" />
- <property name="IsTextCombo">True</property>
- <property name="Items" translatable="yes">Sort by name
-Sort by start time
-Sort by stop time
-Sort by duration</property>
- <property name="Active">3</property>
- <signal name="Changed" handler="OnSortmethodcomboboxChanged" />
- </widget>
- <packing>
- <property name="TopAttach">2</property>
- <property name="BottomAttach">3</property>
- <property name="LeftAttach">3</property>
- <property name="RightAttach">4</property>
- <property name="AutoSize">False</property>
- <property name="XOptions">Fill</property>
- <property name="YOptions">0</property>
- <property name="XExpand">False</property>
- <property name="XFill">True</property>
- <property name="XShrink">False</property>
- <property name="YExpand">False</property>
- <property name="YFill">False</property>
- <property name="YShrink">False</property>
- </packing>
- </child>
+ <property name="LabelProp" translatable="yes">none</property>
</widget>
<packing>
<property name="Position">0</property>
@@ -798,235 +1141,400 @@ Sort by duration</property>
</packing>
</child>
<child>
- <widget class="Gtk.VBox" id="vbox5">
+ <widget class="Gtk.Button" id="changebuton">
<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.Frame" id="frame5">
- <property name="MemberName" />
- <property name="ShadowType">None</property>
- <child>
- <widget class="Gtk.Alignment" id="GtkAlignment7">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="Yalign">0</property>
- <property name="LeftPadding">12</property>
- <child>
- <widget class="Gtk.VBox" id="vbox4">
- <property name="MemberName" />
- <property name="Spacing">6</property>
- <child>
- <widget class="Gtk.CheckButton" id="tagfieldcheckbutton">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Label" translatable="yes">Enable</property>
- <property name="DrawIndicator">True</property>
- <property name="HasLabel">True</property>
- <property name="UseUnderline">True</property>
- <signal name="Clicked" handler="OnTagfieldcheckbuttonClicked" />
- </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.CheckButton" id="trajectorycheckbutton">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Label" translatable="yes">Trajectory</property>
- <property name="DrawIndicator">True</property>
- <property name="HasLabel">True</property>
- <property name="UseUnderline">True</property>
- <signal name="Clicked" handler="OnTrajectorycheckbuttonClicked" />
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="Gtk.Label" id="GtkLabel9">
- <property name="MemberName" />
- <property name="LabelProp" translatable="yes"><b>Field
position</b></property>
- <property name="UseMarkup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Frame" id="frame6">
- <property name="MemberName" />
- <property name="ShadowType">None</property>
- <child>
- <widget class="Gtk.Alignment" id="GtkAlignment8">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="Yalign">0</property>
- <property name="LeftPadding">12</property>
- <child>
- <widget class="Gtk.VBox" id="vbox6">
- <property name="MemberName" />
- <property name="Spacing">6</property>
- <child>
- <widget class="Gtk.CheckButton" id="taghalffieldcheckbutton">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Label" translatable="yes">Enable</property>
- <property name="DrawIndicator">True</property>
- <property name="HasLabel">True</property>
- <property name="UseUnderline">True</property>
- <signal name="Clicked" handler="OnTaghalffieldcheckbuttonClicked" />
- </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.CheckButton" id="trajectoryhalfcheckbutton">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Label" translatable="yes">Trajectory</property>
- <property name="DrawIndicator">True</property>
- <property name="HasLabel">True</property>
- <property name="UseUnderline">True</property>
- <signal name="Clicked"
handler="OnTrajectoryhalffieldcheckbuttonClicked" />
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="Gtk.Label" id="GtkLabel12">
- <property name="MemberName" />
- <property name="LabelProp" translatable="yes"><b>Half field
position</b></property>
- <property name="UseMarkup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="AutoSize">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Frame" id="frame7">
- <property name="MemberName" />
- <property name="ShadowType">None</property>
- <child>
- <widget class="Gtk.Alignment" id="GtkAlignment9">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="Yalign">0</property>
- <property name="LeftPadding">12</property>
- <child>
- <widget class="Gtk.CheckButton" id="taggoalcheckbutton">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Label" translatable="yes">Enable</property>
- <property name="DrawIndicator">True</property>
- <property name="HasLabel">True</property>
- <property name="UseUnderline">True</property>
- <signal name="Clicked" handler="OnTaggoalcheckbuttonClicked" />
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="Gtk.Label" id="GtkLabel13">
- <property name="MemberName" />
- <property name="LabelProp" translatable="yes"><b>Goal
Position</b></property>
- <property name="UseMarkup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</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">False</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Table" id="table1">
- <property name="MemberName" />
- <property name="NColumns">3</property>
- <property name="RowSpacing">6</property>
- <property name="ColumnSpacing">6</property>
- <child>
- <placeholder />
- </child>
- <child>
- <placeholder />
- </child>
- <child>
- <placeholder />
- </child>
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="AutoSize">True</property>
- </packing>
- </child>
+ <property name="Sensitive">False</property>
+ <property name="CanFocus">True</property>
+ <property name="Type">TextOnly</property>
+ <property name="Label" translatable="yes">Change</property>
+ <property name="UseUnderline">True</property>
</widget>
<packing>
<property name="Position">1</property>
- <property name="AutoSize">True</property>
+ <property name="AutoSize">False</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
</packing>
</child>
</widget>
+ <packing>
+ <property name="TopAttach">2</property>
+ <property name="BottomAttach">3</property>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">False</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">True</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.ComboBox" id="hfieldcombobox">
+ <property name="MemberName" />
+ <property name="IsTextCombo">True</property>
+ <property name="Items" translatable="yes">Not tagged
+Tag as point
+Tag as trayectory</property>
+ <property name="Active">0</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">5</property>
+ <property name="BottomAttach">6</property>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label10">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes"><b>Field position:</b></property>
+ <property name="UseMarkup">True</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">4</property>
+ <property name="BottomAttach">5</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label11">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes"><b>Half field
position:</b></property>
+ <property name="UseMarkup">True</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">5</property>
+ <property name="BottomAttach">6</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label12">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes"><b>Goal position:</b></property>
+ <property name="UseMarkup">True</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">6</property>
+ <property name="BottomAttach">7</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label14">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes"><b>Show tags:</b> </property>
+ <property name="UseMarkup">True</property>
+ </widget>
+ <packing>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label15">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes"><b>Tags per row:</b> </property>
+ <property name="UseMarkup">True</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">1</property>
+ <property name="BottomAttach">2</property>
+ <property name="AutoSize">False</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">True</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label6">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes"><b>HotKey:</b></property>
+ <property name="UseMarkup">True</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">2</property>
+ <property name="BottomAttach">3</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label9">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes"><b>Sort Method</b></property>
+ <property name="UseMarkup">True</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">3</property>
+ <property name="BottomAttach">4</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.ComboBox" id="sortmethodcombobox">
+ <property name="MemberName" />
+ <property name="IsTextCombo">True</property>
+ <property name="Items" translatable="yes">Sort by name
+Sort by start time
+Sort by stop time
+Sort by duration</property>
+ <property name="Active">0</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">3</property>
+ <property name="BottomAttach">4</property>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.CheckButton" id="tagscheckbutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Label" translatable="yes" />
+ <property name="Active">True</property>
+ <property name="DrawIndicator">True</property>
+ <property name="HasLabel">True</property>
+ </widget>
+ <packing>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.SpinButton" id="tprbutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Lower">1</property>
+ <property name="Upper">10</property>
+ <property name="PageIncrement">1</property>
+ <property name="StepIncrement">1</property>
+ <property name="ClimbRate">1</property>
+ <property name="Numeric">True</property>
+ <property name="Value">2</property>
+ </widget>
+ <packing>
+ <property name="TopAttach">1</property>
+ <property name="BottomAttach">2</property>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">False</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">True</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
</child>
</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.Label" id="GtkLabel6">
+ <widget class="Gtk.Table" id="cardtable">
<property name="MemberName" />
- <property name="LabelProp" translatable="yes"><b>Properties</b></property>
- <property name="UseMarkup">True</property>
+ <property name="NColumns">2</property>
+ <property name="Homogeneous">True</property>
+ <property name="RowSpacing">6</property>
+ <property name="ColumnSpacing">6</property>
+ <child>
+ <widget class="Gtk.Label" id="label16">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes"><b>Shape:</b> </property>
+ <property name="UseMarkup">True</property>
+ </widget>
+ <packing>
+ <property name="AutoSize">False</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">True</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.ComboBox" id="shapecombobox">
+ <property name="MemberName" />
+ <property name="IsTextCombo">True</property>
+ <property name="Items" translatable="yes">Rectangle
+Triangle
+Circle</property>
+ <property name="Active">0</property>
+ </widget>
+ <packing>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">False</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">True</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
</widget>
<packing>
- <property name="type">label_item</property>
+ <property name="Position">2</property>
+ <property name="AutoSize">False</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Table" id="scoretable">
+ <property name="MemberName" />
+ <property name="NColumns">2</property>
+ <property name="Homogeneous">True</property>
+ <property name="RowSpacing">6</property>
+ <property name="ColumnSpacing">6</property>
+ <child>
+ <widget class="Gtk.Label" id="label17">
+ <property name="MemberName" />
+ <property name="Xalign">0</property>
+ <property name="LabelProp" translatable="yes"><b>Points:</b> </property>
+ <property name="UseMarkup">True</property>
+ </widget>
+ <packing>
+ <property name="AutoSize">False</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">True</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.SpinButton" id="pointsbutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Upper">1000</property>
+ <property name="PageIncrement">1</property>
+ <property name="StepIncrement">1</property>
+ <property name="ClimbRate">1</property>
+ <property name="Numeric">True</property>
+ </widget>
+ <packing>
+ <property name="LeftAttach">1</property>
+ <property name="RightAttach">2</property>
+ <property name="AutoSize">True</property>
+ <property name="XOptions">Fill</property>
+ <property name="YOptions">Fill</property>
+ <property name="XExpand">False</property>
+ <property name="XFill">True</property>
+ <property name="XShrink">False</property>
+ <property name="YExpand">False</property>
+ <property name="YFill">True</property>
+ <property name="YShrink">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">3</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
</packing>
</child>
</widget>
@@ -2324,6 +2832,7 @@ Hotkeys with a single key are also allowed with Ctrl+key.</property>
<widget class="LongoMatch.Gui.Component.CategoryProperties" id="timenodeproperties2">
<property name="MemberName" />
<property name="Events">ButtonPressMask</property>
+ <property name="Edited">False</property>
</widget>
<packing>
<property name="Position">0</property>
@@ -5086,6 +5595,7 @@ You can continue with the current capture, cancel it or save your project.
<property name="MemberName" />
<property name="CanFocus">True</property>
<property name="Label" translatable="yes">Histogram</property>
+ <property name="Active">True</property>
<property name="DrawIndicator">True</property>
<property name="HasLabel">True</property>
<property name="UseUnderline">True</property>
@@ -5488,55 +5998,16 @@ You can continue with the current capture, cancel it or save your project.
</widget>
</child>
</widget>
- <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.AnalysisComponent" design-size="1524 648">
+ <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.AnalysisComponent" design-size="1524 875">
<action-group name="Default" />
<property name="MemberName" />
<property name="Visible">False</property>
<child>
- <widget class="Gtk.VPaned" id="vpaned1">
+ <widget class="Gtk.HBox" id="hbox1">
<property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Position">438</property>
- <child>
- <widget class="Gtk.HPaned" id="hpaned">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Position">261</property>
- <child>
- <widget class="LongoMatch.Gui.Component.PlaysSelectionWidget" id="playsSelection">
- <property name="MemberName" />
- <property name="Events">ButtonPressMask</property>
- </widget>
- <packing>
- <property name="Resize">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.HBox" id="videowidgetsbox">
- <property name="MemberName" />
- <property name="Spacing">6</property>
- <child>
- <widget class="LongoMatch.Gui.PlayerCapturerBin" id="playercapturer">
- <property name="MemberName" />
- <property name="Events">ButtonPressMask</property>
- </widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">False</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="Resize">False</property>
- </packing>
- </child>
+ <property name="Spacing">6</property>
<child>
- <widget class="LongoMatch.Gui.Component.CodingWidget" id="codingwidget">
- <property name="MemberName" />
- <property name="Events">ButtonPressMask</property>
- </widget>
+ <placeholder />
</child>
</widget>
</child>
@@ -5705,34 +6176,6 @@ You can continue with the current capture, cancel it or save your project.
</widget>
</child>
</widget>
- <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.ButtonTagger" design-size="204 43">
- <property name="MemberName" />
- <property name="Visible">False</property>
- <child>
- <widget class="Gtk.HBox" id="buttonbox">
- <property name="MemberName" />
- <child>
- <placeholder />
- </child>
- <child>
- <widget class="Gtk.Button" id="cancelbutton">
- <property name="MemberName" />
- <property name="Type">TextAndIcon</property>
- <property name="Icon">stock:gtk-cancel Menu</property>
- <property name="Label" translatable="yes" />
- <property name="UseUnderline">True</property>
- </widget>
- <packing>
- <property name="PackType">End</property>
- <property name="Position">1</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
<widget class="Gtk.Bin" id="LongoMatch.Gui.Panel.WelcomePanel" design-size="861 345">
<property name="MemberName" />
<property name="Visible">False</property>
@@ -5992,7 +6435,7 @@ You can continue with the current capture, cancel it or save your project.
<widget class="Gtk.Notebook" id="notebook1">
<property name="MemberName" />
<property name="CanFocus">True</property>
- <property name="CurrentPage">1</property>
+ <property name="CurrentPage">2</property>
<property name="ShowBorder">False</property>
<property name="Scrollable">True</property>
<child>
@@ -8798,7 +9241,7 @@ Click 2 players to swap them</property>
</widget>
</child>
</widget>
- <widget class="Gtk.Bin" id="LongoMatch.Gui.Panel.SportsTemplatesPanel" design-size="1087 586">
+ <widget class="Gtk.Bin" id="LongoMatch.Gui.Panel.SportsTemplatesPanel" design-size="1242 783">
<property name="MemberName" />
<property name="Visible">False</property>
<child>
@@ -8916,10 +9359,47 @@ Click 2 players to swap them</property>
</packing>
</child>
<child>
- <widget class="LongoMatch.Gui.Component.AnalysisTemplateEditor" id="analysistemplateeditor">
+ <widget class="Gtk.VBox" id="vbox4">
<property name="MemberName" />
- <property name="Events">ButtonPressMask</property>
- <property name="Edited">False</property>
+ <property name="Spacing">6</property>
+ <child>
+ <widget class="LongoMatch.Gui.Component.ButtonsWidget" id="buttonswidget">
+ <property name="MemberName" />
+ <property name="Events">ButtonPressMask</property>
+ <property name="Edited">False</property>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.HButtonBox" id="hbuttonbox5">
+ <property name="MemberName" />
+ <property name="Size">1</property>
+ <property name="LayoutStyle">Spread</property>
+ <child>
+ <widget class="Gtk.Button" id="savebutton">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Type">TextAndIcon</property>
+ <property name="Icon">stock:gtk-save Dialog</property>
+ <property name="Label" translatable="yes">Save template</property>
+ <property name="UseUnderline">True</property>
+ </widget>
+ <packing>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
</widget>
<packing>
<property name="Position">2</property>
@@ -8973,318 +9453,6 @@ Click 2 players to swap them</property>
</widget>
</child>
</widget>
- <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.AnalysisTemplateEditor" design-size="1300 540">
- <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="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="Gtk.VBox" id="vbox3">
- <property name="MemberName" />
- <property name="Spacing">6</property>
- <child>
- <widget class="Gtk.HBox" id="hbox4">
- <property name="MemberName" />
- <property name="Spacing">6</property>
- <child>
- <widget class="Gtk.Frame" id="frame8">
- <property name="MemberName" />
- <property name="ShadowType">None</property>
- <child>
- <widget class="Gtk.Alignment" id="GtkAlignment13">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="Yalign">0</property>
- <property name="LeftPadding">12</property>
- <child>
- <widget class="Gtk.HBox" id="hbox6">
- <property name="MemberName" />
- <property name="Spacing">6</property>
- <child>
- <widget class="Gtk.EventBox" id="fieldeventbox">
- <property name="MemberName" />
- <child>
- <widget class="Gtk.Image" id="fieldimage">
- <property name="MemberName" />
- </widget>
- </child>
- </widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Button" id="resetfieldbutton">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Type">TextAndIcon</property>
- <property name="Icon">stock:gtk-refresh Menu</property>
- <property name="Label" translatable="yes" />
- <property name="UseUnderline">True</property>
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="Gtk.Label" id="GtkLabel17">
- <property name="MemberName" />
- <property name="LabelProp" translatable="yes"><b>Field</b></property>
- <property name="UseMarkup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Frame" id="frame9">
- <property name="MemberName" />
- <property name="ShadowType">None</property>
- <child>
- <widget class="Gtk.Alignment" id="GtkAlignment15">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="Yalign">0</property>
- <property name="LeftPadding">12</property>
- <child>
- <widget class="Gtk.HBox" id="hbox7">
- <property name="MemberName" />
- <property name="Spacing">6</property>
- <child>
- <widget class="Gtk.EventBox" id="hfieldeventbox">
- <property name="MemberName" />
- <child>
- <widget class="Gtk.Image" id="hfieldimage">
- <property name="MemberName" />
- </widget>
- </child>
- </widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Button" id="resethfieldbutton">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Type">TextAndIcon</property>
- <property name="Icon">stock:gtk-refresh Menu</property>
- <property name="Label" translatable="yes" />
- <property name="UseUnderline">True</property>
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="Gtk.Label" id="GtkLabel20">
- <property name="MemberName" />
- <property name="LabelProp" translatable="yes"><b>Half
field</b></property>
- <property name="UseMarkup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="AutoSize">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Frame" id="frame10">
- <property name="MemberName" />
- <property name="ShadowType">None</property>
- <child>
- <widget class="Gtk.Alignment" id="GtkAlignment17">
- <property name="MemberName" />
- <property name="Xalign">0</property>
- <property name="Yalign">0</property>
- <property name="LeftPadding">12</property>
- <child>
- <widget class="Gtk.HBox" id="hbox8">
- <property name="MemberName" />
- <property name="Spacing">6</property>
- <child>
- <widget class="Gtk.EventBox" id="goaleventbox">
- <property name="MemberName" />
- <child>
- <widget class="Gtk.Image" id="goalimage">
- <property name="MemberName" />
- </widget>
- </child>
- </widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Button" id="resetfgoalbutton">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Type">TextAndIcon</property>
- <property name="Icon">stock:gtk-refresh Menu</property>
- <property name="Label" translatable="yes" />
- <property name="UseUnderline">True</property>
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="AutoSize">True</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- <child>
- <widget class="Gtk.Label" id="GtkLabel22">
- <property name="MemberName" />
- <property name="LabelProp" translatable="yes"><b>Goal</b></property>
- <property name="UseMarkup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</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="LongoMatch.Gui.Component.CategoryProperties" id="categoryproperties">
- <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>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="Position">0</property>
- <property name="AutoSize">True</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.HButtonBox" id="hbuttonbox2">
- <property name="MemberName" />
- <property name="Size">3</property>
- <property name="LayoutStyle">Spread</property>
- <child>
- <widget class="Gtk.Button" id="savebutton">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Type">TextAndIcon</property>
- <property name="Icon">stock:gtk-save Dialog</property>
- <property name="Label" translatable="yes">Save template</property>
- <property name="UseUnderline">True</property>
- </widget>
- <packing>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Button" id="newbutton">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Type">TextAndIcon</property>
- <property name="Icon">stock:gtk-add Dialog</property>
- <property name="Label" translatable="yes">New category</property>
- <property name="UseUnderline">True</property>
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="Gtk.Button" id="deletebutton">
- <property name="MemberName" />
- <property name="CanFocus">True</property>
- <property name="Type">TextAndIcon</property>
- <property name="Icon">stock:gtk-delete Dialog</property>
- <property name="Label" translatable="yes">Delete category</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>
- </widget>
- <packing>
- <property name="Position">1</property>
- <property name="AutoSize">False</property>
- <property name="Expand">False</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
<widget class="Gtk.Bin" id="LongoMatch.Gui.Panel.PreferencesPanel" design-size="663 352">
<property name="MemberName" />
<property name="Visible">False</property>
@@ -9485,7 +9653,7 @@ Click 2 players to swap them</property>
</widget>
</child>
</widget>
- <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.CodingWidget" design-size="673 300">
+ <widget class="Gtk.Bin" id="LongoMatch.Gui.Component.CodingWidget" design-size="1305 494">
<action-group name="Timeline">
<action id="positionMode">
<property name="Type">Radio</property>
@@ -9536,7 +9704,7 @@ Click 2 players to swap them</property>
<property name="MemberName" />
<property name="Visible">False</property>
<child>
- <widget class="Gtk.VBox" id="vbox2">
+ <widget class="Gtk.VBox" id="vbox">
<property name="MemberName" />
<property name="Spacing">6</property>
<child>
@@ -9575,36 +9743,67 @@ Click 2 players to swap them</property>
</packing>
</child>
<child>
- <widget class="Gtk.HBox" id="hbox2">
+ <widget class="Gtk.Notebook" id="notebook">
<property name="MemberName" />
- <property name="Spacing">6</property>
+ <property name="CanFocus">True</property>
+ <property name="CurrentPage">2</property>
<child>
- <widget class="Gtk.DrawingArea" id="drawingarea1">
+ <widget class="Gtk.HPaned" id="hpaned1">
<property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Position">276</property>
+ <child>
+ <widget class="Gtk.DrawingArea" id="teamsdrawingarea">
+ <property name="MemberName" />
+ </widget>
+ <packing>
+ <property name="Resize">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.HBox" id="hbox5">
+ <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>
+ <property name="Edited">False</property>
+ </widget>
+ <packing>
+ <property name="Position">0</property>
+ <property name="AutoSize">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label18">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes">page2</property>
</widget>
<packing>
- <property name="Position">0</property>
- <property name="AutoSize">True</property>
+ <property name="type">tab</property>
</packing>
</child>
<child>
- <widget class="LongoMatch.Gui.Component.ButtonsWidget" id="buttonswidget">
+ <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>
<child>
- <widget class="LongoMatch.Gui.Component.Timeline" id="timeline">
+ <widget class="Gtk.Label" id="label21">
<property name="MemberName" />
- <property name="Events">ButtonPressMask</property>
+ <property name="LabelProp" translatable="yes">page1</property>
</widget>
<packing>
- <property name="Position">2</property>
- <property name="AutoSize">True</property>
+ <property name="type">tab</property>
</packing>
</child>
<child>
@@ -9613,8 +9812,16 @@ Click 2 players to swap them</property>
<property name="Events">ButtonPressMask</property>
</widget>
<packing>
- <property name="Position">3</property>
- <property name="AutoSize">True</property>
+ <property name="Position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="Gtk.Label" id="label19">
+ <property name="MemberName" />
+ <property name="LabelProp" translatable="yes">page3</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
</packing>
</child>
</widget>
diff --git a/LongoMatch.GUI/gtk-gui/objects.xml b/LongoMatch.GUI/gtk-gui/objects.xml
index e87fe76..61a8a55 100644
--- a/LongoMatch.GUI/gtk-gui/objects.xml
+++ b/LongoMatch.GUI/gtk-gui/objects.xml
@@ -4,13 +4,14 @@
<signals />
</object>
<object type="LongoMatch.Gui.Component.ButtonsWidget" palette-category="General" allow-children="false"
base-type="Gtk.Bin">
- <itemgroups />
+ <itemgroups>
+ <itemgroup label="ButtonsWidget Properties">
+ <property name="Edited" />
+ </itemgroup>
+ </itemgroups>
<signals>
<itemgroup label="ButtonsWidget Signals">
<signal name="NewTagEvent" />
- <signal name="NewTagStartEvent" />
- <signal name="NewTagStopEvent" />
- <signal name="NewTagCancelEvent" />
</itemgroup>
</signals>
</object>
@@ -60,10 +61,15 @@
</signals>
</object>
<object type="LongoMatch.Gui.Component.CategoryProperties" palette-category="General"
allow-children="false" base-type="Gtk.Bin">
- <itemgroups />
+ <itemgroups>
+ <itemgroup label="CategoryProperties Properties">
+ <property name="Edited" />
+ </itemgroup>
+ </itemgroups>
<signals>
<itemgroup label="CategoryProperties Signals">
<signal name="HotKeyChanged" />
+ <signal name="EditedEvent" />
</itemgroup>
</signals>
</object>
@@ -163,17 +169,6 @@
<itemgroups />
<signals />
</object>
- <object type="LongoMatch.Gui.Component.ButtonTagger" palette-category="General" allow-children="false"
base-type="Gtk.Bin">
- <itemgroups />
- <signals>
- <itemgroup label="ButtonTagger Signals">
- <signal name="NewTag" />
- <signal name="NewTagStart" />
- <signal name="NewTagStop" />
- <signal name="NewTagCancel" />
- </itemgroup>
- </signals>
- </object>
<object type="LongoMatch.Gui.Component.AnalysisComponent" palette-category="General"
allow-children="false" base-type="Gtk.Bin">
<itemgroups />
<signals />
@@ -238,14 +233,6 @@
</itemgroup>
</signals>
</object>
- <object type="LongoMatch.Gui.Component.AnalysisTemplateEditor" palette-category="General"
allow-children="false" base-type="Gtk.Bin">
- <itemgroups>
- <itemgroup label="AnalysisTemplateEditor Properties">
- <property name="Edited" />
- </itemgroup>
- </itemgroups>
- <signals />
- </object>
<object type="LongoMatch.Gui.Panel.PreferencesPanel" palette-category="General" allow-children="false"
base-type="Gtk.Bin">
<itemgroups />
<signals>
@@ -296,10 +283,6 @@
<itemgroups />
<signals />
</object>
- <object type="LongoMatch.Gui.SubCategoriesTreeView" palette-category="General" allow-children="false"
base-type="Gtk.TreeView">
- <itemgroups />
- <signals />
- </object>
<object type="LongoMatch.Gui.CapturerBin" palette-category="General" allow-children="false"
base-type="Gtk.Bin">
<itemgroups>
<itemgroup label="CapturerBin Properties">
diff --git a/LongoMatch.Migration/Makefile.am b/LongoMatch.Migration/Makefile.am
index 617c0a1..b80b6fc 100644
--- a/LongoMatch.Migration/Makefile.am
+++ b/LongoMatch.Migration/Makefile.am
@@ -45,9 +45,15 @@ SOURCES = Common/Color.cs \
MainWindow.cs \
Program.cs \
Properties/AssemblyInfo.cs \
+ Tests/CateogiresTest.cs \
+ Tests/TestProject.cs \
+ Tests/TestTeam.cs \
gtk-gui/MainWindow.cs \
gtk-gui/generated.cs
-RESOURCES = gtk-gui/gui.stetic
+RESOURCES = gtk-gui/gui.stetic \
+ Data/default.lct \
+ Data/default.ltt \
+ Data/project.lgm
include $(top_srcdir)/build/build.mk
diff --git a/LongoMatch.Multimedia/LongoMatch.Multimedia.mdp b/LongoMatch.Multimedia/LongoMatch.Multimedia.mdp
index 099466a..4e9da09 100644
--- a/LongoMatch.Multimedia/LongoMatch.Multimedia.mdp
+++ b/LongoMatch.Multimedia/LongoMatch.Multimedia.mdp
@@ -65,4 +65,4 @@
<ProjectReference type="Package" specificVersion="False" localcopy="False" refto="System.Core,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<ProjectReference type="Package" localcopy="False" refto="gdk-sharp, Version=2.12.0.0, Culture=neutral,
PublicKeyToken=35e10195dab3c99f" />
</References>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/LongoMatch.Services/Services/EventsManager.cs b/LongoMatch.Services/Services/EventsManager.cs
index dba16c1..d8de06a 100644
--- a/LongoMatch.Services/Services/EventsManager.cs
+++ b/LongoMatch.Services/Services/EventsManager.cs
@@ -28,6 +28,7 @@ using LongoMatch.Store;
using Mono.Unix;
using System.IO;
using LongoMatch.Stats;
+using LongoMatch.Interfaces.Multimedia;
namespace LongoMatch.Services
{
@@ -40,19 +41,19 @@ namespace LongoMatch.Services
Project openedProject;
ProjectType projectType;
PlaysFilter filter;
- Dictionary<Category, Time> catsTime;
IGUIToolkit guiToolkit;
IAnalysisWindow analysisWindow;
IPlayerBin player;
ICapturerBin capturer;
+ IFramesCapturer framesCapturer;
IRenderingJobsManager renderer;
public EventsManager(IGUIToolkit guiToolkit, IRenderingJobsManager renderer)
{
this.guiToolkit = guiToolkit;
this.renderer = renderer;
- catsTime = new Dictionary<Category, Time>();
+ framesCapturer = Config.MultimediaToolkit.GetFramesCapturer ();
ConnectSignals ();
}
@@ -62,11 +63,11 @@ namespace LongoMatch.Services
this.openedProject = project;
this.projectType = projectType;
this.filter = filter;
- catsTime.Clear ();
if (project == null)
return;
+ framesCapturer.Open (openedProject.Description.File.FilePath);
this.analysisWindow = analysisWindow;
player = analysisWindow.Player;
capturer = analysisWindow.Capturer;
@@ -80,10 +81,6 @@ namespace LongoMatch.Services
private void ConnectSignals() {
Config.EventsBroker.NewTagEvent += OnNewTag;
- Config.EventsBroker.NewTagStartEvent += OnNewPlayStart;
- Config.EventsBroker.NewTagStopEvent += OnNewPlayStop;
- Config.EventsBroker.NewTagCancelEvent += OnNewPlayCancel;
- Config.EventsBroker.NewTagAtPosEvent += OnNewTagAtPos;
Config.EventsBroker.TimeNodeChanged += OnTimeNodeChanged;
Config.EventsBroker.PlaysDeleted += OnPlaysDeleted;
Config.EventsBroker.PlaySelected += OnPlaySelected;
@@ -156,57 +153,34 @@ namespace LongoMatch.Services
}
}
- private void ProcessNewTag(Category category,Time pos, List<Player> players) {
- Time length, startTime, stopTime, start, stop, fStart, fStop;
+ private Image CaptureFrame (Time tagtime) {
+ Image frame = null;
- if(player == null || openedProject == null)
- return;
-
- /* Get the default lead and lag time for the category */
- startTime = category.Start;
- stopTime = category.Stop;
- /* Calculate boundaries of the segment */
- start = pos - startTime;
- stop = pos + stopTime;
- fStart = (start < new Time {MSeconds =0}) ? new Time {MSeconds = 0} : start;
-
- if(projectType == ProjectType.FakeCaptureProject ||
- projectType == ProjectType.CaptureProject ||
+ /* Get the current frame and get a thumbnail from it */
+ if(projectType == ProjectType.CaptureProject ||
projectType == ProjectType.URICaptureProject) {
- fStop = stop;
- } else {
- length = player.StreamLength;
- fStop = (stop > length) ? length: stop;
+ frame = capturer.CurrentMiniatureFrame;
+ } else if(projectType == ProjectType.FileProject) {
+ framesCapturer.Seek (tagtime, true);
+ frame = player.CurrentMiniatureFrame;
}
- AddNewPlay(fStart, fStop, category, players);
+ return frame;
}
-
- private void AddNewPlay(Time start, Time stop, Category category, List<Player> players) {
- Image miniature;
-
+
+ private void AddNewPlay (Category category, Time start, Time stop, List<Player> players,
+ List<Tag> tags, Image miniature) {
Log.Debug(String.Format("New play created start:{0} stop:{1} category:{2}",
start, stop, category));
- /* Get the current frame and get a thumbnail from it */
- if(projectType == ProjectType.CaptureProject || projectType ==
ProjectType.URICaptureProject) {
- if(!capturer.Capturing) {
- guiToolkit.InfoMessage(Catalog.GetString("You can't create a new play
if the capturer "+
- "is not recording."));
- return;
- }
- miniature = capturer.CurrentMiniatureFrame;
- }
- else if(projectType == ProjectType.FileProject) {
- miniature = player.CurrentMiniatureFrame;
- player.Pause();
- }
- else
- miniature = null;
/* Add the new created play to the project and update the GUI*/
- var play = openedProject.AddPlay(category, start, stop,miniature);
+ var play = openedProject.AddPlay (category, start, stop,miniature);
if (players != null) {
play.Players = players;
}
+ if (tags != null) {
+ play.Tags = tags;
+ }
+
/* Tag subcategories of the new play */
if (!Config.FastTagging)
guiToolkit.TagPlay (play, openedProject);
@@ -225,71 +199,28 @@ namespace LongoMatch.Services
}
}
- void OnNewTagAtPos (Category category, Time pos) {
- if (openedProject == null)
- return;
-
- player.CloseSegment();
- player.Seek (pos, true);
- ProcessNewTag(category,pos, null);
- }
+ public void OnNewTag (TaggerButton tagger, List<Player> players, List<Tag> tags,
+ Time start, Time stop) {
+ Image frame;
- public void OnNewTag(Category category, List<Player> players) {
- Time pos;
-
- if (openedProject == null)
+ if (player == null || openedProject == null)
return;
-
- if(projectType == ProjectType.FakeCaptureProject ||
- projectType == ProjectType.CaptureProject ||
- projectType == ProjectType.URICaptureProject) {
- pos = capturer.CurrentTime;
- } else {
- pos = player.CurrentTime;
- }
- ProcessNewTag(category,pos, players);
- }
-
- void OnNewPlayStart (Category category) {
- Time startTime = player.CurrentTime;
- catsTime.Add (category, startTime);
- Log.Debug("New play start time: " + startTime);
- }
-
- void OnNewPlayStop(Category category) {
- int diff;
- Time startTime, stopTime;
- if (!catsTime.ContainsKey (category)) {
- Log.Error ("Can't add new play, no start time for this play");
- return;
- }
- startTime = catsTime[category];
- catsTime.Remove (category);
- stopTime = player.CurrentTime;
-
- Log.Debug("New play stop time: " + stopTime);
- diff = stopTime.MSeconds - startTime.MSeconds;
-
- if(diff < 0) {
- guiToolkit.WarningMessage(Catalog.GetString("The stop time is smaller than
the start time. "+
- "The play will not be added."));
- return;
+ start.MSeconds = Math.Max (0, start.MSeconds);
+ if (projectType == ProjectType.FileProject) {
+ stop.MSeconds = Math.Min (player.StreamLength.MSeconds, stop.MSeconds);
}
- if(diff < 500) {
- int correction = 500 - diff;
- if(startTime.MSeconds - correction > 0)
- startTime = startTime - correction;
- else
- stopTime = stopTime + correction;
+
+ if(projectType == ProjectType.CaptureProject ||
+ projectType == ProjectType.URICaptureProject) {
+ if(!capturer.Capturing) {
+ guiToolkit.WarningMessage (Catalog.GetString("Video capture is
stopped"));
+ return;
+ }
}
- AddNewPlay(startTime, stopTime, category, null);
- }
-
- void OnNewPlayCancel (Category category) {
- try {
- catsTime.Remove (category);
- } catch {
+ frame = CaptureFrame (start);
+ if (tagger is Category) {
+ AddNewPlay (tagger as Category, start, stop, players, tags, frame);
}
}
diff --git a/LongoMatch.Services/Services/HotKeysManager.cs b/LongoMatch.Services/Services/HotKeysManager.cs
index b1a7ba3..e91fc4d 100644
--- a/LongoMatch.Services/Services/HotKeysManager.cs
+++ b/LongoMatch.Services/Services/HotKeysManager.cs
@@ -58,7 +58,7 @@ namespace LongoMatch.Services
dic.Clear();
ignoreKeys = false;
- foreach(Category cat in project.Categories.List) {
+ foreach(Category cat in project.Categories.CategoriesList) {
if(cat.HotKey.Defined &&
!dic.ContainsKey(cat.HotKey))
dic.Add(cat.HotKey, cat);
diff --git a/LongoMatch.Services/Services/TemplatesService.cs
b/LongoMatch.Services/Services/TemplatesService.cs
index cdbdf4f..2df2ef7 100644
--- a/LongoMatch.Services/Services/TemplatesService.cs
+++ b/LongoMatch.Services/Services/TemplatesService.cs
@@ -194,7 +194,7 @@ namespace LongoMatch.Services
}
- public class CategoriesTemplatesProvider : TemplatesProvider<Categories, Category>,
ICategoriesTemplatesProvider
+ public class CategoriesTemplatesProvider : TemplatesProvider<Categories, TaggerButton>,
ICategoriesTemplatesProvider
{
public CategoriesTemplatesProvider (string basePath): base (basePath,
Constants.CAT_TEMPLATE_EXT) {}
diff --git a/LongoMatch.mds b/LongoMatch.mds
index b449cb2..230b42c 100644
--- a/LongoMatch.mds
+++ b/LongoMatch.mds
@@ -34,6 +34,7 @@
<Entry build="True" name="LongoMatch.Drawing" configuration="Debug" />
<Entry build="True" name="LongoMatch.Drawing.Cairo" configuration="Debug" />
<Entry build="True" name="LongoMatch.Migration" configuration="Debug" />
+ <Entry build="True" name="OneplayLongomatch" configuration="Debug" />
</Configuration>
<Configuration name="Release" ctype="CombineConfiguration">
<Entry build="True" name="LongoMatch.GUI" configuration="Release" />
@@ -51,6 +52,7 @@
<Entry build="True" name="LongoMatch.Drawing" configuration="Release" />
<Entry build="True" name="LongoMatch.Drawing.Cairo" configuration="Release" />
<Entry build="True" name="LongoMatch.Migration" configuration="Release" />
+ <Entry build="True" name="OneplayLongomatch" configuration="Release" />
</Configuration>
</Configurations>
<StartMode startupentry="LongoMatchGtk" single="True">
@@ -69,6 +71,7 @@
<Execute type="None" entry="LongoMatch.Drawing" />
<Execute type="None" entry="LongoMatch.Drawing.Cairo" />
<Execute type="None" entry="LongoMatch.Migration" />
+ <Execute type="None" entry="OneplayLongomatch" />
</StartMode>
<Entries>
<Entry filename="LongoMatch.GUI/LongoMatch.GUI.mdp" />
diff --git a/Tests/Core/TestCategoriesTemplate.cs b/Tests/Core/TestCategoriesTemplate.cs
index 72b4ecc..58f39e6 100644
--- a/Tests/Core/TestCategoriesTemplate.cs
+++ b/Tests/Core/TestCategoriesTemplate.cs
@@ -51,9 +51,9 @@ namespace Tests.Core
Assert.AreEqual (cat.GamePeriods[0], newcat.GamePeriods[0]);
Assert.AreEqual (cat.GamePeriods[1], newcat.GamePeriods[1]);
Assert.AreEqual (cat.List.Count, newcat.List.Count);
- Assert.AreEqual (cat.List[0].ID, newcat.List[0].ID);
- Assert.AreEqual (cat.List[1].ID, newcat.List[1].ID);
- Assert.AreEqual (cat.List[2].ID, newcat.List[2].ID);
+ Assert.AreEqual (cat.CategoriesList[0].ID, newcat.CategoriesList[0].ID);
+ Assert.AreEqual (cat.CategoriesList[1].ID, newcat.CategoriesList[1].ID);
+ Assert.AreEqual (cat.CategoriesList[2].ID, newcat.CategoriesList[2].ID);
}
}
}
diff --git a/Tests/Core/TestCategory.cs b/Tests/Core/TestCategory.cs
index 8e8bb1d..7886cf1 100644
--- a/Tests/Core/TestCategory.cs
+++ b/Tests/Core/TestCategory.cs
@@ -41,7 +41,6 @@ namespace Tests.Core
cat.Color = new Color (255, 0, 0);
cat.HotKey = new HotKey {Key=2, Modifier=4};
cat.Name = "test";
- cat.Position = 2;
cat.SortMethod = SortMethodType.SortByDuration;
cat.Start = new Time (3000);
cat.Stop = new Time (4000);
diff --git a/Tests/Core/TestPlaysFilter.cs b/Tests/Core/TestPlaysFilter.cs
index 61bfb1c..a20f6b1 100644
--- a/Tests/Core/TestPlaysFilter.cs
+++ b/Tests/Core/TestPlaysFilter.cs
@@ -40,15 +40,15 @@ namespace Tests.Core
p.Description = pd;
/* No tags, no players */
- pl = new Play {Category = p.Categories.List[0]};
+ pl = new Play {Category = p.Categories.CategoriesList[0]};
p.Timeline.Add (pl);
/* tags, but no players */
- pl = new Play {Category = p.Categories.List[1]};
- pl.Tags.Add (p.Categories.List[1].Tags[0]);
+ pl = new Play {Category = p.Categories.CategoriesList[1]};
+ pl.Tags.Add (p.Categories.CategoriesList[1].Tags[0]);
p.Timeline.Add (pl);
/* tags and players */
- pl = new Play {Category = p.Categories.List[2]};
- pl.Tags.Add (p.Categories.List[2].Tags[1]);
+ pl = new Play {Category = p.Categories.CategoriesList[2]};
+ pl.Tags.Add (p.Categories.CategoriesList[2].Tags[1]);
pl.Players.Add (p.LocalTeamTemplate.List[0]);
p.Timeline.Add (pl);
return p;
@@ -71,31 +71,31 @@ namespace Tests.Core
Project p = CreateProject ();
PlaysFilter filter = new PlaysFilter (p);
- filter.FilterCategory (p.Categories.List[0], true);
+ filter.FilterCategory (p.Categories.CategoriesList[0], true);
Assert.AreEqual (1, filter.VisibleCategories.Count);
Assert.AreEqual (1, filter.VisiblePlays.Count);
- filter.FilterCategory (p.Categories.List[1], true);
+ filter.FilterCategory (p.Categories.CategoriesList[1], true);
Assert.AreEqual (2, filter.VisibleCategories.Count);
Assert.AreEqual (2, filter.VisiblePlays.Count);
- filter.FilterCategory (p.Categories.List[2], true);
+ filter.FilterCategory (p.Categories.CategoriesList[2], true);
Assert.AreEqual (3, filter.VisibleCategories.Count);
Assert.AreEqual (3, filter.VisiblePlays.Count);
- filter.FilterCategory (p.Categories.List[0], true);
+ filter.FilterCategory (p.Categories.CategoriesList[0], true);
Assert.AreEqual (3, filter.VisibleCategories.Count);
Assert.AreEqual (3, filter.VisiblePlays.Count);
- filter.FilterCategory (p.Categories.List[0], false);
+ filter.FilterCategory (p.Categories.CategoriesList[0], false);
Assert.AreEqual (2, filter.VisibleCategories.Count);
Assert.AreEqual (2, filter.VisiblePlays.Count);
- filter.FilterCategory (p.Categories.List[1], false);
+ filter.FilterCategory (p.Categories.CategoriesList[1], false);
Assert.AreEqual (1, filter.VisibleCategories.Count);
Assert.AreEqual (1, filter.VisiblePlays.Count);
- filter.FilterCategory (p.Categories.List[2], false);
+ filter.FilterCategory (p.Categories.CategoriesList[2], false);
Assert.AreEqual (10, filter.VisibleCategories.Count);
Assert.AreEqual (3, filter.VisiblePlays.Count);
}
@@ -108,36 +108,36 @@ namespace Tests.Core
Assert.AreEqual (3, filter.VisiblePlays.Count);
- filter.FilterCategoryTag (p.Categories.List[0], p.Categories.List[0].Tags[0], true);
+ filter.FilterCategoryTag (p.Categories.CategoriesList[0],
p.Categories.CategoriesList[0].Tags[0], true);
Assert.AreEqual (1, filter.VisibleCategories.Count);
Assert.AreEqual (0, filter.VisiblePlays.Count);
- filter.FilterCategoryTag (p.Categories.List[1], p.Categories.List[1].Tags[0], true);
+ filter.FilterCategoryTag (p.Categories.CategoriesList[1],
p.Categories.CategoriesList[1].Tags[0], true);
Assert.AreEqual (2, filter.VisibleCategories.Count);
Assert.AreEqual (1, filter.VisiblePlays.Count);
- filter.FilterCategoryTag (p.Categories.List[2], p.Categories.List[2].Tags[0], true);
+ filter.FilterCategoryTag (p.Categories.CategoriesList[2],
p.Categories.CategoriesList[2].Tags[0], true);
Assert.AreEqual (3, filter.VisibleCategories.Count);
Assert.AreEqual (1, filter.VisiblePlays.Count);
- filter.FilterCategoryTag (p.Categories.List[2], p.Categories.List[2].Tags[1], true);
+ filter.FilterCategoryTag (p.Categories.CategoriesList[2],
p.Categories.CategoriesList[2].Tags[1], true);
Assert.AreEqual (2, filter.VisiblePlays.Count);
- filter.FilterCategoryTag (p.Categories.List[0], p.Categories.List[0].Tags[0], false);
+ filter.FilterCategoryTag (p.Categories.CategoriesList[0],
p.Categories.CategoriesList[0].Tags[0], false);
Assert.AreEqual (3, filter.VisiblePlays.Count);
- filter.FilterCategoryTag (p.Categories.List[1], p.Categories.List[1].Tags[0], false);
- filter.FilterCategoryTag (p.Categories.List[1], p.Categories.List[1].Tags[1], true);
+ filter.FilterCategoryTag (p.Categories.CategoriesList[1],
p.Categories.CategoriesList[1].Tags[0], false);
+ filter.FilterCategoryTag (p.Categories.CategoriesList[1],
p.Categories.CategoriesList[1].Tags[1], true);
Assert.AreEqual (2, filter.VisiblePlays.Count);
Assert.AreEqual (p.Timeline[0], filter.VisiblePlays[0]);
Assert.AreEqual (p.Timeline[2], filter.VisiblePlays[1]);
/* One tag filtered now, but not the one of this play */
- filter.FilterCategoryTag (p.Categories.List[2], p.Categories.List[2].Tags[1], false);
+ filter.FilterCategoryTag (p.Categories.CategoriesList[2],
p.Categories.CategoriesList[2].Tags[1], false);
Assert.AreEqual (1, filter.VisiblePlays.Count);
Assert.AreEqual (p.Timeline[0], filter.VisiblePlays[0]);
/* No more tags filtered, if the category matches we are ok */
- filter.FilterCategoryTag (p.Categories.List[2], p.Categories.List[2].Tags[0], false);
+ filter.FilterCategoryTag (p.Categories.CategoriesList[2],
p.Categories.CategoriesList[2].Tags[0], false);
Assert.AreEqual (2, filter.VisiblePlays.Count);
Assert.AreEqual (p.Timeline[0], filter.VisiblePlays[0]);
Assert.AreEqual (p.Timeline[2], filter.VisiblePlays[1]);
@@ -184,14 +184,14 @@ namespace Tests.Core
Assert.AreEqual (3, filter.VisiblePlays.Count);
Assert.AreEqual (10, filter.VisiblePlayers.Count);
- filter.FilterCategory (p.Categories.List[0], true);
+ filter.FilterCategory (p.Categories.CategoriesList[0], true);
Assert.AreEqual (1, filter.VisiblePlays.Count);
Assert.AreEqual (1, filter.VisibleCategories.Count);
filter.ClearCategoriesFilter ();
Assert.AreEqual (3, filter.VisiblePlays.Count);
Assert.AreEqual (10, filter.VisibleCategories.Count);
- filter.FilterCategoryTag (p.Categories.List[0], p.Categories.List[0].Tags[0], true);
+ filter.FilterCategoryTag (p.Categories.CategoriesList[0],
p.Categories.CategoriesList[0].Tags[0], true);
Assert.AreEqual (0, filter.VisiblePlays.Count);
Assert.AreEqual (1, filter.VisibleCategories.Count);
filter.ClearAll ();
diff --git a/Tests/Core/TestProject.cs b/Tests/Core/TestProject.cs
index 51040c9..3f0ecbf 100644
--- a/Tests/Core/TestProject.cs
+++ b/Tests/Core/TestProject.cs
@@ -64,30 +64,30 @@ namespace Tests.Core
[Test ()]
public void TestPlaysGrouping () {
Project p = CreateProject ();
- p.AddPlay (p.Categories.List[0], new Time (1000), new Time (2000), null);
- p.AddPlay (p.Categories.List[0], new Time (1000), new Time (2000), null);
- p.AddPlay (p.Categories.List[1], new Time (1000), new Time (2000), null);
- p.AddPlay (p.Categories.List[2], new Time (1000), new Time (2000), null);
- p.AddPlay (p.Categories.List[2], new Time (1000), new Time (2000), null);
- p.AddPlay (p.Categories.List[2], new Time (1000), new Time (2000), null);
- p.AddPlay (p.Categories.List[6], new Time (1000), new Time (2000), null);
+ p.AddPlay (p.Categories.CategoriesList[0], new Time (1000), new Time (2000), null);
+ p.AddPlay (p.Categories.CategoriesList[0], new Time (1000), new Time (2000), null);
+ p.AddPlay (p.Categories.CategoriesList[1], new Time (1000), new Time (2000), null);
+ p.AddPlay (p.Categories.CategoriesList[2], new Time (1000), new Time (2000), null);
+ p.AddPlay (p.Categories.CategoriesList[2], new Time (1000), new Time (2000), null);
+ p.AddPlay (p.Categories.CategoriesList[2], new Time (1000), new Time (2000), null);
+ p.AddPlay (p.Categories.CategoriesList[6], new Time (1000), new Time (2000), null);
IEnumerable<IGrouping<Category, Play>> g = p.PlaysGroupedByCategory;
Assert.AreEqual (g.Count(), 4);
IGrouping<Category, Play> gr = g.ElementAt (0);
- Assert.AreEqual (gr.Key, p.Categories.List[0]);
+ Assert.AreEqual (gr.Key, p.Categories.CategoriesList[0]);
Assert.AreEqual (gr.Count(), 2);
gr = g.ElementAt (1);
- Assert.AreEqual (gr.Key, p.Categories.List[1]);
+ Assert.AreEqual (gr.Key, p.Categories.CategoriesList[1]);
Assert.AreEqual (gr.Count(), 1);
gr = g.ElementAt (2);
- Assert.AreEqual (gr.Key, p.Categories.List[2]);
+ Assert.AreEqual (gr.Key, p.Categories.CategoriesList[2]);
Assert.AreEqual (gr.Count(), 3);
gr = g.ElementAt (3);
- Assert.AreEqual (gr.Key, p.Categories.List[6]);
+ Assert.AreEqual (gr.Key, p.Categories.CategoriesList[6]);
Assert.AreEqual (gr.Count(), 1);
}
@@ -99,9 +99,9 @@ namespace Tests.Core
[Test ()]
public void TestAddPlay () {
Project p = CreateProject ();
- p.AddPlay (p.Categories.List[0], new Time (1000), new Time (2000), null);
+ p.AddPlay (p.Categories.CategoriesList[0], new Time (1000), new Time (2000), null);
Assert.AreEqual (p.Timeline.Count, 1);
- p.AddPlay (p.Categories.List[0], new Time (1000), new Time (2000), null);
+ p.AddPlay (p.Categories.CategoriesList[0], new Time (1000), new Time (2000), null);
Assert.AreEqual (p.Timeline.Count, 2);
p.AddPlay (new Play());
Assert.AreEqual (p.Timeline.Count, 3);
@@ -131,24 +131,24 @@ namespace Tests.Core
[Test ()]
public void TestRemoveCategory () {
Project p = CreateProject ();
- p.AddPlay (p.Categories.List[0], new Time (1000), new Time (2000), null);
- p.AddPlay (p.Categories.List[0], new Time (1000), new Time (2000), null);
- p.AddPlay (p.Categories.List[0], new Time (1000), new Time (2000), null);
- p.AddPlay (p.Categories.List[2], new Time (1000), new Time (2000), null);
- p.AddPlay (p.Categories.List[3], new Time (1000), new Time (2000), null);
- p.RemoveCategory(p.Categories.List[0]);
+ p.AddPlay (p.Categories.CategoriesList[0], new Time (1000), new Time (2000), null);
+ p.AddPlay (p.Categories.CategoriesList[0], new Time (1000), new Time (2000), null);
+ p.AddPlay (p.Categories.CategoriesList[0], new Time (1000), new Time (2000), null);
+ p.AddPlay (p.Categories.CategoriesList[2], new Time (1000), new Time (2000), null);
+ p.AddPlay (p.Categories.CategoriesList[3], new Time (1000), new Time (2000), null);
+ p.RemoveCategory(p.Categories.CategoriesList[0]);
Assert.AreEqual(p.Timeline.Count, 2);
- Assert.AreEqual(p.Categories.List.Count, 9);
- p.RemoveCategory(p.Categories.List[0]);
- p.RemoveCategory(p.Categories.List[0]);
- p.RemoveCategory(p.Categories.List[0]);
- p.RemoveCategory(p.Categories.List[0]);
- p.RemoveCategory(p.Categories.List[0]);
- p.RemoveCategory(p.Categories.List[0]);
- p.RemoveCategory(p.Categories.List[0]);
- p.RemoveCategory(p.Categories.List[0]);
+ Assert.AreEqual(p.Categories.CategoriesList.Count, 9);
+ p.RemoveCategory(p.Categories.CategoriesList[0]);
+ p.RemoveCategory(p.Categories.CategoriesList[0]);
+ p.RemoveCategory(p.Categories.CategoriesList[0]);
+ p.RemoveCategory(p.Categories.CategoriesList[0]);
+ p.RemoveCategory(p.Categories.CategoriesList[0]);
+ p.RemoveCategory(p.Categories.CategoriesList[0]);
+ p.RemoveCategory(p.Categories.CategoriesList[0]);
+ p.RemoveCategory(p.Categories.CategoriesList[0]);
Assert.Throws<Exception>(
- delegate {p.RemoveCategory(p.Categories.List[0]);});
+ delegate {p.RemoveCategory(p.Categories.CategoriesList[0]);});
}
[Test ()]
@@ -171,15 +171,15 @@ namespace Tests.Core
[Test ()]
public void TestPlaysInCategory () {
Project p = CreateProject ();
- p.AddPlay (p.Categories.List[0], new Time (1000), new Time (2000), null);
- p.AddPlay (p.Categories.List[0], new Time (1000), new Time (2000), null);
- p.AddPlay (p.Categories.List[0], new Time (1000), new Time (2000), null);
- p.AddPlay (p.Categories.List[2], new Time (1000), new Time (2000), null);
- p.AddPlay (p.Categories.List[3], new Time (1000), new Time (2000), null);
- Assert.AreEqual (p.PlaysInCategory (p.Categories.List[0]).Count, 3);
- Assert.AreEqual (p.PlaysInCategory (p.Categories.List[1]).Count, 0);
- Assert.AreEqual (p.PlaysInCategory (p.Categories.List[2]).Count, 1);
- Assert.AreEqual (p.PlaysInCategory (p.Categories.List[3]).Count, 1);
+ p.AddPlay (p.Categories.CategoriesList[0], new Time (1000), new Time (2000), null);
+ p.AddPlay (p.Categories.CategoriesList[0], new Time (1000), new Time (2000), null);
+ p.AddPlay (p.Categories.CategoriesList[0], new Time (1000), new Time (2000), null);
+ p.AddPlay (p.Categories.CategoriesList[2], new Time (1000), new Time (2000), null);
+ p.AddPlay (p.Categories.CategoriesList[3], new Time (1000), new Time (2000), null);
+ Assert.AreEqual (p.PlaysInCategory (p.Categories.CategoriesList[0]).Count, 3);
+ Assert.AreEqual (p.PlaysInCategory (p.Categories.CategoriesList[1]).Count, 0);
+ Assert.AreEqual (p.PlaysInCategory (p.Categories.CategoriesList[2]).Count, 1);
+ Assert.AreEqual (p.PlaysInCategory (p.Categories.CategoriesList[3]).Count, 1);
}
[Test ()]
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]