diff --git a/apps/spreadsheeteditor/main/app/controller/LeftMenu.js b/apps/spreadsheeteditor/main/app/controller/LeftMenu.js
index 5720d7559..1a34fbb57 100644
--- a/apps/spreadsheeteditor/main/app/controller/LeftMenu.js
+++ b/apps/spreadsheeteditor/main/app/controller/LeftMenu.js
@@ -387,8 +387,17 @@ define([
this.api.asc_setAutoSaveGap(value);
}
- value = Common.localStorage.getItem("sse-settings-reg-settings");
- if (value!==null) this.api.asc_setLocale(parseInt(value));
+ var reg = Common.localStorage.getItem("sse-settings-reg-settings"),
+ baseRegSettings = Common.Utils.InternalSettings.get("sse-settings-use-base-separator");
+ if (reg === null) {
+ reg = this.api.asc_getLocale();
+ }
+ if (baseRegSettings) {
+ this.api.asc_setLocale(parseInt(reg), undefined, undefined);
+ }
+ else {
+ this.api.asc_setLocale(parseInt(reg), Common.localStorage.getItem("sse-settings-decimal-separator"), Common.localStorage.getItem("sse-settings-group-separator"));
+ }
menu.hide();
diff --git a/apps/spreadsheeteditor/main/app/controller/Main.js b/apps/spreadsheeteditor/main/app/controller/Main.js
index 383f32435..1b7cb600f 100644
--- a/apps/spreadsheeteditor/main/app/controller/Main.js
+++ b/apps/spreadsheeteditor/main/app/controller/Main.js
@@ -345,20 +345,28 @@ define([
this.headerView.setCanBack(this.appOptions.canBackToFolder === true, (this.appOptions.canBackToFolder) ? this.editorConfig.customization.goback.text : '')
.setUserName(this.appOptions.user.fullname);
- var value = Common.localStorage.getItem("sse-settings-reg-settings");
- if (value!==null)
- this.api.asc_setLocale(parseInt(value));
+ var reg = Common.localStorage.getItem("sse-settings-reg-settings"),
+ isUseBaseSeparator = Common.localStorage.getBool("sse-settings-use-base-separator", true),
+ decimal = undefined,
+ group = undefined;
+ Common.Utils.InternalSettings.set("sse-settings-use-base-separator", isUseBaseSeparator);
+ if (!isUseBaseSeparator) {
+ decimal = Common.localStorage.getItem("sse-settings-decimal-separator");
+ group = Common.localStorage.getItem("sse-settings-group-separator");
+ }
+ if (reg!==null)
+ this.api.asc_setLocale(parseInt(reg), decimal, group);
else {
- value = this.appOptions.region;
- value = Common.util.LanguageInfo.getLanguages().hasOwnProperty(value) ? value : Common.util.LanguageInfo.getLocalLanguageCode(value);
- if (value!==null)
- value = parseInt(value);
+ reg = this.appOptions.region;
+ reg = Common.util.LanguageInfo.getLanguages().hasOwnProperty(reg) ? reg : Common.util.LanguageInfo.getLocalLanguageCode(reg);
+ if (reg!==null)
+ reg = parseInt(reg);
else
- value = (this.editorConfig.lang) ? parseInt(Common.util.LanguageInfo.getLocalLanguageCode(this.editorConfig.lang)) : 0x0409;
- this.api.asc_setLocale(value);
+ reg = (this.editorConfig.lang) ? parseInt(Common.util.LanguageInfo.getLocalLanguageCode(this.editorConfig.lang)) : 0x0409;
+ this.api.asc_setLocale(reg, decimal, group);
}
- value = Common.localStorage.getBool("sse-settings-r1c1");
+ var value = Common.localStorage.getBool("sse-settings-r1c1");
Common.Utils.InternalSettings.set("sse-settings-r1c1", value);
this.api.asc_setR1C1Mode(value);
diff --git a/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js b/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js
index f3f6ce159..f9675c37b 100644
--- a/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js
+++ b/apps/spreadsheeteditor/main/app/view/FileMenuPanels.js
@@ -595,6 +595,18 @@ define([
'
',
'','
',
+ '',
+ ' | ',
+ ' | ',
+ '
',
+ '',
+ ' | ',
+ ' | ',
+ '
',
+ '',
+ ' | ',
+ ' | ',
+ '
','
',
'',
' | ',
' | ',
@@ -761,9 +773,61 @@ define([
''].join(''))
}).on('selected', function(combo, record) {
me.updateRegionalExample(record.value);
+ var isBaseSettings = me.chSeparator.getValue();
+ if (isBaseSettings === 'checked') {
+ me.inputDecimalSeparator.setValue(me.api.asc_getDecimalSeparator(record.value), true);
+ me.inputThousandsSeparator.setValue(me.api.asc_getGroupSeparator(record.value), true);
+ }
});
if (this.cmbRegSettings.scroller) this.cmbRegSettings.scroller.update({alwaysVisibleY: true});
+ this.chSeparator = new Common.UI.CheckBox({
+ el: $markup.findById('#fms-chb-separator-settings'),
+ labelText: this.strUseSeparatorsBasedOnRegionalSettings
+ }).on('change', _.bind(function(field, newValue, oldValue, eOpts){
+ var checked = field.getValue() === 'checked';
+ if (checked) {
+ var lang = this.cmbRegSettings.getValue(),
+ decimal = this.api.asc_getDecimalSeparator(_.isNumber(lang) ? lang : undefined),
+ group = this.api.asc_getGroupSeparator(_.isNumber(lang) ? lang : undefined);
+ this.inputDecimalSeparator.setValue(decimal);
+ this.inputThousandsSeparator.setValue(group);
+ }
+ this.inputDecimalSeparator.setDisabled(checked);
+ this.inputThousandsSeparator.setDisabled(checked);
+ if (checked) {
+ this.$el.find('.label-separator').addClass('disabled');
+ } else {
+ this.$el.find('.label-separator').removeClass('disabled');
+ }
+ }, this));
+
+ var keyDown = function(event){
+ var key = event.key,
+ value = event.target.value;
+ if (key !== 'ArrowLeft' && key !== 'ArrowDown' && key !== 'ArrowUp' && key !== 'ArrowRight' &&
+ key !== 'Home' && key !== 'End' && key !== 'Backspace' && key !== 'Delete' && value.length > 0 &&
+ event.target.selectionEnd - event.target.selectionStart === 0) {
+ event.preventDefault();
+ }
+ };
+
+ this.inputDecimalSeparator = new Common.UI.InputField({
+ el: $markup.findById('#fms-decimal-separator'),
+ style: 'width: 35px;',
+ validateOnBlur: false
+ });
+ var $decimalSeparatorInput = this.inputDecimalSeparator.$el.find('input');
+ $decimalSeparatorInput.on('keydown', keyDown);
+
+ this.inputThousandsSeparator = new Common.UI.InputField({
+ el: $markup.findById('#fms-thousands-separator'),
+ style: 'width: 35px;',
+ validateOnBlur: false
+ });
+ var $thousandsSeparatorInput = this.inputThousandsSeparator.$el.find('input');
+ $thousandsSeparatorInput.on('keydown', keyDown);
+
this.btnApply = new Common.UI.Button({
el: $markup.findById('#fms-btn-apply')
});
@@ -855,6 +919,28 @@ define([
this.cmbRegSettings.setValue(Common.util.LanguageInfo.getLocalLanguageName(value)[1]);
}
this.updateRegionalExample(value);
+
+ var isBaseSettings = Common.Utils.InternalSettings.get("sse-settings-use-base-separator");
+ this.chSeparator.setValue(isBaseSettings, true);
+ var decimal,
+ group;
+ if (!isBaseSettings) {
+ decimal = Common.Utils.InternalSettings.get("sse-settings-decimal-separator") || this.api.asc_getDecimalSeparator();
+ group = Common.Utils.InternalSettings.get("sse-settings-group-separator") || this.api.asc_getGroupSeparator();
+ } else {
+ var lang = this.cmbRegSettings.getValue();
+ decimal = this.api.asc_getDecimalSeparator(_.isNumber(lang) ? lang : undefined);
+ group = this.api.asc_getGroupSeparator(_.isNumber(lang) ? lang : undefined);
+ }
+ this.inputDecimalSeparator.setValue(decimal);
+ this.inputThousandsSeparator.setValue(group);
+ this.inputDecimalSeparator.setDisabled(isBaseSettings);
+ this.inputThousandsSeparator.setDisabled(isBaseSettings);
+ if (isBaseSettings) {
+ this.$el.find('.label-separator').addClass('disabled');
+ } else {
+ this.$el.find('.label-separator').removeClass('disabled');
+ }
},
applySettings: function() {
@@ -876,6 +962,23 @@ define([
if (this.cmbRegSettings.getSelectedRecord())
Common.localStorage.setItem("sse-settings-reg-settings", this.cmbRegSettings.getValue());
+ var value,
+ isChecked = this.chSeparator.isChecked();
+ if (!isChecked) {
+ value = this.inputDecimalSeparator.getValue();
+ if (value.length > 0) {
+ Common.localStorage.setItem("sse-settings-decimal-separator", value);
+ Common.Utils.InternalSettings.set("sse-settings-decimal-separator", value);
+ }
+ value = this.inputThousandsSeparator.getValue();
+ if (value.length > 0) {
+ Common.localStorage.setItem("sse-settings-group-separator", value);
+ Common.Utils.InternalSettings.set("sse-settings-group-separator", value);
+ }
+ }
+ Common.localStorage.setBool("sse-settings-use-base-separator", isChecked);
+ Common.Utils.InternalSettings.set("sse-settings-use-base-separator", isChecked);
+
Common.localStorage.save();
if (this.menu) {
this.menu.fireEvent('settings:apply', [this.menu]);
@@ -955,7 +1058,11 @@ define([
strForcesave: 'Always save to server (otherwise save to server on document close)',
strResolvedComment: 'Turn on display of the resolved comments',
textRefStyle: 'Reference Style',
- strR1C1: 'Turn on R1C1 style'
+ strR1C1: 'Turn on R1C1 style',
+ strSeparator: 'Separator',
+ strUseSeparatorsBasedOnRegionalSettings: 'Use separators based on regional settings',
+ strDecimalSeparator: 'Decimal separator',
+ strThousandsSeparator: 'Thousands separator'
}, SSE.Views.FileMenuPanels.MainSettingsGeneral || {}));
SSE.Views.FileMenuPanels.MainSpellCheckSettings = Common.UI.BaseView.extend(_.extend({
diff --git a/apps/spreadsheeteditor/main/locale/en.json b/apps/spreadsheeteditor/main/locale/en.json
index 806bc1532..a31103b5e 100644
--- a/apps/spreadsheeteditor/main/locale/en.json
+++ b/apps/spreadsheeteditor/main/locale/en.json
@@ -1595,6 +1595,10 @@
"SSE.Views.FileMenuPanels.MainSettingsGeneral.txtPt": "Point",
"SSE.Views.FileMenuPanels.MainSettingsGeneral.txtRu": "Russian",
"SSE.Views.FileMenuPanels.MainSettingsGeneral.txtWin": "as Windows",
+ "SSE.Views.FileMenuPanels.MainSettingsGeneral.strSeparator": "Separator",
+ "SSE.Views.FileMenuPanels.MainSettingsGeneral.strUseSeparatorsBasedOnRegionalSettings": "Use separators based on regional settings",
+ "SSE.Views.FileMenuPanels.MainSettingsGeneral.strDecimalSeparator": "Decimal separator",
+ "SSE.Views.FileMenuPanels.MainSettingsGeneral.strThousandsSeparator": "Thousands separator",
"SSE.Views.FileMenuPanels.MainSpellCheckSettings.strIgnoreWordsInUPPERCASE": "Ignore words in UPPERCASE",
"SSE.Views.FileMenuPanels.MainSpellCheckSettings.strIgnoreWordsWithNumbers": "Ignore words with numbers",
"SSE.Views.FileMenuPanels.MainSpellCheckSettings.strDictionaryLanguage": "Dictionary language",