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;
                }
            }
        }
Exemple #2
0
        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);
        }
Exemple #3
0
 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;
 }
Exemple #5
0
        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);
        }
Exemple #6
0
        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;
        }
Exemple #12
0
 public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
 {
     return(TwBrushes.FrozenSolidColorBrush(((FixtureClass)value).Color));
 }
Exemple #13
0
        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;
        }
Exemple #14
0
        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);
        }
Exemple #15
0
        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;
        }
Exemple #16
0
 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) + ".";
            }
        }