예제 #1
0
        /// <summary>
        /// Used to handle the context menu item click
        /// </summary>
        private void MenuItem_OnClick(object sender, RoutedEventArgs e)
        {
            if (e == null || e.Source == null || !(e.Source is MenuItem) || !IsLoaded) return;

            MenuItem item = e.Source as MenuItem;

            if (item.Header.ToString().ToLower().StartsWith("horizontal") || item.Header.ToString().ToLower().StartsWith("vertical"))
            {
                RotateRuler();
            }
            else if (item.Header.ToString().ToLower().StartsWith("golden spiral"))
            {
                _currentMode = RulerModes.GoldenSpiral;
                UpdateContextMenuButtons();
            }
            else if (item.Header.ToString().ToLower().StartsWith("pin"))
            {
                _currentMode = RulerModes.Pin;
                this.Width = this.Height = PIN_LENGTH;
                UpdateContextMenuButtons();
            }
            else if (item.Header.ToString().ToLower().StartsWith("drop pin"))
            {
                DropPin();
            }
            else if (item.Header.ToString().ToLower().StartsWith("remove pin"))
            {
                RemoveCurrentMouseOverPin();
            }
            else if (item.Header.ToString().ToLower().StartsWith("clear pins"))
            {
               RemovePins();
            }
            else if (item.Header.ToString().ToLower().StartsWith("standard"))
            {
                _currentMode = RulerModes.None;
                UpdateContextMenuButtons();
            }
            else if (item.Header.ToString().ToLower().StartsWith("0 degrees"))
            {
                this.GoldenRectangle.CurrentAngle = 0;
            }
            else if (item.Header.ToString().ToLower().StartsWith("90 degrees"))
            {
                this.GoldenRectangle.CurrentAngle = 90;
            }
            else if (item.Header.ToString().ToLower().StartsWith("180 degrees"))
            {
                this.GoldenRectangle.CurrentAngle = 180;
            }
            else if (item.Header.ToString().ToLower().StartsWith("270 degrees"))
            {
                this.GoldenRectangle.CurrentAngle = 270;
            }
            else if (item.Header.ToString().ToLower().StartsWith("close"))
            {
                this.Close();
            }
            else if (item.Header.ToString().ToLower().StartsWith("about open golden ruler"))
            {
                System.Diagnostics.Process.Start("http://hgbink.github.io/OpenGoldenRuler/");
            }
        }
예제 #2
0
 /// <summary>
 /// Used to handle the hot keys.
 /// For example, Ctrl + D means drop pin.
 /// </summary>
 void MainWindow_KeyDown(object sender, KeyEventArgs e)
 {
     // Ctrl + D
     if ((Keyboard.Modifiers == ModifierKeys.Control) && (e.Key == Key.D))
     {
         if (_currentMode == RulerModes.Pin)
         {
             if (btnDropPin.Header.ToString().StartsWith("remove pin")) RemoveCurrentMouseOverPin();
             else DropPin();
         }
     }
     // Ctrl + R
     else if ((Keyboard.Modifiers == ModifierKeys.Control) && (e.Key == Key.C))
     {
         if (_currentMode == RulerModes.Pin)
         {
             RemovePins();
         }
     }
     else if (e.Key == Key.Escape)
     {
         Close();
     }
     else if ((Keyboard.Modifiers == ModifierKeys.Control) && (e.Key == Key.R))
     {
         RotateRuler();
     }
     else if ((Keyboard.Modifiers == ModifierKeys.Control) && (e.Key == Key.M))
     {
         if (_currentMode == RulerModes.Pin)
         {
             _currentMode = RulerModes.None;
         }
         else if (_currentMode == RulerModes.None)
         {
             _currentMode = RulerModes.GoldenSpiral;
         }
         else
         {
             _currentMode = RulerModes.Pin;
         }
         UpdateContextMenuButtons();
     }
 }