void CreateMenu() { additem = new MenuItem (Catalog.GetString ("Add period")); additem.Activated += (sender, e) => { string periodname = Config.GUIToolkit.QueryMessage (Catalog.GetString ("Period name"), null, (project.Periods.Count + 1).ToString (), this); if (periodname != null) { project.Dashboard.GamePeriods.Add (periodname); Period p = new Period { Name = periodname }; p.Nodes.Add (new TimeNode { Name = periodname, Start = new Time { TotalSeconds = time.TotalSeconds - 10 }, Stop = new Time { TotalSeconds = time.TotalSeconds + 10 } }); project.Periods.Add (p); if (timertimeline != null) { timertimeline.AddTimer (p); } } }; Add (additem); delitem = new MenuItem (Catalog.GetString ("Delete period")); delitem.Activated += (sender, e) => { project.Periods.Remove (timer as Period); if (timertimeline != null) { timertimeline.RemoveTimer (timer); } }; Add (delitem); ShowAll (); }
public void TestResyncEvents() { ProjectLongoMatch p = CreateProject (false); int offset1 = 100, offset2 = 120, offset3 = 150; Period period; List<Period> syncedPeriods; period = new Period (); period.Nodes.Add (new TimeNode { Start = new Time (0), Stop = new Time (3000) }); p.Periods.Add (period); period = new Period (); period.Nodes.Add (new TimeNode { Start = new Time (3001), Stop = new Time (6000) }); p.Periods.Add (period); period = new Period (); period.Nodes.Add (new TimeNode { Start = new Time (6001), Stop = new Time (6500) }); p.Periods.Add (period); /* Test with a list of periods that don't match */ Assert.Throws<IndexOutOfRangeException> ( delegate { p.ResyncEvents (new List<Period> ()); }); syncedPeriods = new List<Period> (); period = new Period (); period.Nodes.Add (new TimeNode { Start = new Time (0 + offset1), Stop = new Time (3000 + offset1) }); syncedPeriods.Add (period); period = new Period (); period.Nodes.Add (new TimeNode { Start = new Time (3001 + offset2), Stop = new Time (6000 + offset2) }); syncedPeriods.Add (period); period = new Period (); period.Nodes.Add (new TimeNode { Start = new Time (6001 + offset3), Stop = new Time (6500 + offset3) }); syncedPeriods.Add (period); /* 1st Period */ p.Timeline.Add (new TimelineEventLongoMatch { EventTime = new Time (0) }); p.Timeline.Add (new TimelineEventLongoMatch { EventTime = new Time (1500) }); p.Timeline.Add (new TimelineEventLongoMatch { EventTime = new Time (3000) }); /* 2nd Period */ p.Timeline.Add (new TimelineEventLongoMatch { EventTime = new Time (3001) }); p.Timeline.Add (new TimelineEventLongoMatch { EventTime = new Time (4500) }); p.Timeline.Add (new TimelineEventLongoMatch { EventTime = new Time (6000) }); /* 3nd Period */ p.Timeline.Add (new TimelineEventLongoMatch { EventTime = new Time (6001) }); p.Timeline.Add (new TimelineEventLongoMatch { EventTime = new Time (6200) }); p.Timeline.Add (new TimelineEventLongoMatch { EventTime = new Time (6500) }); IList<TimelineEvent> oldTimeline = p.Timeline.Clone (); p.ResyncEvents (syncedPeriods); Assert.AreEqual (oldTimeline [0].EventTime + offset1, p.Timeline [0].EventTime); Assert.AreEqual (oldTimeline [1].EventTime + offset1, p.Timeline [1].EventTime); Assert.AreEqual (oldTimeline [2].EventTime + offset1, p.Timeline [2].EventTime); Assert.AreEqual (oldTimeline [3].EventTime + offset2, p.Timeline [3].EventTime); Assert.AreEqual (oldTimeline [4].EventTime + offset2, p.Timeline [4].EventTime); Assert.AreEqual (oldTimeline [5].EventTime + offset2, p.Timeline [5].EventTime); Assert.AreEqual (oldTimeline [6].EventTime + offset3, p.Timeline [6].EventTime); Assert.AreEqual (oldTimeline [7].EventTime + offset3, p.Timeline [7].EventTime); Assert.AreEqual (oldTimeline [8].EventTime + offset3, p.Timeline [8].EventTime); }
public void FilterPeriod(Period period, bool visible) { if (visible) { if (!periodsFilter.Contains (period)) periodsFilter.Add (period); } else { if (periodsFilter.Contains (period)) periodsFilter.Remove (period); } Update (); }
void Reset() { currentPeriod = null; currentTimeNode = null; currentPeriodStart = DateTime.UtcNow; accumTime = new Time (0); Capturing = false; Capturer = null; recbutton.Visible = true; stopbutton.Visible = false; pausebutton.Visible = false; savebutton.Visible = false; cancelbutton.Visible = true; resumebutton.Visible = false; lasteventbox.Visible = false; }
public void StopPeriod() { if (currentPeriod == null) { string msg = Catalog.GetString ("Period recording not started"); Config.GUIToolkit.WarningMessage (msg, this); return; } GLib.Source.Remove (timeoutID); currentPeriod.Stop (CurrentCaptureTime); accumTime = CurrentCaptureTime; Log.Debug ("Stop period stop=", accumTime.ToMSecondsString ()); currentTimeNode = null; currentPeriod = null; recbutton.Visible = true; pausebutton.Visible = resumebutton.Visible = stopbutton.Visible = false; if (Capturer != null && Capturing) { Capturer.TogglePause (); } Capturing = false; }
public void StartPeriod() { string periodName; if (currentPeriod != null) { string msg = Catalog.GetString ("Period recording already started"); Config.GUIToolkit.WarningMessage (msg, this); return; } recbutton.Visible = false; pausebutton.Visible = savebutton.Visible = stopbutton.Visible = true; if (PeriodsNames != null && PeriodsNames.Count > Periods.Count) { periodName = PeriodsNames [Periods.Count]; } else { periodName = (Periods.Count + 1).ToString (); } currentPeriod = new Period { Name = periodName }; currentTimeNode = currentPeriod.Start (accumTime, periodName); currentTimeNode.Stop = currentTimeNode.Start; currentPeriodStart = DateTime.UtcNow; timeoutID = GLib.Timeout.Add (20, UpdateTime); if (Capturer != null) { if (Periods.Count == 0) { Capturer.Start (); } else { Capturer.TogglePause (); } } periodlabel.Markup = currentPeriod.Name; Capturing = true; Periods.Add (currentPeriod); Log.Debug ("Start new period start=", currentTimeNode.Start.ToMSecondsString ()); }