void UpdateTotals() { StepDiagram stepDiagram = Session.StepDiagram; if (stepDiagram == null) { lblKeyPresses.Text = "0"; lblMouseWheelSpins.Text = "0"; lblMouseClicks.Text = "0 clicks"; lblMouseMoveDistance.Text = "0px"; //lblMouseSpeed.Text = "0px/s"; lblTimeSpentMoving.Text = "0s"; lblForceTime.Text = "0N-s"; lblMillerComplexityScore.Text = "0"; } else { lblKeyPresses.Text = String.Format("{0:#,0.} keys", stepDiagram.TotalKeyPresses); lblMouseWheelSpins.Text = String.Format("{0:#,0.} detents", stepDiagram.TotalMouseWheels); lblMouseClicks.Text = String.Format("{0:#,0.} clicks", stepDiagram.TotalMouseClicks); lblMouseMoveDistance.Text = String.Format("{0:#,0.#}px", stepDiagram.TotalMouseDistanceTravelled); lblTimeSpentMoving.Text = String.Format("{0:s\\.ff}s", stepDiagram.TotalTimeSpentMoving); lblForceTime.Text = String.Format("{0:#,0.##}NS", stepDiagram.TotalForceTime); lblMillerComplexityScore.Text = String.Format("{0:#,0.##} mci", stepDiagram.TotalMillerComplexityScore); /*lblMouseSpeed*/ this.Title = String.Format("Step Diagrammer - Average Mouse Speed: {0:#,0.##}px/s", stepDiagram.AverageMouseSpeed); } }
Rect AddActiveWindowBox(TaskActive task, bool isLast) { Rectangle taskRect = new Rectangle(); StepDiagram stepDiagram = Session.StepDiagram; double left = ConversionHelper.MillisecondsToPixels(stepDiagram.GetOffset(task.Start).TotalMilliseconds); Canvas.SetLeft(taskRect, left); double width = ConversionHelper.MillisecondsToPixels(task.Duration.TotalMilliseconds); if (isLast && HookEngine.Listening) { width = cvsWindows.ActualWidth; } taskRect.Width = width; taskRect.Height = cvsWindows.ActualHeight; Canvas.SetTop(taskRect, 0); taskRect.Fill = GetTaskFillBrush(task); FrameworkElement windowTooltip = GetWindowTooltip(); windowTooltip.DataContext = task; taskRect.ToolTip = windowTooltip; taskRect.ToolTipOpening += taskRect_ToolTipOpening; taskRect.Tag = task; cvsWindows.Children.Add(taskRect); return(new Rect(left, 0, width, cvsWindows.ActualHeight)); }
void stepDiagramViewer_EventsDeleted(object sender, EventArgs e) { StepDiagram events = Session.StepDiagram; if (events != null) { events.ClearTotals(); } UpdateTotals(); }
public static void Start() { if (StepDiagram != null) { throw new Exception("Unable to start twice. Already listening. Call HookEngine.Stop after calling HookEngine.Start"); } activeWindowHandle = Win.GetActiveWindow(); StepDiagram = new StepDiagram(); cpuUsageCalculator = new CpuUsageCalculator(); currentProcessTimer = new Timer(CheckCpuUsage, null, 100, 100); HookEvents(); StepDiagram.AddTaskActive(WindowsEvents.GetActiveWindowTitle(), Win.GetForegroundWindow()); }
void AddWindowActivations() { StepDiagram stepDiagram = Session.StepDiagram; if (stepDiagram == null) { return; } IList <TaskActive> tasks = stepDiagram.Tasks; for (int i = nextTaskIndexToAdd; i < tasks.Count; i++) { TaskActive task = tasks[i]; bool isLast = i == tasks.Count - 1; Rect rect = AddActiveWindowBox(task, isLast); AddActiveWindowLabel(task, rect); } nextTaskIndexToAdd = tasks.Count; }
public void Stop() { StepDiagram stepDiagram = Session.StepDiagram; if (stepDiagram != null) { stepDiagram.TightFit(); IList <TaskActive> tasks = stepDiagram.Tasks; if (tasks != null) { TaskActive lastTask = tasks.Last <TaskActive>(); if (lastTask != null) { lastTask.Stop = stepDiagram.StopTime; } } } RefreshDataView(); }
public static StepDiagram Stop() { if (StepDiagram == null) { throw new Exception("Call to Stop() failed. Must call HookEngine.Start before calling HookEngine.Stop."); } lock (currentProcessTimerLocker) { currentProcessTimer.Change(Timeout.Infinite, Timeout.Infinite); currentProcessTimer.Dispose(); currentProcessTimer = null; } cpuUsageCalculator = null; UnhookEvents(); StepDiagram result = StepDiagram; result.PostProcess(); StepDiagram = null; return(result); }
internal static void SetStepDiagram(StepDiagram stepDiagram) { Session.stepDiagram = stepDiagram; }