/* * * (c) Copyright Ascensio System SIA 2010-2019 * * This program is a free software product. You can redistribute it and/or * modify it under the terms of the GNU Affero General Public License (AGPL) * version 3 as published by the Free Software Foundation. In accordance with * Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect * that Ascensio System SIA expressly excludes the warranty of non-infringement * of any third-party rights. * * This program is distributed WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For * details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html * * You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha * street, Riga, Latvia, EU, LV-1050. * * The interactive user interfaces in modified source and object code versions * of the Program must display Appropriate Legal Notices, as required under * Section 5 of the GNU AGPL version 3. * * Pursuant to Section 7(b) of the License you must retain the original Product * logo when distributing the program. Pursuant to Section 7(e) we decline to * grant you any rights under trademark law for use of our trademarks. * * All the Product's GUI elements, including illustrations and icon sets, as * well as technical writing content are licensed under the terms of the * Creative Commons Attribution-ShareAlike 4.0 International. See the License * terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode * */ /** * Toolbar.js * * Created by Alexander Yuzhin on 3/31/14 * Copyright (c) 2018 Ascensio System SIA. All rights reserved. * */ define([ 'core', 'common/main/lib/component/Window', 'common/main/lib/view/CopyWarningDialog', 'common/main/lib/view/ImageFromUrlDialog', 'common/main/lib/view/SelectFileDlg', 'common/main/lib/view/SymbolTableDialog', 'common/main/lib/util/define', 'spreadsheeteditor/main/app/view/Toolbar', 'spreadsheeteditor/main/app/collection/TableTemplates', 'spreadsheeteditor/main/app/controller/PivotTable', 'spreadsheeteditor/main/app/view/HyperlinkSettingsDialog', 'spreadsheeteditor/main/app/view/TableOptionsDialog', 'spreadsheeteditor/main/app/view/NamedRangeEditDlg', 'spreadsheeteditor/main/app/view/NamedRangePasteDlg', 'spreadsheeteditor/main/app/view/NameManagerDlg', 'spreadsheeteditor/main/app/view/FormatSettingsDialog', 'spreadsheeteditor/main/app/view/PageMarginsDialog', 'spreadsheeteditor/main/app/view/HeaderFooterDialog', 'spreadsheeteditor/main/app/view/ScaleDialog' ], function () { 'use strict'; SSE.Controllers.Toolbar = Backbone.Controller.extend(_.extend({ models: [], collections: [], views: [ 'Toolbar' ], initialize: function() { var me = this; this.addListeners({ 'Toolbar': { 'change:compact': this.onClickChangeCompact.bind(me), 'add:chart' : this.onSelectChart, 'insert:textart': this.onInsertTextart, 'change:scalespn': this.onClickChangeScaleInMenu.bind(me), 'click:customscale': this.onScaleClick.bind(me) }, 'FileMenu': { 'menu:hide': me.onFileMenu.bind(me, 'hide'), 'menu:show': me.onFileMenu.bind(me, 'show') }, 'Statusbar': { 'sheet:changed': _.bind(this.onApiSheetChanged, this) }, 'Common.Views.Header': { 'toolbar:setcompact': this.onChangeViewMode.bind(this), 'print': function (opts) { var _main = this.getApplication().getController('Main'); _main.onPrint(); }, 'save': function (opts) { this.api.asc_Save(); }, 'undo': this.onUndo, 'redo': this.onRedo, 'downloadas': function (opts) { var _main = this.getApplication().getController('Main'); var _file_type = _main.appOptions.spreadsheet.fileType, _format; if ( !!_file_type ) { _format = Asc.c_oAscFileType[ _file_type.toUpperCase() ]; } var _supported = [ Asc.c_oAscFileType.XLSX, Asc.c_oAscFileType.ODS, Asc.c_oAscFileType.CSV, Asc.c_oAscFileType.PDFA, Asc.c_oAscFileType.XLTX, Asc.c_oAscFileType.OTS ]; if ( !_format || _supported.indexOf(_format) < 0 ) _format = Asc.c_oAscFileType.PDF; if (_format == Asc.c_oAscFileType.PDF || _format == Asc.c_oAscFileType.PDFA) Common.NotificationCenter.trigger('download:settings', this.toolbar, _format); else _main.api.asc_DownloadAs(new Asc.asc_CDownloadOptions(_format)); }, 'go:editor': function() { Common.Gateway.requestEditRights(); } }, 'DataTab': { 'data:sort': this.onSortType, 'data:setfilter': this.onAutoFilter, 'data:clearfilter': this.onClearFilter }, 'FormulaTab': { 'function:namedrange': this.onNamedRangeMenu, 'function:namedrange-open': this.onNamedRangeMenuOpen } }); Common.NotificationCenter.on('page:settings', _.bind(this.onApiSheetChanged, this)); Common.NotificationCenter.on('formula:settings', _.bind(this.applyFormulaSettings, this)); this.editMode = true; this._isAddingShape = false; this._state = { activated: false, prstyle: undefined, clrtext: undefined, pralign: undefined, clrback: undefined, valign: undefined, can_undo: undefined, can_redo: undefined, bold: undefined, italic: undefined, underline: undefined, strikeout: undefined, subscript: undefined, superscript: undefined, wrap: undefined, merge: undefined, angle: undefined, controlsdisabled: { rows: undefined, cols: undefined, cells_right: undefined, cells_down: undefined, filters: undefined }, selection_type: undefined, filter: undefined, filterapplied: false, tablestylename: undefined, tablename: undefined, namedrange_locked: false, fontsize: undefined, multiselect: false, sparklines_disabled: false, numformatinfo: undefined, numformattype: undefined, numformat: undefined, langId: undefined, pgsize: [0, 0], pgmargins: undefined, pgorient: undefined, lock_doc: undefined }; this.binding = {}; var checkInsertAutoshape = function(e, action) { var cmp = $(e.target), cmp_sdk = cmp.closest('#editor_sdk'), btn_id = cmp.closest('button').attr('id'); if (btn_id===undefined) btn_id = cmp.closest('.btn-group').attr('id'); if (me.api && me.api.asc_isAddAutoshape() ) { if (cmp_sdk.length <=0 || action == 'cancel') { if ( me.toolbar.btnInsertText.pressed && btn_id != me.toolbar.btnInsertText.id || me.toolbar.btnInsertShape.pressed && btn_id != me.toolbar.btnInsertShape.id ) { me._isAddingShape = false; me._addAutoshape(false); me.toolbar.btnInsertShape.toggle(false, true); me.toolbar.btnInsertText.toggle(false, true); Common.NotificationCenter.trigger('edit:complete', me.toolbar); } else if ( me.toolbar.btnInsertShape.pressed && btn_id == me.toolbar.btnInsertShape.id) { _.defer(function(){ me.api.asc_endAddShape(); Common.NotificationCenter.trigger('edit:complete', me.toolbar); }, 100); } } } }; this.checkInsertAutoshape = function(cmp) { checkInsertAutoshape({}, cmp.action); }; this._addAutoshape = function(isstart, type) { if (this.api) { if (isstart) { this.api.asc_startAddShape(type); $(document.body).on('mouseup', checkInsertAutoshape); } else { this.api.asc_endAddShape(); $(document.body).off('mouseup', checkInsertAutoshape); } } }; this.onApiEndAddShape = function() { if (this.toolbar.btnInsertShape.pressed) this.toolbar.btnInsertShape.toggle(false, true); if (this.toolbar.btnInsertText.pressed) this.toolbar.btnInsertText.toggle(false, true); $(document.body).off('mouseup', checkInsertAutoshape); }; }, onLaunch: function() { // Create toolbar view this.toolbar = this.createView('Toolbar'); Common.NotificationCenter.on('app:ready', this.onAppReady.bind(this)); Common.NotificationCenter.on('app:face', this.onAppShowed.bind(this)); }, setMode: function(mode) { this.mode = mode; this.toolbar.applyLayout(mode); }, attachUIEvents: function(toolbar) { var me = this; /** * UI Events */ if ( me.appConfig.isEditDiagram ) { toolbar.btnUndo.on('click', _.bind(this.onUndo, this)); toolbar.btnRedo.on('click', _.bind(this.onRedo, this)); toolbar.btnCopy.on('click', _.bind(this.onCopyPaste, this, true)); toolbar.btnPaste.on('click', _.bind(this.onCopyPaste, this, false)); toolbar.btnInsertFormula.on('click', _.bind(this.onInsertFormulaMenu, this)); toolbar.btnInsertFormula.menu.on('item:click', _.bind(this.onInsertFormulaMenu, this)); toolbar.btnDecDecimal.on('click', _.bind(this.onDecrement, this)); toolbar.btnIncDecimal.on('click', _.bind(this.onIncrement, this)); toolbar.cmbNumberFormat.on('selected', _.bind(this.onNumberFormatSelect, this)); toolbar.cmbNumberFormat.on('show:before', _.bind(this.onNumberFormatOpenBefore, this, true)); if (toolbar.cmbNumberFormat.cmpEl) toolbar.cmbNumberFormat.cmpEl.on('click', '#id-toolbar-mnu-item-more-formats a', _.bind(this.onNumberFormatSelect, this)); toolbar.btnEditChart.on('click', _.bind(this.onEditChart, this)); } else if ( me.appConfig.isEditMailMerge ) { toolbar.btnUndo.on('click', _.bind(this.onUndo, this)); toolbar.btnRedo.on('click', _.bind(this.onRedo, this)); toolbar.btnCopy.on('click', _.bind(this.onCopyPaste, this, true)); toolbar.btnPaste.on('click', _.bind(this.onCopyPaste, this, false)); toolbar.btnSearch.on('click', _.bind(this.onSearch, this)); toolbar.btnSortDown.on('click', _.bind(this.onSortType, this, Asc.c_oAscSortOptions.Ascending)); toolbar.btnSortUp.on('click', _.bind(this.onSortType, this, Asc.c_oAscSortOptions.Descending)); toolbar.btnSetAutofilter.on('click', _.bind(this.onAutoFilter, this)); toolbar.btnClearAutofilter.on('click', _.bind(this.onClearFilter, this)); } else { toolbar.btnPrint.on('click', _.bind(this.onPrint, this)); toolbar.btnPrint.on('disabled', _.bind(this.onBtnChangeState, this, 'print:disabled')); toolbar.btnSave.on('click', _.bind(this.onSave, this)); toolbar.btnSave.on('disabled', _.bind(this.onBtnChangeState, this, 'save:disabled')); toolbar.btnUndo.on('click', _.bind(this.onUndo, this)); toolbar.btnUndo.on('disabled', _.bind(this.onBtnChangeState, this, 'undo:disabled')); toolbar.btnRedo.on('click', _.bind(this.onRedo, this)); toolbar.btnRedo.on('disabled', _.bind(this.onBtnChangeState, this, 'redo:disabled')); toolbar.btnCopy.on('click', _.bind(this.onCopyPaste, this, true)); toolbar.btnPaste.on('click', _.bind(this.onCopyPaste, this, false)); toolbar.btnIncFontSize.on('click', _.bind(this.onIncreaseFontSize, this)); toolbar.btnDecFontSize.on('click', _.bind(this.onDecreaseFontSize, this)); toolbar.btnBold.on('click', _.bind(this.onBold, this)); toolbar.btnItalic.on('click', _.bind(this.onItalic, this)); toolbar.btnUnderline.on('click', _.bind(this.onUnderline, this)); toolbar.btnStrikeout.on('click', _.bind(this.onStrikeout, this)); toolbar.btnSubscript.on('click', _.bind(this.onSubscript, this)); toolbar.btnSubscript.menu.on('item:click', _.bind(this.onSubscriptMenu, this)); toolbar.btnTextColor.on('click', _.bind(this.onTextColor, this)); toolbar.btnBackColor.on('click', _.bind(this.onBackColor, this)); toolbar.mnuTextColorPicker.on('select', _.bind(this.onTextColorSelect, this)); toolbar.mnuBackColorPicker.on('select', _.bind(this.onBackColorSelect, this)); toolbar.btnBorders.on('click', _.bind(this.onBorders, this)); if (toolbar.btnBorders.rendered) { toolbar.btnBorders.menu.on('item:click', _.bind(this.onBordersMenu, this)); toolbar.mnuBorderWidth.on('item:toggle', _.bind(this.onBordersWidth, this)); toolbar.mnuBorderColorPicker.on('select', _.bind(this.onBordersColor, this)); } toolbar.btnAlignLeft.on('click', _.bind(this.onHorizontalAlign, this, AscCommon.align_Left)); toolbar.btnAlignCenter.on('click', _.bind(this.onHorizontalAlign, this, AscCommon.align_Center)); toolbar.btnAlignRight.on('click', _.bind(this.onHorizontalAlign, this, AscCommon.align_Right)); toolbar.btnAlignJust.on('click', _.bind(this.onHorizontalAlign, this, AscCommon.align_Justify)); toolbar.btnMerge.on('click', _.bind(this.onMergeCellsMenu, this, toolbar.btnMerge.menu, toolbar.btnMerge.menu.items[0])); toolbar.btnMerge.menu.on('item:click', _.bind(this.onMergeCellsMenu, this)); toolbar.btnAlignTop.on('click', _.bind(this.onVerticalAlign, this, Asc.c_oAscVAlign.Top)); toolbar.btnAlignMiddle.on('click', _.bind(this.onVerticalAlign, this, Asc.c_oAscVAlign.Center)); toolbar.btnAlignBottom.on('click', _.bind(this.onVerticalAlign, this, Asc.c_oAscVAlign.Bottom)); toolbar.btnWrap.on('click', _.bind(this.onWrap, this)); toolbar.btnTextOrient.menu.on('item:click', _.bind(this.onTextOrientationMenu, this)); toolbar.btnInsertTable.on('click', _.bind(this.onBtnInsertTableClick, this)); toolbar.btnInsertImage.menu.on('item:click', _.bind(this.onInsertImageMenu, this)); toolbar.btnInsertHyperlink.on('click', _.bind(this.onHyperlink, this)); toolbar.btnInsertText.on('click', _.bind(this.onBtnInsertTextClick, this)); toolbar.btnInsertShape.menu.on('hide:after', _.bind(this.onInsertShapeHide, this)); toolbar.btnInsertEquation.on('click', _.bind(this.onInsertEquationClick, this)); toolbar.btnInsertSymbol.on('click', _.bind(this.onInsertSymbolClick, this)); toolbar.btnTableTemplate.menu.on('show:after', _.bind(this.onTableTplMenuOpen, this)); toolbar.btnPercentStyle.on('click', _.bind(this.onNumberFormat, this)); toolbar.btnCurrencyStyle.on('click', _.bind(this.onNumberFormat, this)); toolbar.btnDecDecimal.on('click', _.bind(this.onDecrement, this)); toolbar.btnIncDecimal.on('click', _.bind(this.onIncrement, this)); toolbar.btnInsertFormula.on('click', _.bind(this.onInsertFormulaMenu, this)); toolbar.btnInsertFormula.menu.on('item:click', _.bind(this.onInsertFormulaMenu, this)); toolbar.btnNamedRange.menu.on('item:click', _.bind(this.onNamedRangeMenu, this)); toolbar.btnNamedRange.menu.on('show:after', _.bind(this.onNamedRangeMenuOpen, this)); toolbar.btnClearStyle.menu.on('item:click', _.bind(this.onClearStyleMenu, this)); toolbar.btnAddCell.menu.on('item:click', _.bind(this.onCellInsertMenu, this)); toolbar.btnCopyStyle.on('toggle', _.bind(this.onCopyStyleToggle, this)); toolbar.btnDeleteCell.menu.on('item:click', _.bind(this.onCellDeleteMenu, this)); toolbar.btnColorSchemas.menu.on('item:click', _.bind(this.onColorSchemaClick, this)); toolbar.btnColorSchemas.menu.on('show:after', _.bind(this.onColorSchemaShow, this)); toolbar.cmbFontName.on('selected', _.bind(this.onFontNameSelect, this)); toolbar.cmbFontName.on('show:after', _.bind(this.onComboOpen, this, true)); toolbar.cmbFontName.on('hide:after', _.bind(this.onHideMenus, this)); toolbar.cmbFontName.on('combo:blur', _.bind(this.onComboBlur, this)); toolbar.cmbFontName.on('combo:focusin', _.bind(this.onComboOpen, this, false)); toolbar.cmbFontSize.on('selected', _.bind(this.onFontSizeSelect, this)); toolbar.cmbFontSize.on('changed:before', _.bind(this.onFontSizeChanged, this, true)); toolbar.cmbFontSize.on('changed:after', _.bind(this.onFontSizeChanged, this, false)); toolbar.cmbFontSize.on('show:after', _.bind(this.onComboOpen, this, true)); toolbar.cmbFontSize.on('hide:after', _.bind(this.onHideMenus, this)); toolbar.cmbFontSize.on('combo:blur', _.bind(this.onComboBlur, this)); toolbar.cmbFontSize.on('combo:focusin', _.bind(this.onComboOpen, this, false)); toolbar.listStyles.on('click', _.bind(this.onListStyleSelect, this)); toolbar.cmbNumberFormat.on('selected', _.bind(this.onNumberFormatSelect, this)); toolbar.cmbNumberFormat.on('show:before', _.bind(this.onNumberFormatOpenBefore, this, true)); if (toolbar.cmbNumberFormat.cmpEl) toolbar.cmbNumberFormat.cmpEl.on('click', '#id-toolbar-mnu-item-more-formats a', _.bind(this.onNumberFormatSelect, this)); toolbar.btnCurrencyStyle.menu.on('item:click', _.bind(this.onNumberFormatMenu, this)); $('#id-toolbar-menu-new-fontcolor').on('click', _.bind(this.onNewTextColor, this)); $('#id-toolbar-menu-new-paracolor').on('click', _.bind(this.onNewBackColor, this)); $('#id-toolbar-menu-new-bordercolor').on('click', _.bind(this.onNewBorderColor, this)); toolbar.btnPageOrient.menu.on('item:click', _.bind(this.onPageOrientSelect, this)); toolbar.btnPageMargins.menu.on('item:click', _.bind(this.onPageMarginsSelect, this)); toolbar.mnuPageSize.on('item:click', _.bind(this.onPageSizeClick, this)); toolbar.mnuScale.on('item:click', _.bind(this.onScaleClick, this, 'scale')); toolbar.menuWidthScale.on('item:click', _.bind(this.onScaleClick, this, 'width')); toolbar.menuHeightScale.on('item:click', _.bind(this.onScaleClick, this, 'height')); toolbar.btnPrintArea.menu.on('item:click', _.bind(this.onPrintAreaClick, this)); toolbar.btnPrintArea.menu.on('show:after', _.bind(this.onPrintAreaMenuOpen, this)); toolbar.btnImgGroup.menu.on('item:click', _.bind(this.onImgGroupSelect, this)); toolbar.btnImgBackward.menu.on('item:click', _.bind(this.onImgArrangeSelect, this)); toolbar.btnImgForward.menu.on('item:click', _.bind(this.onImgArrangeSelect, this)); toolbar.btnImgAlign.menu.on('item:click', _.bind(this.onImgAlignSelect, this)); toolbar.btnImgForward.on('click', this.onImgArrangeSelect.bind(this, 'forward')); toolbar.btnImgBackward.on('click', this.onImgArrangeSelect.bind(this, 'backward')); toolbar.btnsEditHeader.forEach(function(button) { button.on('click', _.bind(me.onEditHeaderClick, me)); }); Common.Gateway.on('insertimage', _.bind(this.insertImage, this)); this.onSetupCopyStyleButton(); } }, setApi: function(api) { this.api = api; var config = SSE.getController('Main').appOptions; if (config.isEdit) { if ( !config.isEditDiagram && !config.isEditMailMerge ) { this.api.asc_registerCallback('asc_onSendThemeColors', _.bind(this.onSendThemeColors, this)); this.api.asc_registerCallback('asc_onMathTypes', _.bind(this.onApiMathTypes, this)); this.api.asc_registerCallback('asc_onContextMenu', _.bind(this.onContextMenu, this)); } this.api.asc_registerCallback('asc_onInitEditorStyles', _.bind(this.onApiInitEditorStyles, this)); this.api.asc_registerCallback('asc_onCoAuthoringDisconnect',_.bind(this.onApiCoAuthoringDisconnect, this)); Common.NotificationCenter.on('api:disconnect', _.bind(this.onApiCoAuthoringDisconnect, this)); this.api.asc_registerCallback('asc_onLockDefNameManager', _.bind(this.onLockDefNameManager, this)); this.api.asc_registerCallback('asc_onZoomChanged', _.bind(this.onApiZoomChange, this)); Common.NotificationCenter.on('fonts:change', _.bind(this.onApiChangeFont, this)); } else if (config.isRestrictedEdit) this.api.asc_registerCallback('asc_onSelectionChanged', _.bind(this.onApiSelectionChangedRestricted, this)); }, // onNewDocument: function(btn, e) { // this.api.asc_openNewDocument(); // // Common.NotificationCenter.trigger('edit:complete', this.toolbar); // Common.component.Analytics.trackEvent('ToolBar', 'New Document'); // }, // // onOpenDocument: function(btn, e) { // this.api.asc_loadDocumentFromDisk(); // // Common.NotificationCenter.trigger('edit:complete', this.toolbar); // Common.component.Analytics.trackEvent('ToolBar', 'Open Document'); // }, onApiChangeFont: function(font) { !this.getApplication().getController('Main').isModalShowed && this.toolbar.cmbFontName.onApiChangeFont(font); }, onContextMenu: function() { this.toolbar.collapse(); }, onPrint: function(e) { Common.NotificationCenter.trigger('print', this.toolbar); }, onSave: function(e) { if (this.api) { var isModified = this.api.asc_isDocumentCanSave(); var isSyncButton = this.toolbar.btnCollabChanges && this.toolbar.btnCollabChanges.cmpEl.hasClass('notify'); if (!isModified && !isSyncButton && !this.toolbar.mode.forcesave) return; this.api.asc_Save(); } // Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('Save'); Common.component.Analytics.trackEvent('ToolBar', 'Save'); }, onBtnChangeState: function(prop) { if ( /\:disabled$/.test(prop) ) { var _is_disabled = arguments[2]; this.toolbar.fireEvent(prop, [_is_disabled]); } }, onUndo: function(btn, e) { if (this.api) this.api.asc_Undo(); Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Undo'); }, onRedo: function(btn, e) { if (this.api) this.api.asc_Redo(); Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Redo'); }, onCopyPaste: function(copy, e) { var me = this; if (me.api) { var res = (copy) ? me.api.asc_Copy() : me.api.asc_Paste(); if (!res) { var value = Common.localStorage.getItem("sse-hide-copywarning"); if (!(value && parseInt(value) == 1)) { (new Common.Views.CopyWarningDialog({ handler: function(dontshow) { if (dontshow) Common.localStorage.setItem("sse-hide-copywarning", 1); Common.NotificationCenter.trigger('edit:complete', me.toolbar); } })).show(); } } else Common.component.Analytics.trackEvent('ToolBar', 'Copy Warning'); } Common.NotificationCenter.trigger('edit:complete', me.toolbar); }, onIncreaseFontSize: function(e) { if (this.api) this.api.asc_increaseFontSize(); Common.NotificationCenter.trigger('edit:complete', this.toolbar, {restorefocus:true}); Common.component.Analytics.trackEvent('ToolBar', 'Font Size'); }, onDecreaseFontSize: function(e) { if (this.api) this.api.asc_decreaseFontSize(); Common.NotificationCenter.trigger('edit:complete', this.toolbar, {restorefocus:true}); Common.component.Analytics.trackEvent('ToolBar', 'Font Size'); }, onBold: function(btn, e) { this._state.bold = undefined; if (this.api) this.api.asc_setCellBold(btn.pressed); Common.NotificationCenter.trigger('edit:complete', this.toolbar, {restorefocus:true}); Common.component.Analytics.trackEvent('ToolBar', 'Bold'); }, onItalic: function(btn, e) { this._state.italic = undefined; if (this.api) this.api.asc_setCellItalic(btn.pressed); Common.NotificationCenter.trigger('edit:complete', this.toolbar, {restorefocus:true}); Common.component.Analytics.trackEvent('ToolBar', 'Italic'); }, onUnderline: function(btn, e) { this._state.underline = undefined; if (this.api) this.api.asc_setCellUnderline(btn.pressed); Common.NotificationCenter.trigger('edit:complete', this.toolbar, {restorefocus:true}); Common.component.Analytics.trackEvent('ToolBar', 'Underline'); }, onStrikeout: function(btn, e) { this._state.strikeout = undefined; if (this.api) this.api.asc_setCellStrikeout(btn.pressed); Common.NotificationCenter.trigger('edit:complete', this.toolbar, {restorefocus:true}); Common.component.Analytics.trackEvent('ToolBar', 'Strikeout'); }, onSubscriptMenu: function(menu, item) { var btnSubscript = this.toolbar.btnSubscript; if (item.value == 'sub') { this._state.subscript = undefined; this.api.asc_setCellSubscript(item.checked); } else { this._state.superscript = undefined; this.api.asc_setCellSuperscript(item.checked); } if (item.checked) { btnSubscript.$icon.removeClass(btnSubscript.options.icls).addClass(item.options.icls); btnSubscript.options.icls = item.options.icls; } Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', (item.value == 'sub') ? 'Subscript' : 'Superscript'); }, onSubscript: function(btn, e) { var subscript = (btn.options.icls == 'btn-subscript'); if (subscript) { this._state.subscript = undefined; this.api.asc_setCellSubscript(btn.pressed); } else { this._state.superscript = undefined; this.api.asc_setCellSuperscript(btn.pressed); } Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', (subscript) ? 'Subscript' : 'Superscript'); }, onTextColor: function() { this.toolbar.mnuTextColorPicker.trigger('select', this.toolbar.mnuTextColorPicker, this.toolbar.mnuTextColorPicker.currentColor, true); }, onBackColor: function() { this.toolbar.mnuBackColorPicker.trigger('select', this.toolbar.mnuBackColorPicker, this.toolbar.mnuBackColorPicker.currentColor, true); }, onTextColorSelect: function(picker, color, fromBtn) { this._state.clrtext_asccolor = this._state.clrtext = undefined; var clr = (typeof(color) == 'object') ? color.color : color; this.toolbar.btnTextColor.currentColor = color; $('.btn-color-value-line', this.toolbar.btnTextColor.cmpEl).css('background-color', '#' + clr); this.toolbar.mnuTextColorPicker.currentColor = color; if (this.api) { this.toolbar.btnTextColor.ischanged = (fromBtn!==true); this.api.asc_setCellTextColor(Common.Utils.ThemeColor.getRgbColor(color)); this.toolbar.btnTextColor.ischanged = false; } Common.NotificationCenter.trigger('edit:complete', this.toolbar, {restorefocus:true}); Common.component.Analytics.trackEvent('ToolBar', 'Text Color'); }, onBackColorSelect: function(picker, color, fromBtn) { this._state.clrshd_asccolor = this._state.clrback = undefined; var clr = (typeof(color) == 'object') ? color.color : color; this.toolbar.btnBackColor.currentColor = color; $('.btn-color-value-line', this.toolbar.btnBackColor.cmpEl).css('background-color', clr == 'transparent' ? 'transparent' : '#' + clr); this.toolbar.mnuBackColorPicker.currentColor = color; if (this.api) { this.toolbar.btnBackColor.ischanged = (fromBtn!==true); this.api.asc_setCellBackgroundColor(color == 'transparent' ? null : Common.Utils.ThemeColor.getRgbColor(color)); this.toolbar.btnBackColor.ischanged = false; } Common.component.Analytics.trackEvent('ToolBar', 'Background Color'); }, onNewTextColor: function(picker, color) { this.toolbar.mnuTextColorPicker.addNewColor(); }, onNewBackColor: function(picker, color) { this.toolbar.mnuBackColorPicker.addNewColor(); }, onNewBorderColor: function(picker, color) { this.toolbar.btnBorders.menu.hide(); this.toolbar.btnBorders.toggle(false, true); this.toolbar.mnuBorderColorPicker.addNewColor(); }, onBorders: function(btn) { var menuItem; _.each(btn.menu.items, function(item) { if (btn.options.borderId == item.options.borderId) { menuItem = item; return false; } }); if (menuItem) { this.onBordersMenu(btn.menu, menuItem); } }, onBordersMenu: function(menu, item) { var me = this; if (me.api && !_.isUndefined(item.options.borderId)) { var btnBorders = me.toolbar.btnBorders, new_borders = [], bordersWidth = btnBorders.options.borderswidth, bordersColor = btnBorders.options.borderscolor; if ( btnBorders.rendered ) { btnBorders.$icon.removeClass(btnBorders.options.icls).addClass(item.options.icls); btnBorders.options.icls = item.options.icls; } btnBorders.options.borderId = item.options.borderId; if (item.options.borderId == 'inner') { new_borders[Asc.c_oAscBorderOptions.InnerV] = new Asc.asc_CBorder(bordersWidth, bordersColor); new_borders[Asc.c_oAscBorderOptions.InnerH] = new Asc.asc_CBorder(bordersWidth, bordersColor); } else if (item.options.borderId == 'all') { new_borders[Asc.c_oAscBorderOptions.InnerV] = new Asc.asc_CBorder(bordersWidth, bordersColor); new_borders[Asc.c_oAscBorderOptions.InnerH] = new Asc.asc_CBorder(bordersWidth, bordersColor); new_borders[Asc.c_oAscBorderOptions.Left] = new Asc.asc_CBorder(bordersWidth, bordersColor); new_borders[Asc.c_oAscBorderOptions.Top] = new Asc.asc_CBorder(bordersWidth, bordersColor); new_borders[Asc.c_oAscBorderOptions.Right] = new Asc.asc_CBorder(bordersWidth, bordersColor); new_borders[Asc.c_oAscBorderOptions.Bottom] = new Asc.asc_CBorder(bordersWidth, bordersColor); } else if (item.options.borderId == 'outer') { new_borders[Asc.c_oAscBorderOptions.Left] = new Asc.asc_CBorder(bordersWidth, bordersColor); new_borders[Asc.c_oAscBorderOptions.Top] = new Asc.asc_CBorder(bordersWidth, bordersColor); new_borders[Asc.c_oAscBorderOptions.Right] = new Asc.asc_CBorder(bordersWidth, bordersColor); new_borders[Asc.c_oAscBorderOptions.Bottom] = new Asc.asc_CBorder(bordersWidth, bordersColor); } else if (item.options.borderId != 'none') { new_borders[item.options.borderId] = new Asc.asc_CBorder(bordersWidth, bordersColor); } me.api.asc_setCellBorders(new_borders); Common.NotificationCenter.trigger('edit:complete', me.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Borders'); } }, onBordersWidth: function(menu, item, state) { if (state) { this.toolbar.btnBorders.options.borderswidth = item.value; Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Border Width'); } }, onBordersColor: function(picker, color) { $('#id-toolbar-mnu-item-border-color .menu-item-icon').css('border-color', '#' + ((typeof(color) == 'object') ? color.color : color)); this.toolbar.mnuBorderColor.onUnHoverItem(); this.toolbar.btnBorders.options.borderscolor = Common.Utils.ThemeColor.getRgbColor(color); this.toolbar.mnuBorderColorPicker.currentColor = color; Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Border Color'); }, onHorizontalAlign: function(type, btn, e) { this._state.pralign = undefined; if (this.api) { this.api.asc_setCellAlign(!btn.pressed ? null : type); this.toolbar.btnWrap.allowDepress = !(type == AscCommon.align_Justify); } Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Horizontal align'); }, onVerticalAlign: function(type, btn, e) { this._state.valign = undefined; if (this.api) { this.api.asc_setCellVertAlign(!btn.pressed ? Asc.c_oAscVAlign.Bottom : type); } Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Vertical align'); }, onMergeCellsMenu: function(menu, item) { var me = this; function doMergeCells(how) { me._state.merge = undefined; me.api.asc_mergeCells(how); Common.NotificationCenter.trigger('edit:complete', me.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Merge'); } if (me.api) { var merged = me.api.asc_getCellInfo().asc_getFlags().asc_getMerge(); if ((merged !== Asc.c_oAscMergeOptions.Merge) && me.api.asc_mergeCellsDataLost(item.value)) { Common.UI.warning({ msg: me.warnMergeLostData, buttons: ['yes', 'no'], primary: 'yes', callback: function(btn) { if (btn == 'yes') { doMergeCells(item.value); } else { me.toolbar.btnMerge.toggle(false, true); Common.NotificationCenter.trigger('edit:complete', me.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Merge'); } } }); } else { doMergeCells(item.value); } } Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Merge cells'); }, onWrap: function(btn, e) { this._state.wrap = undefined; if (this.api) this.api.asc_setCellTextWrap(btn.pressed); Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Wrap'); }, onTextOrientationMenu: function(menu, item) { if (this.api.asc_getCellInfo().asc_getFlags().asc_getSelectionType() == Asc.c_oAscSelectionType.RangeShapeText) { var angle = Asc.c_oAscVertDrawingText.normal; switch (item.value) { case 'rotateup': angle = Asc.c_oAscVertDrawingText.vert270; break; case 'rotatedown': angle = Asc.c_oAscVertDrawingText.vert; break; } var properties = new Asc.asc_CImgProperty(); properties.asc_putVert(angle); this.api.asc_setGraphicObjectProps(properties); } else { var angle = 0; switch (item.value) { case 'countcw': angle = 45; break; case 'clockwise': angle = -45; break; case 'rotateup': angle = 90; break; case 'rotatedown': angle = -90; break; } this._state.angle = undefined; if (this.api) this.api.asc_setCellAngle(angle); } Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Text orientation'); }, onBtnInsertTableClick: function(btn, e) { if (this.api) this._setTableFormat(this.api.asc_getDefaultTableStyle()); Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Table'); }, onInsertImageMenu: function(menu, item, e) { var me = this; if (item.value === 'file') { this.toolbar.fireEvent('insertimage', this.toolbar); if (this.api) this.api.asc_addImage(); Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Image'); } else if (item.value === 'url') { (new Common.Views.ImageFromUrlDialog({ handler: function(result, value) { if (result == 'ok') { if (me.api) { var checkUrl = value.replace(/\s/g, ''); if (!_.isEmpty(checkUrl)) { me.toolbar.fireEvent('insertimage', me.toolbar); me.api.asc_addImageDrawingObject(checkUrl); Common.component.Analytics.trackEvent('ToolBar', 'Image'); } else { Common.UI.warning({ msg: this.textEmptyImgUrl }); } } Common.NotificationCenter.trigger('edit:complete', me.toolbar); } } })).show(); } else if (item.value === 'storage') { if (this.toolbar.mode.canRequestInsertImage) { Common.Gateway.requestInsertImage(); } else { (new Common.Views.SelectFileDlg({ fileChoiceUrl: this.toolbar.mode.fileChoiceUrl.replace("{fileExt}", "").replace("{documentType}", "ImagesOnly") })).on('selectfile', function(obj, file){ me.insertImage(file); }).show(); } } }, insertImage: function(data) { if (data && data.url) { this.toolbar.fireEvent('insertimage', this.toolbar); this.api.asc_addImageDrawingObject(data.url, undefined, data.token);// for loading from storage Common.component.Analytics.trackEvent('ToolBar', 'Image'); } }, onHyperlink: function(btn) { var me = this; var win, props; if (me.api) { var wc = me.api.asc_getWorksheetsCount(), i = -1, items = []; while (++i < wc) { if (!this.api.asc_isWorksheetHidden(i)) { items.push({displayValue: me.api.asc_getWorksheetName(i), value: me.api.asc_getWorksheetName(i)}); } } var handlerDlg = function(dlg, result) { if (result == 'ok') { props = dlg.getSettings(); me.api.asc_insertHyperlink(props); } Common.NotificationCenter.trigger('edit:complete', me.toolbar); }; var cell = me.api.asc_getCellInfo(), seltype = cell.asc_getFlags().asc_getSelectionType(); props = cell.asc_getHyperlink(); win = new SSE.Views.HyperlinkSettingsDialog({ api: me.api, handler: handlerDlg }); win.show(); win.setSettings({ sheets : items, currentSheet: me.api.asc_getWorksheetName(me.api.asc_getActiveWorksheetIndex()), props : props, text : cell.asc_getText(), isLock : cell.asc_getFlags().asc_getLockText(), allowInternal: (seltype!==Asc.c_oAscSelectionType.RangeImage && seltype!==Asc.c_oAscSelectionType.RangeShape && seltype!==Asc.c_oAscSelectionType.RangeShapeText && seltype!==Asc.c_oAscSelectionType.RangeChart && seltype!==Asc.c_oAscSelectionType.RangeChartText) }); } Common.component.Analytics.trackEvent('ToolBar', 'Add Hyperlink'); }, onEditChart: function(btn) { if (!this.editMode) return; var me = this, info = me.api.asc_getCellInfo(); if (info.asc_getFlags().asc_getSelectionType()!=Asc.c_oAscSelectionType.RangeImage) { var win, props; if (me.api){ props = me.api.asc_getChartObject(); var selectedObjects = me.api.asc_getGraphicObjectProps(), imageSettings = null; for (var i = 0; i < selectedObjects.length; i++) { if (selectedObjects[i].asc_getObjectType() == Asc.c_oAscTypeSelectElement.Image) { var elValue = selectedObjects[i].asc_getObjectValue(); if ( elValue.asc_getChartProperties() ) imageSettings = elValue; } } if (props) { var ischartedit = ( me.toolbar.mode.isEditDiagram || info.asc_getFlags().asc_getSelectionType() == Asc.c_oAscSelectionType.RangeChart || info.asc_getFlags().asc_getSelectionType() == Asc.c_oAscSelectionType.RangeChartText); (new SSE.Views.ChartSettingsDlg( { chartSettings: props, imageSettings: imageSettings, isChart: true, api: me.api, handler: function(result, value) { if (result == 'ok') { if (me.api) { (ischartedit) ? me.api.asc_editChartDrawingObject(value.chartSettings) : me.api.asc_addChartDrawingObject(value.chartSettings); if (value.imageSettings) me.api.asc_setGraphicObjectProps(value.imageSettings); } } Common.NotificationCenter.trigger('edit:complete', me.toolbar); } })).show(); } } } }, onSelectChart: function(group, type) { if (!this.editMode) return; var me = this, info = me.api.asc_getCellInfo(), seltype = info.asc_getFlags().asc_getSelectionType(), isSpark = (group == 'menu-chart-group-sparkcolumn' || group == 'menu-chart-group-sparkline' || group == 'menu-chart-group-sparkwin'); if (me.api) { var win, props; if (isSpark && (seltype==Asc.c_oAscSelectionType.RangeCells || seltype==Asc.c_oAscSelectionType.RangeCol || seltype==Asc.c_oAscSelectionType.RangeRow || seltype==Asc.c_oAscSelectionType.RangeMax)) { var sparkLineInfo = info.asc_getSparklineInfo(); if (!!sparkLineInfo) { var props = new Asc.sparklineGroup(); props.asc_setType(type); this.api.asc_setSparklineGroup(sparkLineInfo.asc_getId(), props); } else { // add sparkline } } else if (!isSpark) { var ischartedit = ( seltype == Asc.c_oAscSelectionType.RangeChart || seltype == Asc.c_oAscSelectionType.RangeChartText); props = me.api.asc_getChartObject(true); // don't lock chart object if (props) { (ischartedit) ? props.changeType(type) : props.putType(type); var range = props.getRange(), isvalid = me.api.asc_checkDataRange(Asc.c_oAscSelectionDialogType.Chart, range, true, !props.getInColumns(), props.getType()); if (isvalid == Asc.c_oAscError.ID.No) { (ischartedit) ? me.api.asc_editChartDrawingObject(props) : me.api.asc_addChartDrawingObject(props); } else { Common.UI.warning({ msg: (isvalid == Asc.c_oAscError.ID.StockChartError) ? me.errorStockChart : ((isvalid == Asc.c_oAscError.ID.MaxDataSeriesError) ? me.errorMaxRows : me.txtInvalidRange), callback: function() { _.defer(function(btn) { Common.NotificationCenter.trigger('edit:complete', me.toolbar); }) } }); } } } } Common.NotificationCenter.trigger('edit:complete', this.toolbar); }, onInsertTextart: function (data) { if (this.api) { this.toolbar.fireEvent('inserttextart', this.toolbar); this.api.asc_addTextArt(data); if (this.toolbar.btnInsertShape.pressed) this.toolbar.btnInsertShape.toggle(false, true); Common.NotificationCenter.trigger('edit:complete', this.toolbar, this.toolbar.btnInsertTextArt); Common.component.Analytics.trackEvent('ToolBar', 'Add Text Art'); } }, onBtnInsertTextClick: function(btn, e) { if (this.api) this._addAutoshape(btn.pressed, 'textRect'); if (this.toolbar.btnInsertShape.pressed) this.toolbar.btnInsertShape.toggle(false, true); Common.NotificationCenter.trigger('edit:complete', this.toolbar, this.toolbar.btnInsertShape); Common.component.Analytics.trackEvent('ToolBar', 'Add Text'); }, onInsertShapeHide: function(btn, e) { if (this.toolbar.btnInsertShape.pressed && !this._isAddingShape) { this.toolbar.btnInsertShape.toggle(false, true); } this._isAddingShape = false; Common.NotificationCenter.trigger('edit:complete', this.toolbar); }, onSortType: function(type, btn) { if (this.api) { var res = this.api.asc_sortCellsRangeExpand(); if (res) { var config = { width: 500, title: this.txtSorting, msg: this.txtExpandSort, buttons: [ {caption: this.txtExpand, primary: true, value: 'expand'}, {caption: this.txtSortSelected, primary: true, value: 'sort'}, 'cancel'], callback: _.bind(function(btn){ if (btn == 'expand' || btn == 'sort') { this.api.asc_sortColFilter(type, '', undefined, undefined, btn == 'expand'); } }, this) }; Common.UI.alert(config); } else this.api.asc_sortColFilter(type, '', undefined, undefined, res !== null); } }, onSearch: function(type, btn) { this.getApplication().getController('LeftMenu').showSearchDlg(true); }, onAutoFilter: function(btn) { var state = this._state.filter; this._state.filter = undefined; if (this.api){ if (this._state.tablename || state) this.api.asc_changeAutoFilter(this._state.tablename, Asc.c_oAscChangeFilterOptions.filter, !state); else this.api.asc_addAutoFilter(); } Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Auto filter'); }, onClearFilter: function(btn) { if (this.api) this.api.asc_clearFilter(); Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Clear filter'); }, onNumberFormat: function(btn) { if (this.api) this.api.asc_setCellStyle(btn.options.styleName); Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Number Format'); }, onNumberFormatMenu: function(menu, item) { if (this.api) { if (item.value == -1) { // show more formats if (this._state.numformatinfo && this._state.numformatinfo.asc_getType()==Asc.c_oAscNumFormatType.Accounting) this.onCustomNumberFormat(); else { var value = this.api.asc_getLocale(); (!value) && (value = ((this.toolbar.mode.lang) ? parseInt(Common.util.LanguageInfo.getLocalLanguageCode(this.toolbar.mode.lang)) : 0x0409)); var info = new Asc.asc_CFormatCellsInfo(); info.asc_setType(Asc.c_oAscNumFormatType.Accounting); info.asc_setSeparator(false); info.asc_setSymbol(value); var format = this.api.asc_getFormatCells(info); this.onCustomNumberFormat((format && format.length>0) ? format[0] : undefined, info); } } else { var info = new Asc.asc_CFormatCellsInfo(); info.asc_setType(Asc.c_oAscNumFormatType.Accounting); info.asc_setSeparator(false); info.asc_setSymbol(item.value); var format = this.api.asc_getFormatCells(info); if (format && format.length>0) this.api.asc_setCellFormat(format[0]); } } Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Number Format'); }, onNumberFormatSelect: function(combo, record) { if (record) { if (this.api) this.api.asc_setCellFormat(record.format); } else { this.onCustomNumberFormat(); } Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Number Format'); }, onCustomNumberFormat: function(format, formatInfo) { var me = this, value = me.api.asc_getLocale(); (!value) && (value = ((me.toolbar.mode.lang) ? parseInt(Common.util.LanguageInfo.getLocalLanguageCode(me.toolbar.mode.lang)) : 0x0409)); (new SSE.Views.FormatSettingsDialog({ api: me.api, handler: function(result, settings) { if (settings) { me.api.asc_setCellFormat(settings.format); } Common.NotificationCenter.trigger('edit:complete', me.toolbar); }, props : {format: format ? format : me._state.numformat, formatInfo: formatInfo ? formatInfo : me._state.numformatinfo, langId: value} })).show(); Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Number Format'); }, onNumberFormatOpenBefore: function(combo) { if (this.api) { var me = this, value = me.api.asc_getLocale(); (!value) && (value = ((me.toolbar.mode.lang) ? parseInt(Common.util.LanguageInfo.getLocalLanguageCode(me.toolbar.mode.lang)) : 0x0409)); if (this._state.langId !== value) { this._state.langId = value; var info = new Asc.asc_CFormatCellsInfo(); info.asc_setType(Asc.c_oAscNumFormatType.None); info.asc_setSymbol(this._state.langId); var arr = this.api.asc_getFormatCells(info); // all formats me.toolbar.numFormatData.forEach( function(item, index) { me.toolbar.numFormatData[index].format = arr[index]; }); } me.toolbar.numFormatData.forEach( function(item, index) { item.exampleval = me.api.asc_getLocaleExample(item.format); }); me.toolbar.cmbNumberFormat.setData(me.toolbar.numFormatData); me.toolbar.cmbNumberFormat.setValue(me._state.numformattype, me.toolbar.txtCustom); } }, onDecrement: function(btn) { if (this.api) this.api.asc_decreaseCellDigitNumbers(); Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Decrement'); }, onIncrement: function(btn) { if (this.api) this.api.asc_increaseCellDigitNumbers(); Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Increment'); }, onInsertFormulaMenu: function(menu, item, e) { if (this.api) { if (item.value === 'more') { var controller = this.getApplication().getController('FormulaDialog'); if (controller) { controller.showDialog(); } } else { item.value = item.value || 'SUM'; this.toolbar.fireEvent('function:apply', [{name: this.api.asc_getFormulaLocaleName(item.value), origin: item.value}, true]); Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Insert formula'); } } }, onNamedRangeMenu: function(menu, item, e) { if (this.api) { var me = this; if (item.value === 'paste') { (new SSE.Views.NamedRangePasteDlg({ handler: function(result, settings) { if (result == 'ok' && settings) { me.api.asc_insertFormula(settings.asc_getName(true), settings.asc_getIsTable() ? Asc.c_oAscPopUpSelectorType.Table : Asc.c_oAscPopUpSelectorType.Range, false); Common.component.Analytics.trackEvent('ToolBar', 'Paste Named Range'); } Common.NotificationCenter.trigger('edit:complete', me.toolbar); }, ranges: me.api.asc_getDefinedNames(Asc.c_oAscGetDefinedNamesList.WorksheetWorkbook) // names only for current sheet and workbook })).show(); Common.component.Analytics.trackEvent('ToolBar', 'Paste Named Range'); } else { var wc = me.api.asc_getWorksheetsCount(), i = -1, items = [], sheetNames = []; if (item.value === 'new') { if (this._state.namedrange_locked) { Common.NotificationCenter.trigger('namedrange:locked'); return; } while (++i < wc) { if (!this.api.asc_isWorksheetHidden(i)) { items.push({displayValue: me.api.asc_getWorksheetName(i), value: i}); } } (new SSE.Views.NamedRangeEditDlg({ api: me.api, handler: function(result, settings) { if (result == 'ok' && settings) { me.api.asc_setDefinedNames(settings); Common.component.Analytics.trackEvent('ToolBar', 'New Named Range'); } Common.NotificationCenter.trigger('edit:complete', me.toolbar); }, sheets : items, props : me.api.asc_getDefaultDefinedName(), isEdit : false })).show(); } else { var cellEditor = this.getApplication().getController('CellEditor'); while (++i < wc) { if (!this.api.asc_isWorksheetHidden(i)) { sheetNames[i] = me.api.asc_getWorksheetName(i); items.push({displayValue: sheetNames[i], value: i}); } } (new SSE.Views.NameManagerDlg({ api: me.api, handler: function(result) { Common.component.Analytics.trackEvent('ToolBar', 'Name Manager'); Common.NotificationCenter.trigger('edit:complete', me.toolbar); }, locked: me._state.namedrange_locked, sheets: items, sheetNames: sheetNames, ranges: me.api.asc_getDefinedNames(Asc.c_oAscGetDefinedNamesList.All), props : me.api.asc_getDefaultDefinedName(), sort : cellEditor.rangeListSort })).on('close', function(win){ cellEditor.rangeListSort = win.getSettings(); }).show(); } } } }, onNamedRangeMenuOpen: function(menu) { if (this.api && menu) { var names = this.api.asc_getDefinedNames(Asc.c_oAscGetDefinedNamesList.WorksheetWorkbook); menu.items[2].setDisabled(names.length<1); } }, onClearStyleMenu: function(menu, item, e) { if (this.api) this.api.asc_emptyCells(item.value); Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Clear'); }, onCopyStyleToggle: function(btn, state, e) { if (this.api) this.api.asc_formatPainter(state ? 1 : 0); Common.NotificationCenter.trigger('edit:complete', this.toolbar); this.modeAlwaysSetStyle = state; }, onCellInsertMenu: function(menu, item, e) { if (this.api) this.api.asc_insertCells(item.value); Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Cell insert'); }, onCellDeleteMenu: function(menu, item, e) { if (this.api) this.api.asc_deleteCells(item.value); Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Cell delete'); }, onColorSchemaClick: function(menu, item) { if (this.api) { this.api.asc_ChangeColorSchemeByIdx(item.value); Common.component.Analytics.trackEvent('ToolBar', 'Color Scheme'); } Common.NotificationCenter.trigger('edit:complete', this.toolbar); }, onColorSchemaShow: function(menu) { if (this.api) { var value = this.api.asc_GetCurrentColorSchemeIndex(); var item = _.find(menu.items, function(item) { return item.value == value; }); (item) ? item.setChecked(true) : menu.clearAll(); } }, onComboBlur: function() { Common.NotificationCenter.trigger('edit:complete', this.toolbar); }, onFontNameSelect: function(combo, record) { if (this.api) { if (record.isNewFont) { !this.getApplication().getController('Main').isModalShowed && Common.UI.warning({ width: 500, closable: false, msg: this.confirmAddFontName, buttons: ['yes', 'no'], primary: 'yes', callback: _.bind(function(btn) { if (btn == 'yes') { this.api.asc_setCellFontName(record.name); Common.component.Analytics.trackEvent('ToolBar', 'Font Name'); } else { this.toolbar.cmbFontName.setValue(this.api.asc_getCellInfo().asc_getFont().asc_getName()); } Common.NotificationCenter.trigger('edit:complete', this.toolbar, {restorefocus:true}); }, this) }); } else { this.api.asc_setCellFontName(record.name); Common.component.Analytics.trackEvent('ToolBar', 'Font Name'); } } Common.NotificationCenter.trigger('edit:complete', this.toolbar, {restorefocus:true}); }, onComboOpen: function(needfocus, combo) { _.delay(function() { var input = $('input', combo.cmpEl).select(); if (needfocus) input.focus(); else if (!combo.isMenuOpen()) input.one('mouseup', function (e) { e.preventDefault(); }); }, 10); }, onFontSizeSelect: function(combo, record) { this._state.fontsize = undefined; if (this.api) this.api.asc_setCellFontSize(record.value); Common.NotificationCenter.trigger('edit:complete', this.toolbar, {restorefocus:true}); Common.component.Analytics.trackEvent('ToolBar', 'Font Size'); }, onFontSizeChanged: function(before, combo, record, e) { var value, me = this; if (before) { var item = combo.store.findWhere({ displayValue: record.value }); if (!item) { value = /^\+?(\d*\.?\d+)$|^\+?(\d+\.?\d*)$/.exec(record.value); if (!value) { value = this._getApiTextSize(); Common.UI.warning({ msg: this.textFontSizeErr, callback: function() { _.defer(function(btn) { $('input', combo.cmpEl).focus(); }) } }); combo.setRawValue(value); e.preventDefault(); return false; } } } else { value = parseFloat(record.value); value = value > 409 ? 409 : value < 1 ? 1 : Math.floor((value+0.4)*2)/2; combo.setRawValue(value); this._state.fontsize = undefined; if (this.api) this.api.asc_setCellFontSize(value); Common.NotificationCenter.trigger('edit:complete', this.toolbar); } }, onListStyleSelect: function(combo, record) { this._state.prstyle = undefined; if (this.api) { this.api.asc_setCellStyle(record.get('name')); Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Style'); } }, createDelayedElements: function() { var me = this; this.toolbar.createDelayedElements(); this.attachUIEvents(this.toolbar); if ( !this.appConfig.isEditDiagram && !this.appConfig.isEditMailMerge ) { this.api.asc_registerCallback('asc_onSheetsChanged', _.bind(this.onApiSheetChanged, this)); this.api.asc_registerCallback('asc_onUpdateSheetViewSettings', _.bind(this.onApiSheetChanged, this)); this.api.asc_registerCallback('asc_onEndAddShape', _.bind(this.onApiEndAddShape, this)); this.api.asc_registerCallback('asc_onEditorSelectionChanged', _.bind(this.onApiEditorSelectionChanged, this)); this.api.asc_registerCallback('asc_onUpdateDocumentProps', _.bind(this.onUpdateDocumentProps, this)); this.api.asc_registerCallback('asc_onLockDocumentProps', _.bind(this.onApiLockDocumentProps, this)); this.api.asc_registerCallback('asc_onUnLockDocumentProps', _.bind(this.onApiUnLockDocumentProps, this)); } if ( !this.appConfig.isEditMailMerge ) { this.applyFormulaSettings(); } this.api.asc_registerCallback('asc_onShowChartDialog', _.bind(this.onApiChartDblClick, this)); this.api.asc_registerCallback('asc_onCanUndoChanged', _.bind(this.onApiCanRevert, this, 'undo')); this.api.asc_registerCallback('asc_onCanRedoChanged', _.bind(this.onApiCanRevert, this, 'redo')); this.api.asc_registerCallback('asc_onEditCell', _.bind(this.onApiEditCell, this)); this.api.asc_registerCallback('asc_onStopFormatPainter', _.bind(this.onApiStyleChange, this)); this.api.asc_registerCallback('asc_onSelectionChanged', _.bind(this.onApiSelectionChanged, this)); Common.util.Shortcuts.delegateShortcuts({ shortcuts: { 'command+l,ctrl+l': function(e) { if ( me.editMode && !me._state.multiselect && me.appConfig.canModifyFilter) { var cellinfo = me.api.asc_getCellInfo(), filterinfo = cellinfo.asc_getAutoFilterInfo(), formattableinfo = cellinfo.asc_getFormatTableInfo(); filterinfo = (filterinfo) ? filterinfo.asc_getIsAutoFilter() : null; if (filterinfo!==null && !formattableinfo) { me._setTableFormat(me.api.asc_getDefaultTableStyle()); } } return false; }, 'command+shift+l,ctrl+shift+l': function(e) { if (me.editMode && me.api && !me._state.multiselect && me.appConfig.canModifyFilter) { var state = me._state.filter; me._state.filter = undefined; if (me._state.tablename || state) me.api.asc_changeAutoFilter(me._state.tablename, Asc.c_oAscChangeFilterOptions.filter, !state); else me.api.asc_addAutoFilter(); } return false; }, 'command+s,ctrl+s': function (e) { me.onSave(); e.preventDefault(); e.stopPropagation(); }, 'command+k,ctrl+k': function (e) { if (me.editMode && !me.toolbar.mode.isEditMailMerge && !me.toolbar.mode.isEditDiagram && !me.api.isCellEdited && !me._state.multiselect && !me._state.inpivot && !me.getApplication().getController('LeftMenu').leftMenu.menuFile.isVisible()) me.onHyperlink(); e.preventDefault(); }, 'command+1,ctrl+1': function(e) { if (me.editMode && !me.toolbar.mode.isEditMailMerge && !me.api.isCellEdited && !me.toolbar.cmbNumberFormat.isDisabled()) { me.onCustomNumberFormat(); } return false; } } }); this.onApiSelectionChanged(this.api.asc_getCellInfo()); this.attachToControlEvents(); this.onApiSheetChanged(); Common.NotificationCenter.on('cells:range', _.bind(this.onCellsRange, this)); }, onChangeViewMode: function(item, compact) { this.toolbar.setFolded(compact); this.toolbar.fireEvent('view:compact', [this, compact]); Common.localStorage.setBool('sse-compact-toolbar', compact); Common.NotificationCenter.trigger('layout:changed', 'toolbar'); Common.NotificationCenter.trigger('edit:complete', this.toolbar); }, onClickChangeCompact: function (from) { if ( from != 'file' ) { Common.Utils.asyncCall(function () { this.onChangeViewMode(null, !this.toolbar.isCompact()); }, this); } }, fillTableTemplates: function() { if (!this.toolbar.btnTableTemplate.rendered) return; var me = this; function createPicker(element, menu) { var picker = new Common.UI.DataView({ el: element, parentMenu : menu, restoreHeight: 300, style: 'max-height: 300px;', store: me.getCollection('TableTemplates'), itemTemplate: _.template('
') }); picker.on('item:click', function(picker, item, record) { if (me.api) { me._state.tablestylename = null; me._setTableFormat(record ? record.get('name') : me.api.asc_getDefaultTableStyle()); Common.NotificationCenter.trigger('edit:complete', me.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Table Templates'); } }); if (picker.scroller) { picker.scroller.update({alwaysVisibleY: true}); } return picker; } if (_.isUndefined(this.toolbar.mnuTableTemplatePicker)) { this.toolbar.mnuTableTemplatePicker = createPicker($('#id-toolbar-menu-table-templates'), this.toolbar.btnTableTemplate.menu); } // if (_.isUndefined(this.toolbar.mnuTableTemplatePickerShort)) { // this.toolbar.mnuTableTemplatePickerShort = createPicker($('#id-toolbar-short-menu-table-templates')); // } }, onTableTplMenuOpen: function(cmp) { this.onApiInitTableTemplates(this.api.asc_getTablePictures(this.api.asc_getCellInfo().asc_getFormatTableInfo())); var scroller = this.toolbar.mnuTableTemplatePicker.scroller; if (scroller) { scroller.update({alwaysVisibleY: true}); scroller.scrollTop(0); } var val = this.toolbar.mnuTableTemplatePicker.store.findWhere({name: this._state.tablestylename}); if (val) this.toolbar.mnuTableTemplatePicker.selectRecord(val); else this.toolbar.mnuTableTemplatePicker.deselectAll(); }, onSendThemeColors: function() { // get new table templates if (this.toolbar.btnTableTemplate.rendered && this.toolbar.btnTableTemplate.cmpEl.hasClass('open')) this.onTableTplMenuOpen(); }, onApiInitTableTemplates: function(images) { var me = this; var store = this.getCollection('TableTemplates'); if (store) { var templates = []; _.each(images, function(item) { var tip = item.asc_getDisplayName(); if (item.asc_getType()==0) { var arr = tip.split(' '), last = arr.pop(); arr = 'txtTable_' + arr.join(''); tip = me[arr] ? me[arr] + ' ' + last : tip; } templates.push({ name : item.asc_getName(), caption : item.asc_getDisplayName(), type : item.asc_getType(), imageUrl : item.asc_getImage(), allowSelected : true, selected : false, tip : tip }); }); store.reset(templates); } this.fillTableTemplates(); }, onApiInitEditorStyles: function(styles){ window.styles_loaded = false; var self = this, listStyles = self.toolbar.listStyles; if (!listStyles) { self.styles = styles; return; } listStyles.menuPicker.store.reset([]); // remove all var mainController = this.getApplication().getController('Main'); _.each(styles, function(style){ listStyles.menuPicker.store.add({ imageUrl: style.asc_getImage(), name : style.asc_getName(), tip : mainController.translationTable[style.get_Name()] || style.get_Name(), uid : Common.UI.getId() }); }); if (listStyles.menuPicker.store.length > 0 && listStyles.rendered) { listStyles.fillComboView(listStyles.menuPicker.store.at(0), true); listStyles.selectByIndex(0); } window.styles_loaded = true; }, onApiCoAuthoringDisconnect: function(enableDownload) { this.toolbar.setMode({isDisconnected:true, enableDownload: !!enableDownload}); this.editMode = false; }, onApiChartDblClick: function() { this.onEditChart(this.btnInsertChart); }, onApiCanRevert: function(which, can) { if (which=='undo') { if (this._state.can_undo !== can) { this.toolbar.btnUndo.setDisabled(!can); this._state.can_undo = can; } } else { if (this._state.can_redo !== can) { this.toolbar.btnRedo.setDisabled(!can); this._state.can_redo = can; } } }, setDisabledComponents: function(components, disable) { _.each([].concat(components), function(component){ if (component.isDisabled()!==disable) component.setDisabled(disable) }); }, onApiEditCell: function(state) { if ($('.asc-window.enable-key-events:visible').length>0) return; var toolbar = this.toolbar; if (toolbar.mode.isEditDiagram || toolbar.mode.isEditMailMerge) { is_cell_edited = (state == Asc.c_oAscCellEditorState.editStart); toolbar.lockToolbar(SSE.enumLock.editCell, state == Asc.c_oAscCellEditorState.editStart, {array: [toolbar.btnDecDecimal,toolbar.btnIncDecimal,toolbar.cmbNumberFormat]}); } else if (state == Asc.c_oAscCellEditorState.editStart || state == Asc.c_oAscCellEditorState.editEnd) { toolbar.lockToolbar(SSE.enumLock.editCell, state == Asc.c_oAscCellEditorState.editStart, { array: [ toolbar.btnClearStyle.menu.items[1], toolbar.btnClearStyle.menu.items[2], toolbar.btnClearStyle.menu.items[3], toolbar.btnClearStyle.menu.items[4], toolbar.btnNamedRange.menu.items[0], toolbar.btnNamedRange.menu.items[1] ].concat(toolbar.itemsNamedRange), merge: true, clear: [SSE.enumLock.editFormula, SSE.enumLock.editText] }); var is_cell_edited = (state == Asc.c_oAscCellEditorState.editStart); (is_cell_edited) ? Common.util.Shortcuts.suspendEvents('command+l, ctrl+l, command+shift+l, ctrl+shift+l, command+k, ctrl+k, alt+h, command+1, ctrl+1') : Common.util.Shortcuts.resumeEvents('command+l, ctrl+l, command+shift+l, ctrl+shift+l, command+k, ctrl+k, alt+h, command+1, ctrl+1'); if (is_cell_edited) { toolbar.listStyles.suspendEvents(); toolbar.listStyles.menuPicker.selectRecord(null); toolbar.listStyles.resumeEvents(); this._state.prstyle = undefined; } } else { if (state == Asc.c_oAscCellEditorState.editText) var is_text = true, is_formula = false; else if (state == Asc.c_oAscCellEditorState.editFormula) is_text = !(is_formula = true); else if (state == Asc.c_oAscCellEditorState.editEmptyCell) is_text = is_formula = false; toolbar.lockToolbar(SSE.enumLock.editFormula, is_formula, { array: [toolbar.cmbFontName, toolbar.cmbFontSize, toolbar.btnIncFontSize, toolbar.btnDecFontSize, toolbar.btnBold, toolbar.btnItalic, toolbar.btnUnderline, toolbar.btnStrikeout, toolbar.btnSubscript, toolbar.btnTextColor]}); toolbar.lockToolbar(SSE.enumLock.editText, is_text, {array: [toolbar.btnInsertFormula].concat(toolbar.btnsFormula)}); } this._state.coauthdisable = undefined; this._state.selection_type = undefined; this.checkInsertAutoshape({action:'cancel'}); }, onApiZoomChange: function(zf, type){}, onApiSheetChanged: function() { if (!this.toolbar.mode || !this.toolbar.mode.isEdit || this.toolbar.mode.isEditDiagram || this.toolbar.mode.isEditMailMerge) return; var currentSheet = this.api.asc_getActiveWorksheetIndex(), props = this.api.asc_getPageOptions(currentSheet), opt = props.asc_getPageSetup(); this.onApiPageOrient(opt.asc_getOrientation()); this.onApiPageSize(opt.asc_getWidth(), opt.asc_getHeight()); this.onApiPageMargins(props.asc_getPageMargins()); this.onChangeScaleSettings(opt.asc_getFitToWidth(),opt.asc_getFitToHeight(),opt.asc_getScale()); this.api.asc_isLayoutLocked(currentSheet) ? this.onApiLockDocumentProps(currentSheet) : this.onApiUnLockDocumentProps(currentSheet); this.toolbar.lockToolbar(SSE.enumLock.printAreaLock, this.api.asc_isPrintAreaLocked(currentSheet), {array: [this.toolbar.btnPrintArea]}); }, onUpdateDocumentProps: function(nIndex) { if (nIndex == this.api.asc_getActiveWorksheetIndex()) this.onApiSheetChanged(); }, onApiPageSize: function(w, h) { if (this._state.pgorient===undefined) return; if (Math.abs(this._state.pgsize[0] - w) > 0.1 || Math.abs(this._state.pgsize[1] - h) > 0.1) { this._state.pgsize = [w, h]; if (this.toolbar.mnuPageSize) { this.toolbar.mnuPageSize.clearAll(); _.each(this.toolbar.mnuPageSize.items, function(item){ if (item.value && typeof(item.value) == 'object' && Math.abs(item.value[0] - w) < 0.1 && Math.abs(item.value[1] - h) < 0.1) { item.setChecked(true); return false; } }, this); } } }, onApiPageMargins: function(props) { if (props) { var left = props.asc_getLeft(), top = props.asc_getTop(), right = props.asc_getRight(), bottom = props.asc_getBottom(); if (!this._state.pgmargins || Math.abs(this._state.pgmargins[0] - top) > 0.1 || Math.abs(this._state.pgmargins[1] - left) > 0.1 || Math.abs(this._state.pgmargins[2] - bottom) > 0.1 || Math.abs(this._state.pgmargins[3] - right) > 0.1) { this._state.pgmargins = [top, left, bottom, right]; if (this.toolbar.btnPageMargins.menu) { this.toolbar.btnPageMargins.menu.clearAll(); _.each(this.toolbar.btnPageMargins.menu.items, function(item){ if (item.value && typeof(item.value) == 'object' && Math.abs(item.value[0] - top) < 0.1 && Math.abs(item.value[1] - left) < 0.1 && Math.abs(item.value[2] - bottom) < 0.1 && Math.abs(item.value[3] - right) < 0.1) { item.setChecked(true); return false; } }, this); } } } }, onApiPageOrient: function(orient) { if (this._state.pgorient !== orient) { this.toolbar.btnPageOrient.menu.items[orient == Asc.c_oAscPageOrientation.PagePortrait ? 0 : 1].setChecked(true); this._state.pgorient = orient; } }, onChangeScaleSettings: function(width, height, scale) { if (this.toolbar.btnScale.menu) { if (width !== undefined) { var isWidth = false, isHeight = false; var width = width || 0, height = height || 0; if (scale !== undefined) { this.toolbar.setValueCustomScale(scale); } else { this.toolbar.setValueCustomScale(this.api.asc_getPageOptions().asc_getPageSetup().asc_getScale()); } this.toolbar.menuWidthScale.clearAll(); this.toolbar.menuWidthScale.items.forEach(function (item) { if (item.value === width) { item.setChecked(true); isWidth = true; return false; } }); if (!isWidth) { this.toolbar.menuWidthScale.items[11].setChecked(true); } this.toolbar.menuHeightScale.clearAll(); this.toolbar.menuHeightScale.items.forEach(function (item) { if (item.value === height) { item.setChecked(true); isHeight = true; return false; } }); if (!isHeight) { this.toolbar.menuHeightScale.items[11].setChecked(true); } if (this.toolbar.btnCustomScaleUp && this.toolbar.btnCustomScaleDown) { this.toolbar.btnCustomScaleUp.setDisabled(!(!width && !height)); this.toolbar.btnCustomScaleDown.setDisabled(!(!width && !height)); this.toolbar.mnuCustomScale.setDisabled(!(!width && !height)); } this._state.scaleWidth = width; this._state.scaleHeight = height; this._state.scale = scale; } else { if (this.toolbar.btnCustomScaleUp && this.toolbar.btnCustomScaleDown) { this.toolbar.btnCustomScaleUp.setDisabled(!(!this._state.scaleWidth && !this._state.scaleHeight)); this.toolbar.btnCustomScaleDown.setDisabled(!(!this._state.scaleWidth && !this._state.scaleHeight)); this.toolbar.mnuCustomScale.setDisabled(!(!this._state.scaleWidth && !this._state.scaleHeight)); } } } }, onApiLockDocumentProps: function(nIndex) { if (this._state.lock_doc!==true && nIndex == this.api.asc_getActiveWorksheetIndex()) { this.toolbar.lockToolbar(SSE.enumLock.docPropsLock, true, {array: [this.toolbar.btnPageSize, this.toolbar.btnPageMargins, this.toolbar.btnPageOrient, this.toolbar.btnScale]}); this._state.lock_doc = true; } }, onApiUnLockDocumentProps: function(nIndex) { if (this._state.lock_doc!==false && nIndex == this.api.asc_getActiveWorksheetIndex()) { this.toolbar.lockToolbar(SSE.enumLock.docPropsLock, false, {array: [this.toolbar.btnPageSize, this.toolbar.btnPageMargins, this.toolbar.btnPageOrient, this.toolbar.btnScale]}); this._state.lock_doc = false; } }, onApiEditorSelectionChanged: function(fontobj) { if (!this.editMode || $('.asc-window.enable-key-events:visible').length>0) return; var toolbar = this.toolbar, val; /* read font name */ var fontparam = fontobj.asc_getName(); if (fontparam != toolbar.cmbFontName.getValue()) { Common.NotificationCenter.trigger('fonts:change', fontobj); } /* read font params */ if (!toolbar.mode.isEditMailMerge && !toolbar.mode.isEditDiagram) { val = fontobj.asc_getBold(); if (this._state.bold !== val) { toolbar.btnBold.toggle(val === true, true); this._state.bold = val; } val = fontobj.asc_getItalic(); if (this._state.italic !== val) { toolbar.btnItalic.toggle(val === true, true); this._state.italic = val; } val = fontobj.asc_getUnderline(); if (this._state.underline !== val) { toolbar.btnUnderline.toggle(val === true, true); this._state.underline = val; } val = fontobj.asc_getStrikeout(); if (this._state.strikeout !== val) { toolbar.btnStrikeout.toggle(val === true, true); this._state.strikeout = val; } var subsc = fontobj.asc_getSubscript(), supersc = fontobj.asc_getSuperscript(); if (this._state.subscript !== subsc || this._state.superscript !== supersc) { var index = (supersc) ? 0 : (subsc ? 1 : -1), btnSubscript = toolbar.btnSubscript; btnSubscript.toggle(index>-1, true); if (index < 0) { btnSubscript.menu.clearAll(); } else { btnSubscript.menu.items[index].setChecked(true); if ( btnSubscript.rendered && btnSubscript.$icon ) { btnSubscript.$icon.removeClass(btnSubscript.options.icls); btnSubscript.options.icls = btnSubscript.menu.items[index].options.icls; btnSubscript.$icon.addClass(btnSubscript.options.icls); } } this._state.subscript = subsc; this._state.superscript = supersc; } } /* read font size */ var str_size = fontobj.asc_getSize(); if (this._state.fontsize !== str_size) { toolbar.cmbFontSize.setValue((str_size!==undefined) ? str_size : ''); this._state.fontsize = str_size; } /* read font color */ var clr, color, fontColorPicker = this.toolbar.mnuTextColorPicker; if (!toolbar.btnTextColor.ischanged && !fontColorPicker.isDummy) { color = fontobj.asc_getColor(); if (color) { if (color.get_type() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) { clr = {color: Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()), effectValue: color.get_value() }; } else { clr = Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()); } } var type1 = typeof(clr), type2 = typeof(this._state.clrtext); if ( (type1 !== type2) || (type1=='object' && (clr.effectValue!==this._state.clrtext.effectValue || this._state.clrtext.color.indexOf(clr.color)<0)) || (type1!='object' && this._state.clrtext!==undefined && this._state.clrtext.indexOf(clr)<0 )) { if (_.isObject(clr)) { var isselected = false; for (var i = 0; i < 10; i++) { if (Common.Utils.ThemeColor.ThemeValues[i] == clr.effectValue) { fontColorPicker.select(clr, true); isselected = true; break; } } if (!isselected) fontColorPicker.clearSelection(); } else { fontColorPicker.select(clr, true); } this._state.clrtext = clr; } this._state.clrtext_asccolor = color; } }, onApiSelectionChanged: function(info) { if (!this.editMode || $('.asc-window.enable-key-events:visible').length>0) return; if ( this.toolbar.mode.isEditDiagram ) return this.onApiSelectionChanged_DiagramEditor(info); else if ( this.toolbar.mode.isEditMailMerge ) return this.onApiSelectionChanged_MailMergeEditor(info); var selectionType = info.asc_getFlags().asc_getSelectionType(), coauth_disable = (!this.toolbar.mode.isEditMailMerge && !this.toolbar.mode.isEditDiagram) ? (info.asc_getLocked()===true || info.asc_getLockedTable()===true) : false, editOptionsDisabled = this._disableEditOptions(selectionType, coauth_disable), me = this, toolbar = this.toolbar, fontobj = info.asc_getFont(), val, need_disable = false; /* read font name */ var fontparam = fontobj.asc_getName(); if (fontparam != toolbar.cmbFontName.getValue()) { Common.NotificationCenter.trigger('fonts:change', fontobj); } /* read font size */ var str_size = fontobj.asc_getSize(); if (this._state.fontsize !== str_size) { toolbar.cmbFontSize.setValue((str_size !== undefined) ? str_size : ''); this._state.fontsize = str_size; } toolbar.lockToolbar(SSE.enumLock.cantHyperlink, (selectionType == Asc.c_oAscSelectionType.RangeShapeText) && (this.api.asc_canAddShapeHyperlink()===false), { array: [toolbar.btnInsertHyperlink]}); /* need_disable = selectionType != Asc.c_oAscSelectionType.RangeCells && selectionType != Asc.c_oAscSelectionType.RangeCol && selectionType != Asc.c_oAscSelectionType.RangeRow && selectionType != Asc.c_oAscSelectionType.RangeMax; if (this._state.sparklines_disabled !== need_disable) { this._state.sparklines_disabled = need_disable; var len = toolbar.mnuInsertChartPicker.store.length; for (var i = 0; i < 3; i++) { toolbar.mnuInsertChartPicker.store.at(len-i-1).set({disabled: need_disable}); } } */ need_disable = (selectionType == Asc.c_oAscSelectionType.RangeCells || selectionType == Asc.c_oAscSelectionType.RangeCol || selectionType == Asc.c_oAscSelectionType.RangeRow || selectionType == Asc.c_oAscSelectionType.RangeMax); toolbar.lockToolbar(SSE.enumLock.selRange, need_disable, { array: [toolbar.btnImgAlign, toolbar.btnImgBackward, toolbar.btnImgForward, toolbar.btnImgGroup]}); var cangroup = this.api.asc_canGroupGraphicsObjects(), canungroup = this.api.asc_canUnGroupGraphicsObjects(); toolbar.lockToolbar(SSE.enumLock.cantGroupUngroup, !cangroup && !canungroup, { array: [toolbar.btnImgGroup]}); toolbar.btnImgGroup.menu.items[0].setDisabled(!cangroup); toolbar.btnImgGroup.menu.items[1].setDisabled(!canungroup); toolbar.lockToolbar(SSE.enumLock.cantGroup, !cangroup, { array: [toolbar.btnImgAlign]}); var objcount = this.api.asc_getSelectedDrawingObjectsCount(); toolbar.btnImgAlign.menu.items[7].setDisabled(objcount<3); toolbar.btnImgAlign.menu.items[8].setDisabled(objcount<3); if (editOptionsDisabled) return; /* read font params */ if (!toolbar.mode.isEditMailMerge && !toolbar.mode.isEditDiagram) { val = fontobj.asc_getBold(); if (this._state.bold !== val) { toolbar.btnBold.toggle(val === true, true); this._state.bold = val; } val = fontobj.asc_getItalic(); if (this._state.italic !== val) { toolbar.btnItalic.toggle(val === true, true); this._state.italic = val; } val = fontobj.asc_getUnderline(); if (this._state.underline !== val) { toolbar.btnUnderline.toggle(val === true, true); this._state.underline = val; } val = fontobj.asc_getStrikeout(); if (this._state.strikeout !== val) { toolbar.btnStrikeout.toggle(val === true, true); this._state.strikeout = val; } var subsc = fontobj.asc_getSubscript(), supersc = fontobj.asc_getSuperscript(); if (this._state.subscript !== subsc || this._state.superscript !== supersc) { var index = (supersc) ? 0 : (subsc ? 1 : -1), btnSubscript = toolbar.btnSubscript; btnSubscript.toggle(index>-1, true); if (index < 0) { btnSubscript.menu.clearAll(); } else { btnSubscript.menu.items[index].setChecked(true); if ( btnSubscript.rendered ) { btnSubscript.$icon.removeClass(btnSubscript.options.icls); btnSubscript.options.icls = btnSubscript.menu.items[index].options.icls; btnSubscript.$icon.addClass(btnSubscript.options.icls); } } this._state.subscript = subsc; this._state.superscript = supersc; } } /* read font color */ var clr, color, fontColorPicker = this.toolbar.mnuTextColorPicker, paragraphColorPicker = this.toolbar.mnuBackColorPicker; if (!toolbar.btnTextColor.ischanged && !fontColorPicker.isDummy) { color = fontobj.asc_getColor(); if (color) { if (color.get_type() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) { clr = {color: Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()), effectValue: color.get_value() }; } else { clr = Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()); } } var type1 = typeof(clr), type2 = typeof(this._state.clrtext); if ( (type1 !== type2) || (type1=='object' && (clr.effectValue!==this._state.clrtext.effectValue || this._state.clrtext.color.indexOf(clr.color)<0)) || (type1!='object' && this._state.clrtext!==undefined && this._state.clrtext.indexOf(clr)<0 )) { if (_.isObject(clr)) { var isselected = false; for (var i = 0; i < 10; i++) { if (Common.Utils.ThemeColor.ThemeValues[i] == clr.effectValue) { fontColorPicker.select(clr, true); isselected = true; break; } } if (!isselected) fontColorPicker.clearSelection(); } else { fontColorPicker.select(clr, true); } this._state.clrtext = clr; } this._state.clrtext_asccolor = color; } /* read cell background color */ if (!toolbar.btnBackColor.ischanged && !paragraphColorPicker.isDummy) { color = info.asc_getFill().asc_getColor(); if (color) { if (color.get_type() == Asc.c_oAscColor.COLOR_TYPE_SCHEME) { clr = {color: Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()), effectValue: color.get_value() }; } else { clr = Common.Utils.ThemeColor.getHexColor(color.get_r(), color.get_g(), color.get_b()); } } else { clr = 'transparent'; } type1 = typeof(clr); type2 = typeof(this._state.clrback); if ( (type1 !== type2) || (type1=='object' && (clr.effectValue!==this._state.clrback.effectValue || this._state.clrback.color.indexOf(clr.color)<0)) || (type1!='object' && this._state.clrback!==undefined && this._state.clrback.indexOf(clr)<0 )) { if (_.isObject(clr)) { var isselected = false; for (i = 0; i < 10; i++) { if (Common.Utils.ThemeColor.ThemeValues[i] == clr.effectValue) { paragraphColorPicker.select(clr, true); isselected = true; break; } } if (!isselected) paragraphColorPicker.clearSelection(); } else { paragraphColorPicker.select(clr, true); } this._state.clrback = clr; } this._state.clrshd_asccolor = color; } var in_chart = (selectionType == Asc.c_oAscSelectionType.RangeChart || selectionType == Asc.c_oAscSelectionType.RangeChartText); if (in_chart !== this._state.in_chart) { toolbar.btnInsertChart.updateHint(in_chart ? toolbar.tipChangeChart : toolbar.tipInsertChart); this._state.in_chart = in_chart; } if (in_chart) return; if (!toolbar.mode.isEditDiagram) { // (coauth_disable !== toolbar.btnClearStyle.isDisabled()) && toolbar.btnClearStyle.setDisabled(coauth_disable); // (coauth_disable !== toolbar.btnCopyStyle.isDisabled()) && toolbar.btnCopyStyle.setDisabled(coauth_disable); var filterInfo = info.asc_getAutoFilterInfo(), formatTableInfo = info.asc_getFormatTableInfo(); if (!toolbar.mode.isEditMailMerge) { /* read cell horizontal align */ fontparam = info.asc_getHorAlign(); if (this._state.pralign !== fontparam) { this._state.pralign = fontparam; var index = -1, align; switch (fontparam) { case AscCommon.align_Left: index = 0; align = 'btn-align-left'; break; case AscCommon.align_Center: index = 1; align = 'btn-align-center'; break; case AscCommon.align_Right: index = 2; align = 'btn-align-right'; break; case AscCommon.align_Justify: index = 3; align = 'btn-align-just'; break; default: index = -255; align = 'btn-align-left'; break; } if (!(index < 0)) { toolbar.btnAlignRight.toggle(index===2, true); toolbar.btnAlignLeft.toggle(index===0, true); toolbar.btnAlignCenter.toggle(index===1, true); toolbar.btnAlignJust.toggle(index===3, true); } else if (index == -255) { toolbar.btnAlignRight.toggle(false, true); toolbar.btnAlignLeft.toggle(false, true); toolbar.btnAlignCenter.toggle(false, true); toolbar.btnAlignJust.toggle(false, true); } } need_disable = (fontparam == AscCommon.align_Justify || selectionType == Asc.c_oAscSelectionType.RangeShapeText); toolbar.btnTextOrient.menu.items[1].setDisabled(need_disable); toolbar.btnTextOrient.menu.items[2].setDisabled(need_disable); /* read cell vertical align */ fontparam = info.asc_getVertAlign(); if (this._state.valign !== fontparam) { this._state.valign = fontparam; index = -1; align = ''; switch (fontparam) { case Asc.c_oAscVAlign.Top: index = 0; align = 'btn-valign-top'; break; case Asc.c_oAscVAlign.Center: index = 1; align = 'btn-valign-middle'; break; case Asc.c_oAscVAlign.Bottom: index = 2; align = 'btn-valign-bottom'; break; } if (index > -1) { toolbar.btnAlignTop.toggle(index===0, true); toolbar.btnAlignMiddle.toggle(index===1, true); toolbar.btnAlignBottom.toggle(index===2, true); } } need_disable = this._state.controlsdisabled.filters || formatTableInfo!==null || filterInfo && filterInfo.asc_getIsAutoFilter()===null; // (need_disable !== toolbar.btnMerge.isDisabled()) && toolbar.btnMerge.setDisabled(need_disable); toolbar.lockToolbar(SSE.enumLock.ruleMerge, need_disable, {array:[toolbar.btnMerge, toolbar.btnInsertTable]}); val = info.asc_getFlags().asc_getMerge(); if (this._state.merge !== val) { toolbar.btnMerge.toggle(val===Asc.c_oAscMergeOptions.Merge, true); this._state.merge = val; } /* read cell text wrapping */ if (!toolbar.btnWrap.isDisabled()) { val = info.asc_getFlags().asc_getWrapText(); if (this._state.wrap !== val) { toolbar.btnWrap.toggle(val===true, true); this._state.wrap = val; } } } val = (filterInfo) ? filterInfo.asc_getIsAutoFilter() : null; if (this._state.filter !== val) { toolbar.btnsSetAutofilter.toggle(val===true, true); this._state.filter = val; } need_disable = this._state.controlsdisabled.filters || (val===null); toolbar.lockToolbar(SSE.enumLock.ruleFilter, need_disable, { array: toolbar.btnsSetAutofilter.concat(toolbar.btnsSortDown, toolbar.btnsSortUp, toolbar.btnCustomSort, toolbar.btnTableTemplate, toolbar.btnInsertTable) }); val = (formatTableInfo) ? formatTableInfo.asc_getTableStyleName() : null; if (this._state.tablestylename !== val && this.toolbar.mnuTableTemplatePicker) { val = this.toolbar.mnuTableTemplatePicker.store.findWhere({name: val}); if (val) { this.toolbar.mnuTableTemplatePicker.selectRecord(val); this._state.tablestylename = val.get('name'); } else { toolbar.mnuTableTemplatePicker.deselectAll(); this._state.tablestylename = null; } } need_disable = this._state.controlsdisabled.filters || !filterInfo || (filterInfo.asc_getIsApplyAutoFilter()!==true); toolbar.lockToolbar(SSE.enumLock.ruleDelFilter, need_disable, {array: toolbar.btnsClearAutofilter}); var old_name = this._state.tablename; this._state.tablename = (formatTableInfo) ? formatTableInfo.asc_getTableName() : undefined; var old_applied = this._state.filterapplied; this._state.filterapplied = this._state.filter && filterInfo.asc_getIsApplyAutoFilter(); if (this._state.tablename !== old_name || this._state.filterapplied !== old_applied) this.getApplication().getController('Statusbar').onApiFilterInfo(!need_disable); this._state.multiselect = info.asc_getFlags().asc_getMultiselect(); toolbar.lockToolbar(SSE.enumLock.multiselect, this._state.multiselect, { array: [toolbar.btnTableTemplate, toolbar.btnInsertHyperlink, toolbar.btnInsertTable]}); this._state.inpivot = !!info.asc_getPivotTableInfo(); toolbar.lockToolbar(SSE.enumLock.editPivot, this._state.inpivot, { array: toolbar.btnsSetAutofilter.concat(toolbar.btnsClearAutofilter, toolbar.btnsSortDown, toolbar.btnsSortUp, toolbar.btnCustomSort, toolbar.btnMerge, toolbar.btnInsertHyperlink, toolbar.btnInsertTable)}); need_disable = !this.appConfig.canModifyFilter; toolbar.lockToolbar(SSE.enumLock.cantModifyFilter, need_disable, { array: toolbar.btnsSetAutofilter.concat(toolbar.btnsSortDown, toolbar.btnsSortUp, toolbar.btnCustomSort, toolbar.btnTableTemplate, toolbar.btnClearStyle.menu.items[0], toolbar.btnClearStyle.menu.items[2], toolbar.btnInsertTable)}); } val = info.asc_getNumFormatInfo(); if (val) { this._state.numformat = info.asc_getNumFormat(); this._state.numformatinfo = val; val = val.asc_getType(); if (this._state.numformattype !== val) { toolbar.cmbNumberFormat.setValue(val, toolbar.txtCustom); this._state.numformattype = val; } } if (selectionType == Asc.c_oAscSelectionType.RangeShapeText) { var SelectedObjects = this.api.asc_getGraphicObjectProps(); for (var i=0; i0) ? val : undefined; listStyle.menuPicker.selectRecord(styleRec); listStyle.resumeEvents(); } } val = (selectionType==Asc.c_oAscSelectionType.RangeRow); if ( this._state.controlsdisabled.rows!==val ) { this._state.controlsdisabled.rows=val; toolbar.btnAddCell.menu.items[3].setDisabled(val); toolbar.btnDeleteCell.menu.items[3].setDisabled(val); } val = (selectionType==Asc.c_oAscSelectionType.RangeCol); if ( this._state.controlsdisabled.cols!==val ) { this._state.controlsdisabled.cols=val; toolbar.btnAddCell.menu.items[2].setDisabled(val); toolbar.btnDeleteCell.menu.items[2].setDisabled(val); } val = filterInfo && filterInfo.asc_getIsApplyAutoFilter(); if ( this._state.controlsdisabled.cells_right!==(this._state.controlsdisabled.rows || val) ) { this._state.controlsdisabled.cells_right = (this._state.controlsdisabled.rows || val); toolbar.btnAddCell.menu.items[0].setDisabled(this._state.controlsdisabled.cells_right); toolbar.btnDeleteCell.menu.items[0].setDisabled(this._state.controlsdisabled.cells_right); } if ( this._state.controlsdisabled.cells_down!==(this._state.controlsdisabled.cols || val) ) { this._state.controlsdisabled.cells_down = (this._state.controlsdisabled.cols || val); toolbar.btnAddCell.menu.items[1].setDisabled(this._state.controlsdisabled.cells_down); toolbar.btnDeleteCell.menu.items[1].setDisabled(this._state.controlsdisabled.cells_down); } toolbar.lockToolbar(SSE.enumLock.commentLock, (selectionType == Asc.c_oAscSelectionType.RangeCells) && (info.asc_getComments().length>0 || info.asc_getLocked()) || this.toolbar.mode.compatibleFeatures && (selectionType != Asc.c_oAscSelectionType.RangeCells), { array: this.btnsComment }); toolbar.lockToolbar(SSE.enumLock.headerLock, info.asc_getLockedHeaderFooter(), {array: this.toolbar.btnsEditHeader}); }, onApiSelectionChangedRestricted: function(info) { var selectionType = info.asc_getFlags().asc_getSelectionType(); this.toolbar.lockToolbar(SSE.enumLock.commentLock, (selectionType == Asc.c_oAscSelectionType.RangeCells) && (info.asc_getComments().length>0 || info.asc_getLocked()) || this.appConfig && this.appConfig.compatibleFeatures && (selectionType != Asc.c_oAscSelectionType.RangeCells), { array: this.btnsComment }); }, onApiSelectionChanged_DiagramEditor: function(info) { if ( !this.editMode || this.api.isCellEdited || this.api.isRangeSelection) return; var me = this; var _disableEditOptions = function(seltype, coauth_disable) { var is_chart_text = seltype == Asc.c_oAscSelectionType.RangeChartText, is_chart = seltype == Asc.c_oAscSelectionType.RangeChart, is_shape_text = seltype == Asc.c_oAscSelectionType.RangeShapeText, is_shape = seltype == Asc.c_oAscSelectionType.RangeShape, is_image = seltype == Asc.c_oAscSelectionType.RangeImage, is_mode_2 = is_shape_text || is_shape || is_chart_text || is_chart, is_objLocked = false; if ( !(is_mode_2 || is_image) && me._state.selection_type === seltype && me._state.coauthdisable === coauth_disable ) return (seltype === Asc.c_oAscSelectionType.RangeImage); if ( is_mode_2 ) { var selectedObjects = me.api.asc_getGraphicObjectProps(); is_objLocked = selectedObjects.some( function(object) { return object.asc_getObjectType() == Asc.c_oAscTypeSelectElement.Image && object.asc_getObjectValue().asc_getLocked(); } ); } var _set = SSE.enumLock; var type = seltype; switch ( seltype ) { case Asc.c_oAscSelectionType.RangeImage: type = _set.selImage; break; case Asc.c_oAscSelectionType.RangeShape: type = _set.selShape; break; case Asc.c_oAscSelectionType.RangeShapeText: type = _set.selShapeText; break; case Asc.c_oAscSelectionType.RangeChart: type = _set.selChart; break; case Asc.c_oAscSelectionType.RangeChartText: type = _set.selChartText; break; } me.toolbar.lockToolbar(type, type != seltype, { clear: [_set.selImage, _set.selChart, _set.selChartText, _set.selShape, _set.selShapeText, _set.coAuth] }); me.toolbar.lockToolbar(SSE.enumLock.coAuthText, is_objLocked); return is_image; }; var selectionType = info.asc_getFlags().asc_getSelectionType(), coauth_disable = false; if ( _disableEditOptions(selectionType, coauth_disable) ) return; if (selectionType == Asc.c_oAscSelectionType.RangeChart || selectionType == Asc.c_oAscSelectionType.RangeChartText) return; var val = info.asc_getNumFormatInfo(); if ( val ) { this._state.numformat = info.asc_getNumFormat(); this._state.numformatinfo = val; val = val.asc_getType(); if (this._state.numformattype !== val) { me.toolbar.cmbNumberFormat.setValue(val, me.toolbar.txtCustom); this._state.numformattype = val; } } }, onApiSelectionChanged_MailMergeEditor: function(info) { if ( !this.editMode || this.api.isCellEdited || this.api.isRangeSelection) return; var me = this; var _disableEditOptions = function(seltype, coauth_disable) { var is_chart_text = seltype == Asc.c_oAscSelectionType.RangeChartText, is_chart = seltype == Asc.c_oAscSelectionType.RangeChart, is_shape_text = seltype == Asc.c_oAscSelectionType.RangeShapeText, is_shape = seltype == Asc.c_oAscSelectionType.RangeShape, is_image = seltype == Asc.c_oAscSelectionType.RangeImage, is_mode_2 = is_shape_text || is_shape || is_chart_text || is_chart, is_objLocked = false; if (!(is_mode_2 || is_image) && me._state.selection_type === seltype && me._state.coauthdisable === coauth_disable) return seltype === Asc.c_oAscSelectionType.RangeImage; if ( is_mode_2 ) { var selectedObjects = me.api.asc_getGraphicObjectProps(); is_objLocked = selectedObjects.some(function (object) { return object.asc_getObjectType() == Asc.c_oAscTypeSelectElement.Image && object.asc_getObjectValue().asc_getLocked(); }); } me.toolbar.lockToolbar(SSE.enumLock.coAuthText, is_objLocked); return is_image; }; var selectionType = info.asc_getFlags().asc_getSelectionType(), coauth_disable = false, editOptionsDisabled = _disableEditOptions(selectionType, coauth_disable), val, need_disable = false; if (editOptionsDisabled) return; if (selectionType == Asc.c_oAscSelectionType.RangeChart || selectionType == Asc.c_oAscSelectionType.RangeChartText) return; if ( !me.toolbar.mode.isEditDiagram ) { var filterInfo = info.asc_getAutoFilterInfo(); val = filterInfo ? filterInfo.asc_getIsAutoFilter() : null; if ( this._state.filter !== val ) { me.toolbar.btnSetAutofilter.toggle(val===true, true); this._state.filter = val; } need_disable = this._state.controlsdisabled.filters || (val===null); me.toolbar.lockToolbar(SSE.enumLock.ruleFilter, need_disable, { array: [me.toolbar.btnSetAutofilter, me.toolbar.btnSortDown, me.toolbar.btnSortUp] }); need_disable = this._state.controlsdisabled.filters || !filterInfo || (filterInfo.asc_getIsApplyAutoFilter()!==true); me.toolbar.lockToolbar(SSE.enumLock.ruleDelFilter, need_disable, {array: [me.toolbar.btnClearAutofilter]}); } }, onApiStyleChange: function() { this.toolbar.btnCopyStyle.toggle(false, true); this.modeAlwaysSetStyle = false; }, updateThemeColors: function() { var updateColors = function(picker, defaultColor) { if (picker) { var clr; var effectcolors = Common.Utils.ThemeColor.getEffectColors(); for (var i = 0; i < effectcolors.length; i++) { if (typeof(picker.currentColor) == 'object' && clr === undefined && picker.currentColor.effectId == effectcolors[i].effectId) clr = effectcolors[i]; } picker.updateColors(effectcolors, Common.Utils.ThemeColor.getStandartColors()); if (picker.currentColor === undefined) { picker.currentColor = defaultColor; } else if ( clr!==undefined ) { picker.currentColor = clr; } } }; updateColors(this.toolbar.mnuTextColorPicker, Common.Utils.ThemeColor.getStandartColors()[1]); if (this.toolbar.btnTextColor.currentColor === undefined) { this.toolbar.btnTextColor.currentColor=Common.Utils.ThemeColor.getStandartColors()[1]; } else this.toolbar.btnTextColor.currentColor = this.toolbar.mnuTextColorPicker.currentColor.color || this.toolbar.mnuTextColorPicker.currentColor; $('.btn-color-value-line', this.toolbar.btnTextColor.cmpEl).css('background-color', '#' + this.toolbar.btnTextColor.currentColor); updateColors(this.toolbar.mnuBackColorPicker, Common.Utils.ThemeColor.getStandartColors()[3]); if (this.toolbar.btnBackColor.currentColor === undefined) { this.toolbar.btnBackColor.currentColor=Common.Utils.ThemeColor.getStandartColors()[3]; } else this.toolbar.btnBackColor.currentColor = this.toolbar.mnuBackColorPicker.currentColor.color || this.toolbar.mnuBackColorPicker.currentColor; $('.btn-color-value-line', this.toolbar.btnBackColor.cmpEl).css('background-color', this.toolbar.btnBackColor.currentColor == 'transparent' ? 'transparent' : '#' + this.toolbar.btnBackColor.currentColor); if (this._state.clrtext_asccolor!==undefined || this._state.clrshd_asccolor!==undefined) { this._state.clrtext = undefined; this._state.clrback = undefined; this.onApiSelectionChanged(this.api.asc_getCellInfo()); } this._state.clrtext_asccolor = undefined; this._state.clrshd_asccolor = undefined; if (this.toolbar.mnuBorderColorPicker) { updateColors(this.toolbar.mnuBorderColorPicker, Common.Utils.ThemeColor.getEffectColors()[1]); this.toolbar.btnBorders.options.borderscolor = this.toolbar.mnuBorderColorPicker.currentColor.color || this.toolbar.mnuBorderColorPicker.currentColor; $('#id-toolbar-mnu-item-border-color .menu-item-icon').css('border-color', '#' + this.toolbar.btnBorders.options.borderscolor); } }, hideElements: function(opts) { if (!_.isUndefined(opts.compact)) { this.onChangeViewMode(opts.compact); } if (!_.isUndefined(opts.formula)) { var cellEditor = this.getApplication().getController('CellEditor').getView('CellEditor'); cellEditor && cellEditor.setVisible(!opts.formula); Common.NotificationCenter.trigger('layout:changed', 'celleditor', opts.formula?'hidden':'showed'); } if (!_.isUndefined(opts.headings)) { if (this.api) { this.api.asc_setDisplayHeadings(!opts.headings); } } if (!_.isUndefined(opts.gridlines)) { if (this.api) { this.api.asc_setDisplayGridlines(!opts.gridlines); } } if (!_.isUndefined(opts.freezepanes)) { if (this.api) { this.api.asc_freezePane(); } } Common.NotificationCenter.trigger('edit:complete', this.toolbar); }, onApiAutoShapes: function() { var me = this; var onShowBefore = function(menu) { me.fillAutoShapes(); menu.off('show:before', onShowBefore); }; me.toolbar.btnInsertShape.menu.on('show:before', onShowBefore); }, fillAutoShapes: function() { var me = this, shapesStore = this.getApplication().getCollection('ShapeGroups'); var onShowAfter = function(menu) { for (var i = 0; i < shapesStore.length; i++) { var shapePicker = new Common.UI.DataViewSimple({ el: $('#id-toolbar-menu-shapegroup' + i, menu.items[i].$el), store: shapesStore.at(i).get('groupStore'), parentMenu: menu.items[i].menu, itemTemplate: _.template('
\">
') }); shapePicker.on('item:click', function(picker, item, record, e) { if (me.api) { if (record) { me._addAutoshape(true, record.get('data').shapeType); me._isAddingShape = true; } if (me.toolbar.btnInsertText.pressed) { me.toolbar.btnInsertText.toggle(false, true); } if (e.type !== 'click') me.toolbar.btnInsertShape.menu.hide(); Common.NotificationCenter.trigger('edit:complete', me.toolbar, me.toolbar.btnInsertShape); Common.component.Analytics.trackEvent('ToolBar', 'Add Shape'); } }); } menu.off('show:after', onShowAfter); }; me.toolbar.btnInsertShape.menu.on('show:after', onShowAfter); for (var i = 0; i < shapesStore.length; i++) { var shapeGroup = shapesStore.at(i); var menuItem = new Common.UI.MenuItem({ caption: shapeGroup.get('groupName'), menu: new Common.UI.Menu({ menuAlign: 'tl-tr', items: [ { template: _.template('') } ] }) }); me.toolbar.btnInsertShape.menu.addItem(menuItem); } }, fillEquations: function() { if (!this.toolbar.btnInsertEquation.rendered || this.toolbar.btnInsertEquation.menu.items.length>0) return; var me = this, equationsStore = this.getApplication().getCollection('EquationGroups'); me.toolbar.btnInsertEquation.menu.removeAll(); var onShowAfter = function(menu) { for (var i = 0; i < equationsStore.length; ++i) { var equationPicker = new Common.UI.DataViewSimple({ el: $('#id-toolbar-menu-equationgroup' + i), parentMenu: menu.items[i].menu, store: equationsStore.at(i).get('groupStore'), scrollAlwaysVisible: true, itemTemplate: _.template('
' + '
' + '
') }); equationPicker.on('item:click', function(picker, item, record, e) { if (me.api) { if (record) me.api.asc_AddMath(record.get('data').equationType); if (me.toolbar.btnInsertText.pressed) { me.toolbar.btnInsertText.toggle(false, true); } if (me.toolbar.btnInsertShape.pressed) { me.toolbar.btnInsertShape.toggle(false, true); } if (e.type !== 'click') me.toolbar.btnInsertEquation.menu.hide(); Common.NotificationCenter.trigger('edit:complete', me.toolbar, me.toolbar.btnInsertEquation); Common.component.Analytics.trackEvent('ToolBar', 'Add Equation'); } }); } menu.off('show:after', onShowAfter); }; me.toolbar.btnInsertEquation.menu.on('show:after', onShowAfter); for (var i = 0; i < equationsStore.length; ++i) { var equationGroup = equationsStore.at(i); var menuItem = new Common.UI.MenuItem({ caption: equationGroup.get('groupName'), menu: new Common.UI.Menu({ menuAlign: 'tl-tr', items: [ { template: _.template('') } ] }) }); me.toolbar.btnInsertEquation.menu.addItem(menuItem); } }, onInsertEquationClick: function() { if (this.api) { this.api.asc_AddMath(); Common.component.Analytics.trackEvent('ToolBar', 'Add Equation'); } Common.NotificationCenter.trigger('edit:complete', this.toolbar, this.toolbar.btnInsertEquation); }, onInsertSymbolClick: function() { if (this.api) { var me = this, win = new Common.Views.SymbolTableDialog({ api: me.api, lang: me.toolbar.mode.lang, type: 1, buttons: [{value: 'ok', caption: this.textInsert}, 'close'], handler: function(dlg, result, settings) { if (result == 'ok') { me.api.asc_insertSymbol(settings.font, settings.code); } else Common.NotificationCenter.trigger('edit:complete', me.toolbar); } }); win.show(); win.on('symbol:dblclick', function(cmp, result, settings) { me.api.asc_insertSymbol(settings.font, settings.code); }); } }, onApiMathTypes: function(equation) { this._equationTemp = equation; var me = this; var onShowBefore = function(menu) { me.onMathTypes(me._equationTemp); me.toolbar.btnInsertEquation.menu.off('show:before', onShowBefore); }; me.toolbar.btnInsertEquation.menu.on('show:before', onShowBefore); }, onMathTypes: function(equation) { var equationgrouparray = [], equationsStore = this.getCollection('EquationGroups'); equationsStore.reset(); // equations groups var c_oAscMathMainTypeStrings = {}; // [translate, count cells, scroll] c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Symbol ] = [this.textSymbols, 11]; c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Fraction ] = [this.textFraction, 4]; c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Script ] = [this.textScript, 4]; c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Radical ] = [this.textRadical, 4]; c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Integral ] = [this.textIntegral, 3, true]; c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.LargeOperator] = [this.textLargeOperator, 5, true]; c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Bracket ] = [this.textBracket, 4, true]; c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Function ] = [this.textFunction, 3, true]; c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Accent ] = [this.textAccent, 4]; c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.LimitLog ] = [this.textLimitAndLog, 3]; c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Operator ] = [this.textOperator, 4]; c_oAscMathMainTypeStrings[Common.define.c_oAscMathMainType.Matrix ] = [this.textMatrix, 4, true]; // equations sub groups // equations types var translationTable = {}, name = '', translate = ''; for (name in Common.define.c_oAscMathType) { if (Common.define.c_oAscMathType.hasOwnProperty(name)) { var arr = name.split('_'); if (arr.length==2 && arr[0]=='Symbol') { translate = 'txt' + arr[0] + '_' + arr[1].toLocaleLowerCase(); } else translate = 'txt' + name; translationTable[Common.define.c_oAscMathType[name]] = this[translate]; } } var i,id = 0, count = 0, length = 0, width = 0, height = 0, store = null, list = null, eqStore = null, eq = null, data; if (equation) { data = equation.get_Data(); count = data.length; if (count) { for (var j = 0; j < count; ++j) { var group = data[j]; id = group.get_Id(); width = group.get_W(); height = group.get_H(); store = new Backbone.Collection([], { model: SSE.Models.EquationModel }); if (store) { var allItemsCount = 0, itemsCount = 0, ids = 0, arr = []; length = group.get_Data().length; for (i = 0; i < length; ++i) { eqStore = group.get_Data()[i]; itemsCount = eqStore.get_Data().length; for (var p = 0; p < itemsCount; ++p) { eq = eqStore.get_Data()[p]; ids = eq.get_Id(); translate = ''; if (translationTable.hasOwnProperty(ids)) { translate = translationTable[ids]; } arr.push({ data : {equationType: ids}, tip : translate, allowSelected : true, selected : false, width : eqStore.get_W(), height : eqStore.get_H(), posX : -eq.get_X(), posY : -eq.get_Y() }); } allItemsCount += itemsCount; } store.add(arr); width = c_oAscMathMainTypeStrings[id][1] * (width + 10); // 4px margin + 4px margin + 1px border + 1px border var normHeight = parseInt(370 / (height + 10)) * (height + 10); equationgrouparray.push({ groupName : c_oAscMathMainTypeStrings[id][0], groupStore : store, groupWidth : width, groupHeight : c_oAscMathMainTypeStrings[id][2] ? ' height:'+ normHeight +'px!important; ' : '' }); } } equationsStore.add(equationgrouparray); this.fillEquations(); } } }, attachToControlEvents: function() { // this.control({ // 'menu[action=table-templates]':{ // select: this._onMenuTableTemplate, // itemmouseenter: function(obj, record, item, index, event, eOpts) { // if (obj.tooltip) obj.tooltip.close(); // obj.tooltip = Ext.create('Ext.tip.ToolTip', { // closeAction : 'destroy', // dismissDelay : 2000, // html : record.get('caption') // }); // var xy = event.getXY(); // obj.tooltip.showAt([xy[0]+10,xy[1]+10]); // }, // itemmouseleave: function(obj, record, item, index, e, eOpts) { // if (obj.tooltip) obj.tooltip.close(); // }, // hide: function() { // this.getToolbar().fireEvent('editcomplete', this.getToolbar()); // } // }, // 'menu[action=number-format]': { // click: this._handleNumberFormatMenu // } // }); }, _disableEditOptions: function(seltype, coauth_disable) { if (this.api.isCellEdited) return true; if (this.api.isRangeSelection) return true; var toolbar = this.toolbar, is_chart_text = seltype == Asc.c_oAscSelectionType.RangeChartText, is_chart = seltype == Asc.c_oAscSelectionType.RangeChart, is_shape_text = seltype == Asc.c_oAscSelectionType.RangeShapeText, is_shape = seltype == Asc.c_oAscSelectionType.RangeShape, is_image = seltype == Asc.c_oAscSelectionType.RangeImage, is_mode_2 = is_shape_text || is_shape || is_chart_text || is_chart, is_objLocked = false; if (!(is_mode_2 || is_image) && this._state.selection_type===seltype && this._state.coauthdisable===coauth_disable) return (seltype===Asc.c_oAscSelectionType.RangeImage); if (is_mode_2) { var SelectedObjects = this.api.asc_getGraphicObjectProps(); for (var i=0; i0 || !disable && mask.length==0) return; var toolbar = this.toolbar; toolbar.$el.find('.toolbar').toggleClass('masked', disable); this.toolbar.lockToolbar(SSE.enumLock.menuFileOpen, disable); if(disable) { mask = $("
").appendTo(toolbar.$el.find('.toolbar')); Common.util.Shortcuts.suspendEvents('command+l, ctrl+l, command+shift+l, ctrl+shift+l, command+k, ctrl+k, command+alt+h, ctrl+alt+h, command+1, ctrl+1'); } else { mask.remove(); Common.util.Shortcuts.resumeEvents('command+l, ctrl+l, command+shift+l, ctrl+shift+l, command+k, ctrl+k, command+alt+h, ctrl+alt+h, command+1, ctrl+1'); } }, applyFormulaSettings: function() { if (this.toolbar.btnInsertFormula && this.toolbar.btnInsertFormula.rendered) { var formulas = this.toolbar.btnInsertFormula.menu.items; for (var i=0; i0) btn.setCaption(me.toolbar.capBtnAddComment); }, this); } } Common.Utils.asyncCall(function () { if ( config.isEdit ) { me.toolbar.onAppReady(config); } }); }, onFileMenu: function (opts) { if ( opts == 'show' ) { if ( !this.toolbar.isTabActive('file') ) this.toolbar.setTab('file'); } else { if ( this.toolbar.isTabActive('file') ) this.toolbar.setTab(); } }, onPageSizeClick: function(menu, item, state) { if (this.api && state) { this._state.pgsize = [0, 0]; this.api.asc_changeDocSize(item.value[0], item.value[1], this.api.asc_getActiveWorksheetIndex()); Common.component.Analytics.trackEvent('ToolBar', 'Page Size'); } Common.NotificationCenter.trigger('edit:complete', this.toolbar); }, onPageMarginsSelect: function(menu, item) { if (this.api) { this._state.pgmargins = undefined; if (item.value !== 'advanced') { this.api.asc_changePageMargins(item.value[1], item.value[3], item.value[0], item.value[2], this.api.asc_getActiveWorksheetIndex()); } else { var win, props, me = this; win = new SSE.Views.PageMarginsDialog({ handler: function(dlg, result) { if (result == 'ok') { props = dlg.getSettings(); var mnu = me.toolbar.btnPageMargins.menu.items[0]; mnu.setVisible(true); mnu.setChecked(true); mnu.options.value = mnu.value = [props.asc_getTop(), props.asc_getLeft(), props.asc_getBottom(), props.asc_getRight()]; $(mnu.el).html(mnu.template({id: Common.UI.getId(), caption : mnu.caption, options : mnu.options})); Common.localStorage.setItem("sse-pgmargins-top", props.asc_getTop()); Common.localStorage.setItem("sse-pgmargins-left", props.asc_getLeft()); Common.localStorage.setItem("sse-pgmargins-bottom", props.asc_getBottom()); Common.localStorage.setItem("sse-pgmargins-right", props.asc_getRight()); me.api.asc_changePageMargins( props.asc_getLeft(), props.asc_getRight(), props.asc_getTop(), props.asc_getBottom(), me.api.asc_getActiveWorksheetIndex()); Common.NotificationCenter.trigger('edit:complete', me.toolbar); } } }); win.show(); win.setSettings(me.api.asc_getPageOptions(me.api.asc_getActiveWorksheetIndex())); } Common.component.Analytics.trackEvent('ToolBar', 'Page Margins'); } Common.NotificationCenter.trigger('edit:complete', this.toolbar); }, onPageOrientSelect: function(menu, item) { this._state.pgorient = undefined; if (this.api && item.checked) { this.api.asc_changePageOrient(item.value==Asc.c_oAscPageOrientation.PagePortrait, this.api.asc_getActiveWorksheetIndex()); } Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Page Orientation'); }, onImgGroupSelect: function(menu, item) { if (this.api) this.api[(item.value == 'grouping') ? 'asc_groupGraphicsObjects' : 'asc_unGroupGraphicsObjects'](); Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Objects Group'); }, onImgArrangeSelect: function(menu, item) { if (this.api) { if ( menu == 'forward' ) this.api.asc_setSelectedDrawingObjectLayer(Asc.c_oAscDrawingLayerType.BringForward); else if ( menu == 'backward' ) this.api.asc_setSelectedDrawingObjectLayer(Asc.c_oAscDrawingLayerType.SendBackward); else this.api.asc_setSelectedDrawingObjectLayer(item.value); } Common.NotificationCenter.trigger('edit:complete', this.toolbar); Common.component.Analytics.trackEvent('ToolBar', 'Objects Arrange'); }, onImgAlignSelect: function(menu, item) { if (this.api) { if (item.value>-1 && item.value < 6) { this.api.asc_setSelectedDrawingObjectAlign(item.value); Common.component.Analytics.trackEvent('ToolBar', 'Objects Align'); } else if (item.value == 6) { this.api.asc_DistributeSelectedDrawingObjectHor(); Common.component.Analytics.trackEvent('ToolBar', 'Distribute'); } else if (item.value == 7){ this.api.asc_DistributeSelectedDrawingObjectVer(); Common.component.Analytics.trackEvent('ToolBar', 'Distribute'); } } Common.NotificationCenter.trigger('edit:complete', this.toolbar); }, onPrintAreaClick: function(menu, item) { if (this.api) { this.api.asc_ChangePrintArea(item.value); Common.component.Analytics.trackEvent('ToolBar', 'Print Area'); } Common.NotificationCenter.trigger('edit:complete', this.toolbar); }, onPrintAreaMenuOpen: function() { if (this.api) this.toolbar.btnPrintArea.menu.items[2].setVisible(this.api.asc_CanAddPrintArea()); }, onEditHeaderClick: function(btn) { var me = this; if (_.isUndefined(me.fontStore)) { me.fontStore = new Common.Collections.Fonts(); var fonts = me.toolbar.cmbFontName.store.toJSON(); var arr = []; _.each(fonts, function(font, index){ if (!font.cloneid) { arr.push(_.clone(font)); } }); me.fontStore.add(arr); } var win = new SSE.Views.HeaderFooterDialog({ api: me.api, fontStore: me.fontStore, handler: function(dlg, result) { Common.NotificationCenter.trigger('edit:complete'); } }); win.show(); Common.NotificationCenter.trigger('edit:complete', this.toolbar); }, onClickChangeScaleInMenu: function(type, curScale) { if (this.api) { var scale; if (type === 'up') { if (curScale % 5 > 0.001) { scale = Math.ceil(curScale / 5) * 5; } else { scale = curScale + 5; } } else { if (curScale % 5 > 0.001) { scale = Math.floor(curScale / 5) * 5; } else { scale = curScale - 5; } } if (scale > 400) { scale = 400; } else if (scale < 10) { scale = 10; } this.onChangeScaleSettings(0, 0, scale); } }, onScaleClick: function(type, menu, item, event, scale) { var me = this; if (me.api) { if (type === 'width' && item.value !== 'more') { if (me._state.scaleHeight === undefined || me._state.scaleHeight === null) { me._state.scaleHeight = 0; } me.api.asc_SetPrintScale(item.value, me._state.scaleHeight, 100); me.onChangeScaleSettings(item.value, me._state.scaleHeight, 100); } else if (type === 'height' && item.value !== 'more') { if (me._state.scaleWidth === undefined || me._state.scaleWidth === null) { me._state.scaleWidth = 0; } me.api.asc_SetPrintScale(me._state.scaleWidth, item.value, 100); me.onChangeScaleSettings(me._state.scaleWidth, item.value, 100); } else if (type === 'scale' && scale !== undefined) { me.api.asc_SetPrintScale(0, 0, scale); } else if (item.value === 'custom' || item.value === 'more') { var win = new SSE.Views.ScaleDialog({ api: me.api, props: null, handler: function (dlg, result) { if (dlg == 'ok') { if (me.api && result) { me.api.asc_SetPrintScale(result.width, result.height, result.scale); me.onChangeScaleSettings(result.width, result.height, result.scale); } } else { me.onChangeScaleSettings(me._state.scaleWidth, me._state.scaleHeight, me._state.scale); } Common.NotificationCenter.trigger('edit:complete'); } }); win.show(); } } Common.NotificationCenter.trigger('edit:complete', this.toolbar); }, textEmptyImgUrl : 'You need to specify image URL.', warnMergeLostData : 'Operation can destroy data in the selected cells.
Continue?', textWarning : 'Warning', textFontSizeErr : 'The entered value is incorrect.
Please enter a numeric value between 1 and 409', confirmAddFontName : 'The font you are going to save is not available on the current device.
The text style will be displayed using one of the device fonts, the saved font will be used when it is available.
Do you want to continue?', textSymbols : 'Symbols', textFraction : 'Fraction', textScript : 'Script', textRadical : 'Radical', textIntegral : 'Integral', textLargeOperator : 'Large Operator', textBracket : 'Bracket', textFunction : 'Function', textAccent : 'Accent', textLimitAndLog : 'Limit And Log', textOperator : 'Operator', textMatrix : 'Matrix', txtSymbol_pm : 'Plus Minus', txtSymbol_infinity : 'Infinity', txtSymbol_equals : 'Equal', txtSymbol_neq : 'Not Equal To', txtSymbol_about : 'Approximately', txtSymbol_times : 'Multiplication Sign', txtSymbol_div : 'Division Sign', txtSymbol_factorial : 'Factorial', txtSymbol_propto : 'Proportional To', txtSymbol_less : 'Less Than', txtSymbol_ll : 'Much Less Than', txtSymbol_greater : 'Greater Than', txtSymbol_gg : 'Much Greater Than', txtSymbol_leq : 'Less Than or Equal To', txtSymbol_geq : 'Greater Than or Equal To', txtSymbol_mp : 'Minus Plus', txtSymbol_cong : 'Approximately Equal To', txtSymbol_approx : 'Almost Equal To', txtSymbol_equiv : 'Identical To', txtSymbol_forall : 'For All', txtSymbol_additional : 'Complement', txtSymbol_partial : 'Partial Differential', txtSymbol_sqrt : 'Radical Sign', txtSymbol_cbrt : 'Cube Root', txtSymbol_qdrt : 'Fourth Root', txtSymbol_cup : 'Union', txtSymbol_cap : 'Intersection', txtSymbol_emptyset : 'Empty Set', txtSymbol_percent : 'Percentage', txtSymbol_degree : 'Degrees', txtSymbol_fahrenheit : 'Degrees Fahrenheit', txtSymbol_celsius : 'Degrees Celsius', txtSymbol_inc : 'Increment', txtSymbol_nabla : 'Nabla', txtSymbol_exists : 'There Exist', txtSymbol_notexists : 'There Does Not Exist', txtSymbol_in : 'Element Of', txtSymbol_ni : 'Contains as Member', txtSymbol_leftarrow : 'Left Arrow', txtSymbol_uparrow : 'Up Arrow', txtSymbol_rightarrow : 'Right Arrow', txtSymbol_downarrow : 'Down Arrow', txtSymbol_leftrightarrow : 'Left-Right Arrow', txtSymbol_therefore : 'Therefore', txtSymbol_plus : 'Plus', txtSymbol_minus : 'Minus', txtSymbol_not : 'Not Sign', txtSymbol_ast : 'Asterisk Operator', txtSymbol_bullet : 'Bulet Operator', txtSymbol_vdots : 'Vertical Ellipsis', txtSymbol_cdots : 'Midline Horizontal Ellipsis', txtSymbol_rddots : 'Up Right Diagonal Ellipsis', txtSymbol_ddots : 'Down Right Diagonal Ellipsis', txtSymbol_aleph : 'Alef', txtSymbol_beth : 'Bet', txtSymbol_qed : 'End of Proof', txtSymbol_alpha : 'Alpha', txtSymbol_beta : 'Beta', txtSymbol_gamma : 'Gamma', txtSymbol_delta : 'Delta', txtSymbol_varepsilon : 'Epsilon Variant', txtSymbol_epsilon : 'Epsilon', txtSymbol_zeta : 'Zeta', txtSymbol_eta : 'Eta', txtSymbol_theta : 'Theta', txtSymbol_vartheta : 'Theta Variant', txtSymbol_iota : 'Iota', txtSymbol_kappa : 'Kappa', txtSymbol_lambda : 'Lambda', txtSymbol_mu : 'Mu', txtSymbol_nu : 'Nu', txtSymbol_xsi : 'Xi', txtSymbol_o : 'Omicron', txtSymbol_pi : 'Pi', txtSymbol_varpi : 'Pi Variant', txtSymbol_rho : 'Rho', txtSymbol_varrho : 'Rho Variant', txtSymbol_sigma : 'Sigma', txtSymbol_varsigma : 'Sigma Variant', txtSymbol_tau : 'Tau', txtSymbol_upsilon : 'Upsilon', txtSymbol_varphi : 'Phi Variant', txtSymbol_phi : 'Phi', txtSymbol_chi : 'Chi', txtSymbol_psi : 'Psi', txtSymbol_omega : 'Omega', txtFractionVertical : 'Stacked Fraction', txtFractionDiagonal : 'Skewed Fraction', txtFractionHorizontal : 'Linear Fraction', txtFractionSmall : 'Small Fraction', txtFractionDifferential_1 : 'Differential', txtFractionDifferential_2 : 'Differential', txtFractionDifferential_3 : 'Differential', txtFractionDifferential_4 : 'Differential', txtFractionPi_2 : 'Pi Over 2', txtScriptSup : 'Superscript', txtScriptSub : 'Subscript', txtScriptSubSup : 'Subscript-Superscript', txtScriptSubSupLeft : 'Left Subscript-Superscript', txtScriptCustom_1 : 'Script', txtScriptCustom_2 : 'Script', txtScriptCustom_3 : 'Script', txtScriptCustom_4 : 'Script', txtRadicalSqrt : 'Square Root', txtRadicalRoot_n : 'Radical With Degree', txtRadicalRoot_2 : 'Square Root With Degree', txtRadicalRoot_3 : 'Cubic Root', txtRadicalCustom_1 : 'Radical', txtRadicalCustom_2 : 'Radical', txtIntegral : 'Integral', txtIntegralSubSup : 'Integral', txtIntegralCenterSubSup : 'Integral', txtIntegralDouble : 'Double Integral', txtIntegralDoubleSubSup : 'Double Integral', txtIntegralDoubleCenterSubSup : 'Double Integral', txtIntegralTriple : 'Triple Integral', txtIntegralTripleSubSup : 'Triple Integral', txtIntegralTripleCenterSubSup : 'Triple Integral', txtIntegralOriented : 'Contour Integral', txtIntegralOrientedSubSup : 'Contour Integral', txtIntegralOrientedCenterSubSup : 'Contour Integral', txtIntegralOrientedDouble : 'Surface Integral', txtIntegralOrientedDoubleSubSup : 'Surface Integral', txtIntegralOrientedDoubleCenterSubSup : 'Surface Integral', txtIntegralOrientedTriple : 'Volume Integral', txtIntegralOrientedTripleSubSup : 'Volume Integral', txtIntegralOrientedTripleCenterSubSup : 'Volume Integral', txtIntegral_dx : 'Differential x', txtIntegral_dy : 'Differential y', txtIntegral_dtheta : 'Differential theta', txtLargeOperator_Sum : 'Summation', txtLargeOperator_Sum_CenterSubSup : 'Summation', txtLargeOperator_Sum_SubSup : 'Summation', txtLargeOperator_Sum_CenterSub : 'Summation', txtLargeOperator_Sum_Sub : 'Summation', txtLargeOperator_Prod : 'Product', txtLargeOperator_Prod_CenterSubSup : 'Product', txtLargeOperator_Prod_SubSup : 'Product', txtLargeOperator_Prod_CenterSub : 'Product', txtLargeOperator_Prod_Sub : 'Product', txtLargeOperator_CoProd : 'Co-Product', txtLargeOperator_CoProd_CenterSubSup : 'Co-Product', txtLargeOperator_CoProd_SubSup : 'Co-Product', txtLargeOperator_CoProd_CenterSub : 'Co-Product', txtLargeOperator_CoProd_Sub : 'Co-Product', txtLargeOperator_Union : 'Union', txtLargeOperator_Union_CenterSubSup : 'Union', txtLargeOperator_Union_SubSup : 'Union', txtLargeOperator_Union_CenterSub : 'Union', txtLargeOperator_Union_Sub : 'Union', txtLargeOperator_Intersection : 'Intersection', txtLargeOperator_Intersection_CenterSubSup : 'Intersection', txtLargeOperator_Intersection_SubSup : 'Intersection', txtLargeOperator_Intersection_CenterSub : 'Intersection', txtLargeOperator_Intersection_Sub : 'Intersection', txtLargeOperator_Disjunction : 'Vee', txtLargeOperator_Disjunction_CenterSubSup : 'Vee', txtLargeOperator_Disjunction_SubSup : 'Vee', txtLargeOperator_Disjunction_CenterSub : 'Vee', txtLargeOperator_Disjunction_Sub : 'Vee', txtLargeOperator_Conjunction : 'Wedge', txtLargeOperator_Conjunction_CenterSubSup : 'Wedge', txtLargeOperator_Conjunction_SubSup : 'Wedge', txtLargeOperator_Conjunction_CenterSub : 'Wedge', txtLargeOperator_Conjunction_Sub : 'Wedge', txtLargeOperator_Custom_1 : 'Summation', txtLargeOperator_Custom_2 : 'Summation', txtLargeOperator_Custom_3 : 'Summation', txtLargeOperator_Custom_4 : 'Product', txtLargeOperator_Custom_5 : 'Union', txtBracket_Round : 'Brackets', txtBracket_Square : 'Brackets', txtBracket_Curve : 'Brackets', txtBracket_Angle : 'Brackets', txtBracket_LowLim : 'Brackets', txtBracket_UppLim : 'Brackets', txtBracket_Line : 'Brackets', txtBracket_LineDouble : 'Brackets', txtBracket_Square_OpenOpen : 'Brackets', txtBracket_Square_CloseClose : 'Brackets', txtBracket_Square_CloseOpen : 'Brackets', txtBracket_SquareDouble : 'Brackets', txtBracket_Round_Delimiter_2 : 'Brackets with Separators', txtBracket_Curve_Delimiter_2 : 'Brackets with Separators', txtBracket_Angle_Delimiter_2 : 'Brackets with Separators', txtBracket_Angle_Delimiter_3 : 'Brackets with Separators', txtBracket_Round_OpenNone : 'Single Bracket', txtBracket_Round_NoneOpen : 'Single Bracket', txtBracket_Square_OpenNone : 'Single Bracket', txtBracket_Square_NoneOpen : 'Single Bracket', txtBracket_Curve_OpenNone : 'Single Bracket', txtBracket_Curve_NoneOpen : 'Single Bracket', txtBracket_Angle_OpenNone : 'Single Bracket', txtBracket_Angle_NoneOpen : 'Single Bracket', txtBracket_LowLim_OpenNone : 'Single Bracket', txtBracket_LowLim_NoneNone : 'Single Bracket', txtBracket_UppLim_OpenNone : 'Single Bracket', txtBracket_UppLim_NoneOpen : 'Single Bracket', txtBracket_Line_OpenNone : 'Single Bracket', txtBracket_Line_NoneOpen : 'Single Bracket', txtBracket_LineDouble_OpenNone : 'Single Bracket', txtBracket_LineDouble_NoneOpen : 'Single Bracket', txtBracket_SquareDouble_OpenNone : 'Single Bracket', txtBracket_SquareDouble_NoneOpen : 'Single Bracket', txtBracket_Custom_1 : 'Case (Two Conditions)', txtBracket_Custom_2 : 'Cases (Three Conditions)', txtBracket_Custom_3 : 'Stack Object', txtBracket_Custom_4 : 'Stack Object', txtBracket_Custom_5 : 'Cases Example', txtBracket_Custom_6 : 'Binomial Coefficient', txtBracket_Custom_7 : 'Binomial Coefficient', txtFunction_Sin : 'Sine Function', txtFunction_Cos : 'Cosine Function', txtFunction_Tan : 'Tangent Function', txtFunction_Csc : 'Cosecant Function', txtFunction_Sec : 'Secant Function', txtFunction_Cot : 'Cotangent Function', txtFunction_1_Sin : 'Inverse Sine Function', txtFunction_1_Cos : 'Inverse Cosine Function', txtFunction_1_Tan : 'Inverse Tangent Function', txtFunction_1_Csc : 'Inverse Cosecant Function', txtFunction_1_Sec : 'Inverse Secant Function', txtFunction_1_Cot : 'Inverse Cotangent Function', txtFunction_Sinh : 'Hyperbolic Sine Function', txtFunction_Cosh : 'Hyperbolic Cosine Function', txtFunction_Tanh : 'Hyperbolic Tangent Function', txtFunction_Csch : 'Hyperbolic Cosecant Function', txtFunction_Sech : 'Hyperbolic Secant Function', txtFunction_Coth : 'Hyperbolic Cotangent Function', txtFunction_1_Sinh : 'Hyperbolic Inverse Sine Function', txtFunction_1_Cosh : 'Hyperbolic Inverse Cosine Function', txtFunction_1_Tanh : 'Hyperbolic Inverse Tangent Function', txtFunction_1_Csch : 'Hyperbolic Inverse Cosecant Function', txtFunction_1_Sech : 'Hyperbolic Inverse Secant Function', txtFunction_1_Coth : 'Hyperbolic Inverse Cotangent Function', txtFunction_Custom_1 : 'Sine theta', txtFunction_Custom_2 : 'Cos 2x', txtFunction_Custom_3 : 'Tangent formula', txtAccent_Dot : 'Dot', txtAccent_DDot : 'Double Dot', txtAccent_DDDot : 'Triple Dot', txtAccent_Hat : 'Hat', txtAccent_Check : 'Check', txtAccent_Accent : 'Acute', txtAccent_Grave : 'Grave', txtAccent_Smile : 'Breve', txtAccent_Tilde : 'Tilde', txtAccent_Bar : 'Bar', txtAccent_DoubleBar : 'Double Overbar', txtAccent_CurveBracketTop : 'Overbrace', txtAccent_CurveBracketBot : 'Underbrace', txtAccent_GroupTop : 'Grouping Character Above', txtAccent_GroupBot : 'Grouping Character Below', txtAccent_ArrowL : 'Leftwards Arrow Above', txtAccent_ArrowR : 'Rightwards Arrow Above', txtAccent_ArrowD : 'Right-Left Arrow Above', txtAccent_HarpoonL : 'Leftwards Harpoon Above', txtAccent_HarpoonR : 'Rightwards Harpoon Above', txtAccent_BorderBox : 'Boxed Formula (With Placeholder)', txtAccent_BorderBoxCustom : 'Boxed Formula (Example)', txtAccent_BarTop : 'Overbar', txtAccent_BarBot : 'Underbar', txtAccent_Custom_1 : 'Vector A', txtAccent_Custom_2 : 'ABC With Overbar', txtAccent_Custom_3 : 'x XOR y With Overbar', txtLimitLog_LogBase : 'Logarithm', txtLimitLog_Log : 'Logarithm', txtLimitLog_Lim : 'Limit', txtLimitLog_Min : 'Minimum', txtLimitLog_Max : 'Maximum', txtLimitLog_Ln : 'Natural Logarithm', txtLimitLog_Custom_1 : 'Limit Example', txtLimitLog_Custom_2 : 'Maximum Example', txtOperator_ColonEquals : 'Colon Equal', txtOperator_EqualsEquals : 'Equal Equal', txtOperator_PlusEquals : 'Plus Equal', txtOperator_MinusEquals : 'Minus Equal', txtOperator_Definition : 'Equal to By Definition', txtOperator_UnitOfMeasure : 'Measured By', txtOperator_DeltaEquals : 'Delta Equal To', txtOperator_ArrowL_Top : 'Leftwards Arrow Above', txtOperator_ArrowR_Top : 'Rightwards Arrow Above', txtOperator_ArrowL_Bot : 'Leftwards Arrow Below', txtOperator_ArrowR_Bot : 'Rightwards Arrow Below', txtOperator_DoubleArrowL_Top : 'Leftwards Arrow Above', txtOperator_DoubleArrowR_Top : 'Rightwards Arrow Above', txtOperator_DoubleArrowL_Bot : 'Leftwards Arrow Below', txtOperator_DoubleArrowR_Bot : 'Rightwards Arrow Below', txtOperator_ArrowD_Top : 'Right-Left Arrow Above', txtOperator_ArrowD_Bot : 'Right-Left Arrow Above', txtOperator_DoubleArrowD_Top : 'Right-Left Arrow Below', txtOperator_DoubleArrowD_Bot : 'Right-Left Arrow Below', txtOperator_Custom_1 : 'Yileds', txtOperator_Custom_2 : 'Delta Yields', txtMatrix_1_2 : '1x2 Empty Matrix', txtMatrix_2_1 : '2x1 Empty Matrix', txtMatrix_1_3 : '1x3 Empty Matrix', txtMatrix_3_1 : '3x1 Empty Matrix', txtMatrix_2_2 : '2x2 Empty Matrix', txtMatrix_2_3 : '2x3 Empty Matrix', txtMatrix_3_2 : '3x2 Empty Matrix', txtMatrix_3_3 : '3x3 Empty Matrix', txtMatrix_Dots_Center : 'Midline Dots', txtMatrix_Dots_Baseline : 'Baseline Dots', txtMatrix_Dots_Vertical : 'Vertical Dots', txtMatrix_Dots_Diagonal : 'Diagonal Dots', txtMatrix_Identity_2 : '2x2 Identity Matrix', txtMatrix_Identity_2_NoZeros : '3x3 Identity Matrix', txtMatrix_Identity_3 : '3x3 Identity Matrix', txtMatrix_Identity_3_NoZeros : '3x3 Identity Matrix', txtMatrix_2_2_RoundBracket : 'Empty Matrix with Brackets', txtMatrix_2_2_SquareBracket : 'Empty Matrix with Brackets', txtMatrix_2_2_LineBracket : 'Empty Matrix with Brackets', txtMatrix_2_2_DLineBracket : 'Empty Matrix with Brackets', txtMatrix_Flat_Round : 'Sparse Matrix', txtMatrix_Flat_Square : 'Sparse Matrix', txtExpandSort: 'The data next to the selection will not be sorted. Do you want to expand the selection to include the adjacent data or continue with sorting the currently selected cells only?', txtExpand: 'Expand and sort', txtSorting: 'Sorting', txtSortSelected: 'Sort selected', textLongOperation: 'Long operation', warnLongOperation: 'The operation you are about to perform might take rather much time to complete.
Are you sure you want to continue?', txtInvalidRange: 'ERROR! Invalid cells range', errorMaxRows: 'ERROR! The maximum number of data series per chart is 255.', errorStockChart: 'Incorrect row order. To build a stock chart place the data on the sheet in the following order:
opening price, max price, min price, closing price.', textPivot: 'Pivot Table', txtTable_TableStyleMedium: 'Table Style Medium', txtTable_TableStyleDark: 'Table Style Dark', txtTable_TableStyleLight: 'Table Style Light', textInsert: 'Insert' }, SSE.Controllers.Toolbar || {})); });