void UpdateFixtureSummaryInstanceDeltaTotals(TextBlock textBlock, FixtureSummaries fixtureSummariesOld, FixtureSummaries fixtureSummariesNew) { int countNew = fixtureSummariesNew.CountEvents(); int countOld = fixtureSummariesOld.CountEvents(); int deltaCount = countNew - countOld; if (deltaCount == 0) { textBlock.Text = string.Empty; } else { if (deltaCount > 0) { textBlock.Text = "+" + deltaCount.ToString(); textBlock.Foreground = TwBrushes.GetPlusBrush(); textBlock.FontWeight = FontWeights.Bold; } else { textBlock.Text = deltaCount.ToString(); textBlock.Foreground = TwBrushes.GetMinusBrush(); textBlock.FontWeight = FontWeights.Bold; } } }
public static Grid FixtureWithNoLabel(FixtureClass fixtureClass) { Grid grid = new Grid(); grid.Margin = new Thickness(1, 1, 1, 1); RowDefinition rowdef = new RowDefinition(); rowdef.Height = new GridLength(1, GridUnitType.Star); grid.RowDefinitions.Add(rowdef); rowdef = new RowDefinition(); rowdef.Height = GridLength.Auto; grid.RowDefinitions.Add(rowdef); Image image = new Image(); image.Style = (Style)ResourceLocator.FindResource("ImageStyle"); image.Source = TwGui.GetImage(fixtureClass.ImageFilename); Border border = new Border(); border.Style = (Style)ResourceLocator.FindResource("FixtureBorderStyle"); border.Background = TwBrushes.FrozenSolidColorBrush(fixtureClass.Color); border.Child = image; Grid.SetRow(border, 1); grid.Children.Add(border); grid.ToolTip = fixtureClass.FriendlyName; return(grid); }
public Brush FrozenSolidColorBrush(Color color) { if (colors.Contains(color)) { return(brushes[colors.IndexOf(color)]); } colors.Add(color); brushes.Add(TwBrushes.FrozenSolidColorBrush(color)); return(brushes[colors.IndexOf(color)]); }
public void Initialize() { Image.Source = TwGui.GetImage(FixtureClass.ImageFilename); this.Content = Image; this.Tag = FixtureClass; this.Background = TwBrushes.FrozenSolidColorBrush(FixtureClass.Color); this.Style = (Style)ResourceLocator.FindResource(FixtureClass.LowFrequency ? "ToolBarFixtureLowFrequencyButtonStyle" : "ToolBarFixtureButtonStyle"); this.ToolTip = "Classify as " + FixtureClass.FriendlyName + " (" + FixtureClass.Character + ")"; this.ContextMenu = FixtureButtonContextMenu(); this.CommandParameter = FixtureClass; }
public static Grid FixtureWithImageLeftMenu(FixtureClass fixtureClass) { Grid grid = new Grid(); grid.Margin = new Thickness(1, 0, 1, 0); grid.Tag = fixtureClass; ColumnDefinition columnDefinition = new ColumnDefinition(); columnDefinition.Width = GridLength.Auto; grid.ColumnDefinitions.Add(columnDefinition); columnDefinition = new ColumnDefinition(); columnDefinition.Width = new GridLength(1, GridUnitType.Star); grid.ColumnDefinitions.Add(columnDefinition); Image image = new Image(); image.Style = (Style)ResourceLocator.FindResource("ImageStyle"); image.Source = TwGui.GetImage(fixtureClass.ImageFilename); Border border = new Border(); border.Style = (Style)ResourceLocator.FindResource("FixtureBorderStyle"); border.Background = TwBrushes.FrozenSolidColorBrush(fixtureClass.Color); border.Child = image; Grid.SetColumn(border, 0); grid.Children.Add(border); var label = new Label(); label.Content = fixtureClass.LabelName; label.FontWeight = FontWeights.Normal; label.HorizontalAlignment = HorizontalAlignment.Left; label.VerticalAlignment = VerticalAlignment.Top; label.Padding = new Thickness(1, 0, 1, 0); label.Margin = new Thickness(5, 0, 5, 0); Grid.SetColumn(label, 1); grid.Children.Add(label); return(grid); }
public static Grid FixtureWithImageRight(FixtureClass fixtureClass) { Grid grid = new Grid(); grid.Margin = new Thickness(1, 1, 1, 1); var coldefImage = new ColumnDefinition(); coldefImage.Width = new GridLength(1, GridUnitType.Star); grid.ColumnDefinitions.Add(coldefImage); var coldefText = new ColumnDefinition(); coldefText.Width = GridLength.Auto; grid.ColumnDefinitions.Add(coldefText); Image image = new Image(); image.Style = (Style)ResourceLocator.FindResource("ImageStyle"); image.Source = TwGui.GetImage(fixtureClass.ImageFilename); Border border = new Border(); border.Style = (Style)ResourceLocator.FindResource("FixtureBorderStyle"); border.Background = TwBrushes.FrozenSolidColorBrush(fixtureClass.Color); border.Child = image; Grid.SetColumn(border, 1); grid.Children.Add(border); TextBlock textBlock = new TextBlock(); textBlock.Text = fixtureClass.FriendlyName; textBlock.Margin = new Thickness(0, 0, 6, 0); textBlock.TextAlignment = TextAlignment.Right; textBlock.HorizontalAlignment = HorizontalAlignment.Right; textBlock.VerticalAlignment = VerticalAlignment.Center; Grid.SetColumn(textBlock, 0); grid.Children.Add(textBlock); return(grid); }
MenuItem FixtureButtonContextMenuItem(string label, RoutedUICommand command) { var menuItem = new MenuItem(); menuItem.Header = label + " " + FixtureClass.FriendlyName; var image = new Image(); image.Source = TwGui.GetImage(FixtureClass.ImageFilename); var border = new Border(); border.Padding = new Thickness(2); border.Background = TwBrushes.FrozenSolidColorBrush(FixtureClass.Color); border.Child = image; menuItem.Icon = border; menuItem.Command = command; menuItem.CommandParameter = FixtureClass; return(menuItem); }
public void ShowVerticalGuideline(int zIndex) { int numRows = MaximumVolumeInTrace; Brush brush = TwBrushes.BrushFromColor(Properties.Settings.Default.GraphVerticalGuidelineColor); double width = EventsViewer.ScrollViewer.HorizontalOffset + EventsViewer.ViewportWidth / 2; double height = MaximumVolumeInTrace * HeightMultiplier; RectangleGeometry rect = new RectangleGeometry(new Rect(width, 0, 0, height)); rect.SetValue(RenderOptions.EdgeModeProperty, EdgeMode.Aliased); rect.Freeze(); pathVerticalGuideline = new Path(); pathVerticalGuideline.Stroke = brush; pathVerticalGuideline.StrokeThickness = 1; pathVerticalGuideline.SnapsToDevicePixels = false; pathVerticalGuideline.Data = rect; Canvas.SetZIndex(pathVerticalGuideline, zIndex); this.Children.Add(pathVerticalGuideline); }
Brush GetBrush() { Brush brush; if (Event.Selected) { brush = TwBrushes.DiagonalLowerLeftStripedColorBrush(Event.FixtureClass.Color); } else if (Event.FirstCycle) { brush = TwBrushes.HorizontalStripedColorBrush(Event.FixtureClass.Color); } else if (Event.Channel == Channel.Super) { brush = TwBrushes.DiagonalUpperLeftStripedColorBrush(Event.FixtureClass.Color); } else { brush = TwSingletonBrushes.Instance.FrozenSolidColorBrush(Event.FixtureClass.Color); } return(brush); }
void ShowRows(bool showTwentyFiveVolumeRows, bool showFiveVolumeRows, bool showOneVolumeRows) { int numRows = MaximumVolumeInTrace; Brush brush = TwBrushes.BrushFromColor(Properties.Settings.Default.GraphHorizontalGuidelineColor); for (int i = 1; i < numRows; i++) { if (showTwentyFiveVolumeRows && i % 25 == 0) { pathHorizontalGuidelines.Add(RenderRow(i, brush, 3.0, -1)); } else if (showFiveVolumeRows && i % 5 == 0) { pathHorizontalGuidelines.Add(RenderRow(i, brush, 2.0, -1)); } else if (showOneVolumeRows) { pathHorizontalGuidelines.Add(RenderRow(i, brush, 1.0, -1)); } } }
void Initialize() { if (FixtureClass != null) { if (CanDrag) { this.PreviewMouseLeftButtonDown += new MouseButtonEventHandler(previewMouseLeftButtonDown); this.PreviewMouseLeftButtonUp += new MouseButtonEventHandler(previewMouseLeftButtonUp); this.PreviewMouseMove += new MouseEventHandler(previewMouseMove); } Image.Source = TwGui.GetImage(FixtureClass.ImageFilename); Border.Background = TwBrushes.FrozenSolidColorBrush(FixtureClass.Color); Tag = FixtureClass; LabelFixtureName.Text = FixtureClass.ShortName; if (manuallyClassified) { LabelFixtureName.Text += "*"; LabelFixtureName.ToolTip = "* Manually classified as " + fixtureClass.FriendlyName + " by user. Will not be overridden by machine classification."; } LabelFirstCycle.ToolTip = "Manually classified as 1st Cycle"; if (firstCycleManuallyClassified) { LabelFirstCycle.Text += "*"; LabelFirstCycle.ToolTip = "* Manually classified as 1st Cycle by user. Will not be overridden by machine classification."; } } else if (!string.IsNullOrEmpty(Label)) { LabelFixtureName.Text = Label; } LabelFirstCycle.Visibility = firstCycle ? Visibility.Visible : Visibility.Collapsed; Border.HorizontalAlignment = HorizontalImageAlignment; LabelFixtureName.HorizontalAlignment = HorizontalImageAlignment; }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { return(TwBrushes.FrozenSolidColorBrush(((FixtureClass)value).Color)); }
public StyledFixtureLabel(Event @event, bool showFriendlyName, bool activateCommand) { this.Focusable = false; this.IsTabStop = false; if (activateCommand) { this.InputBindings.Add(new MouseBinding(AnalysisPanel.BringSelectedEventIntoViewCommand, new MouseGesture(MouseAction.LeftDoubleClick, ModifierKeys.None))); } FixtureClass = @event.FixtureClass; this.ToolTip = BuildToolTip(@event); var panel = new StackPanel(); panel.Orientation = Orientation.Horizontal; var panelTicks = new StackPanel(); { var tick = new ClassificationTick(); tick.Padding = new Thickness(0, 1, 4, 1); tick.VerticalAlignment = VerticalAlignment.Center; if (@event.ManuallyClassified) { tick.TickClassifiedUsingFixtureList.Visibility = Visibility.Collapsed; tick.TickClassifiedUsingMachineLearning.Visibility = Visibility.Collapsed; } else if (@event.ClassifiedUsingFixtureList) { tick.TickManuallyClassified.Visibility = Visibility.Collapsed; tick.TickClassifiedUsingMachineLearning.Visibility = Visibility.Collapsed; } else { tick.TickManuallyClassified.Visibility = Visibility.Collapsed; tick.TickClassifiedUsingFixtureList.Visibility = Visibility.Collapsed; } panelTicks.Children.Add(tick); } if (@event.ManuallyApproved) { var tick = new ApprovalTick(); tick.Padding = new Thickness(0, 1, 4, 1); tick.VerticalAlignment = VerticalAlignment.Center; panelTicks.Children.Add(tick); } panel.Children.Add(panelTicks); Image image = new Image(); image.Style = (Style)ResourceLocator.FindResource("ImageStyle"); image.Source = TwGui.GetImage(@event.FixtureClass.ImageFilename); Border border = new Border(); border.Margin = new Thickness(3, 0, 0, 0); border.Style = (Style)ResourceLocator.FindResource("FixtureBorderStyle"); border.Background = TwBrushes.FrozenSolidColorBrush(@event.FixtureClass.Color); border.VerticalAlignment = VerticalAlignment.Top; border.Child = image; panel.Children.Add(border); var label = new TextBlock(); label.Text = showFriendlyName ? @event.FixtureClass.FriendlyName : @event.FixtureClass.ShortName; label.Padding = new Thickness(3, 0, 0, 0); panel.Children.Add(label); if (@event.FirstCycle) { label = new TextBlock(); label.FontSize = 8; label.BaselineOffset = 10; label.Text = "1"; if ([email protected]) { label.FontStyle = FontStyles.Italic; } label.Padding = new Thickness(3, 0, 0, 0); panel.Children.Add(label); } else if (@event.ManuallyClassifiedFirstCycle) { label = new TextBlock(); label.FontSize = 8; label.BaselineOffset = 10; label.Text = "0"; label.Padding = new Thickness(3, 0, 0, 0); panel.Children.Add(label); } //if (!string.IsNullOrEmpty(@event.UserNotes)) { // label = new TextBlock(); // label.Padding = new Thickness(3, 0, 0, 0); // label.Text = "N"; // panel.Children.Add(label); //} this.Content = panel; }
Path DrawWedge(double radius, double startAngle, out double endAngle, FixtureSummary fixtureSummary) { Path path = new Path(); Canvas.SetLeft(path, radius); Canvas.SetTop(path, radius); path.Fill = TwBrushes.FrozenSolidColorBrush(fixtureSummary.FixtureClass); PathGeometry pathGeometry = new PathGeometry(); PathFigure pathFigure = new PathFigure(); pathFigure.StartPoint = new Point(0, 0); pathFigure.IsClosed = true; Point startArc = new Point(Math.Cos(startAngle * Math.PI / 180) * radius, Math.Sin(startAngle * Math.PI / 180) * radius); LineSegment lineSegment = new LineSegment(startArc, true); ArcSegment arcSegment = new ArcSegment(); double percent = ByInstances ? fixtureSummary.PercentCount : fixtureSummary.PercentVolume; double angle; if (fixtureSummary.PercentCount == 1) { angle = 359.99; // WPF won't draw a wedge from 0 to 360 degrees, so we fake it } else { angle = percent * 360; } arcSegment.IsLargeArc = angle >= 180.0; arcSegment.Point = new Point(Math.Cos((startAngle + angle) * Math.PI / 180) * radius, Math.Sin((startAngle + angle) * Math.PI / 180) * radius); arcSegment.Size = new Size(radius, radius); arcSegment.SweepDirection = SweepDirection.Clockwise; pathFigure.Segments.Add(lineSegment); pathFigure.Segments.Add(arcSegment); pathGeometry.Figures.Add(pathFigure); path.Data = pathGeometry; endAngle = startAngle + angle; if (!IsEnlargeable) { if (ByInstances) { path.ToolTip = new PieChartToolTip(fixtureSummary.FixtureClass, ByInstances, fixtureSummary.Count.ToString(), fixtureSummary.PercentCount); } else { path.ToolTip = new PieChartToolTip(fixtureSummary.FixtureClass, ByInstances, fixtureSummary.Volume.ToString("0.0"), fixtureSummary.PercentVolume); } } ToolTipService.SetShowDuration(path, 60000); ToolTipService.SetInitialShowDelay(path, 500); return(path); }
public StyledFixtureLabel(FixtureClass fixtureClass, FontWeight fontWeight, bool showKey, bool manuallyClassified, bool firstCycle, bool firstCycleManuallyClassified, bool showFriendlyName, bool singleRow, bool showHasNotes) { this.Focusable = false; this.IsTabStop = false; this.InputBindings.Add(new MouseBinding(AnalysisPanel.BringSelectedEventIntoViewCommand, new MouseGesture(MouseAction.LeftDoubleClick, ModifierKeys.None))); FixtureClass = fixtureClass; Grid grid = new Grid(); ColumnDefinition coldefText = new ColumnDefinition(); coldefText.Width = GridLength.Auto; grid.ColumnDefinitions.Add(coldefText); ColumnDefinition coldefImage = new ColumnDefinition(); coldefImage.Width = new GridLength(1, GridUnitType.Star); grid.ColumnDefinitions.Add(coldefImage); Image image = new Image(); image.Style = (Style)ResourceLocator.FindResource("ImageStyle"); image.Source = TwGui.GetImage(fixtureClass.ImageFilename); Border border = new Border(); border.Style = (Style)ResourceLocator.FindResource("FixtureBorderStyle"); border.Background = TwBrushes.FrozenSolidColorBrush(fixtureClass.Color); border.VerticalAlignment = VerticalAlignment.Top; border.Child = image; Grid.SetColumn(border, 0); grid.Children.Add(border); var stackPanel = new StackPanel(); var label = new TextBlock(); var name = showFriendlyName ? fixtureClass.FriendlyName : fixtureClass.ShortName; if (showKey) { label.Text = name + " (" + fixtureClass.Character + ")"; } else { label.Text = name; } if (singleRow) { grid.ToolTip = "Selected Event is " + fixtureClass.FriendlyName; } if (manuallyClassified) { label.Text += "*"; if (singleRow) { grid.ToolTip += "\r\n* = Manually classified"; } } label.Margin = new Thickness(6, 0, 0, 0); label.FontWeight = fontWeight; label.HorizontalAlignment = HorizontalAlignment.Left; label.VerticalAlignment = VerticalAlignment.Center; stackPanel.Children.Add(label); if (firstCycle) { label = new TextBlock(); label.Text = "(1st Cycle)"; label.Margin = new Thickness(6, 0, 0, 0); label.FontWeight = fontWeight; label.HorizontalAlignment = HorizontalAlignment.Left; label.VerticalAlignment = VerticalAlignment.Center; stackPanel.Children.Add(label); if (singleRow) { stackPanel.Orientation = Orientation.Horizontal; label.Text = "1"; if (singleRow) { grid.ToolTip += "\r\n1 = 1st Cycle"; } } if (firstCycleManuallyClassified) { label.Text += "*"; } } if (showHasNotes) { label = new TextBlock(); label.Text = "Notes"; label.Margin = new Thickness(6, 0, 0, 0); label.FontWeight = fontWeight; label.HorizontalAlignment = HorizontalAlignment.Left; label.VerticalAlignment = VerticalAlignment.Center; stackPanel.Children.Add(label); if (singleRow) { stackPanel.Orientation = Orientation.Horizontal; label.Text = "N"; grid.ToolTip += "\r\nN = Has User Notes"; } } Grid.SetColumn(stackPanel, 1); grid.Children.Add(stackPanel); this.Content = grid; }
public void Initialize() { this.Background = TwBrushes.BrushFromColor(Properties.Settings.Default.GraphRulerColor); }
void UpdateFixtureSummaryInstanceDelta(TextBlock textBlock, FixtureSummaries fixtureSummariesNew, FixtureSummaries fixtureSummariesOld, FixtureClass fixtureClass) { int countNew = fixtureSummariesNew[fixtureClass].Count; int countOld = fixtureSummariesOld[fixtureClass].Count; int deltaCount = countNew - countOld; int countFirstCyclesNew = fixtureSummariesNew[fixtureClass].FirstCycles; int countFirstCyclesOld = fixtureSummariesOld[fixtureClass].FirstCycles; int deltaFirstCyclesCount = countFirstCyclesNew - countFirstCyclesOld; textBlock.Text = string.Empty; textBlock.ToolTip = string.Empty; if (deltaCount == 0 && deltaFirstCyclesCount == 0) { return; } if (deltaCount != 0) { textBlock.ToolTip += "This action "; if (deltaCount > 0) { textBlock.Text = "+" + deltaCount.ToString(); textBlock.Foreground = TwBrushes.GetPlusBrush(); textBlock.FontWeight = FontWeights.Bold; textBlock.ToolTip += "increased "; } else { textBlock.Text = deltaCount.ToString(); textBlock.Foreground = TwBrushes.GetMinusBrush(); textBlock.FontWeight = FontWeights.Bold; textBlock.ToolTip += "decreased "; } textBlock.ToolTip += "the number of " + fixtureClass.FriendlyName + " events by " + Math.Abs(deltaCount) + "."; if (deltaFirstCyclesCount != 0) { textBlock.ToolTip += "\r\n"; } } if (deltaFirstCyclesCount != 0) { textBlock.ToolTip += "This action "; if (deltaFirstCyclesCount > 0) { textBlock.Text += WrapInParentheses("+" + deltaFirstCyclesCount.ToString()); textBlock.Foreground = TwBrushes.GetPlusBrush(); textBlock.FontWeight = FontWeights.Bold; textBlock.ToolTip += "increased "; } else if (deltaFirstCyclesCount < 0) { textBlock.Text += WrapInParentheses(deltaFirstCyclesCount.ToString()); textBlock.Foreground = TwBrushes.GetMinusBrush(); textBlock.FontWeight = FontWeights.Bold; textBlock.ToolTip += "decreased "; } textBlock.ToolTip += "the number of " + fixtureClass.FriendlyName + " 1st cycles by " + Math.Abs(deltaFirstCyclesCount) + "."; } }