/** * \brief Reakce na kliknutí na tlačítko * \param sender Odesílatel funkce * \param e Argumenty eventu */ private void ButtonClick(object sender, RoutedEventArgs e) { ROVNASE.Focus(); //aby na tlačítko 'ENTER' reagovalo '=' Button clickedButton = sender as Button; //které tlačítko vyvolalo proceduru #if DEBUG Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("BUTTON:\t\t\tZmáčknuta tlačítko \"{0}\"", clickedButton.Name); Console.ResetColor(); #endif if (clickedButton == null) { return; //kontrola "kdyby náhodou" } if ((Keyboard.Modifiers == ModifierKeys.Control) && (clickedButton.Name == "minus")) { NumberNeg(); } else { switch (clickedButton.Name) { #region ísla case "jedna": //1 NumberOutput("1"); break; case "dva": //2 NumberOutput("2"); break; case "tri": //3 NumberOutput("3"); break; case "ctr": //4 NumberOutput("4"); break; case "pet": //5 NumberOutput("5"); break; case "sest": //6 NumberOutput("6"); break; case "sedm": //7 NumberOutput("7"); break; case "osm": //8 NumberOutput("8"); break; case "devet": //9 NumberOutput("9"); break; case "nula": //0 NumberOutput("0"); break; case "tecka": //. if (!(string.IsNullOrEmpty(textOutput.Text)) && PointMode != true) { PointMode = true; if (NumberMode == false) { textOutput.Text = "0,"; NumberMode = true; } else { textOutput.Text += ","; } } break; #endregion ísla #region základní znamínka case "plus": SignInput("+"); InputShow(Example); break; case "minus": SignInput("-"); InputShow(Example); break; case "krat": SignInput("×"); InputShow(Example); break; case "deleno": SignInput("÷"); InputShow(Example); break; #endregion základní znamínka #region pokročilá znamínka case "mocnina": SignInput("^"); InputShow(Example); break; case "odmocnina": SignInput("√"); InputShow(Example); break; case "faktorial": //SignInput("!"); //InputShow(Example); try { if (double.Parse(textOutput.Text) > 170) { throw new ArgumentOutOfRangeException(); } textOutput.Text = M.fce_fakt(double.Parse(textOutput.Text)).ToString(); MadeFakt = true; } catch (Exception ex) { #if DEBUG Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Exception: {0}", ex.TargetSite.Name); Console.ResetColor(); #endif switch (ex.TargetSite.Name) { case "fce_fakt": textOutput.Text = "NO NEG FAKT"; break; default: textOutput.Text = "FAKT ERROR"; break; } GotError = true; PointMode = false; ANSWER = "0"; NumberMode = false; Example = string.Empty; ExampleList.Clear(); textInput.Text = "0"; } break; #endregion pokročilá znamínka #region pomocná tlačítka case "zpet": if (!(string.IsNullOrEmpty(textOutput.Text)) && textOutput.Text.Length > 1) { if (textOutput.Text[textOutput.Text.Length - 1] == '.') { PointMode = false; } textOutput.Text = textOutput.Text.Remove(textOutput.Text.Length - 1); } else { textOutput.Text = "0"; } break; case "clean": textOutput.Text = "0"; PointMode = false; break; case "cleanall": Example = string.Empty; ExampleList.Clear(); textOutput.Text = "0"; textInput.Text = "0"; PointMode = false; break; case "switch": ResultSwitch(); break; #endregion pomocná tlačítka #region konečná tlačítka case "ANS": textOutput.Text = ANSWER; break; case "ROVNASE": Example += textOutput.Text; ExampleList.Add(textOutput.Text); InputShow(Example); textOutput.Text = "0"; InputProcess(Example); break; #endregion konečná tlačítka } } }
/** * \brief Reakce na klávesy klávesnice * \param sender Odesílatel funkce * \param e Argumenty eventu */ private void PressKey(object sender, KeyEventArgs e) { #if DEBUG Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("KEY:\t\t\tZmáčknuta klávesa \"{0}\"", e.Key); Console.ResetColor(); #endif //if ((Keyboard.Modifiers == ModifierKeys.Control) && (e.Key == Key.Subtract)) //{ //NumberNeg(); //} //else //{ switch (e.Key) { #region ísla case Key.D1: case Key.NumPad1: jedna.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; case Key.D2: case Key.NumPad2: dva.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; case Key.D3: case Key.NumPad3: tri.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; case Key.D4: case Key.NumPad4: ctr.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; case Key.D5: case Key.NumPad5: pet.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; case Key.D6: case Key.NumPad6: sest.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; case Key.D7: case Key.NumPad7: sedm.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; case Key.D8: case Key.NumPad8: osm.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; case Key.D9: case Key.NumPad9: devet.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; case Key.D0: case Key.NumPad0: nula.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; case Key.Decimal: //, tecka.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; #endregion ísla #region základní znaménka case Key.Add: //+ plus.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; case Key.Subtract: //- minus.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; case Key.Multiply: //× krat.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; case Key.Divide: //÷ deleno.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; #endregion základní znaménka case Key.Back: zpet.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; case Key.Enter: ROVNASE.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; case Key.Escape: buttonClose.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); break; } //} }