public PlayerEventTypeStats(Project project, EventsFilter filter, Player player, EventType evType) { this.filter = filter; this.player = player; this.project = project; this.EventType = evType; }
public TimelineEvent CreateTimelineEvent() { TimelineEvent evt = new TimelineEvent (); evtType1 = new EventType { Name = "Cat1" }; evt.EventType = evtType1; evt.Notes = "notes"; evt.Selected = true; evt.Team = TeamType.LOCAL; evt.FieldPosition = new Coordinates (); evt.FieldPosition.Points.Add (new Point (1, 2)); evt.HalfFieldPosition = new Coordinates (); evt.HalfFieldPosition.Points.Add (new Point (4, 5)); evt.GoalPosition = new Coordinates (); evt.GoalPosition.Points.Add (new Point (6, 7)); evt.Rate = 1.5f; evt.Name = "Play"; evt.Start = new Time (1000); evt.EventTime = new Time (1500); evt.Stop = new Time (2000); evt.Rate = 2.3f; evt.Tags.Add (new Tag ("test")); return evt; }
public TimelineEventLongoMatch CreateTimelineEvent() { TimelineEventLongoMatch evt = new TimelineEventLongoMatch (); evtType1 = new EventType { Name = "Cat1" }; evt.EventType = evtType1; evt.Notes = "notes"; evt.Playing = true; evt.Teams.Add (new SportsTeam ()); evt.FieldPosition = new Coordinates (); evt.FieldPosition.Points.Add (new Point (1, 2)); evt.HalfFieldPosition = new Coordinates (); evt.HalfFieldPosition.Points.Add (new Point (4, 5)); evt.GoalPosition = new Coordinates (); evt.GoalPosition.Points.Add (new Point (6, 7)); evt.Rate = 1.5f; evt.Name = "Play"; evt.Start = new Time (1000); evt.EventTime = new Time (1500); evt.Stop = new Time (2000); evt.Rate = 2.3f; evt.Tags.Add (new Tag ("test")); return evt; }
public EditCategoryDialog(ProjectLongoMatch project, EventType eventType, Window parent) { TransientFor = parent; this.Build (); timenodeproperties2.EventType = eventType; timenodeproperties2.Dashboard = project.Dashboard; }
public EventTypeStats(Project project, EventsFilter filter, EventType evType) { Name = evType.Name; events = new List<TimelineEvent> (); this.project = project; this.filter = filter; this.eventType = evType; }
public void ShowMenu(ProjectLongoMatch project, EventType eventType, IList<TimelineEventLongoMatch> events) { this.eventType = eventType; this.events = events; SetupSortMenu (); MenuHelpers.FillAddToPlaylistMenu (addToPlaylistMenuItem, project.Playlists, events); MenuHelpers.FillExportToVideoFileMenu (exportToVideoFileItem, project, events, Catalog.GetString ("Export to video file")); Popup (); }
override protected bool OnButtonPressEvent(Gdk.EventButton evnt) { TreePath[] paths = Selection.GetSelectedRows(); if (Misc.RightButtonClicked(evnt)) { // We don't want to unselect the play when several // plays are selected and we clik the right button // For multiedition if (paths.Length <= 1) { base.OnButtonPressEvent(evnt); paths = Selection.GetSelectedRows(); } if (paths.Length == 1) { TimeNode selectedTimeNode = GetValueFromPath(paths [0]) as TimeNode; if (selectedTimeNode != null) { ShowMenu(); } else { EventType eventType = GetValueFromPath(paths [0]) as EventType; SetupSortMenu(eventType.SortMethod); categoriesMenu.Popup(); } } else if (paths.Length > 1) { ShowMenu(); } return(true); } else if ((evnt.Type == Gdk.EventType.ButtonPress) && (evnt.Button == 1)) { base.OnButtonPressEvent(evnt); paths = Selection.GetSelectedRows(); if (paths.Length == 1 && GetValueFromPath(paths [0]) is EventType) { dragging = true; catClicked = true; dragStarted = false; startX = (int)evnt.X; startY = (int)evnt.Y; } return(true); } else { return(base.OnButtonPressEvent(evnt)); } }
public static void RenderAnalysisCategory(EventType cat, int count, bool isExpanded, IDrawingToolkit tk, IContext context, Area backgroundArea, Area cellArea) { Point textP = new Point (StyleConf.ListTextOffset, cellArea.Start.Y); tk.Context = context; tk.Begin (); RenderBackgroundAndText (isExpanded, tk, backgroundArea, textP, cellArea.Width - textP.X, cat.Name); RenderCount (isExpanded, cat.Color, count, tk, backgroundArea, cellArea); RenderSeparationLine (tk, context, backgroundArea); tk.End (); }
protected override bool OnDragMotion(DragContext context, int x, int y, uint time) { TreePath path; TreeViewDropPosition pos; if (GetDestRowAtPos(x, y, out path, out pos)) { EventType ev = GetValueFromPath(path) as EventType; if (ev != null) { DisableDragInto(path, context, time, pos); return(true); } else { return(false); } } return(false); }
public void TestEvntType() { string jsonString; EventType evType; MemoryStream stream; StreamReader reader; evType = new EventType(); evType.Color = new Color (255, 0, 0); evType.Name = "test"; evType.SortMethod = SortMethodType.SortByDuration; evType.TagFieldPosition = true; evType.TagGoalPosition = true; evType.TagHalfFieldPosition = true; evType.FieldPositionIsDistance = true; evType.HalfFieldPositionIsDistance = false; Utils.CheckSerialization (evType); stream = new MemoryStream (); Serializer.Save (evType, stream, SerializationType.Json); stream.Seek (0, SeekOrigin.Begin); reader = new StreamReader (stream); jsonString = reader.ReadToEnd(); Assert.IsFalse (jsonString.Contains ("SortMethodString")); stream.Seek (0, SeekOrigin.Begin); EventType newEventType = Serializer.Load<EventType> (stream, SerializationType.Json); Assert.AreEqual (evType.ID, newEventType.ID); Assert.AreEqual (evType.Name, newEventType.Name); Assert.AreEqual (evType.SortMethod, newEventType.SortMethod); Assert.AreEqual (evType.TagFieldPosition, newEventType.TagFieldPosition); Assert.AreEqual (evType.TagGoalPosition, newEventType.TagGoalPosition); Assert.AreEqual (evType.TagHalfFieldPosition, newEventType.TagHalfFieldPosition); Assert.AreEqual (evType.FieldPositionIsDistance, newEventType.FieldPositionIsDistance); Assert.AreEqual (evType.HalfFieldPositionIsDistance, newEventType.HalfFieldPositionIsDistance); Assert.AreEqual (255, newEventType.Color.R); Assert.AreEqual (0, newEventType.Color.G); Assert.AreEqual (0, newEventType.Color.B); }
protected override void OnDragBegin(DragContext context) { TreePath path; TreeViewColumn col; int cellX, cellY; GetPathAtPos(startX, startY, out path, out col, out cellX, out cellY); draggedEventType = GetValueFromPath(path) as EventType; if (draggedEventType != null) { GetPathAtPos(startX, startY, out path, out col, out cellX, out cellY); Model.GetIter(out srcIter, path); Pixmap rowPix = CreateRowDragIcon(path); Gtk.Drag.SetIconPixmap(context, rowPix.Colormap, rowPix, null, startX + 1, cellY + 1); } else { Gtk.Drag.Finish(context, false, false, context.StartTime); } }
public void FilterEventType(EventType evType, bool visible) { if (visible) { if (!eventsFilter.ContainsKey (evType)) eventsFilter [evType] = new List<Tag> (); } else { if (eventsFilter.ContainsKey (evType)) eventsFilter.Remove (evType); } Update (); }
public void FilterEventTag(EventType evType, Tag tag, bool visible) { List<Tag> tags; if (visible) { FilterEventType (evType, true); tags = eventsFilter [evType]; if (!tags.Contains (tag)) tags.Add (tag); } else { if (eventsFilter.ContainsKey (evType)) { tags = eventsFilter [evType]; if (tags.Contains (tag)) tags.Remove (tag); } } Update (); }
void HandleNewTagEvent(EventType evntType, List<Player> players, ObservableCollection<Team> teams, List<Tag> tags, Time start, Time stop, Time eventTime, DashboardButton btn) { /* Forward event until we have players integrted in the dashboard layout */ if (NewTagEvent != null) { NewTagEvent (evntType, players, teams, tags, start, stop, eventTime, btn); } }
protected override void OnDragBegin(DragContext context) { TreePath path; TreeViewColumn col; int cellX, cellY; GetPathAtPos (startX, startY, out path, out col, out cellX, out cellY); draggedEventType = GetValueFromPath (path) as EventType; if (draggedEventType != null) { GetPathAtPos (startX, startY, out path, out col, out cellX, out cellY); Model.GetIter (out srcIter, path); Pixmap rowPix = CreateRowDragIcon (path); Gtk.Drag.SetIconPixmap (context, rowPix.Colormap, rowPix, null, startX + 1, cellY + 1); } else { Gtk.Drag.Finish (context, false, false, context.StartTime); } }
public override TimelineEvent AddEvent(EventType type, Time start, Time stop, Time eventTime, Image miniature, bool addToTimeline = true) { TimelineEventLongoMatch evt; string count; string name; count = String.Format ("{0:000}", EventsByType (type).Count + 1); name = String.Format ("{0} {1}", type.Name, count); evt = new TimelineEventLongoMatch (); evt.Name = name; evt.Start = start; evt.Stop = stop; evt.EventTime = eventTime; evt.EventType = type; evt.Notes = ""; evt.Miniature = miniature; evt.CamerasConfig = new ObservableCollection<CameraConfig> { new CameraConfig (0) }; evt.FileSet = Description.FileSet; evt.Project = this; if (addToTimeline) { Timeline.Add (evt); } if (addToTimeline) { if (evt.EventType is ScoreEventType) { UpdateScore (); } } return evt; }
protected virtual void OnEditProperties(EventType eventType) { EditCategoryDialog dialog = new EditCategoryDialog (project, eventType, this.Toplevel as Window); dialog.Run (); dialog.Destroy (); }
public void EmitNewEvent(EventType eventType, List<Player> players = null, TeamType team = TeamType.NONE, List<Tag> tags = null, Time start = null, Time stop = null, Time eventTime = null, Score score = null, PenaltyCard card = null) { if (NewEventEvent != null) NewEventEvent (eventType, players, team, tags, start, stop, eventTime, score, card, null); }
protected override void PrepareMenu(Project project, IEnumerable<TimelineEvent> plays, EventType eventType, Time time, IList<EventType> eventTypes, bool editableName) { bool isLineup = false, isSubstitution = false; this.plays = plays.ToList (); this.eventType = eventType; this.time = time; this.project = project; if (eventType != null) { string label = String.Format ("{0} in {1}", Catalog.GetString ("Add new event"), eventType.Name); newPlay.SetLabel (label); newPlay.Visible = true; } else { newPlay.Visible = false; } if (plays == null) { plays = new List<TimelineEvent> (); } else if (plays.Count () == 1) { isLineup = plays.FirstOrDefault () is LineupEvent; isSubstitution = plays.FirstOrDefault () is SubstitutionEvent; } if (isLineup || isSubstitution) { edit.Visible = true; del.Visible = isSubstitution; snapshot.Visible = moveCat.Visible = drawings.Visible = addPLN.Visible = render.Visible = duplicate.Visible = false; } else { edit.Visible = editableName && this.plays.Count == 1; snapshot.Visible = this.plays.Count == 1; drawings.Visible = this.plays.Count == 1 && this.plays.FirstOrDefault ().Drawings.Count > 0; moveCat.Visible = del.Visible = addPLN.Visible = duplicate.Visible = this.plays.Any (); } MenuHelpers.FillExportToVideoFileMenu (render, project, plays, Catalog.GetString ("Export to video file")); if (plays.Count () > 0) { string label = String.Format ("{0} ({1})", Catalog.GetString ("Delete"), plays.Count ()); del.SetLabel (label); label = String.Format ("{0} ({1})", Catalog.GetString ("Duplicate "), plays.Count ()); duplicate.SetLabel (label); } if (moveCat.Visible) { Menu catMenu = new Menu (); foreach (EventType c in eventTypes) { if (plays.Any (p => p.EventType == c)) continue; var item = new MenuItem (c.Name); catMenu.Append (item); item.Activated += (sender, e) => { App.Current.EventsBroker.Publish<MoveToEventTypeEvent> ( new MoveToEventTypeEvent { TimelineEvents = plays.ToList (), EventType = c } ); }; } catMenu.ShowAll (); moveCat.Submenu = catMenu; } if (drawings.Visible) { Menu drawingsMenu = new Menu (); for (int i = 0; i < plays.FirstOrDefault ().Drawings.Count; i++) { int index = i; MenuItem drawingItem = new MenuItem (Catalog.GetString ("Drawing ") + (i + 1)); MenuItem editItem = new MenuItem (Catalog.GetString ("Edit")); MenuItem deleteItem = new MenuItem (Catalog.GetString ("Delete")); Menu drawingMenu = new Menu (); drawingsMenu.Append (drawingItem); drawingMenu.Append (editItem); drawingMenu.Append (deleteItem); editItem.Activated += (sender, e) => { App.Current.EventsBroker.Publish<DrawFrameEvent> ( new DrawFrameEvent { Play = plays.FirstOrDefault (), DrawingIndex = index, CamConfig = plays.FirstOrDefault ().Drawings [index].CameraConfig, Current = false } ); }; deleteItem.Activated += (sender, e) => { plays.FirstOrDefault ().Drawings.RemoveAt (index); plays.FirstOrDefault ().UpdateMiniature (); }; drawingItem.Submenu = drawingMenu; drawingMenu.ShowAll (); } drawingsMenu.ShowAll (); drawings.Submenu = drawingsMenu; } if (!IsLineupEvent ()) { MenuHelpers.FillAddToPlaylistMenu (addPLN, project.Playlists, this.plays); } }
void HandleNewTagEvent(EventType evntType, List<Player> players, TeamType team, List<Tag> tags, Time start, Time stop, Time eventTime, Score score, PenaltyCard card, DashboardButton btn) { /* Forward event until we have players integrted in the dashboard layout */ if (NewTagEvent != null) { NewTagEvent (evntType, players, team, tags, start, stop, eventTime, score, card, btn); } //Config.EventsBroker.EmitNewTag (button, players, tags, start, stop); }
protected virtual void OnPlayCategoryChanged(TimelineEvent play, EventType evType) { var newplay = Cloner.Clone (play); newplay.ID = Guid.NewGuid (); newplay.EventType = evType; newplay.Players = play.Players; DeletePlays (new List<TimelineEvent> { play }, false); openedProject.AddEvent (newplay); analysisWindow.AddPlay (newplay); Save (openedProject); filter.Update (); }
public void OnNewTag(EventType evType, List<Player> players, TeamType team, List<Tag> tags, Time start, Time stop, Time eventTime, Score score, PenaltyCard card, DashboardButton btn) { if (player == null || openedProject == null) return; if (projectType == ProjectType.CaptureProject || projectType == ProjectType.URICaptureProject) { if (!capturer.Capturing) { guiToolkit.WarningMessage (Catalog.GetString ("Video capture is stopped")); return; } } Log.Debug (String.Format ("New play created start:{0} stop:{1} category:{2}", start.ToMSecondsString (), stop.ToMSecondsString (), evType.Name)); /* Add the new created play to the project and update the GUI*/ var play = openedProject.AddEvent (evType, start, stop, eventTime, null, score, card); play.Team = team; if (players != null) { play.Players = players; } if (tags != null) { play.Tags = tags; } AddNewPlay (play); }
private void ShowMenu(Project project, List<TimelineEvent> plays, EventType eventType, Time time, List<EventType> eventTypes, bool editableName) { bool isLineup = false, isSubstitution = false; this.plays = plays; this.eventType = eventType; this.time = time; this.project = project; if (eventType != null) { string label = String.Format ("{0} in {1}", Catalog.GetString ("Add new event"), eventType.Name); newPlay.SetLabel (label); newPlay.Visible = true; } else { newPlay.Visible = false; } if (plays == null) { plays = new List<TimelineEvent> (); } else if (plays.Count == 1) { isLineup = plays [0] is LineupEvent; isSubstitution = plays [0] is SubstitutionEvent; } if (isLineup || isSubstitution) { edit.Visible = true; del.Visible = isSubstitution; snapshot.Visible = moveCat.Visible = drawings.Visible = addPLN.Visible = render.Visible = duplicate.Visible = false; } else { edit.Visible = editableName && plays.Count == 1; snapshot.Visible = plays.Count == 1; moveCat.Visible = plays.Count == 1 && eventTypes != null; drawings.Visible = plays.Count == 1 && plays [0].Drawings.Count > 0; del.Visible = plays.Count > 0; addPLN.Visible = plays.Count > 0; render.Visible = plays.Count > 0; duplicate.Visible = plays.Count > 0; } if (plays.Count > 0) { string label = String.Format ("{0} ({1})", Catalog.GetString ("Delete"), plays.Count); del.SetLabel (label); label = String.Format ("{0} ({1})", Catalog.GetString ("Add to playlist"), plays.Count); addPLN.SetLabel (label); label = String.Format ("{0} ({1})", Catalog.GetString ("Export to video file"), plays.Count); render.SetLabel (label); label = String.Format ("{0} ({1})", Catalog.GetString ("Duplicate "), plays.Count); duplicate.SetLabel (label); } if (moveCat.Visible) { Menu catMenu = new Menu (); foreach (EventType c in eventTypes) { if (plays [0].EventType == c) continue; var item = new MenuItem (c.Name); catMenu.Append (item); item.Activated += (sender, e) => { Config.EventsBroker.EmitMoveToEventType (plays [0], c); }; } catMenu.ShowAll (); moveCat.Submenu = catMenu; } if (drawings.Visible) { Menu drawingsMenu = new Menu (); for (int i = 0; i < plays [0].Drawings.Count; i++) { int index = i; MenuItem drawingItem = new MenuItem (Catalog.GetString ("Drawing ") + (i + 1)); MenuItem editItem = new MenuItem (Catalog.GetString ("Edit")); MenuItem deleteItem = new MenuItem (Catalog.GetString ("Delete")); Menu drawingMenu = new Menu (); drawingsMenu.Append (drawingItem); drawingMenu.Append (editItem); drawingMenu.Append (deleteItem); editItem.Activated += (sender, e) => { Config.EventsBroker.EmitDrawFrame (plays [0], index, plays [0].Drawings [index].CameraConfig, false); }; deleteItem.Activated += (sender, e) => { plays [0].Drawings.RemoveAt (index); plays [0].UpdateMiniature (); }; drawingItem.Submenu = drawingMenu; drawingMenu.ShowAll (); } drawingsMenu.ShowAll (); drawings.Submenu = drawingsMenu; } if (project.Playlists != null) { Menu plMenu = new Menu (); MenuItem item; foreach (Playlist pl in project.Playlists) { item = new MenuItem (pl.Name); plMenu.Append (item); item.Activated += (sender, e) => { IEnumerable<IPlaylistElement> elements; elements = plays.Select (p => new PlaylistPlayElement (p, project.Description.FileSet)); Config.EventsBroker.EmitAddPlaylistElement (pl, elements.ToList ()); }; } item = new MenuItem (Catalog.GetString ("Create new playlist...")); plMenu.Append (item); item.Activated += (sender, e) => { IEnumerable<IPlaylistElement> elements; elements = plays.Select (p => new PlaylistPlayElement (p, project.Description.FileSet)); Config.EventsBroker.EmitAddPlaylistElement (null, elements.ToList ()); }; plMenu.ShowAll (); addPLN.Submenu = plMenu; } Popup (); }
public void ShowTimelineMenu(Project project, List<TimelineEvent> plays, EventType eventType, Time time) { ShowMenu (project, plays, eventType, time, null, false); }
public virtual void EmitMoveToEventType(TimelineEvent evnt, EventType eventType) { if (MoveToEventTypeEvent != null) MoveToEventTypeEvent (evnt, eventType); }
void HandleNewTagEvent(EventType eventType, List<Player> players, ObservableCollection<Team> teams, List<Tag> tags, Time start, Time stop, Time eventTime, DashboardButton btn) { TimelineEventLongoMatch play = project.AddEvent (eventType, start, stop, eventTime, null, false) as TimelineEventLongoMatch; play.Teams = new ObservableCollection<Team> (teamtagger.SelectedTeams); if (selectedPlayers != null) { play.Players = new ObservableCollection<Player> (selectedPlayers); } else { play.Players = new ObservableCollection<Player> (); } if (tags != null) { play.Tags = new ObservableCollection <Tag> (tags); } else { play.Tags = new ObservableCollection<Tag> (); } teamtagger.ResetSelection (); selectedPlayers = null; App.Current.EventsBroker.Publish<NewDashboardEvent> ( new NewDashboardEvent { TimelineEvent = play, DashboardButton = btn, Edit = true, DashboardButtons = null } ); }
void ExportCategory(EventType evt) { string headers; List<TimelineEvent> plays; output.Add ("CATEGORY: " + evt.Name); plays = project.EventsByType (evt); /* Write Headers for this category */ headers = "Name;Time;Start;Stop;Team;Player"; if (evt is ScoreEventType) { headers += ";Score"; } if (evt is AnalysisEventType) { foreach (Tag tag in (evt as AnalysisEventType).Tags) { headers += String.Format (";{0}", tag.Value); } } output.Add (headers); foreach (TimelineEvent play in plays.OrderBy(p=>p.Start)) { string line; line = String.Format ("{0};{1};{2};{3};{4};{5}", play.Name, play.EventTime == null ? "" : play.EventTime.ToMSecondsString (), play.Start.ToMSecondsString (), play.Stop.ToMSecondsString (), TeamName (project.EventTaggedTeam (play)), String.Join (" | ", play.Players)); if (evt is ScoreEventType) { line += ";" + (play as ScoreEvent).Score.Points; } /* Strings Tags */ if (evt is AnalysisEventType) { foreach (Tag tag in (evt as AnalysisEventType).Tags) { line += ";" + (play.Tags.Contains (tag) ? "1" : "0"); } } output.Add (line); } output.Add (""); }
protected new void ShowMenu(Project project, IEnumerable<TimelineEvent> plays, EventType eventType, Time time, IList<EventType> eventTypes, bool editableName) { PrepareMenu (project, plays, eventType, time, eventTypes, editableName); Popup (); }