Exemple #1
0
        public UnitConverter()
        {
            m_meteredConnectionOverride        = false;
            m_layoutDirection                  = LocalizationService.GetInstance().GetFlowDirection();
            m_FlowDirectionHorizontalAlignment = m_layoutDirection == FlowDirection.RightToLeft ? HorizontalAlignment.Right : HorizontalAlignment.Left;

            InitializeComponent();

            // adding ESC key shortcut binding to clear button
            ClearEntryButtonPos0.SetValue(KeyboardShortcutManager.VirtualKeyProperty, MyVirtualKey.Escape);

            // Is currency symbol preference set to right side
            bool preferRight = LocalizationSettings.GetInstance().GetCurrencySymbolPrecedence() == 0;

            VisualStateManager.GoToState(this, preferRight ? "CurrencySymbolRightState" : "CurrencySymbolLeftState", false);

            var resLoader = AppResourceProvider.GetInstance();

            m_chargesMayApplyText = resLoader.GetResourceString("DataChargesMayApply");
            m_failedToRefreshText = resLoader.GetResourceString("FailedToRefresh");

            InitializeOfflineStatusTextBlock();

            if (Resources.TryGetValue("CalculationResultContextMenu", out var value))
            {
                m_resultsFlyout = (MenuFlyout)value;
            }

            CopyMenuItem.Text  = resLoader.GetResourceString("copyMenuItem");
            PasteMenuItem.Text = resLoader.GetResourceString("pasteMenuItem");
        }
Exemple #2
0
        public string GetCEngineString(string id)
        {
            var localizationSettings = LocalizationSettings.GetInstance();

            if (id.CompareTo("sDecimal") == 0)
            {
                return(localizationSettings.GetDecimalSeparatorStr());
            }

            if (id.CompareTo("sThousand") == 0)
            {
                return(localizationSettings.GetNumberGroupingSeparatorStr());
            }

            if (id.CompareTo("sGrouping") == 0)
            {
                // The following groupings are the onces that CalcEngine supports.
                //   0;0             0x000          - no grouping
                //   3;0             0x003          - group every 3 digits
                //   3;2;0           0x023          - group 1st 3 and then every 2 digits
                //   4;0             0x004          - group every 4 digits
                //   5;3;2;0         0x235          - group 5, then 3, then every 2
                string numberGroupingString = localizationSettings.GetNumberGroupingStr();
                return(numberGroupingString);
            }

            return(m_resLoader.GetString(id));
        }
Exemple #3
0
            string GetRawDisplayValue()
            {
                string rawValue = null;

                LocalizationSettings.GetInstance().RemoveGroupSeparators(DisplayValue, DisplayValue.Length, ref rawValue);

                return(rawValue);
            }
Exemple #4
0
        internal string GetRawDisplayValue()
        {
            string rawValue     = null;
            string radixContent = Content.ToString();

            LocalizationSettings.GetInstance().RemoveGroupSeparators(radixContent, radixContent.Length, ref rawValue);

            return(rawValue);
        }
Exemple #5
0
            public object Convert(object value, Type targetType, object parameter, string language)
            {
                var resourceLoader = AppResourceProvider.GetInstance();

                // initialising the updated display with 64 bits of zeros
                char[] updatedBinaryDisplay = new char[64];

                var  localizationSettings = LocalizationSettings.GetInstance();
                char ch0 = localizationSettings.GetDigitSymbolFromEnUsDigit('0');
                char ch1 = localizationSettings.GetDigitSymbolFromEnUsDigit('1');

                string indexName = resourceLoader.GetResourceString((string)(parameter));
                string bitName   = resourceLoader.GetResourceString("BitAutomationName");
                string valueName = resourceLoader.GetResourceString("ValueAutomationName");
                string zero      = resourceLoader.GetResourceString("BinaryZeroValueAutomationName");
                string one       = resourceLoader.GetResourceString("BinaryOneValueAutomationName");

                if ((value != null) && (parameter != null))
                {
                    string binaryDisplay = (string)value;
                    string indexString   = (string)parameter;
                    int    index         = int.Parse(indexString);
                    int    binaryLength  = 0;

                    // remove all the characters except 0 and 1 from the array.
                    foreach (char bit in binaryDisplay)
                    {
                        if ((bit == ch1) || (bit == ch0))
                        {
                            updatedBinaryDisplay[binaryLength++] = bit;
                        }
                        if (binaryLength == 63)
                        {
                            break;
                        }
                    }

                    // return if binaryDisplay is empty
                    if (binaryLength == 0)
                    {
                        return(indexName + bitName + valueName + zero);
                    }

                    // if index is more than the length of binary display return automation name with zero
                    if (index >= binaryLength)
                    {
                        return(indexName + bitName + valueName + zero);
                    }
                    // if bit is set return automation name with one else return zero
                    if (updatedBinaryDisplay[binaryLength - index - 1] == ch1)
                    {
                        return(indexName + bitName + valueName + one);
                    }
                }
                return(indexName + bitName + valueName + zero);
            }
Exemple #6
0
        public NumberPad()
        {
            this.InitializeComponent();

            var localizationSettings = LocalizationSettings.GetInstance();

            this.decimalSeparatorButton.Content = localizationSettings.GetDecimalSeparator();
            this.num0Button.Content             = localizationSettings.GetDigitSymbolFromEnUsDigit('0');
            this.num1Button.Content             = localizationSettings.GetDigitSymbolFromEnUsDigit('1');
            this.num2Button.Content             = localizationSettings.GetDigitSymbolFromEnUsDigit('2');
            this.num3Button.Content             = localizationSettings.GetDigitSymbolFromEnUsDigit('3');
            this.num4Button.Content             = localizationSettings.GetDigitSymbolFromEnUsDigit('4');
            this.num5Button.Content             = localizationSettings.GetDigitSymbolFromEnUsDigit('5');
            this.num6Button.Content             = localizationSettings.GetDigitSymbolFromEnUsDigit('6');
            this.num7Button.Content             = localizationSettings.GetDigitSymbolFromEnUsDigit('7');
            this.num8Button.Content             = localizationSettings.GetDigitSymbolFromEnUsDigit('8');
            this.num9Button.Content             = localizationSettings.GetDigitSymbolFromEnUsDigit('9');
        }
Exemple #7
0
            private static void OnCharacterPropertyChanged(DependencyObject target, string oldValue, string newValue)
            {
                // Writer lock for the static maps
                lock (s_keyboardShortcutMapLockMutex)
                {
                    var button = (target as ButtonBase);

                    int viewId = Utilities.GetWindowId();
                    if (s_characterForButtons.TryGetValue(viewId, out var iterViewMap))
                    {
                        if (!string.IsNullOrEmpty(oldValue))
                        {
                            iterViewMap.Remove(oldValue[0]);
                        }

                        if (!string.IsNullOrEmpty(newValue))
                        {
                            if (newValue == ".")
                            {
                                char decSep = LocalizationSettings.GetInstance().GetDecimalSeparator();
                                Insert(iterViewMap, decSep, new WeakReference(button));
                            }
                            else
                            {
                                Insert(iterViewMap, newValue[0], new WeakReference(button));
                            }
                        }
                    }
                    else
                    {
                        s_characterForButtons.Add(viewId, new SortedDictionary <char, List <WeakReference> >());

                        if (newValue == ".")
                        {
                            char decSep = LocalizationSettings.GetInstance().GetDecimalSeparator();
                            Insert(s_characterForButtons[viewId], decSep, new WeakReference(button));
                        }
                        else
                        {
                            Insert(s_characterForButtons[viewId], newValue[0], new WeakReference(button));
                        }
                    }
                }
            }
Exemple #8
0
        bool IsValidRegularExpression(string str)
        {
            bool result = false;

            string[] regexPatterns = new[] {
                "[-]{0,1}[0-9]{0,}[.]{0,1}[0-9]{0,}",
                "[-]{0,1}[0-9]{0,}[.]{0,1}[0-9]{0,}[e]{1}[+]{1}[0-9]{1,}",
                "[-]{0,1}[0-9]{0,}[.]{0,1}[0-9]{0,}[e]{1}[-]{1}[0-9]{1,}",
            };

            var    localizer     = LocalizationSettings.GetInstance();
            String englishString = localizer.GetEnglishValueFromLocalizedDigits(str);

            for (int i = 0; i < 3; ++i)
            {
                if (Regex.Match(englishString, regexPatterns[i]).Success)
                {
                    result = true;
                    break;
                }
            }
            return(result);
        }
Exemple #9
0
        // When share is invoked (by the user or programmatically) the event handler we registered will be called to populate the data package with the
        // data to be shared. We will request the current graph image from the grapher as a stream that will pass to the share request.
        private void OnDataRequested(DataTransferManager sender, DataRequestedEventArgs args)
        {
            var resourceLoader = ResourceLoader.GetForCurrentView();

            try
            {
                string rawHtml;
                string equationHtml;

                rawHtml = "<p><img src='graph.png' width='600' alt='" + resourceLoader.GetString("GraphImageAltText") + "'></p>";

                var  equations    = ViewModel.Equations;
                bool hasEquations = false;

                if (equations.Count > 0)
                {
                    equationHtml = "<span style=\"color: rgb(68, 114, 196); font-style: bold; font-size : 13pt;\">"
                                   + resourceLoader.GetString("EquationsShareHeader") + "</span>"
                                   + "<table cellpadding=\"0\" cellspacing=\"0\" >";

                    foreach (var equation in equations)
                    {
                        var expression = equation.Expression;
                        if (string.IsNullOrEmpty(expression))
                        {
                            continue;
                        }

                        var color = equation.LineColor;
                        hasEquations = true;

                        expression = GraphingControl.ConvertToLinear(expression);

                        string equationColorHtml;
                        equationColorHtml = "color:rgb(" + color.R.ToString() + "," + color.G.ToString() + "," + color.B.ToString() + ");";

                        equationHtml += "<tr style=\"margin: 0pt 0pt 0pt 0pt; padding: 0pt 0pt 0pt 0pt; \"><td><span style=\"font-size: 22pt; line-height: 0;"
                                        + equationColorHtml + "\">&#x25A0;</span></td><td><div style=\"margin: 4pt 0pt 0pt 6pt;\">"
                                        + Utilities.EscapeHtmlSpecialCharacters(expression) + "</div></td>";
                    }
                    equationHtml += "</table>";

                    if (hasEquations)
                    {
                        rawHtml += equationHtml;
                    }
                }

                var variables = ViewModel.Variables;

                if (variables.Count > 0)
                {
                    var localizedSeperator = LocalizationSettings.GetInstance().GetListSeparatorWinRT() + " ";

                    rawHtml += "<br><span style=\"color: rgb(68, 114, 196); font-style: bold; font-size: 13pt;\">"
                               + resourceLoader.GetString("VariablesShareHeader")
                               + "</span><br><div style=\"margin: 4pt 0pt 0pt 0pt;\">";

                    for (int i = 0; i < variables.Count; i++)
                    {
                        var name  = variables[i].Name;
                        var value = variables[i].Value;

                        rawHtml += name + "=";
                        var formattedValue = value.ToString();
                        rawHtml += formattedValue;

                        if (variables.Count - 1 != i)
                        {
                            rawHtml += localizedSeperator;
                        }
                    }

                    rawHtml += "</div>";
                }

                rawHtml += "<br><br>";

                // Shortcut to the request data
                var requestData = args.Request.Data;

                DataPackage dataPackage = new DataPackage();
                var         html        = HtmlFormatHelper.CreateHtmlFormat(rawHtml);

                requestData.Properties.Title = resourceLoader.GetString("ShareActionTitle");

                requestData.SetHtmlFormat(html);

                var bitmapStream = GraphingControl.GetGraphBitmapStream();

                requestData.ResourceMap.Add("graph.png", bitmapStream);
                requestData.SetBitmap(bitmapStream);

                // Set the thumbnail image (in case the share target can't handle HTML)
                requestData.Properties.Thumbnail = bitmapStream;
            }
            catch (Exception ex)
            {
                ShowShareError();
                CalculatorApp.ViewModel.Common.TraceLogger.GetInstance().LogPlatformExceptionInfo(ViewMode.Graphing, System.Reflection.MethodBase.GetCurrentMethod().Name, ex.Message, ex.HResult);
            }
        }
Exemple #10
0
        public GraphingCalculator()
        {
            InitializeComponent();

            m_accessibilitySettings = new AccessibilitySettings();
            DataTransferManager dataTransferManager = DataTransferManager.GetForCurrentView();

            // Register the current control as a share source.
            dataTransferManager.DataRequested += OnDataRequested;

            // Request notifications when we should be showing the trace values
            GraphingControl.TracingChangedEvent += OnShowTracePopupChanged;

            // And when the actual trace value changes
            GraphingControl.TracingValueChangedEvent += OnTracePointChanged;

            // Update where the pointer value is (ie: where the user cursor from keyboard inputs moves the point to)
            GraphingControl.PointerValueChangedEvent += OnPointerPointChanged;

            GraphingControl.Loaded += OnGraphingCalculatorLoaded;

            GraphingControl.UseCommaDecimalSeperator = LocalizationSettings.GetInstance().GetDecimalSeparator() == ',';

            // OemMinus and OemAdd aren't declared in the VirtualKey enum, we can't add this accelerator XAML-side
            var virtualKey = new KeyboardAccelerator();

            virtualKey.Key       = (VirtualKey)189; // OemPlus key
            virtualKey.Modifiers = VirtualKeyModifiers.Control;
            ZoomOutButton.KeyboardAccelerators.Add(virtualKey);

            virtualKey           = new KeyboardAccelerator();
            virtualKey.Key       = (VirtualKey)187; // OemAdd key
            virtualKey.Modifiers = VirtualKeyModifiers.Control;
            ZoomInButton.KeyboardAccelerators.Add(virtualKey);

            if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.UI.Xaml.Media.ThemeShadow"))
            {
                SharedShadow.Receivers.Add(GraphingControl);
            }

            m_accessibilitySettings.HighContrastChanged += OnHighContrastChanged;

            m_uiSettings = new UISettings();
            m_uiSettings.ColorValuesChanged += OnColorValuesChanged;

            ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;

            if (localSettings != null && localSettings.Values.ContainsKey(sc_IsGraphThemeMatchApp))
            {
                var isMatchAppLocalSetting = (bool)(localSettings.Values[sc_IsGraphThemeMatchApp]);
                if (isMatchAppLocalSetting)
                {
                    IsMatchAppTheme = true;
                    CalculatorApp.ViewModel.Common.TraceLogger.GetInstance().LogGraphTheme("IsMatchAppTheme");
                }
            }
            else
            {
                IsMatchAppTheme = false;
                CalculatorApp.ViewModel.Common.TraceLogger.GetInstance().LogGraphTheme("IsAlwaysLightTheme");
            }
        }
Exemple #11
0
            internal string GetRawDisplayValue()
            {
                string radixContent = Content.ToString();

                return(LocalizationSettings.GetInstance().RemoveGroupSeparators(radixContent));
            }
Exemple #12
0
 public string GetRawDisplayValue()
 {
     return(LocalizationSettings.GetInstance().RemoveGroupSeparators(DisplayValue));
 }