diff --git a/apps/documenteditor/main/app/controller/DocumentHolder.js b/apps/documenteditor/main/app/controller/DocumentHolder.js index 68271c84a2..18f1a82d51 100644 --- a/apps/documenteditor/main/app/controller/DocumentHolder.js +++ b/apps/documenteditor/main/app/controller/DocumentHolder.js @@ -46,6 +46,19 @@ var c_paragraphLinerule = { LINERULE_EXACT: 2 }; +var c_paragraphSpecial = { + NONE_SPECIAL: 0, + FIRST_LINE: 1, + HANGING: 2 +}; + +var c_paragraphTextAlignment = { + RIGHT: 0, + LEFT: 1, + CENTERED: 2, + JUSTIFIED: 3 +}; + var c_pageNumPosition = { PAGE_NUM_POSITION_TOP: 0x01, PAGE_NUM_POSITION_BOTTOM: 0x02, diff --git a/apps/documenteditor/main/app/template/ParagraphSettingsAdvanced.template b/apps/documenteditor/main/app/template/ParagraphSettingsAdvanced.template index 6dc19d04e4..685afabe84 100644 --- a/apps/documenteditor/main/app/template/ParagraphSettingsAdvanced.template +++ b/apps/documenteditor/main/app/template/ParagraphSettingsAdvanced.template @@ -1,23 +1,66 @@
- - - - - - -
- -
-
+
+
+ +
+
+ +
+
+
+
-
+ +
-
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+ -
+ +
@@ -44,15 +87,15 @@
-
+
-
-
+
+
@@ -70,114 +113,94 @@
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
-
-
-
-
-
-
-
-
-
-
-
- -
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
-
+ +
-
-
-
-
-
+
+
+
+
+
-
- -
-
-
- -
-
-
-
-
-
- -
-
-
- -
-
-
-
- - - -
+
+ +
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+
+
+
+
+
+
+ + + +
- - - - - - - - - -
+
+
-
+ +
-
+ + +
+
-
+ +
-
+
+
\ No newline at end of file diff --git a/apps/documenteditor/main/app/view/ParagraphSettings.js b/apps/documenteditor/main/app/view/ParagraphSettings.js index e9e931b854..0759a14523 100644 --- a/apps/documenteditor/main/app/view/ParagraphSettings.js +++ b/apps/documenteditor/main/app/view/ParagraphSettings.js @@ -77,7 +77,7 @@ define([ AddInterval: false, BackColor: '#000000', DisabledControls: true, - HideTextOnlySettings: false + HideTextOnlySettings: false, }; this.spinners = []; this.lockedControls = []; @@ -183,8 +183,9 @@ define([ setApi: function(api) { this.api = api; - if (this.api) + if (this.api) { this.api.asc_registerCallback('asc_onParaSpacingLine', _.bind(this._onLineSpacing, this)); + } return this; }, diff --git a/apps/documenteditor/main/app/view/ParagraphSettingsAdvanced.js b/apps/documenteditor/main/app/view/ParagraphSettingsAdvanced.js index 15bdcfbfca..6d311f1d6f 100644 --- a/apps/documenteditor/main/app/view/ParagraphSettingsAdvanced.js +++ b/apps/documenteditor/main/app/view/ParagraphSettingsAdvanced.js @@ -51,17 +51,19 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem DE.Views.ParagraphSettingsAdvanced = Common.Views.AdvancedSettingsWindow.extend(_.extend({ options: { - contentWidth: 335, + contentWidth: 370, height: 394, toggleGroup: 'paragraph-adv-settings-group', storageName: 'de-para-settings-adv-category' }, initialize : function(options) { + var me = this; _.extend(this.options, { title: this.textTitle, items: [ {panelId: 'id-adv-paragraph-indents', panelCaption: this.strParagraphIndents}, + {panelId: 'id-adv-paragraph-line', panelCaption: this.strParagraphLine}, {panelId: 'id-adv-paragraph-borders', panelCaption: this.strBorders}, {panelId: 'id-adv-paragraph-font', panelCaption: this.strParagraphFont}, {panelId: 'id-adv-paragraph-tabs', panelCaption: this.strTabs}, @@ -84,6 +86,7 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem this.Margins = undefined; this.FirstLine = undefined; this.LeftIndent = undefined; + this.Spacing = null; this.spinners = []; this.tableStylerRows = this.options.tableStylerRows; @@ -92,6 +95,63 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem this.api = this.options.api; this._originalProps = new Asc.asc_CParagraphProperty(this.options.paragraphProps); this.isChart = this.options.isChart; + + this.CurLineRuleIdx = this._originalProps.get_Spacing().get_LineRule(); + + this._arrLineRule = [ + {displayValue: this.textAtLeast,defaultValue: 5, value: c_paragraphLinerule.LINERULE_LEAST, minValue: 0.03, step: 0.01, defaultUnit: 'cm'}, + {displayValue: this.textAuto, defaultValue: 1, value: c_paragraphLinerule.LINERULE_AUTO, minValue: 0.5, step: 0.01, defaultUnit: ''}, + {displayValue: this.textExact, defaultValue: 5, value: c_paragraphLinerule.LINERULE_EXACT, minValue: 0.03, step: 0.01, defaultUnit: 'cm'} + ]; + + this._arrSpecial = [ + {displayValue: this.textNoneSpecial, value: c_paragraphSpecial.NONE_SPECIAL, defaultValue: 0}, + {displayValue: this.textFirstLine, value: c_paragraphSpecial.FIRST_LINE, defaultValue: 12.7}, + {displayValue: this.textHanging, value: c_paragraphSpecial.HANGING, defaultValue: 12.7} + ]; + this.CurSpecial = undefined; + + this._arrTextAlignment = [ + {displayValue: this.textTabLeft, value: c_paragraphTextAlignment.LEFT}, + {displayValue: this.textTabCenter, value: c_paragraphTextAlignment.CENTERED}, + {displayValue: this.textTabRight, value: c_paragraphTextAlignment.RIGHT}, + {displayValue: this.textJustified, value: c_paragraphTextAlignment.JUSTIFIED} + ]; + + this._arrOutlinelevel = [ + {displayValue: this.textBodyText}, + {displayValue: this.textLevel + '1'}, + {displayValue: this.textLevel + '2'}, + {displayValue: this.textLevel + '3'}, + {displayValue: this.textLevel + '4'}, + {displayValue: this.textLevel + '5'}, + {displayValue: this.textLevel + '6'}, + {displayValue: this.textLevel + '7'}, + {displayValue: this.textLevel + '8'}, + {displayValue: this.textLevel + '9'} + ]; + + this._arrTabAlign = [ + { value: 1, displayValue: this.textTabLeft }, + { value: 3, displayValue: this.textTabCenter }, + { value: 2, displayValue: this.textTabRight } + ]; + this._arrKeyTabAlign = []; + this._arrTabAlign.forEach(function(item) { + me._arrKeyTabAlign[item.value] = item.displayValue; + }); + + this._arrTabLeader = [ + { value: Asc.c_oAscTabLeader.None, displayValue: this.textNone }, + { value: Asc.c_oAscTabLeader.Dot, displayValue: '....................' }, + { value: Asc.c_oAscTabLeader.Hyphen, displayValue: '-----------------' }, + { value: Asc.c_oAscTabLeader.MiddleDot, displayValue: '·················' }, + { value: Asc.c_oAscTabLeader.Underscore,displayValue: '__________' } + ]; + this._arrKeyTabLeader = []; + this._arrTabLeader.forEach(function(item) { + me._arrKeyTabLeader[item.value] = item.displayValue; + }); }, render: function() { @@ -101,25 +161,6 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem // Indents & Placement - this.numFirstLine = new Common.UI.MetricSpinner({ - el: $('#paragraphadv-spin-first-line'), - step: .1, - width: 85, - defaultUnit : "cm", - defaultValue : 0, - value: '0 cm', - maxValue: 55.87, - minValue: -55.87 - }); - this.numFirstLine.on('change', _.bind(function(field, newValue, oldValue, eOpts){ - if (this._changedProps) { - if (this._changedProps.get_Ind()===null || this._changedProps.get_Ind()===undefined) - this._changedProps.put_Ind(new Asc.asc_CParagraphInd()); - this._changedProps.get_Ind().put_FirstLine(Common.Utils.Metric.fnRecalcToMM(field.getNumberValue())); - } - }, this)); - this.spinners.push(this.numFirstLine); - this.numIndentsLeft = new Common.UI.MetricSpinner({ el: $('#paragraphadv-spin-indent-left'), step: .1, @@ -158,6 +199,121 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem }, this)); this.spinners.push(this.numIndentsRight); + this.numSpacingBefore = new Common.UI.MetricSpinner({ + el: $('#paragraphadv-spin-spacing-before'), + step: .1, + width: 85, + value: '', + defaultUnit : "cm", + maxValue: 55.88, + minValue: 0, + allowAuto : true, + autoText : this.txtAutoText + }); + this.numSpacingBefore.on('change', _.bind(function (field, newValue, oldValue, eOpts) { + if (this.Spacing === null) { + var properties = (this._originalProps) ? this._originalProps : new Asc.asc_CParagraphProperty(); + this.Spacing = properties.get_Spacing(); + } + this.Spacing.Before = Common.Utils.Metric.fnRecalcToMM(field.getNumberValue()); + }, this)); + this.spinners.push(this.numSpacingBefore); + + this.numSpacingAfter = new Common.UI.MetricSpinner({ + el: $('#paragraphadv-spin-spacing-after'), + step: .1, + width: 85, + value: '', + defaultUnit : "cm", + maxValue: 55.88, + minValue: 0, + allowAuto : true, + autoText : this.txtAutoText + }); + this.numSpacingAfter.on('change', _.bind(function (field, newValue, oldValue, eOpts) { + if (this.Spacing === null) { + var properties = (this._originalProps) ? this._originalProps : new Asc.asc_CParagraphProperty(); + this.Spacing = properties.get_Spacing(); + } + this.Spacing.After = Common.Utils.Metric.fnRecalcToMM(field.getNumberValue()); + }, this)); + this.spinners.push(this.numSpacingAfter); + + this.cmbLineRule = new Common.UI.ComboBox({ + el: $('#paragraphadv-spin-line-rule'), + cls: 'input-group-nr', + editable: false, + data: this._arrLineRule, + style: 'width: 85px;', + menuStyle : 'min-width: 85px;' + }); + this.cmbLineRule.setValue(this.CurLineRuleIdx); + this.cmbLineRule.on('selected', _.bind(this.onLineRuleSelect, this)); + + this.numLineHeight = new Common.UI.MetricSpinner({ + el: $('#paragraphadv-spin-line-height'), + step: .01, + width: 85, + value: '', + defaultUnit : "", + maxValue: 132, + minValue: 0.5 + }); + this.spinners.push(this.numLineHeight); + this.numLineHeight.on('change', _.bind(this.onNumLineHeightChange, this)); + + this.chAddInterval = new Common.UI.CheckBox({ + el: $('#paragraphadv-checkbox-add-interval'), + labelText: this.strSomeParagraphSpace + }); + + this.cmbSpecial = new Common.UI.ComboBox({ + el: $('#paragraphadv-spin-special'), + cls: 'input-group-nr', + editable: false, + data: this._arrSpecial, + style: 'width: 85px;', + menuStyle : 'min-width: 85px;' + }); + this.cmbSpecial.setValue(''); + this.cmbSpecial.on('selected', _.bind(this.onSpecialSelect, this)); + + this.numSpecialBy = new Common.UI.MetricSpinner({ + el: $('#paragraphadv-spin-special-by'), + step: .1, + width: 85, + defaultUnit : "cm", + defaultValue : 0, + value: '0 cm', + maxValue: 55.87, + minValue: 0 + }); + this.spinners.push(this.numSpecialBy); + this.numSpecialBy.on('change', _.bind(this.onFirstLineChange, this)); + + this.cmbTextAlignment = new Common.UI.ComboBox({ + el: $('#paragraphadv-spin-text-alignment'), + cls: 'input-group-nr', + editable: false, + data: this._arrTextAlignment, + style: 'width: 173px;', + menuStyle : 'min-width: 173px;' + }); + this.cmbTextAlignment.setValue(''); + + this.cmbOutlinelevel = new Common.UI.ComboBox({ + el: $('#paragraphadv-spin-outline-level'), + cls: 'input-group-nr', + editable: false, + data: this._arrOutlinelevel, + style: 'width: 174px;', + menuStyle : 'min-width: 174px;' + }); + this.cmbOutlinelevel.setValue(''); + this.cmbOutlinelevel.on('selected', _.bind(this.onOutlinelevelSelect, this)); + + // Line & Page Breaks + this.chBreakBefore = new Common.UI.CheckBox({ el: $('#paragraphadv-checkbox-break-before'), labelText: this.strBreakBefore @@ -326,7 +482,7 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem this.numSpacing = new Common.UI.MetricSpinner({ el: $('#paragraphadv-spin-spacing'), step: .01, - width: 100, + width: 90, defaultUnit : "cm", defaultValue : 0, value: '0 cm', @@ -348,7 +504,7 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem this.numPosition = new Common.UI.MetricSpinner({ el: $('#paragraphadv-spin-position'), step: .01, - width: 100, + width: 90, defaultUnit : "cm", defaultValue : 0, value: '0 cm', @@ -371,7 +527,7 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem this.numTab = new Common.UI.MetricSpinner({ el: $('#paraadv-spin-tab'), step: .1, - width: 180, + width: 108, defaultUnit : "cm", value: '1.25 cm', maxValue: 55.87, @@ -382,7 +538,7 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem this.numDefaultTab = new Common.UI.MetricSpinner({ el: $('#paraadv-spin-default-tab'), step: .1, - width: 107, + width: 108, defaultUnit : "cm", value: '1.25 cm', maxValue: 55.87, @@ -398,7 +554,15 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem this.tabList = new Common.UI.ListView({ el: $('#paraadv-list-tabs'), emptyText: this.noTabs, - store: new Common.UI.DataViewStore() + store: new Common.UI.DataViewStore(), + template: _.template(['
'].join('')), + itemTemplate: _.template([ + '
', + '
<%= value %>
', + '
<%= displayTabAlign %>
', + '
<%= displayTabLeader %>
', + '
' + ].join('')) }); this.tabList.store.comparator = function(rec) { return rec.get("tabPos"); @@ -415,31 +579,21 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem this.cmbAlign = new Common.UI.ComboBox({ el : $('#paraadv-cmb-align'), - style : 'width: 85px;', - menuStyle : 'min-width: 85px;', + style : 'width: 108px;', + menuStyle : 'min-width: 108px;', editable : false, cls : 'input-group-nr', - data : [ - { value: 1, displayValue: this.textTabLeft }, - { value: 3, displayValue: this.textTabCenter }, - { value: 2, displayValue: this.textTabRight } - ] + data : this._arrTabAlign }); this.cmbAlign.setValue(1); this.cmbLeader = new Common.UI.ComboBox({ el : $('#paraadv-cmb-leader'), - style : 'width: 85px;', - menuStyle : 'min-width: 85px;', + style : 'width: 108px;', + menuStyle : 'min-width: 108px;', editable : false, cls : 'input-group-nr', - data : [ - { value: Asc.c_oAscTabLeader.None, displayValue: this.textNone }, - { value: Asc.c_oAscTabLeader.Dot, displayValue: '....................' }, - { value: Asc.c_oAscTabLeader.Hyphen, displayValue: '-----------------' }, - { value: Asc.c_oAscTabLeader.MiddleDot, displayValue: '·················' }, - { value: Asc.c_oAscTabLeader.Underscore,displayValue: '__________' } - ] + data : this._arrTabLeader }); this.cmbLeader.setValue(Asc.c_oAscTabLeader.None); @@ -600,6 +754,16 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem } } + if (this.Spacing !== null) { + this._changedProps.asc_putSpacing(this.Spacing); + } + + var spaceBetweenPrg = this.chAddInterval.getValue(); + this._changedProps.asc_putContextualSpacing(spaceBetweenPrg == 'checked'); + + var horizontalAlign = this.cmbTextAlignment.getValue(); + this._changedProps.asc_putJc((horizontalAlign !== undefined && horizontalAlign !== null) ? horizontalAlign : c_paragraphTextAlignment.LEFT); + return { paragraphProps: this._changedProps, borderProps: {borderSize: this.BorderSize, borderColor: this.btnBorderColor.color} }; }, @@ -610,13 +774,34 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem this.hideTextOnlySettings(this.isChart); this.FirstLine = (props.get_Ind() !== null) ? props.get_Ind().get_FirstLine() : null; - this.numFirstLine.setValue(this.FirstLine!== null ? Common.Utils.Metric.fnRecalcFromMM(this.FirstLine) : '', true); this.LeftIndent = (props.get_Ind() !== null) ? props.get_Ind().get_Left() : null; if (this.FirstLine<0 && this.LeftIndent !== null) this.LeftIndent = this.LeftIndent + this.FirstLine; this.numIndentsLeft.setValue(this.LeftIndent!==null ? Common.Utils.Metric.fnRecalcFromMM(this.LeftIndent) : '', true); this.numIndentsRight.setValue((props.get_Ind() !== null && props.get_Ind().get_Right() !== null) ? Common.Utils.Metric.fnRecalcFromMM(props.get_Ind().get_Right()) : '', true); + this.numSpacingBefore.setValue((props.get_Spacing() !== null && props.get_Spacing().get_Before() !== null) ? Common.Utils.Metric.fnRecalcFromMM(props.get_Spacing().get_Before()) : '', true); + this.numSpacingAfter.setValue((props.get_Spacing() !== null && props.get_Spacing().get_After() !== null) ? Common.Utils.Metric.fnRecalcFromMM(props.get_Spacing().get_After()) : '', true); + + var linerule = props.get_Spacing().get_LineRule(); + this.cmbLineRule.setValue((linerule !== null) ? linerule : '', true); + + if(props.get_Spacing() !== null && props.get_Spacing().get_Line() !== null) { + this.numLineHeight.setValue((linerule==c_paragraphLinerule.LINERULE_AUTO) ? props.get_Spacing().get_Line() : Common.Utils.Metric.fnRecalcFromMM(props.get_Spacing().get_Line()), true); + } else { + this.numLineHeight.setValue('', true); + } + + this.chAddInterval.setValue((props.get_ContextualSpacing() !== null && props.get_ContextualSpacing() !== undefined) ? props.get_ContextualSpacing() : 'indeterminate', true); + + if(this.CurSpecial === undefined) { + this.CurSpecial = (props.get_Ind().get_FirstLine() === 0) ? c_paragraphSpecial.NONE_SPECIAL : ((props.get_Ind().get_FirstLine() > 0) ? c_paragraphSpecial.FIRST_LINE : c_paragraphSpecial.HANGING); + } + this.cmbSpecial.setValue(this.CurSpecial); + this.numSpecialBy.setValue(this.FirstLine!== null ? Math.abs(Common.Utils.Metric.fnRecalcFromMM(this.FirstLine)) : '', true); + + this.cmbTextAlignment.setValue((props.get_Jc() !== undefined && props.get_Jc() !== null) ? props.get_Jc() : c_paragraphTextAlignment.LEFT, true); + this.chKeepLines.setValue((props.get_KeepLines() !== null && props.get_KeepLines() !== undefined) ? props.get_KeepLines() : 'indeterminate', true); this.chBreakBefore.setValue((props.get_PageBreakBefore() !== null && props.get_PageBreakBefore() !== undefined) ? props.get_PageBreakBefore() : 'indeterminate', true); @@ -702,7 +887,9 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem tabPos: pos, value: parseFloat(pos.toFixed(3)) + ' ' + Common.Utils.Metric.getCurrentMetricName(), tabAlign: tab.get_Value(), - tabLeader: tab.asc_getLeader() + tabLeader: tab.get_Leader(), + displayTabLeader: this._arrKeyTabLeader[tab.get_Leader()], + displayTabAlign: this._arrKeyTabAlign[tab.get_Value()] }); arr.push(rec); } @@ -723,13 +910,19 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem for (var i=0; i 0 ) { + this.CurSpecial = c_paragraphSpecial.FIRST_LINE; + this.cmbSpecial.setValue(c_paragraphSpecial.FIRST_LINE); + } else if (value === 0) { + this.CurSpecial = c_paragraphSpecial.NONE_SPECIAL; + this.cmbSpecial.setValue(c_paragraphSpecial.NONE_SPECIAL); + } + this._changedProps.get_Ind().put_FirstLine(value); + } + }, + + onOutlinelevelSelect: function(combo, record) { + }, textTitle: 'Paragraph - Advanced Settings', strIndentsFirstLine: 'First line', strIndentsLeftText: 'Left', strIndentsRightText: 'Right', - strParagraphIndents: 'Indents & Placement', + strParagraphIndents: 'Indents & Spacing', strParagraphPosition: 'Placement', strParagraphFont: 'Font', strBreakBefore: 'Page break before', @@ -1217,6 +1491,26 @@ define([ 'text!documenteditor/main/app/template/ParagraphSettingsAdvanced.tem tipOuter: 'Set Outer Border Only', noTabs: 'The specified tabs will appear in this field', textLeader: 'Leader', - textNone: 'None' + textNone: 'None', + strParagraphLine: 'Line & Page Breaks', + strIndentsSpacingBefore: 'Before', + strIndentsSpacingAfter: 'After', + strIndentsLineSpacing: 'Line Spacing', + txtAutoText: 'Auto', + textAuto: 'Multiple', + textAtLeast: 'At least', + textExact: 'Exactly', + strSomeParagraphSpace: 'Don\'t add interval between paragraphs of the same style', + strIndentsSpecial: 'Special', + textNoneSpecial: '(none)', + textFirstLine: 'First line', + textHanging: 'Hanging', + textJustified: 'Justified', + textBodyText: 'BodyText', + textLevel: 'Level ', + strIndentsOutlinelevel: 'Outline level', + strIndent: 'Indents', + strSpacing: 'Spacing' + }, DE.Views.ParagraphSettingsAdvanced || {})); }); \ No newline at end of file diff --git a/apps/documenteditor/main/locale/en.json b/apps/documenteditor/main/locale/en.json index 7cd8e0b87a..135c39df38 100644 --- a/apps/documenteditor/main/locale/en.json +++ b/apps/documenteditor/main/locale/en.json @@ -1708,7 +1708,6 @@ "DE.Views.ParagraphSettingsAdvanced.strBorders": "Borders & Fill", "DE.Views.ParagraphSettingsAdvanced.strBreakBefore": "Page break before", "DE.Views.ParagraphSettingsAdvanced.strDoubleStrike": "Double strikethrough", - "DE.Views.ParagraphSettingsAdvanced.strIndentsFirstLine": "First Line", "DE.Views.ParagraphSettingsAdvanced.strIndentsLeftText": "Left", "DE.Views.ParagraphSettingsAdvanced.strIndentsRightText": "Right", "DE.Views.ParagraphSettingsAdvanced.strKeepLines": "Keep lines together", @@ -1716,7 +1715,7 @@ "DE.Views.ParagraphSettingsAdvanced.strMargins": "Paddings", "DE.Views.ParagraphSettingsAdvanced.strOrphan": "Orphan control", "DE.Views.ParagraphSettingsAdvanced.strParagraphFont": "Font", - "DE.Views.ParagraphSettingsAdvanced.strParagraphIndents": "Indents & Placement", + "DE.Views.ParagraphSettingsAdvanced.strParagraphIndents": "Indents & Spacing", "DE.Views.ParagraphSettingsAdvanced.strParagraphPosition": "Placement", "DE.Views.ParagraphSettingsAdvanced.strSmallCaps": "Small caps", "DE.Views.ParagraphSettingsAdvanced.strStrike": "Strikethrough", @@ -1757,6 +1756,26 @@ "DE.Views.ParagraphSettingsAdvanced.tipRight": "Set right border only", "DE.Views.ParagraphSettingsAdvanced.tipTop": "Set top border only", "DE.Views.ParagraphSettingsAdvanced.txtNoBorders": "No borders", + "DE.Views.ParagraphSettingsAdvanced.strParagraphLine": "Line & Page Breaks", + "DE.Views.ParagraphSettingsAdvanced.strIndentsSpacingBefore": "Before", + "DE.Views.ParagraphSettingsAdvanced.strIndentsSpacingAfter": "After", + "DE.Views.ParagraphSettingsAdvanced.strIndentsLineSpacing": "Line Spacing", + "DE.Views.ParagraphSettingsAdvanced.txtAutoText": "Auto", + "DE.Views.ParagraphSettingsAdvanced.textAuto": "Multiple", + "DE.Views.ParagraphSettingsAdvanced.textAtLeast": "At least", + "DE.Views.ParagraphSettingsAdvanced.textExact": "Exactly", + "DE.Views.ParagraphSettingsAdvanced.strSomeParagraphSpace": "Don't add interval between paragraphs of the same style", + "DE.Views.ParagraphSettingsAdvanced.strIndentsSpecial": "Special", + "DE.Views.ParagraphSettingsAdvanced.textNoneSpecial": "(none)", + "DE.Views.ParagraphSettingsAdvanced.textFirstLine": "First line", + "DE.Views.ParagraphSettingsAdvanced.textHanging": "Hanging", + "DE.Views.ParagraphSettingsAdvanced.textCentered": "Centered", + "DE.Views.ParagraphSettingsAdvanced.textJustified": "Justified", + "DE.Views.ParagraphSettingsAdvanced.textBodyText": "BodyText", + "DE.Views.ParagraphSettingsAdvanced.textLevel": "Level ", + "DE.Views.ParagraphSettingsAdvanced.strIndentsOutlinelevel": "Outline level", + "DE.Views.ParagraphSettingsAdvanced.strIndent": "Indents", + "DE.Views.ParagraphSettingsAdvanced.strSpacing": "Spacing", "DE.Views.RightMenu.txtChartSettings": "Chart settings", "DE.Views.RightMenu.txtHeaderFooterSettings": "Header and footer settings", "DE.Views.RightMenu.txtImageSettings": "Image settings", diff --git a/apps/documenteditor/main/locale/ru.json b/apps/documenteditor/main/locale/ru.json index a7c982e436..3d2f931b03 100644 --- a/apps/documenteditor/main/locale/ru.json +++ b/apps/documenteditor/main/locale/ru.json @@ -1713,7 +1713,8 @@ "DE.Views.ParagraphSettingsAdvanced.strMargins": "Внутренние поля", "DE.Views.ParagraphSettingsAdvanced.strOrphan": "Запрет висячих строк", "DE.Views.ParagraphSettingsAdvanced.strParagraphFont": "Шрифт", - "DE.Views.ParagraphSettingsAdvanced.strParagraphIndents": "Отступы и положение", + "DE.Views.ParagraphSettingsAdvanced.strParagraphIndents": "Отступы и интервалы", + "DE.Views.ParagraphSettingsAdvanced.strParagraphLine": "Положение на странице", "DE.Views.ParagraphSettingsAdvanced.strParagraphPosition": "Положение", "DE.Views.ParagraphSettingsAdvanced.strSmallCaps": "Малые прописные", "DE.Views.ParagraphSettingsAdvanced.strStrike": "Зачёркивание", @@ -1754,6 +1755,24 @@ "DE.Views.ParagraphSettingsAdvanced.tipRight": "Задать только правую границу", "DE.Views.ParagraphSettingsAdvanced.tipTop": "Задать только верхнюю границу", "DE.Views.ParagraphSettingsAdvanced.txtNoBorders": "Без границ", + "DE.Views.ParagraphSettingsAdvanced.strIndentsSpacingBefore": "Перед", + "DE.Views.ParagraphSettingsAdvanced.strIndentsSpacingAfter": "После", + "DE.Views.ParagraphSettingsAdvanced.strIndentsLineSpacing": "Междустрочный интервал", + "DE.Views.ParagraphSettingsAdvanced.txtAutoText": "Авто", + "DE.Views.ParagraphSettingsAdvanced.textAuto": "Множитель", + "DE.Views.ParagraphSettingsAdvanced.textAtLeast": "Минимум", + "DE.Views.ParagraphSettingsAdvanced.textExact": "Точно", + "DE.Views.ParagraphSettingsAdvanced.strSomeParagraphSpace": "Не добавлять интервал между абзацами одного стиля", + "DE.Views.ParagraphSettingsAdvanced.strIndentsSpecial": "Первая строка", + "DE.Views.ParagraphSettingsAdvanced.textNoneSpecial": "(нет)", + "DE.Views.ParagraphSettingsAdvanced.textFirstLine": "Отступ", + "DE.Views.ParagraphSettingsAdvanced.textHanging": "Выступ", + "DE.Views.ParagraphSettingsAdvanced.textJustified": "По ширине", + "DE.Views.ParagraphSettingsAdvanced.textBodyText": "Основной текст", + "DE.Views.ParagraphSettingsAdvanced.textLevel": "Уровень ", + "DE.Views.ParagraphSettingsAdvanced.strIndentsOutlinelevel": "Уровень", + "DE.Views.ParagraphSettingsAdvanced.strIndent": "Отступы", + "DE.Views.ParagraphSettingsAdvanced.strSpacing": "Интервал между абзацами", "DE.Views.RightMenu.txtChartSettings": "Параметры диаграммы", "DE.Views.RightMenu.txtHeaderFooterSettings": "Параметры верхнего и нижнего колонтитулов", "DE.Views.RightMenu.txtImageSettings": "Параметры изображения", diff --git a/apps/presentationeditor/main/app/controller/DocumentHolder.js b/apps/presentationeditor/main/app/controller/DocumentHolder.js index 48168be0db..e5bd95ede1 100644 --- a/apps/presentationeditor/main/app/controller/DocumentHolder.js +++ b/apps/presentationeditor/main/app/controller/DocumentHolder.js @@ -63,6 +63,19 @@ var c_tableBorder = { BORDER_OUTER_TABLE: 13 // table border and outer cell borders }; +var c_paragraphTextAlignment = { + RIGHT: 0, + LEFT: 1, + CENTERED: 2, + JUSTIFIED: 3 +}; + +var c_paragraphSpecial = { + NONE_SPECIAL: 0, + FIRST_LINE: 1, + HANGING: 2 +}; + define([ 'core', 'presentationeditor/main/app/view/DocumentHolder' diff --git a/apps/presentationeditor/main/app/template/ParagraphSettingsAdvanced.template b/apps/presentationeditor/main/app/template/ParagraphSettingsAdvanced.template index 961b81080f..ccba9ab31e 100644 --- a/apps/presentationeditor/main/app/template/ParagraphSettingsAdvanced.template +++ b/apps/presentationeditor/main/app/template/ParagraphSettingsAdvanced.template @@ -1,98 +1,114 @@
- - - - - - -
- -
-
- -
-
- -
-
+
+
+ +
+
+
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+
+
-
- - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
-
- -
-
-
+
-
-
-
-
-
- -
-
-
+
- - - +
+ +
+
+
+ +
+
+
+
+
+
+
+
+
+ + +
\ No newline at end of file diff --git a/apps/presentationeditor/main/app/view/ParagraphSettingsAdvanced.js b/apps/presentationeditor/main/app/view/ParagraphSettingsAdvanced.js index 8c16332fb0..b432738741 100644 --- a/apps/presentationeditor/main/app/view/ParagraphSettingsAdvanced.js +++ b/apps/presentationeditor/main/app/view/ParagraphSettingsAdvanced.js @@ -49,13 +49,14 @@ define([ 'text!presentationeditor/main/app/template/ParagraphSettingsAdvanced PE.Views.ParagraphSettingsAdvanced = Common.Views.AdvancedSettingsWindow.extend(_.extend({ options: { - contentWidth: 320, + contentWidth: 370, height: 394, toggleGroup: 'paragraph-adv-settings-group', storageName: 'pe-para-settings-adv-category' }, initialize : function(options) { + var me = this; _.extend(this.options, { title: this.textTitle, items: [ @@ -74,9 +75,43 @@ define([ 'text!presentationeditor/main/app/template/ParagraphSettingsAdvanced this._noApply = true; this._tabListChanged = false; this.spinners = []; + this.FirstLine = undefined; + this.Spacing = null; this.api = this.options.api; this._originalProps = new Asc.asc_CParagraphProperty(this.options.paragraphProps); + + this._arrLineRule = [ + {displayValue: this.textAuto, defaultValue: 1, value: c_paragraphLinerule.LINERULE_AUTO, minValue: 0.5, step: 0.01, defaultUnit: ''}, + {displayValue: this.textExact, defaultValue: 5, value: c_paragraphLinerule.LINERULE_EXACT, minValue: 0.03, step: 0.01, defaultUnit: 'cm'} + ]; + + var curLineRule = this._originalProps.get_Spacing().get_LineRule(), + curItem = _.findWhere(this._arrLineRule, {value: curLineRule}); + this.CurLineRuleIdx = this._arrLineRule.indexOf(curItem); + + this._arrTextAlignment = [ + {displayValue: this.textTabLeft, value: c_paragraphTextAlignment.LEFT}, + {displayValue: this.textTabCenter, value: c_paragraphTextAlignment.CENTERED}, + {displayValue: this.textTabRight, value: c_paragraphTextAlignment.RIGHT}, + {displayValue: this.textJustified, value: c_paragraphTextAlignment.JUSTIFIED} + ]; + + this._arrSpecial = [ + {displayValue: this.textNoneSpecial, value: c_paragraphSpecial.NONE_SPECIAL, defaultValue: 0}, + {displayValue: this.textFirstLine, value: c_paragraphSpecial.FIRST_LINE, defaultValue: 12.7}, + {displayValue: this.textHanging, value: c_paragraphSpecial.HANGING, defaultValue: 12.7} + ]; + + this._arrTabAlign = [ + { value: 1, displayValue: this.textTabLeft }, + { value: 3, displayValue: this.textTabCenter }, + { value: 2, displayValue: this.textTabRight } + ]; + this._arrKeyTabAlign = []; + this._arrTabAlign.forEach(function(item) { + me._arrKeyTabAlign[item.value] = item.displayValue; + }); }, render: function() { @@ -86,24 +121,15 @@ define([ 'text!presentationeditor/main/app/template/ParagraphSettingsAdvanced // Indents & Placement - this.numFirstLine = new Common.UI.MetricSpinner({ - el: $('#paragraphadv-spin-first-line'), - step: .1, - width: 85, - defaultUnit : "cm", - defaultValue : 0, - value: '0 cm', - maxValue: 55.87, - minValue: -55.87 + this.cmbTextAlignment = new Common.UI.ComboBox({ + el: $('#paragraphadv-spin-text-alignment'), + cls: 'input-group-nr', + editable: false, + data: this._arrTextAlignment, + style: 'width: 173px;', + menuStyle : 'min-width: 173px;' }); - this.numFirstLine.on('change', _.bind(function(field, newValue, oldValue, eOpts){ - if (this._changedProps) { - if (this._changedProps.get_Ind()===null || this._changedProps.get_Ind()===undefined) - this._changedProps.put_Ind(new Asc.asc_CParagraphInd()); - this._changedProps.get_Ind().put_FirstLine(Common.Utils.Metric.fnRecalcToMM(field.getNumberValue())); - } - }, this)); - this.spinners.push(this.numFirstLine); + this.cmbTextAlignment.setValue(''); this.numIndentsLeft = new Common.UI.MetricSpinner({ el: $('#paragraphadv-spin-indent-left'), @@ -122,9 +148,6 @@ define([ 'text!presentationeditor/main/app/template/ParagraphSettingsAdvanced this._changedProps.put_Ind(new Asc.asc_CParagraphInd()); this._changedProps.get_Ind().put_Left(Common.Utils.Metric.fnRecalcToMM(numval)); } - this.numFirstLine.setMinValue(-numval); - if (this.numFirstLine.getNumberValue() < -numval) - this.numFirstLine.setValue(-numval); }, this)); this.spinners.push(this.numIndentsLeft); @@ -147,6 +170,93 @@ define([ 'text!presentationeditor/main/app/template/ParagraphSettingsAdvanced }, this)); this.spinners.push(this.numIndentsRight); + this.cmbSpecial = new Common.UI.ComboBox({ + el: $('#paragraphadv-spin-special'), + cls: 'input-group-nr', + editable: false, + data: this._arrSpecial, + style: 'width: 85px;', + menuStyle : 'min-width: 85px;' + }); + this.cmbSpecial.setValue(''); + this.cmbSpecial.on('selected', _.bind(this.onSpecialSelect, this)); + + this.numSpecialBy = new Common.UI.MetricSpinner({ + el: $('#paragraphadv-spin-special-by'), + step: .1, + width: 85, + defaultUnit : "cm", + defaultValue : 0, + value: '0 cm', + maxValue: 55.87, + minValue: 0 + }); + this.spinners.push(this.numSpecialBy); + this.numSpecialBy.on('change', _.bind(this.onFirstLineChange, this)); + + this.numSpacingBefore = new Common.UI.MetricSpinner({ + el: $('#paragraphadv-spin-spacing-before'), + step: .1, + width: 85, + value: '', + defaultUnit : "cm", + maxValue: 55.88, + minValue: 0, + allowAuto : true, + autoText : this.txtAutoText + }); + this.numSpacingBefore.on('change', _.bind(function (field, newValue, oldValue, eOpts) { + if (this.Spacing === null) { + var properties = (this._originalProps) ? this._originalProps : new Asc.asc_CParagraphProperty(); + this.Spacing = properties.get_Spacing(); + } + this.Spacing.Before = Common.Utils.Metric.fnRecalcToMM(field.getNumberValue()); + }, this)); + this.spinners.push(this.numSpacingBefore); + + this.numSpacingAfter = new Common.UI.MetricSpinner({ + el: $('#paragraphadv-spin-spacing-after'), + step: .1, + width: 85, + value: '', + defaultUnit : "cm", + maxValue: 55.88, + minValue: 0, + allowAuto : true, + autoText : this.txtAutoText + }); + this.numSpacingAfter.on('change', _.bind(function (field, newValue, oldValue, eOpts) { + if (this.Spacing === null) { + var properties = (this._originalProps) ? this._originalProps : new Asc.asc_CParagraphProperty(); + this.Spacing = properties.get_Spacing(); + } + this.Spacing.After = Common.Utils.Metric.fnRecalcToMM(field.getNumberValue()); + }, this)); + this.spinners.push(this.numSpacingAfter); + + this.cmbLineRule = new Common.UI.ComboBox({ + el: $('#paragraphadv-spin-line-rule'), + cls: 'input-group-nr', + editable: false, + data: this._arrLineRule, + style: 'width: 85px;', + menuStyle : 'min-width: 85px;' + }); + this.cmbLineRule.setValue(this.CurLineRuleIdx); + this.cmbLineRule.on('selected', _.bind(this.onLineRuleSelect, this)); + + this.numLineHeight = new Common.UI.MetricSpinner({ + el: $('#paragraphadv-spin-line-height'), + step: .01, + width: 85, + value: '', + defaultUnit : "", + maxValue: 132, + minValue: 0.5 + }); + this.spinners.push(this.numLineHeight); + this.numLineHeight.on('change', _.bind(this.onNumLineHeightChange, this)); + // Font this.chStrike = new Common.UI.CheckBox({ @@ -211,7 +321,7 @@ define([ 'text!presentationeditor/main/app/template/ParagraphSettingsAdvanced this.numTab = new Common.UI.MetricSpinner({ el: $('#paraadv-spin-tab'), step: .1, - width: 180, + width: 108, defaultUnit : "cm", value: '1.25 cm', maxValue: 55.87, @@ -222,7 +332,7 @@ define([ 'text!presentationeditor/main/app/template/ParagraphSettingsAdvanced this.numDefaultTab = new Common.UI.MetricSpinner({ el: $('#paraadv-spin-default-tab'), step: .1, - width: 107, + width: 108, defaultUnit : "cm", value: '1.25 cm', maxValue: 55.87, @@ -238,7 +348,14 @@ define([ 'text!presentationeditor/main/app/template/ParagraphSettingsAdvanced this.tabList = new Common.UI.ListView({ el: $('#paraadv-list-tabs'), emptyText: this.noTabs, - store: new Common.UI.DataViewStore() + store: new Common.UI.DataViewStore(), + template: _.template(['
'].join('')), + itemTemplate: _.template([ + '
', + '
<%= value %>
', + '
<%= displayTabAlign %>
', + '
' + ].join('')) }); this.tabList.store.comparator = function(rec) { return rec.get("tabPos"); @@ -253,24 +370,15 @@ define([ 'text!presentationeditor/main/app/template/ParagraphSettingsAdvanced this.listenTo(this.tabList.store, 'remove', storechanged); this.listenTo(this.tabList.store, 'reset', storechanged); - this.radioLeft = new Common.UI.RadioBox({ - el: $('#paragraphadv-radio-left'), - labelText: this.textTabLeft, - name: 'asc-radio-tab', - checked: true - }); - - this.radioCenter = new Common.UI.RadioBox({ - el: $('#paragraphadv-radio-center'), - labelText: this.textTabCenter, - name: 'asc-radio-tab' - }); - - this.radioRight = new Common.UI.RadioBox({ - el: $('#paragraphadv-radio-right'), - labelText: this.textTabRight, - name: 'asc-radio-tab' + this.cmbAlign = new Common.UI.ComboBox({ + el : $('#paraadv-cmb-align'), + style : 'width: 108px;', + menuStyle : 'min-width: 108px;', + editable : false, + cls : 'input-group-nr', + data : this._arrTabAlign }); + this.cmbAlign.setValue(1); this.btnAddTab = new Common.UI.Button({ el: $('#paraadv-button-add-tab') @@ -299,18 +407,45 @@ define([ 'text!presentationeditor/main/app/template/ParagraphSettingsAdvanced this._changedProps.get_Tabs().add_Tab(tab); }, this); } + + var horizontalAlign = this.cmbTextAlignment.getValue(); + this._changedProps.asc_putJc((horizontalAlign !== undefined && horizontalAlign !== null) ? horizontalAlign : c_paragraphTextAlignment.LEFT); + + if (this.Spacing !== null) { + this._changedProps.asc_putSpacing(this.Spacing); + } + return { paragraphProps: this._changedProps }; }, _setDefaults: function(props) { if (props ){ this._originalProps = new Asc.asc_CParagraphProperty(props); + this.FirstLine = (props.get_Ind() !== null) ? props.get_Ind().get_FirstLine() : null; this.numIndentsLeft.setValue((props.get_Ind() !== null && props.get_Ind().get_Left() !== null) ? Common.Utils.Metric.fnRecalcFromMM(props.get_Ind().get_Left()) : '', true); - this.numFirstLine.setMinValue(-this.numIndentsLeft.getNumberValue()); - this.numFirstLine.setValue((props.get_Ind() !== null && props.get_Ind().get_FirstLine() !== null ) ? Common.Utils.Metric.fnRecalcFromMM(props.get_Ind().get_FirstLine()) : '', true); this.numIndentsRight.setValue((props.get_Ind() !== null && props.get_Ind().get_Right() !== null) ? Common.Utils.Metric.fnRecalcFromMM(props.get_Ind().get_Right()) : '', true); + this.cmbTextAlignment.setValue((props.get_Jc() !== undefined && props.get_Jc() !== null) ? props.get_Jc() : c_paragraphTextAlignment.CENTERED, true); + + if(this.CurSpecial === undefined) { + this.CurSpecial = (props.get_Ind().get_FirstLine() === 0) ? c_paragraphSpecial.NONE_SPECIAL : ((props.get_Ind().get_FirstLine() > 0) ? c_paragraphSpecial.FIRST_LINE : c_paragraphSpecial.HANGING); + } + this.cmbSpecial.setValue(this.CurSpecial); + this.numSpecialBy.setValue(this.FirstLine!== null ? Math.abs(Common.Utils.Metric.fnRecalcFromMM(this.FirstLine)) : '', true); + + this.numSpacingBefore.setValue((props.get_Spacing() !== null && props.get_Spacing().get_Before() !== null) ? Common.Utils.Metric.fnRecalcFromMM(props.get_Spacing().get_Before()) : '', true); + this.numSpacingAfter.setValue((props.get_Spacing() !== null && props.get_Spacing().get_After() !== null) ? Common.Utils.Metric.fnRecalcFromMM(props.get_Spacing().get_After()) : '', true); + + var linerule = props.get_Spacing().get_LineRule(); + this.cmbLineRule.setValue((linerule !== null) ? linerule : '', true); + + if(props.get_Spacing() !== null && props.get_Spacing().get_Line() !== null) { + this.numLineHeight.setValue((linerule==c_paragraphLinerule.LINERULE_AUTO) ? props.get_Spacing().get_Line() : Common.Utils.Metric.fnRecalcFromMM(props.get_Spacing().get_Line()), true); + } else { + this.numLineHeight.setValue('', true); + } + // Font this._noApply = true; this.chStrike.setValue((props.get_Strikeout() !== null && props.get_Strikeout() !== undefined) ? props.get_Strikeout() : 'indeterminate', true); @@ -339,7 +474,8 @@ define([ 'text!presentationeditor/main/app/template/ParagraphSettingsAdvanced rec.set({ tabPos: pos, value: parseFloat(pos.toFixed(3)) + ' ' + Common.Utils.Metric.getCurrentMetricName(), - tabAlign: tab.get_Value() + tabAlign: tab.get_Value(), + displayTabAlign: this._arrKeyTabAlign[tab.get_Value()] }); arr.push(rec); } @@ -359,13 +495,19 @@ define([ 'text!presentationeditor/main/app/template/ParagraphSettingsAdvanced for (var i=0; i 0 ) { + this.CurSpecial = c_paragraphSpecial.FIRST_LINE; + this.cmbSpecial.setValue(c_paragraphSpecial.FIRST_LINE); + } else if (value === 0) { + this.CurSpecial = c_paragraphSpecial.NONE_SPECIAL; + this.cmbSpecial.setValue(c_paragraphSpecial.NONE_SPECIAL); + } + this._changedProps.get_Ind().put_FirstLine(value); + } + }, + + onLineRuleSelect: function(combo, record) { + if (this.Spacing === null) { + var properties = (this._originalProps) ? this._originalProps : new Asc.asc_CParagraphProperty(); + this.Spacing = properties.get_Spacing(); + } + this.Spacing.LineRule = record.value; + var selectItem = _.findWhere(this._arrLineRule, {value: record.value}), + indexSelectItem = this._arrLineRule.indexOf(selectItem); + if ( this.CurLineRuleIdx !== indexSelectItem ) { + this.numLineHeight.setDefaultUnit(this._arrLineRule[indexSelectItem].defaultUnit); + this.numLineHeight.setMinValue(this._arrLineRule[indexSelectItem].minValue); + this.numLineHeight.setStep(this._arrLineRule[indexSelectItem].step); + if (this.Spacing.LineRule === c_paragraphLinerule.LINERULE_AUTO) { + this.numLineHeight.setValue(this._arrLineRule[indexSelectItem].defaultValue); + } else { + this.numLineHeight.setValue(Common.Utils.Metric.fnRecalcFromMM(this._arrLineRule[indexSelectItem].defaultValue)); + } + this.CurLineRuleIdx = indexSelectItem; + } + }, + + onNumLineHeightChange: function(field, newValue, oldValue, eOpts) { + if ( this.cmbLineRule.getRawValue() === '' ) + return; + if (this.Spacing === null) { + var properties = (this._originalProps) ? this._originalProps : new Asc.asc_CParagraphProperty(); + this.Spacing = properties.get_Spacing(); + } + this.Spacing.Line = (this.cmbLineRule.getValue()==c_paragraphLinerule.LINERULE_AUTO) ? field.getNumberValue() : Common.Utils.Metric.fnRecalcToMM(field.getNumberValue()); }, textTitle: 'Paragraph - Advanced Settings', strIndentsFirstLine: 'First line', strIndentsLeftText: 'Left', strIndentsRightText: 'Right', - strParagraphIndents: 'Indents & Placement', + strParagraphIndents: 'Indents & Spacing', strParagraphFont: 'Font', cancelButtonText: 'Cancel', okButtonText: 'Ok', @@ -584,6 +797,19 @@ define([ 'text!presentationeditor/main/app/template/ParagraphSettingsAdvanced textAlign: 'Alignment', textTabPosition: 'Tab Position', textDefault: 'Default Tab', - noTabs: 'The specified tabs will appear in this field' + noTabs: 'The specified tabs will appear in this field', + textJustified: 'Justified', + strIndentsSpecial: 'Special', + textNoneSpecial: '(none)', + textFirstLine: 'First line', + textHanging: 'Hanging', + strIndentsSpacingBefore: 'Before', + strIndentsSpacingAfter: 'After', + strIndentsLineSpacing: 'Line Spacing', + txtAutoText: 'Auto', + textAuto: 'Multiple', + textExact: 'Exactly', + strIndent: 'Indents', + strSpacing: 'Spacing' }, PE.Views.ParagraphSettingsAdvanced || {})); }); \ No newline at end of file diff --git a/apps/presentationeditor/main/locale/en.json b/apps/presentationeditor/main/locale/en.json index f0f2c07d2a..e460426ccb 100644 --- a/apps/presentationeditor/main/locale/en.json +++ b/apps/presentationeditor/main/locale/en.json @@ -1328,7 +1328,7 @@ "PE.Views.ParagraphSettingsAdvanced.strIndentsLeftText": "Left", "PE.Views.ParagraphSettingsAdvanced.strIndentsRightText": "Right", "PE.Views.ParagraphSettingsAdvanced.strParagraphFont": "Font", - "PE.Views.ParagraphSettingsAdvanced.strParagraphIndents": "Indents & Placement", + "PE.Views.ParagraphSettingsAdvanced.strParagraphIndents": "Indents & Spacing", "PE.Views.ParagraphSettingsAdvanced.strSmallCaps": "Small caps", "PE.Views.ParagraphSettingsAdvanced.strStrike": "Strikethrough", "PE.Views.ParagraphSettingsAdvanced.strSubscript": "Subscript", @@ -1346,6 +1346,19 @@ "PE.Views.ParagraphSettingsAdvanced.textTabPosition": "Tab Position", "PE.Views.ParagraphSettingsAdvanced.textTabRight": "Right", "PE.Views.ParagraphSettingsAdvanced.textTitle": "Paragraph - Advanced Settings", + "PE.Views.ParagraphSettingsAdvanced.textJustified": "Justified", + "PE.Views.ParagraphSettingsAdvanced.strIndentsSpecial": "Special", + "PE.Views.ParagraphSettingsAdvanced.textNoneSpecial": "(none)", + "PE.Views.ParagraphSettingsAdvanced.textFirstLine": "First line", + "PE.Views.ParagraphSettingsAdvanced.textHanging": "Hanging", + "PE.Views.ParagraphSettingsAdvanced.strIndentsSpacingBefore": "Before", + "PE.Views.ParagraphSettingsAdvanced.strIndentsSpacingAfter": "After", + "PE.Views.ParagraphSettingsAdvanced.strIndentsLineSpacing": "Line Spacing", + "PE.Views.ParagraphSettingsAdvanced.txtAutoText": "Auto", + "PE.Views.ParagraphSettingsAdvanced.textAuto": "Multiple", + "PE.Views.ParagraphSettingsAdvanced.textExact": "Exactly", + "PE.Views.ParagraphSettingsAdvanced.strIndent": "Indents", + "PE.Views.ParagraphSettingsAdvanced.strSpacing": "Spacing", "PE.Views.RightMenu.txtChartSettings": "Chart settings", "PE.Views.RightMenu.txtImageSettings": "Image settings", "PE.Views.RightMenu.txtParagraphSettings": "Text settings", diff --git a/apps/presentationeditor/main/locale/ru.json b/apps/presentationeditor/main/locale/ru.json index 87a9455af0..b5e8dbd478 100644 --- a/apps/presentationeditor/main/locale/ru.json +++ b/apps/presentationeditor/main/locale/ru.json @@ -1328,7 +1328,7 @@ "PE.Views.ParagraphSettingsAdvanced.strIndentsLeftText": "Слева", "PE.Views.ParagraphSettingsAdvanced.strIndentsRightText": "Справа", "PE.Views.ParagraphSettingsAdvanced.strParagraphFont": "Шрифт", - "PE.Views.ParagraphSettingsAdvanced.strParagraphIndents": "Отступы и положение", + "PE.Views.ParagraphSettingsAdvanced.strParagraphIndents": "Отступы и интервалы", "PE.Views.ParagraphSettingsAdvanced.strSmallCaps": "Малые прописные", "PE.Views.ParagraphSettingsAdvanced.strStrike": "Зачёркивание", "PE.Views.ParagraphSettingsAdvanced.strSubscript": "Подстрочные", @@ -1346,6 +1346,19 @@ "PE.Views.ParagraphSettingsAdvanced.textTabPosition": "Позиция", "PE.Views.ParagraphSettingsAdvanced.textTabRight": "По правому краю", "PE.Views.ParagraphSettingsAdvanced.textTitle": "Абзац - дополнительные параметры", + "PE.Views.ParagraphSettingsAdvanced.strIndentsSpacingBefore": "Перед", + "PE.Views.ParagraphSettingsAdvanced.strIndentsSpacingAfter": "После", + "PE.Views.ParagraphSettingsAdvanced.strIndentsLineSpacing": "Междустрочный интервал", + "PE.Views.ParagraphSettingsAdvanced.textAuto": "Множитель", + "PE.Views.ParagraphSettingsAdvanced.txtAutoText": "Авто", + "PE.Views.ParagraphSettingsAdvanced.textExact": "Точно", + "PE.Views.ParagraphSettingsAdvanced.strIndentsSpecial": "Первая строка", + "PE.Views.ParagraphSettingsAdvanced.textNoneSpecial": "(нет)", + "PE.Views.ParagraphSettingsAdvanced.textFirstLine": "Отступ", + "PE.Views.ParagraphSettingsAdvanced.textHanging": "Выступ", + "PE.Views.ParagraphSettingsAdvanced.textJustified": "По ширине", + "PE.Views.ParagraphSettingsAdvanced.strIndent": "Отступы", + "PE.Views.ParagraphSettingsAdvanced.strSpacing": "Интервал между абзацами", "PE.Views.RightMenu.txtChartSettings": "Параметры диаграммы", "PE.Views.RightMenu.txtImageSettings": "Параметры изображения", "PE.Views.RightMenu.txtParagraphSettings": "Параметры текста", diff --git a/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js b/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js index f8ddaa468e..bcb7a52253 100644 --- a/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js +++ b/apps/spreadsheeteditor/main/app/controller/DocumentHolder.js @@ -40,6 +40,24 @@ * */ +var c_paragraphLinerule = { + LINERULE_AUTO: 1, + LINERULE_EXACT: 2 +}; + +var c_paragraphTextAlignment = { + RIGHT: 0, + LEFT: 1, + CENTERED: 2, + JUSTIFIED: 3 +}; + +var c_paragraphSpecial = { + NONE_SPECIAL: 0, + FIRST_LINE: 1, + HANGING: 2 +}; + define([ 'core', 'common/main/lib/util/utils', diff --git a/apps/spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced.template b/apps/spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced.template index 961b81080f..ccba9ab31e 100644 --- a/apps/spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced.template +++ b/apps/spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced.template @@ -1,98 +1,114 @@
- - - - - - -
- -
-
- -
-
- -
-
+
+
+ +
+
+
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+
+
-
- - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
-
- -
-
-
+
-
-
-
-
-
- -
-
-
+
- - - +
+ +
+
+
+ +
+
+
+
+
+
+
+
+
+ + +
\ No newline at end of file diff --git a/apps/spreadsheeteditor/main/app/view/AutoFilterDialog.js b/apps/spreadsheeteditor/main/app/view/AutoFilterDialog.js index 7bc92c5f1d..4c3b659c1b 100644 --- a/apps/spreadsheeteditor/main/app/view/AutoFilterDialog.js +++ b/apps/spreadsheeteditor/main/app/view/AutoFilterDialog.js @@ -487,16 +487,19 @@ define([ title : t.txtTitle, modal : false, animate : false, - items : [] + items : [], + resizable : true, + minwidth : 450, + minheight : 265 }, options); this.template = options.template || [ - '
', - '
', - '
', + '
', + '
', + '
', '', - '
', - '
', + '
', + '
', '
', '
', '', '
', - '
', - '' @@ -515,10 +517,13 @@ define([ this.handler = options.handler; this.throughIndexes = []; this.filteredIndexes = []; + this.curSize = null; _options.tpl = _.template(this.template)(_options); Common.UI.Window.prototype.initialize.call(this, _options); + + this.on('resize', _.bind(this.onWindowResize, this)); }, render: function () { @@ -526,6 +531,12 @@ define([ Common.UI.Window.prototype.render.call(this); + var $border = this.$window.find('.resize-border'); + this.$window.find('.resize-border.left, .resize-border.top').css({'cursor': 'default'}); + $border.removeClass('left'); + $border.removeClass('top'); + + this.$window.find('.btn').on('click', _.bind(this.onBtnClick, this)); this.btnOk = new Common.UI.Button({ @@ -1359,6 +1370,19 @@ define([ return false; }, + onWindowResize: function () { + var size = this.getSize(); + if (this.curSize === null) { + this.curSize = size; + } else { + if (size[0] !== this.curSize[0] || size[1] !== this.curSize[1]) { + this.$window.find('.combo-values').css({'height': size[1] - 100 + 'px'}); + this.curSize = size; + this.cellsList.scroller.update({minScrollbarLength : 40, alwaysVisibleY: true, suppressScrollX: true}); + } + } + }, + okButtonText : 'Ok', btnCustomFilter : 'Custom Filter', textSelectAll : 'Select All', diff --git a/apps/spreadsheeteditor/main/app/view/ParagraphSettingsAdvanced.js b/apps/spreadsheeteditor/main/app/view/ParagraphSettingsAdvanced.js index 1007f9a0f0..228de3e9c6 100644 --- a/apps/spreadsheeteditor/main/app/view/ParagraphSettingsAdvanced.js +++ b/apps/spreadsheeteditor/main/app/view/ParagraphSettingsAdvanced.js @@ -49,13 +49,14 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced. SSE.Views.ParagraphSettingsAdvanced = Common.Views.AdvancedSettingsWindow.extend(_.extend({ options: { - contentWidth: 320, + contentWidth: 370, height: 394, toggleGroup: 'paragraph-adv-settings-group', storageName: 'sse-para-settings-adv-category' }, initialize : function(options) { + var me = this; _.extend(this.options, { title: this.textTitle, items: [ @@ -74,9 +75,43 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced. this._noApply = true; this._tabListChanged = false; this.spinners = []; + this.FirstLine = undefined; + this.Spacing = null; this.api = this.options.api; this._originalProps = new Asc.asc_CParagraphProperty(this.options.paragraphProps); + + this._arrLineRule = [ + {displayValue: this.textAuto, defaultValue: 1, value: c_paragraphLinerule.LINERULE_AUTO, minValue: 0.5, step: 0.01, defaultUnit: ''}, + {displayValue: this.textExact, defaultValue: 5, value: c_paragraphLinerule.LINERULE_EXACT, minValue: 0.03, step: 0.01, defaultUnit: 'cm'} + ]; + + var curLineRule = this._originalProps.asc_getSpacing().asc_getLineRule(), + curItem = _.findWhere(this._arrLineRule, {value: curLineRule}); + this.CurLineRuleIdx = this._arrLineRule.indexOf(curItem); + + this._arrTextAlignment = [ + {displayValue: this.textTabLeft, value: c_paragraphTextAlignment.LEFT}, + {displayValue: this.textTabCenter, value: c_paragraphTextAlignment.CENTERED}, + {displayValue: this.textTabRight, value: c_paragraphTextAlignment.RIGHT}, + {displayValue: this.textJustified, value: c_paragraphTextAlignment.JUSTIFIED} + ]; + + this._arrSpecial = [ + {displayValue: this.textNoneSpecial, value: c_paragraphSpecial.NONE_SPECIAL, defaultValue: 0}, + {displayValue: this.textFirstLine, value: c_paragraphSpecial.FIRST_LINE, defaultValue: 12.7}, + {displayValue: this.textHanging, value: c_paragraphSpecial.HANGING, defaultValue: 12.7} + ]; + + this._arrTabAlign = [ + { value: 1, displayValue: this.textTabLeft }, + { value: 3, displayValue: this.textTabCenter }, + { value: 2, displayValue: this.textTabRight } + ]; + this._arrKeyTabAlign = []; + this._arrTabAlign.forEach(function(item) { + me._arrKeyTabAlign[item.value] = item.displayValue; + }); }, render: function() { @@ -86,24 +121,15 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced. // Indents & Placement - this.numFirstLine = new Common.UI.MetricSpinner({ - el: $('#paragraphadv-spin-first-line'), - step: .1, - width: 85, - defaultUnit : "cm", - defaultValue : 0, - value: '0 cm', - maxValue: 55.87, - minValue: -55.87 + this.cmbTextAlignment = new Common.UI.ComboBox({ + el: $('#paragraphadv-spin-text-alignment'), + cls: 'input-group-nr', + editable: false, + data: this._arrTextAlignment, + style: 'width: 173px;', + menuStyle : 'min-width: 173px;' }); - this.numFirstLine.on('change', _.bind(function(field, newValue, oldValue, eOpts){ - if (this._changedProps) { - if (this._changedProps.asc_getInd()===null || this._changedProps.asc_getInd()===undefined) - this._changedProps.asc_putInd(new Asc.asc_CParagraphInd()); - this._changedProps.asc_getInd().asc_putFirstLine(Common.Utils.Metric.fnRecalcToMM(field.getNumberValue())); - } - }, this)); - this.spinners.push(this.numFirstLine); + this.cmbTextAlignment.setValue(''); this.numIndentsLeft = new Common.UI.MetricSpinner({ el: $('#paragraphadv-spin-indent-left'), @@ -113,13 +139,14 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced. defaultValue : 0, value: '0 cm', maxValue: 55.87, - minValue: -55.87 + minValue: 0 }); this.numIndentsLeft.on('change', _.bind(function(field, newValue, oldValue, eOpts){ + var numval = field.getNumberValue(); if (this._changedProps) { if (this._changedProps.asc_getInd()===null || this._changedProps.asc_getInd()===undefined) - this._changedProps.asc_putInd(new Asc.asc_CParagraphInd()); - this._changedProps.asc_getInd().asc_putLeft(Common.Utils.Metric.fnRecalcToMM(field.getNumberValue())); + this._changedProps.put_Ind(new Asc.asc_CParagraphInd()); + this._changedProps.asc_getInd().put_Left(Common.Utils.Metric.fnRecalcToMM(numval)); } }, this)); this.spinners.push(this.numIndentsLeft); @@ -132,17 +159,104 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced. defaultValue : 0, value: '0 cm', maxValue: 55.87, - minValue: -55.87 + minValue: 0 }); this.numIndentsRight.on('change', _.bind(function(field, newValue, oldValue, eOpts){ if (this._changedProps) { if (this._changedProps.asc_getInd()===null || this._changedProps.asc_getInd()===undefined) - this._changedProps.asc_putInd(new Asc.asc_CParagraphInd()); - this._changedProps.asc_getInd().asc_putRight(Common.Utils.Metric.fnRecalcToMM(field.getNumberValue())); + this._changedProps.put_Ind(new Asc.asc_CParagraphInd()); + this._changedProps.asc_getInd().put_Right(Common.Utils.Metric.fnRecalcToMM(field.getNumberValue())); } }, this)); this.spinners.push(this.numIndentsRight); + this.cmbSpecial = new Common.UI.ComboBox({ + el: $('#paragraphadv-spin-special'), + cls: 'input-group-nr', + editable: false, + data: this._arrSpecial, + style: 'width: 85px;', + menuStyle : 'min-width: 85px;' + }); + this.cmbSpecial.setValue(''); + this.cmbSpecial.on('selected', _.bind(this.onSpecialSelect, this)); + + this.numSpecialBy = new Common.UI.MetricSpinner({ + el: $('#paragraphadv-spin-special-by'), + step: .1, + width: 85, + defaultUnit : "cm", + defaultValue : 0, + value: '0 cm', + maxValue: 55.87, + minValue: 0 + }); + this.spinners.push(this.numSpecialBy); + this.numSpecialBy.on('change', _.bind(this.onFirstLineChange, this)); + + this.numSpacingBefore = new Common.UI.MetricSpinner({ + el: $('#paragraphadv-spin-spacing-before'), + step: .1, + width: 85, + value: '', + defaultUnit : "cm", + maxValue: 55.88, + minValue: 0, + allowAuto : true, + autoText : this.txtAutoText + }); + this.numSpacingBefore.on('change', _.bind(function (field, newValue, oldValue, eOpts) { + if (this.Spacing === null) { + var properties = (this._originalProps) ? this._originalProps : new Asc.asc_CParagraphProperty(); + this.Spacing = properties.asc_getSpacing(); + } + this.Spacing.Before = Common.Utils.Metric.fnRecalcToMM(field.getNumberValue()); + }, this)); + this.spinners.push(this.numSpacingBefore); + + this.numSpacingAfter = new Common.UI.MetricSpinner({ + el: $('#paragraphadv-spin-spacing-after'), + step: .1, + width: 85, + value: '', + defaultUnit : "cm", + maxValue: 55.88, + minValue: 0, + allowAuto : true, + autoText : this.txtAutoText + }); + this.numSpacingAfter.on('change', _.bind(function (field, newValue, oldValue, eOpts) { + if (this.Spacing === null) { + var properties = (this._originalProps) ? this._originalProps : new Asc.asc_CParagraphProperty(); + this.Spacing = properties.asc_getSpacing(); + } + this.Spacing.After = Common.Utils.Metric.fnRecalcToMM(field.getNumberValue()); + }, this)); + this.spinners.push(this.numSpacingAfter); + + this.cmbLineRule = new Common.UI.ComboBox({ + el: $('#paragraphadv-spin-line-rule'), + cls: 'input-group-nr', + editable: false, + data: this._arrLineRule, + style: 'width: 85px;', + menuStyle : 'min-width: 85px;' + }); + this.cmbLineRule.setValue(this.CurLineRuleIdx); + this.cmbLineRule.on('selected', _.bind(this.onLineRuleSelect, this)); + + this.numLineHeight = new Common.UI.MetricSpinner({ + el: $('#paragraphadv-spin-line-height'), + step: .01, + width: 85, + value: '', + defaultUnit : "", + maxValue: 132, + minValue: 0.5 + }); + this.spinners.push(this.numLineHeight); + this.numLineHeight.on('change', _.bind(this.onNumLineHeightChange, this)); + // Font this.chStrike = new Common.UI.CheckBox({ @@ -207,7 +321,7 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced. this.numTab = new Common.UI.MetricSpinner({ el: $('#paraadv-spin-tab'), step: .1, - width: 180, + width: 108, defaultUnit : "cm", value: '1.25 cm', maxValue: 55.87, @@ -218,7 +332,7 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced. this.numDefaultTab = new Common.UI.MetricSpinner({ el: $('#paraadv-spin-default-tab'), step: .1, - width: 107, + width: 108, defaultUnit : "cm", value: '1.25 cm', maxValue: 55.87, @@ -234,7 +348,14 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced. this.tabList = new Common.UI.ListView({ el: $('#paraadv-list-tabs'), emptyText: this.noTabs, - store: new Common.UI.DataViewStore() + store: new Common.UI.DataViewStore(), + template: _.template(['
'].join('')), + itemTemplate: _.template([ + '
', + '
<%= value %>
', + '
<%= displayTabAlign %>
', + '
' + ].join('')) }); this.tabList.store.comparator = function(rec) { return rec.get("tabPos"); @@ -249,24 +370,15 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced. this.listenTo(this.tabList.store, 'remove', storechanged); this.listenTo(this.tabList.store, 'reset', storechanged); - this.radioLeft = new Common.UI.RadioBox({ - el: $('#paragraphadv-radio-left'), - labelText: this.textTabLeft, - name: 'asc-radio-tab', - checked: true - }); - - this.radioCenter = new Common.UI.RadioBox({ - el: $('#paragraphadv-radio-center'), - labelText: this.textTabCenter, - name: 'asc-radio-tab' - }); - - this.radioRight = new Common.UI.RadioBox({ - el: $('#paragraphadv-radio-right'), - labelText: this.textTabRight, - name: 'asc-radio-tab' + this.cmbAlign = new Common.UI.ComboBox({ + el : $('#paraadv-cmb-align'), + style : 'width: 108px;', + menuStyle : 'min-width: 108px;', + editable : false, + cls : 'input-group-nr', + data : this._arrTabAlign }); + this.cmbAlign.setValue(1); this.btnAddTab = new Common.UI.Button({ el: $('#paraadv-button-add-tab') @@ -299,17 +411,44 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced. this._changedProps.asc_getTabs().add_Tab(tab); }, this); } + + var horizontalAlign = this.cmbTextAlignment.getValue(); + this._changedProps.asc_putJc((horizontalAlign !== undefined && horizontalAlign !== null) ? horizontalAlign : c_paragraphTextAlignment.LEFT); + + if (this.Spacing !== null) { + this._changedProps.asc_putSpacing(this.Spacing); + } + return { paragraphProps: this._changedProps }; }, _setDefaults: function(props) { if (props ){ this._originalProps = new Asc.asc_CParagraphProperty(props); + this.FirstLine = (props.asc_getInd() !== null) ? props.asc_getInd().asc_getFirstLine() : null; - this.numFirstLine.setValue((props.asc_getInd() !== null && props.asc_getInd().asc_getFirstLine() !== null ) ? Common.Utils.Metric.fnRecalcFromMM(props.asc_getInd().asc_getFirstLine()) : '', true); this.numIndentsLeft.setValue((props.asc_getInd() !== null && props.asc_getInd().asc_getLeft() !== null) ? Common.Utils.Metric.fnRecalcFromMM(props.asc_getInd().asc_getLeft()) : '', true); this.numIndentsRight.setValue((props.asc_getInd() !== null && props.asc_getInd().asc_getRight() !== null) ? Common.Utils.Metric.fnRecalcFromMM(props.asc_getInd().asc_getRight()) : '', true); + this.cmbTextAlignment.setValue((props.asc_getJc() !== undefined && props.asc_getJc() !== null) ? props.asc_getJc() : c_paragraphTextAlignment.CENTERED, true); + + if(this.CurSpecial === undefined) { + this.CurSpecial = (props.asc_getInd().asc_getFirstLine() === 0) ? c_paragraphSpecial.NONE_SPECIAL : ((props.asc_getInd().asc_getFirstLine() > 0) ? c_paragraphSpecial.FIRST_LINE : c_paragraphSpecial.HANGING); + } + this.cmbSpecial.setValue(this.CurSpecial); + this.numSpecialBy.setValue(this.FirstLine!== null ? Math.abs(Common.Utils.Metric.fnRecalcFromMM(this.FirstLine)) : '', true); + + this.numSpacingBefore.setValue((props.asc_getSpacing() !== null && props.asc_getSpacing().asc_getBefore() !== null) ? Common.Utils.Metric.fnRecalcFromMM(props.asc_getSpacing().asc_getBefore()) : '', true); + this.numSpacingAfter.setValue((props.asc_getSpacing() !== null && props.asc_getSpacing().asc_getAfter() !== null) ? Common.Utils.Metric.fnRecalcFromMM(props.asc_getSpacing().asc_getAfter()) : '', true); + + var linerule = props.asc_getSpacing().asc_getLineRule(); + this.cmbLineRule.setValue((linerule !== null) ? linerule : '', true); + + if(props.asc_getSpacing() !== null && props.asc_getSpacing().asc_getLine() !== null) { + this.numLineHeight.setValue((linerule==c_paragraphLinerule.LINERULE_AUTO) ? props.asc_getSpacing().asc_getLine() : Common.Utils.Metric.fnRecalcFromMM(props.asc_getSpacing().asc_getLine()), true); + } else { + this.numLineHeight.setValue('', true); + } // Font this._noApply = true; this.chStrike.setValue((props.asc_getStrikeout() !== null && props.asc_getStrikeout() !== undefined) ? props.asc_getStrikeout() : 'indeterminate', true); @@ -338,7 +477,8 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced. rec.set({ tabPos: pos, value: parseFloat(pos.toFixed(3)) + ' ' + Common.Utils.Metric.getCurrentMetricName(), - tabAlign: tab.asc_getValue() + tabAlign: tab.asc_getValue(), + displayTabAlign: this._arrKeyTabAlign[tab.asc_getValue()] }); arr.push(rec); } @@ -358,13 +498,19 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced. for (var i=0; i 0 ) { + this.CurSpecial = c_paragraphSpecial.FIRST_LINE; + this.cmbSpecial.setValue(c_paragraphSpecial.FIRST_LINE); + } else if (value === 0) { + this.CurSpecial = c_paragraphSpecial.NONE_SPECIAL; + this.cmbSpecial.setValue(c_paragraphSpecial.NONE_SPECIAL); + } + this._changedProps.asc_getInd().put_FirstLine(value); + } + }, + + onLineRuleSelect: function(combo, record) { + if (this.Spacing === null) { + var properties = (this._originalProps) ? this._originalProps : new Asc.asc_CParagraphProperty(); + this.Spacing = properties.asc_getSpacing(); + } + this.Spacing.LineRule = record.value; + var selectItem = _.findWhere(this._arrLineRule, {value: record.value}), + indexSelectItem = this._arrLineRule.indexOf(selectItem); + if ( this.CurLineRuleIdx !== indexSelectItem ) { + this.numLineHeight.setDefaultUnit(this._arrLineRule[indexSelectItem].defaultUnit); + this.numLineHeight.setMinValue(this._arrLineRule[indexSelectItem].minValue); + this.numLineHeight.setStep(this._arrLineRule[indexSelectItem].step); + if (this.Spacing.LineRule === c_paragraphLinerule.LINERULE_AUTO) { + this.numLineHeight.setValue(this._arrLineRule[indexSelectItem].defaultValue); + } else { + this.numLineHeight.setValue(Common.Utils.Metric.fnRecalcFromMM(this._arrLineRule[indexSelectItem].defaultValue)); + } + this.CurLineRuleIdx = indexSelectItem; + } + }, + + onNumLineHeightChange: function(field, newValue, oldValue, eOpts) { + if ( this.cmbLineRule.getRawValue() === '' ) + return; + if (this.Spacing === null) { + var properties = (this._originalProps) ? this._originalProps : new Asc.asc_CParagraphProperty(); + this.Spacing = properties.asc_getSpacing(); + } + this.Spacing.Line = (this.cmbLineRule.getValue()==c_paragraphLinerule.LINERULE_AUTO) ? field.getNumberValue() : Common.Utils.Metric.fnRecalcToMM(field.getNumberValue()); }, textTitle: 'Paragraph - Advanced Settings', strIndentsFirstLine: 'First line', strIndentsLeftText: 'Left', strIndentsRightText: 'Right', - strParagraphIndents: 'Indents & Placement', + strParagraphIndents: 'Indents & Spacing', strParagraphFont: 'Font', cancelButtonText: 'Cancel', okButtonText: 'Ok', @@ -583,6 +800,19 @@ define([ 'text!spreadsheeteditor/main/app/template/ParagraphSettingsAdvanced. textAlign: 'Alignment', textTabPosition: 'Tab Position', textDefault: 'Default Tab', - noTabs: 'The specified tabs will appear in this field' + noTabs: 'The specified tabs will appear in this field', + textJustified: 'Justified', + strIndentsSpecial: 'Special', + textNoneSpecial: '(none)', + textFirstLine: 'First line', + textHanging: 'Hanging', + strIndentsSpacingBefore: 'Before', + strIndentsSpacingAfter: 'After', + strIndentsLineSpacing: 'Line Spacing', + txtAutoText: 'Auto', + textAuto: 'Multiple', + textExact: 'Exactly', + strIndent: 'Indents', + strSpacing: 'Spacing' }, SSE.Views.ParagraphSettingsAdvanced || {})); }); \ No newline at end of file diff --git a/apps/spreadsheeteditor/main/locale/en.json b/apps/spreadsheeteditor/main/locale/en.json index 5d8cd300db..9de659f10c 100644 --- a/apps/spreadsheeteditor/main/locale/en.json +++ b/apps/spreadsheeteditor/main/locale/en.json @@ -1818,7 +1818,7 @@ "SSE.Views.ParagraphSettingsAdvanced.strIndentsLeftText": "Left", "SSE.Views.ParagraphSettingsAdvanced.strIndentsRightText": "Right", "SSE.Views.ParagraphSettingsAdvanced.strParagraphFont": "Font", - "SSE.Views.ParagraphSettingsAdvanced.strParagraphIndents": "Indents & Placement", + "SSE.Views.ParagraphSettingsAdvanced.strParagraphIndents": "Indents & Spacing", "SSE.Views.ParagraphSettingsAdvanced.strSmallCaps": "Small caps", "SSE.Views.ParagraphSettingsAdvanced.strStrike": "Strikethrough", "SSE.Views.ParagraphSettingsAdvanced.strSubscript": "Subscript", @@ -1836,6 +1836,20 @@ "SSE.Views.ParagraphSettingsAdvanced.textTabPosition": "Tab Position", "SSE.Views.ParagraphSettingsAdvanced.textTabRight": "Right", "SSE.Views.ParagraphSettingsAdvanced.textTitle": "Paragraph - Advanced Settings", + "SSE.Views.ParagraphSettingsAdvanced.textJustified": "Justified", + "SSE.Views.ParagraphSettingsAdvanced.strIndentsSpecial": "Special", + "SSE.Views.ParagraphSettingsAdvanced.textNoneSpecial": "(none)", + "SSE.Views.ParagraphSettingsAdvanced.textFirstLine": "First line", + "SSE.Views.ParagraphSettingsAdvanced.textHanging": "Hanging", + "SSE.Views.ParagraphSettingsAdvanced.strIndentsSpecialBy": "By", + "SSE.Views.ParagraphSettingsAdvanced.strIndentsSpacingBefore": "Before", + "SSE.Views.ParagraphSettingsAdvanced.strIndentsSpacingAfter": "After", + "SSE.Views.ParagraphSettingsAdvanced.strIndentsLineSpacing": "Line Spacing", + "SSE.Views.ParagraphSettingsAdvanced.txtAutoText": "Auto", + "SSE.Views.ParagraphSettingsAdvanced.textAuto": "Multiple", + "SSE.Views.ParagraphSettingsAdvanced.textExact": "Exactly", + "SSE.Views.ParagraphSettingsAdvanced.strIndent": "Indents", + "SSE.Views.ParagraphSettingsAdvanced.strSpacing": "Spacing", "SSE.Views.PivotSettings.notcriticalErrorTitle": "Warning", "SSE.Views.PivotSettings.textAdvanced": "Show advanced settings", "SSE.Views.PivotSettings.textCancel": "Cancel", diff --git a/apps/spreadsheeteditor/main/locale/ru.json b/apps/spreadsheeteditor/main/locale/ru.json index fd76208466..d592f0e3e6 100644 --- a/apps/spreadsheeteditor/main/locale/ru.json +++ b/apps/spreadsheeteditor/main/locale/ru.json @@ -1816,7 +1816,7 @@ "SSE.Views.ParagraphSettingsAdvanced.strIndentsLeftText": "Слева", "SSE.Views.ParagraphSettingsAdvanced.strIndentsRightText": "Справа", "SSE.Views.ParagraphSettingsAdvanced.strParagraphFont": "Шрифт", - "SSE.Views.ParagraphSettingsAdvanced.strParagraphIndents": "Отступы и положение", + "SSE.Views.ParagraphSettingsAdvanced.strParagraphIndents": "Отступы и интервалы", "SSE.Views.ParagraphSettingsAdvanced.strSmallCaps": "Малые прописные", "SSE.Views.ParagraphSettingsAdvanced.strStrike": "Зачёркивание", "SSE.Views.ParagraphSettingsAdvanced.strSubscript": "Подстрочные", @@ -1834,6 +1834,19 @@ "SSE.Views.ParagraphSettingsAdvanced.textTabPosition": "Позиция", "SSE.Views.ParagraphSettingsAdvanced.textTabRight": "По правому краю", "SSE.Views.ParagraphSettingsAdvanced.textTitle": "Абзац - дополнительные параметры", + "SSE.Views.ParagraphSettingsAdvanced.strIndentsSpacingBefore": "Перед", + "SSE.Views.ParagraphSettingsAdvanced.strIndentsSpacingAfter": "После", + "SSE.Views.ParagraphSettingsAdvanced.strIndentsLineSpacing": "Междустрочный интервал", + "SSE.Views.ParagraphSettingsAdvanced.textAuto": "Множитель", + "SSE.Views.ParagraphSettingsAdvanced.txtAutoText": "Авто", + "SSE.Views.ParagraphSettingsAdvanced.textExact": "Точно", + "SSE.Views.ParagraphSettingsAdvanced.strIndentsSpecial": "Первая строка", + "SSE.Views.ParagraphSettingsAdvanced.textNoneSpecial": "(нет)", + "SSE.Views.ParagraphSettingsAdvanced.textFirstLine": "Отступ", + "SSE.Views.ParagraphSettingsAdvanced.textHanging": "Выступ", + "SSE.Views.ParagraphSettingsAdvanced.textJustified": "По ширине", + "SSE.Views.ParagraphSettingsAdvanced.strIndent": "Отступы", + "SSE.Views.ParagraphSettingsAdvanced.strSpacing": "Интервал между абзацами", "SSE.Views.PivotSettings.notcriticalErrorTitle": "Внимание", "SSE.Views.PivotSettings.textAdvanced": "Дополнительные параметры", "SSE.Views.PivotSettings.textCancel": "Отмена",