コード例 #1
0
 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();
 }
コード例 #2
0
 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);
 }
コード例 #3
0
 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;
     }
 }