diff --git a/src/CalcManager/CEngine/scicomm.cpp b/src/CalcManager/CEngine/scicomm.cpp index 701fb21c8..45124aa2d 100644 --- a/src/CalcManager/CEngine/scicomm.cpp +++ b/src/CalcManager/CEngine/scicomm.cpp @@ -780,6 +780,11 @@ void CCalcEngine::ProcessCommandWorker(OpCode wParam) DisplayNum(); break; + case IDC_ENG: + m_nFE = NumberFormat::Engineering; + DisplayNum(); + break; + case IDC_EXP: if (m_bRecord && !m_fIntegerMode && m_input.TryBeginExponent()) { diff --git a/src/CalcManager/Command.h b/src/CalcManager/Command.h index 8d27dc799..c6f2b46c8 100644 --- a/src/CalcManager/Command.h +++ b/src/CalcManager/Command.h @@ -66,6 +66,7 @@ namespace CalculationManager CommandGRAD = 323, CommandDegrees = 324, CommandHYP = 325, + CommandENG = 326, CommandNULL = 0, diff --git a/src/CalcManager/Header Files/CCommand.h b/src/CalcManager/Header Files/CCommand.h index 2696181a5..a56c77577 100644 --- a/src/CalcManager/Header Files/CCommand.h +++ b/src/CalcManager/Header Files/CCommand.h @@ -29,6 +29,7 @@ #define IDM_RAD 322 #define IDM_GRAD 323 #define IDM_DEGREES 324 +#define IDC_ENG 326 #define IDC_HEX IDM_HEX #define IDC_DEC IDM_DEC diff --git a/src/CalcManager/Ratpack/conv.cpp b/src/CalcManager/Ratpack/conv.cpp index 4f7609de0..893da9318 100644 --- a/src/CalcManager/Ratpack/conv.cpp +++ b/src/CalcManager/Ratpack/conv.cpp @@ -1171,7 +1171,7 @@ wstring NumberToString(_Inout_ PNUMBER& pnum, NumberFormat format, uint32_t radi { if (format == NumberFormat::Engineering) { - exponent = (eout % 3); + exponent = (3 + (eout % 3)) % 3; eout -= exponent; exponent++; diff --git a/src/CalcViewModel/Common/CalculatorButtonUser.h b/src/CalcViewModel/Common/CalculatorButtonUser.h index 4885e4887..1c64eac64 100644 --- a/src/CalcViewModel/Common/CalculatorButtonUser.h +++ b/src/CalcViewModel/Common/CalculatorButtonUser.h @@ -38,6 +38,7 @@ namespace CalculatorApp::ViewModel::Common Radians = (int)CM::Command::CommandRAD, Grads = (int)CM::Command::CommandGRAD, Degrees = (int)CM::Command::CommandDegrees, + Engineering = (int)CM::Command::CommandENG, OpenParenthesis = (int)CM::Command::CommandOPENP, CloseParenthesis = (int)CM::Command::CommandCLOSEP, Pi = (int)CM::Command::CommandPI, diff --git a/src/CalcViewModel/StandardCalculatorViewModel.cpp b/src/CalcViewModel/StandardCalculatorViewModel.cpp index 22554ca65..736497bdf 100644 --- a/src/CalcViewModel/StandardCalculatorViewModel.cpp +++ b/src/CalcViewModel/StandardCalculatorViewModel.cpp @@ -448,6 +448,12 @@ void StandardCalculatorViewModel::FtoEButtonToggled() OnButtonPressed(NumbersAndOperatorsEnum::FToE); } +void StandardCalculatorViewModel::EngButton() +{ + OnButtonPressed(NumbersAndOperatorsEnum::Engineering); +} + + void StandardCalculatorViewModel::HandleUpdatedOperandData(Command cmdenum) { DisplayExpressionToken ^ displayExpressionToken = ExpressionTokens->GetAt(m_TokenPosition); diff --git a/src/CalcViewModel/StandardCalculatorViewModel.h b/src/CalcViewModel/StandardCalculatorViewModel.h index 0af82478e..187b2bf23 100644 --- a/src/CalcViewModel/StandardCalculatorViewModel.h +++ b/src/CalcViewModel/StandardCalculatorViewModel.h @@ -258,6 +258,7 @@ namespace CalculatorApp void SetOpenParenthesisCountNarratorAnnouncement(); void SwitchAngleType(CalculatorApp::ViewModel::Common::NumbersAndOperatorsEnum num); void FtoEButtonToggled(); + void EngButton(); internal: void OnPaste(Platform::String ^ pastedString); diff --git a/src/Calculator/Views/CalculatorScientificAngleButtons.xaml b/src/Calculator/Views/CalculatorScientificAngleButtons.xaml index ca30815cc..ba3fe1ec4 100644 --- a/src/Calculator/Views/CalculatorScientificAngleButtons.xaml +++ b/src/Calculator/Views/CalculatorScientificAngleButtons.xaml @@ -98,21 +98,32 @@ CommandParameter="2" Content="GRAD" Visibility="Collapsed"/> - - - FToE - - + +