public SimplePenWindow() { InitializeComponent(); pens = new List<EditingButton> { new EditingButton(EditingButton.EditingType.Pen,"black",System.Windows.Media.Brushes.Black), new EditingButton(EditingButton.EditingType.Pen,"blue",System.Windows.Media.Brushes.Blue), new EditingButton(EditingButton.EditingType.Pen,"red",System.Windows.Media.Brushes.Red), new EditingButton(EditingButton.EditingType.Pen,"green",System.Windows.Media.Brushes.Green), new EditingButton(EditingButton.EditingType.Pen,"yellow",System.Windows.Media.Brushes.Yellow), new EditingButton(EditingButton.EditingType.Pen,"orange",System.Windows.Media.Brushes.Orange), new EditingButton(EditingButton.EditingType.Pen,"white",System.Windows.Media.Brushes.White), new EditingButton(EditingButton.EditingType.Eraser,"eraser",System.Windows.Media.Brushes.Transparent) }; populateSlidesAdvanceDictionary(); currentPen = pens[0]; PensControl.Items.Clear(); PensControl.ItemsSource = pens; foreach (var slide in slides) clickAdvanceStates.Add(slide.slideId, slide.clickAdvance); if (shouldWorkaroundClickAdvance) setClickAdvanceOnAllSlides(false); if (backgroundPolling == null) backgroundPolling = backgroundPollingTimer(); }
private DispatcherTimer backgroundPollingTimer() { if (this.Dispatcher == null) return null; return new DispatcherTimer(TimeSpan.FromMilliseconds(250), DispatcherPriority.Background, delegate { try { if (this == null || ThisAddIn.instance.Application == null || ThisAddIn.instance.Application.SlideShowWindows.Count < 1) return; var state = WindowsInteropFunctions.getAppropriateViewData(); if (HWND == null || !((int)HWND > 0)) { HwndSource source = (HwndSource)HwndSource.FromVisual(this); HWND = source.Handle; } if ((this.WindowState != WindowState.Minimized) != state.isVisible) this.WindowState = state.isVisible ? WindowState.Normal : WindowState.Minimized; if (!Double.IsNaN(state.X) && this.Left != state.X) this.Left = state.X; if (WindowsInteropFunctions.presenterActive) { if (!Double.IsNaN(state.Y) && !Double.IsNaN(state.Height)) { var newY = (state.Y + (state.Height * 0.06)); if (this.Top != newY) this.Top = newY; } } else this.Top = 0; if (!Double.IsNaN(state.Height) && state.Height > 0 && ViewboxContainer.ActualHeight != state.Height) ViewboxContainer.Height = state.Height * 0.6; if (ThisAddIn.instance != null && ThisAddIn.instance.Application != null && ThisAddIn.instance.Application.ActivePresentation != null && ThisAddIn.instance.Application.ActivePresentation.SlideShowWindow != null && ThisAddIn.instance.Application.ActivePresentation.SlideShowWindow.View != null && ThisAddIn.instance.Application.ActivePresentation.SlideShowWindow.View.PointerColor != null) { switch (ThisAddIn.instance.Application.ActivePresentation.SlideShowWindow.View.PointerType) { case PpSlideShowPointerType.ppSlideShowPointerPen: int currentColour = ThisAddIn.instance.Application.ActivePresentation.SlideShowWindow.View.PointerColor.RGB; bool penHasBeenFound = false; foreach (var pen in pens) { if (pen.type == EditingButton.EditingType.Pen && pen.RGBAasInt == currentColour) { currentPen = pen; selectPen(pen); penHasBeenFound = true; } if (!penHasBeenFound) selectPen(null); } break; case PpSlideShowPointerType.ppSlideShowPointerEraser: foreach (var pen in pens) { if (pen.type == EditingButton.EditingType.Eraser) selectPen(pen); } break; default: foreach (var pen in pens) selectPen(null); break; } } } catch (Exception) { } }, this.Dispatcher); }
private void selectPen(EditingButton button) { if (pens == null || pens.Count == 0) return; if (button == null) foreach (var pen in pens) pen.Selected = false; foreach (var pen in pens) { if (pen == button) { pen.Selected = true; } else pen.Selected = false; } }