private void ComboBoxCalc_SelectionChanged(object sender, SelectionChangedEventArgs e) { MenuItemDelSelected.IsEnabled = true; if (mComboBoxCalc.SelectedIndex >= 0 && mComboBoxCalc.SelectedIndex < mCalcList.Count) { mCalcCur = new CalcItem(mCalcList[mComboBoxCalc.SelectedIndex]); } }
private void OnIsMouseOver(object sender, EventArgs e) { ComboBoxItem cmb = sender as ComboBoxItem; if (cmb.IsMouseOver) { CalcItem item = cmb.DataContext as CalcItem; if (item != null) { //Console.WriteLine(item.FullText); mTextResult.Text = item.mCalcTextResult; Size size = MeasureString(mTextResult.Text); mTextResult.Width = size.Width; } //do something... } }
private void ComboBoxItem_PreviewMouseDown(object sender, MouseButtonEventArgs e) { ComboBoxItem cbItem = sender as ComboBoxItem; if (e.RightButton == MouseButtonState.Pressed) { if (cbItem != null) { CalcItem cItem = cbItem.DataContext as CalcItem; if (cItem != null) { mCalcList.Remove(cItem); mComboBoxCalc.ItemsSource = null; mComboBoxCalc.ItemsSource = mCalcList; e.Handled = true; } } } }
public MainWindow() { mGlobalKeyboardHook = new GlobalKeyboardHook(); mGlobalKeyboardHook.KeyboardPressed += OnGlobalKeyPressed; InitializeComponent(); mCalcCur = null; mCalcList = new List <CalcItem>(); mComboBoxCalc.ItemsSource = mCalcList; double res; //res = RegexFormulas.Eval("(99)+(-23-((3+101b)/(0xF0)+-0x123+(0+1+2-3/4*5%6pow7pow8--++----9)))"); res = RegexFormulas.Eval("1-2pow-2"); res = RegexFormulas.Eval("1+log2-3pow2"); //res = RegexFormulas.Eval("-(1+2)"); //res = RegexFormulas.Eval("100^165"); //res = RegexFormulas.Eval("int(1111pow11111)"); //RegexFormulas.Eval("0+1+2-3/4*5%6pow7pow8--++----9", out res); }
public CalcItem(CalcItem item) { mCalcText = item.mCalcText; mCalcResult = item.mCalcResult; mCalcTextResult = item.mCalcTextResult; }
private void CalText(string text) { //MenuItemDebug.Header = "[Debug] " + (mDebugMode == 0?"Both":mDebugMode == 1? "3rd":"Native"); double resultNative = double.NaN; double result3rd = double.NaN; mTextEqualitySign.Text = "="; bool isErrorDetected = false; if (mDebugMode == 0 || mDebugMode >= 2) { try { RegexFormulas.EvalWarningFlags flags = RegexFormulas.EvalWarningFlags.None; resultNative = RegexFormulas.Eval(text, ref flags); if ((flags & RegexFormulas.EvalWarningFlags.DoubleToInt) != 0) { Console.WriteLine(RegexFormulas.EvalWarningFlags.DoubleToInt); mTextEqualitySign.Text = "≈"; } } catch (ArgumentOutOfRangeException ea) { isErrorDetected = true; mTextResult.Text = "OutOfRange:" + ea.Message; resultNative = double.NaN; } catch (OverflowException eof) { isErrorDetected = true; mTextResult.Text = "Overflow:" + eof.Message; resultNative = double.NaN; } catch (DivideByZeroException ediv) { isErrorDetected = true; mTextResult.Text = "DivideByZero"; resultNative = double.NaN; } catch (Exception ex) { //Console.WriteLine(ex.Message); resultNative = double.NaN; } } #if !ENABLE_DynamicExpresso if (mDebugMode == 0 || mDebugMode == 1) { try { var result = mInterpreter.Eval(cb.Text); if (result.GetType() == typeof(int)) { result3rd = (int)result; } else if (result.GetType() == typeof(float)) { result3rd = (double)((float)result); } else if (result.GetType() == typeof(double)) { result3rd = (double)result; } } catch (Exception ex) { Console.WriteLine(ex.Message); result3rd = double.NaN; } } #else result3rd = resultNative; #endif if (double.IsNaN(resultNative) && double.IsNaN(result3rd)) { if (!isErrorDetected) { mTextResult.Text = "----"; } ; mTextResult.Opacity = 0.5; if (mCalcCur != null) { mCalcCur.mCalcResult = Double.NaN; mCalcCur.mCalcTextResult = ""; } } else { if (mCalcCur == null) { mCalcCur = new CalcItem(); } mCalcCur.mCalcText = text; if (!double.IsNaN(resultNative)) { mCalcCur.mCalcResult = resultNative; } else if (!double.IsNaN(result3rd)) { mCalcCur.mCalcResult = result3rd; } mCalcCur.mCalcTextResult = mCalcCur.mCalcResult.ToString(); if (mDebugMode == 0) { Console.WriteLine("Native:" + resultNative + " 3rd:" + result3rd); } { UpdateResult(); if (mDebugMode == 0) { if ((!double.IsNaN(resultNative) && !double.IsNaN(result3rd) && Math.Abs(resultNative - result3rd) > 2) || (double.IsNaN(resultNative) && !double.IsNaN(result3rd))) { mTextResult.Text = "N:" + resultNative + " 3:" + result3rd; } } mTextResult.Opacity = 1; } } }
private void ComboBoxCalc_KeyUp(object sender, KeyEventArgs e) { ComboBox cb = sender as ComboBox; if (cb == null) { return; } Size size = MeasureString(cb.Text); cb.Width = size.Width + 17 + 2 + 24; MenuItemDelSelected.IsEnabled = false; string cmdResultMsg; CMD_TYPE cmdType = CheckCmd(cb.Text, false, out cmdResultMsg); if (e.Key == Key.Escape) { if (cb.Text.Length == 0) { this.Hide(); } else { cb.Text = ""; mTextResult.Text = "----"; mTextResult.Opacity = 0.5; } } else if (e.Key == Key.Up && mComboBoxCalc.IsDropDownOpen) { mComboBoxCalc.IsDropDownOpen = false; } else if (e.Key == Key.Down && !mComboBoxCalc.IsDropDownOpen) { mComboBoxCalc.IsDropDownOpen = true; } else if (cmdType != CMD_TYPE.None) { if (e.Key == Key.Enter && (cmdType & CMD_TYPE.Done) != 0) { cmdType = CheckCmd(cb.Text, true, out cmdResultMsg); if ((cmdType & CMD_TYPE.Done) != 0) { cb.Text = ""; mTextResult.Text = "Saved"; cmdType = CMD_TYPE.None; } else { mTextResult.Text = "ERROR?!?!"; } } else { mTextResult.Text = cmdResultMsg; } mTextResult.Opacity = ((cmdType & CMD_TYPE.Done) != 0 || (cmdType & CMD_TYPE.Default) != 0) ? 1:0.5; } else { CalText(cb.Text); if (e != null && e.Key == Key.Enter) { cb.Text = ""; mTextResult.Text = "Saved"; mTextResult.Opacity = 0.5; mCalcList.Add(mCalcCur); mComboBoxCalc.ItemsSource = null; mComboBoxCalc.ItemsSource = mCalcList; mCalcCur = null; } } size = MeasureString(mTextResult.Text); mTextResult.Width = size.Width; e.Handled = true; }