diff --git a/.gitignore b/.gitignore index 0167a23c..ed4b08c6 100644 --- a/.gitignore +++ b/.gitignore @@ -93,6 +93,9 @@ ipch/ *.vspx *.sap +# Visual Studio Code +.vscode/ + # TFS 2012 Local Workspace $tf/ diff --git a/src/CalcManager/CEngine/scicomm.cpp b/src/CalcManager/CEngine/scicomm.cpp index 5e3247f9..4d671fbd 100644 --- a/src/CalcManager/CEngine/scicomm.cpp +++ b/src/CalcManager/CEngine/scicomm.cpp @@ -18,7 +18,6 @@ #include #include "Header Files/CalcEngine.h" #include "Header Files/CalcUtils.h" -#include "NumberFormattingUtils.h" using namespace std; using namespace CalcEngine; diff --git a/src/CalcManager/NumberFormattingUtils.cpp b/src/CalcManager/NumberFormattingUtils.cpp index 63563972..3c5b9feb 100644 --- a/src/CalcManager/NumberFormattingUtils.cpp +++ b/src/CalcManager/NumberFormattingUtils.cpp @@ -3,7 +3,7 @@ using namespace std; -namespace CalcManager::NumberFormattingUtils +namespace UnitConversionManager::NumberFormattingUtils { /// /// Trims out any trailing zeros or decimals in the given input string diff --git a/src/CalcManager/NumberFormattingUtils.h b/src/CalcManager/NumberFormattingUtils.h index f5587fe6..05585fea 100644 --- a/src/CalcManager/NumberFormattingUtils.h +++ b/src/CalcManager/NumberFormattingUtils.h @@ -6,7 +6,7 @@ #include #include "sal_cross_platform.h" -namespace CalcManager::NumberFormattingUtils +namespace UnitConversionManager::NumberFormattingUtils { void TrimTrailingZeros(_Inout_ std::wstring& input); unsigned int GetNumberDigits(std::wstring value); diff --git a/src/CalcManager/UnitConverter.cpp b/src/CalcManager/UnitConverter.cpp index 3d4b1865..41afd272 100644 --- a/src/CalcManager/UnitConverter.cpp +++ b/src/CalcManager/UnitConverter.cpp @@ -11,7 +11,7 @@ using namespace std; using namespace UnitConversionManager; -using namespace CalcManager::NumberFormattingUtils; +using namespace UnitConversionManager::NumberFormattingUtils; static constexpr uint32_t EXPECTEDSERIALIZEDCATEGORYTOKENCOUNT = 3U; static constexpr uint32_t EXPECTEDSERIALIZEDUNITTOKENCOUNT = 6U; diff --git a/src/CalcViewModel/Common/Utils.cpp b/src/CalcViewModel/Common/Utils.cpp index 8715cea1..daae9e86 100644 --- a/src/CalcViewModel/Common/Utils.cpp +++ b/src/CalcViewModel/Common/Utils.cpp @@ -13,7 +13,6 @@ #include "Common/AppResourceProvider.h" #include "Common/ExpressionCommandSerializer.h" #include "Common/ExpressionCommandDeserializer.h" -#include "CalcManager/NumberFormattingUtils.h" using namespace CalculatorApp; using namespace CalculatorApp::ViewModel::Common; @@ -239,13 +238,6 @@ String^ CalculatorApp::ViewModel::Common::Utilities::EscapeHtmlSpecialCharacters return replaceCharacters ? replacementString : originalString; } -Platform::String^ CalculatorApp::ViewModel::Common::Utilities::TrimTrailingZeros(Platform::String^ input) -{ - std::wstring tmp(input->Data()); - CalcManager::NumberFormattingUtils::TrimTrailingZeros(tmp); - return ref new Platform::String(tmp.c_str()); -} - bool CalculatorApp::ViewModel::Common::Utilities::AreColorsEqual(Windows::UI::Color color1, Windows::UI::Color color2) { return Utils::AreColorsEqual(color1, color2); diff --git a/src/CalcViewModel/Common/Utils.h b/src/CalcViewModel/Common/Utils.h index cd04350d..8c3f5d2e 100644 --- a/src/CalcViewModel/Common/Utils.h +++ b/src/CalcViewModel/Common/Utils.h @@ -713,7 +713,6 @@ namespace CalculatorApp { public: static Platform::String ^ EscapeHtmlSpecialCharacters(Platform::String ^ originalString); - static Platform::String^ TrimTrailingZeros(Platform::String^ input); static bool AreColorsEqual(Windows::UI::Color color1, Windows::UI::Color color2); static Windows::UI::Xaml::Media::SolidColorBrush ^ GetContrastColor(Windows::UI::Color backgroundColor); static int GetWindowId(); diff --git a/src/CalcViewModel/GraphingCalculator/GraphingSettingsViewModel.cpp b/src/CalcViewModel/GraphingCalculator/GraphingSettingsViewModel.cpp index 8bb0d7f8..4353777c 100644 --- a/src/CalcViewModel/GraphingCalculator/GraphingSettingsViewModel.cpp +++ b/src/CalcViewModel/GraphingCalculator/GraphingSettingsViewModel.cpp @@ -3,11 +3,9 @@ #include "pch.h" #include "GraphingSettingsViewModel.h" -#include using namespace CalculatorApp::ViewModel; using namespace CalculatorApp::ViewModel::Common; -using namespace CalcManager::NumberFormattingUtils; using namespace GraphControl; using namespace std; using namespace Platform; @@ -55,21 +53,22 @@ void GraphingSettingsViewModel::InitRanges() m_XMaxValue = xMax; m_YMinValue = yMin; m_YMaxValue = yMax; - auto valueStr = to_wstring(m_XMinValue); - TrimTrailingZeros(valueStr); - XMin = ref new String(valueStr.c_str()); - valueStr = to_wstring(m_XMaxValue); - TrimTrailingZeros(valueStr); - XMax = ref new String(valueStr.c_str()); + std::wostringstream xMinStr; + xMinStr << m_XMinValue; + XMin = ref new String(xMinStr.str().c_str()); - valueStr = to_wstring(m_YMinValue); - TrimTrailingZeros(valueStr); - YMin = ref new String(valueStr.c_str()); + std::wostringstream xMaxStr; + xMaxStr << m_XMaxValue; + XMax = ref new String(xMaxStr.str().c_str()); - valueStr = to_wstring(m_YMaxValue); - TrimTrailingZeros(valueStr); - YMax = ref new String(valueStr.c_str()); + std::wostringstream yMinStr; + yMinStr << m_YMinValue; + YMin = ref new String(yMinStr.str().c_str()); + + std::wostringstream yMaxStr; + yMaxStr << m_YMaxValue; + YMax = ref new String(yMaxStr.str().c_str()); m_dontUpdateDisplayRange = false; } diff --git a/src/CalcViewModel/GraphingCalculator/GraphingSettingsViewModel.h b/src/CalcViewModel/GraphingCalculator/GraphingSettingsViewModel.h index 77f1dda1..81bb77fb 100644 --- a/src/CalcViewModel/GraphingCalculator/GraphingSettingsViewModel.h +++ b/src/CalcViewModel/GraphingCalculator/GraphingSettingsViewModel.h @@ -51,21 +51,14 @@ namespace CalculatorApp::ViewModel m_XIsMinLastChanged = true; if (m_Graph != nullptr) { - try + std::wistringstream input(value->Data()); + double number; + if (input >> number && input.eof()) { - size_t sz; - auto number = std::stod(value->Data(), &sz); - if (value->Length() == sz) - { - m_Graph->XAxisMin = m_XMinValue = number; - XMinError = false; - } - else - { - XMinError = true; - } + m_Graph->XAxisMin = m_XMinValue = number; + XMinError = false; } - catch (...) + else { XMinError = true; } @@ -92,21 +85,14 @@ namespace CalculatorApp::ViewModel m_XIsMinLastChanged = false; if (m_Graph != nullptr) { - try + std::wistringstream input(value->Data()); + double number; + if (input >> number && input.eof()) { - size_t sz; - auto number = std::stod(value->Data(), &sz); - if (value->Length() == sz) - { - m_Graph->XAxisMax = m_XMaxValue = number; - XMaxError = false; - } - else - { - XMaxError = true; - } + m_Graph->XAxisMax = m_XMaxValue = number; + XMaxError = false; } - catch (...) + else { XMaxError = true; } @@ -133,21 +119,14 @@ namespace CalculatorApp::ViewModel m_YIsMinLastChanged = true; if (m_Graph != nullptr) { - try + std::wistringstream input(value->Data()); + double number; + if (input >> number && input.eof()) { - size_t sz; - auto number = std::stod(value->Data(), &sz); - if (value->Length() == sz) - { - m_Graph->YAxisMin = m_YMinValue = number; - YMinError = false; - } - else - { - YMinError = true; - } + m_Graph->YAxisMin = m_YMinValue = number; + YMinError = false; } - catch (...) + else { YMinError = true; } @@ -174,21 +153,14 @@ namespace CalculatorApp::ViewModel m_YIsMinLastChanged = false; if (m_Graph != nullptr) { - try + std::wistringstream input(value->Data()); + double number; + if (input >> number && input.eof()) { - size_t sz; - auto number = std::stod(value->Data(), &sz); - if (value->Length() == sz) - { - m_Graph->YAxisMax = m_YMaxValue = number; - YMaxError = false; - } - else - { - YMaxError = true; - } + m_Graph->YAxisMax = m_YMaxValue = number; + YMaxError = false; } - catch (...) + else { YMaxError = true; } diff --git a/src/CalcViewModel/StandardCalculatorViewModel.cpp b/src/CalcViewModel/StandardCalculatorViewModel.cpp index cbd49b6d..22554ca6 100644 --- a/src/CalcViewModel/StandardCalculatorViewModel.cpp +++ b/src/CalcViewModel/StandardCalculatorViewModel.cpp @@ -137,6 +137,13 @@ StandardCalculatorViewModel::StandardCalculatorViewModel() String ^ StandardCalculatorViewModel::LocalizeDisplayValue(_In_ wstring const& displayValue) { wstring result(displayValue); + + // Adds leading padding 0's to Programmer Mode's Binary Display + if (IsProgrammer && CurrentRadixType == NumberBase::BinBase) + { + result = AddPadding(result); + } + LocalizationSettings::GetInstance()->LocalizeDisplayValue(&result); return ref new Platform::String(result.c_str()); } diff --git a/src/Calculator/Calculator.csproj b/src/Calculator/Calculator.csproj index 65942a84..1f80e826 100644 --- a/src/Calculator/Calculator.csproj +++ b/src/Calculator/Calculator.csproj @@ -143,7 +143,7 @@ - + diff --git a/src/Calculator/Common/KeyboardShortcutManager.cs b/src/Calculator/Common/KeyboardShortcutManager.cs index 33d93905..a14bcaf7 100644 --- a/src/Calculator/Common/KeyboardShortcutManager.cs +++ b/src/Calculator/Common/KeyboardShortcutManager.cs @@ -652,6 +652,7 @@ namespace CalculatorApp private static void OnKeyDownHandler(CoreWindow sender, KeyEventArgs args) { s_keyHandlerCount++; + if (args.Handled) { return; @@ -731,7 +732,7 @@ namespace CalculatorApp s_deferredEnableShortcut = false; } } - + private static void OnAcceleratorKeyActivated(CoreDispatcher dispatcher, AcceleratorKeyEventArgs args) { if (args.KeyStatus.IsKeyReleased) diff --git a/src/Calculator/Resources/en-GB/Resources.resw b/src/Calculator/Resources/en-GB/Resources.resw index 408fb7f9..6ca47d4d 100644 --- a/src/Calculator/Resources/en-GB/Resources.resw +++ b/src/Calculator/Resources/en-GB/Resources.resw @@ -1,4 +1,4 @@ - +