/// <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/"); } }
/// <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(); } }