2016-04-01 13:17:09 +00:00
/ *
*
2019-01-17 13:05:03 +00:00
* ( c ) Copyright Ascensio System SIA 2010 - 2019
2016-04-01 13:17:09 +00:00
*
* 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
*
2019-01-17 13:00:34 +00:00
* You can contact Ascensio System SIA at 20 A - 12 Ernesta Birznieka - Upisha
* street , Riga , Latvia , EU , LV - 1050.
2016-04-01 13:17:09 +00:00
*
* 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
*
* /
2016-03-11 00:48:53 +00:00
/ * *
* Toolbar . js
*
* Toolbar Controller
*
* Created by Alexander Yuzhin on 1 / 15 / 14
2018-03-01 12:16:38 +00:00
* Copyright ( c ) 2018 Ascensio System SIA . All rights reserved .
2016-03-11 00:48:53 +00:00
*
* /
define ( [
'core' ,
'common/main/lib/component/Window' ,
'common/main/lib/view/CopyWarningDialog' ,
'common/main/lib/view/ImageFromUrlDialog' ,
'common/main/lib/view/InsertTableDialog' ,
2018-10-03 11:00:08 +00:00
'common/main/lib/view/SelectFileDlg' ,
2019-11-08 08:34:53 +00:00
'common/main/lib/view/SymbolTableDialog' ,
2016-10-21 10:54:36 +00:00
'common/main/lib/util/define' ,
2016-03-11 00:48:53 +00:00
'documenteditor/main/app/view/Toolbar' ,
'documenteditor/main/app/view/DropcapSettingsAdvanced' ,
'documenteditor/main/app/view/StyleTitleDialog' ,
'documenteditor/main/app/view/PageMarginsDialog' ,
2016-12-19 11:44:02 +00:00
'documenteditor/main/app/view/PageSizeDialog' ,
2017-06-23 14:27:20 +00:00
'documenteditor/main/app/controller/PageLayout' ,
2017-12-12 11:14:27 +00:00
'documenteditor/main/app/view/CustomColumnsDialog' ,
2019-04-05 11:28:51 +00:00
'documenteditor/main/app/view/ControlSettingsDialog' ,
2019-08-14 08:07:24 +00:00
'documenteditor/main/app/view/WatermarkSettingsDialog' ,
2020-03-12 08:53:39 +00:00
'documenteditor/main/app/view/ListSettingsDialog' ,
2019-09-18 13:12:39 +00:00
'documenteditor/main/app/view/DateTimeDialog' ,
2021-04-15 21:32:56 +00:00
'documenteditor/main/app/view/LineNumbersDialog' ,
'documenteditor/main/app/view/TextToTableDialog'
2016-03-11 00:48:53 +00:00
] , function ( ) {
'use strict' ;
DE . Controllers . Toolbar = Backbone . Controller . extend ( _ . extend ( {
models : [ ] ,
collections : [ ] ,
2017-04-04 15:43:19 +00:00
controllers : [ ] ,
2016-03-11 00:48:53 +00:00
views : [
'Toolbar'
] ,
initialize : function ( ) {
this . _state = {
activated : false ,
bullets : {
type : undefined ,
subtype : undefined
} ,
prstyle : undefined ,
prcontrolsdisable : undefined ,
2016-04-05 11:52:34 +00:00
dropcap : Asc . c _oAscDropCap . None ,
2016-03-11 00:48:53 +00:00
clrhighlight : undefined ,
clrtext : undefined ,
pgsize : [ 0 , 0 ] ,
linespace : undefined ,
pralign : undefined ,
clrback : undefined ,
valign : undefined ,
can _undo : undefined ,
can _redo : undefined ,
bold : undefined ,
italic : undefined ,
strike : undefined ,
underline : undefined ,
pgorient : undefined ,
lock _doc : undefined ,
can _copycut : undefined ,
pgmargins : undefined ,
fontsize : undefined ,
2016-12-27 09:34:08 +00:00
in _equation : false ,
2020-09-28 20:49:46 +00:00
in _chart : false ,
2020-09-29 09:42:16 +00:00
linenum _apply : Asc . c _oAscSectionApplyType . All ,
suppress _num : undefined
2016-03-11 00:48:53 +00:00
} ;
this . flg = { } ;
this . diagramEditor = null ;
this . _isAddingShape = false ;
this . editMode = true ;
2019-08-21 14:08:21 +00:00
this . binding = { } ;
2016-03-11 00:48:53 +00:00
this . addListeners ( {
'Toolbar' : {
2017-04-22 12:42:52 +00:00
'insert:break' : this . onClickPageBreak ,
2018-03-05 09:28:37 +00:00
'change:compact' : this . onClickChangeCompact ,
2019-08-30 14:55:29 +00:00
'home:open' : this . onHomeOpen ,
2019-09-03 10:32:06 +00:00
'add:chart' : this . onSelectChart ,
'insert:textart' : this . onInsertTextart
2017-04-10 13:39:03 +00:00
} ,
'FileMenu' : {
2017-04-27 14:34:34 +00:00
'menu:hide' : this . onFileMenu . bind ( this , 'hide' ) ,
'menu:show' : this . onFileMenu . bind ( this , 'show' )
2017-07-13 09:43:40 +00:00
} ,
'Common.Views.Header' : {
2018-03-21 11:28:28 +00:00
'toolbar:setcompact' : this . onChangeCompactView . bind ( this ) ,
2017-08-23 11:51:27 +00:00
'print' : function ( opts ) {
var _main = this . getApplication ( ) . getController ( 'Main' ) ;
_main . onPrint ( ) ;
} ,
2018-01-24 10:57:58 +00:00
'save' : function ( opts ) {
this . api . asc _Save ( ) ;
} ,
'undo' : this . onUndo ,
'redo' : this . onRedo ,
2017-07-13 09:43:40 +00:00
'downloadas' : function ( opts ) {
2017-07-21 14:55:27 +00:00
var _main = this . getApplication ( ) . getController ( 'Main' ) ;
var _file _type = _main . document . fileType ,
_format ;
if ( ! ! _file _type ) {
2021-09-24 10:22:40 +00:00
if ( /^pdf|xps|oxps|djvu/i . test ( _file _type ) ) {
2017-08-23 11:51:27 +00:00
_main . api . asc _DownloadOrigin ( ) ;
2017-07-21 14:55:27 +00:00
return ;
} else {
_format = Asc . c _oAscFileType [ _file _type . toUpperCase ( ) ] ;
}
}
var _supported = [
Asc . c _oAscFileType . TXT ,
Asc . c _oAscFileType . RTF ,
Asc . c _oAscFileType . ODT ,
Asc . c _oAscFileType . DOCX ,
2018-07-18 11:07:24 +00:00
Asc . c _oAscFileType . HTML ,
2019-02-21 13:10:37 +00:00
Asc . c _oAscFileType . PDFA ,
Asc . c _oAscFileType . DOTX ,
2021-02-08 18:22:14 +00:00
Asc . c _oAscFileType . OTT ,
Asc . c _oAscFileType . FB2 ,
2021-07-29 15:52:37 +00:00
Asc . c _oAscFileType . EPUB ,
2021-10-08 17:14:28 +00:00
Asc . c _oAscFileType . DOCM ,
Asc . c _oAscFileType . DOCXF ,
Asc . c _oAscFileType . OFORM
2017-07-21 14:55:27 +00:00
] ;
if ( ! _format || _supported . indexOf ( _format ) < 0 )
_format = Asc . c _oAscFileType . PDF ;
2019-07-24 08:36:13 +00:00
_main . api . asc _DownloadAs ( new Asc . asc _CDownloadOptions ( _format ) ) ;
2017-07-21 14:55:27 +00:00
} ,
2017-07-21 10:41:56 +00:00
'go:editor' : function ( ) {
Common . Gateway . requestEditRights ( ) ;
}
2016-03-11 00:48:53 +00:00
}
} ) ;
var me = this ;
var checkInsertAutoshape = function ( e ) {
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 ( cmp . attr ( 'id' ) != 'editor_sdk' && cmp _sdk . length <= 0 ) {
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 . StartAddShape ( '' , false ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
} , 100 ) ;
}
}
} ;
this . onApiEndAddShape = function ( ) {
this . toolbar . fireEvent ( 'insertshape' , this . toolbar ) ;
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 ) ;
} ;
this . _addAutoshape = function ( isstart , type ) {
if ( this . api ) {
if ( isstart ) {
this . api . StartAddShape ( type , true ) ;
$ ( document . body ) . on ( 'mouseup' , checkInsertAutoshape ) ;
} else {
this . api . StartAddShape ( '' , false ) ;
$ ( document . body ) . off ( 'mouseup' , checkInsertAutoshape ) ;
}
}
} ;
// Common.NotificationCenter.on('menu:afterkeydown', _.bind(this.onAfterKeydownMenu, this));
Common . NotificationCenter . on ( 'style:commitsave' , _ . bind ( this . onSaveStyle , this ) ) ;
Common . NotificationCenter . on ( 'style:commitchange' , _ . bind ( this . onUpdateStyle , this ) ) ;
} ,
onLaunch : function ( ) {
2017-03-29 11:19:57 +00:00
var me = this ;
2016-03-11 00:48:53 +00:00
// Create toolbar view
this . toolbar = this . createView ( 'Toolbar' ) ;
2017-03-29 11:19:57 +00:00
me . toolbar . on ( 'render:before' , function ( cmp ) {
} ) ;
2017-03-29 16:29:04 +00:00
Common . NotificationCenter . on ( 'app:ready' , me . onAppReady . bind ( me ) ) ;
2017-04-04 15:22:02 +00:00
Common . NotificationCenter . on ( 'app:face' , me . onAppShowed . bind ( me ) ) ;
2016-03-11 00:48:53 +00:00
} ,
2018-05-15 12:37:26 +00:00
setMode : function ( mode ) {
this . mode = mode ;
this . toolbar . applyLayout ( mode ) ;
} ,
2017-04-24 11:41:51 +00:00
attachUIEvents : function ( toolbar ) {
2016-03-11 00:48:53 +00:00
/ * *
* UI Events
* /
toolbar . btnPrint . on ( 'click' , _ . bind ( this . onPrint , this ) ) ;
2018-09-25 14:09:59 +00:00
toolbar . btnPrint . on ( 'disabled' , _ . bind ( this . onBtnChangeState , this , 'print:disabled' ) ) ;
2016-03-11 00:48:53 +00:00
toolbar . btnSave . on ( 'click' , _ . bind ( this . onSave , this ) ) ;
toolbar . btnUndo . on ( 'click' , _ . bind ( this . onUndo , this ) ) ;
2018-02-15 23:56:17 +00:00
toolbar . btnUndo . on ( 'disabled' , _ . bind ( this . onBtnChangeState , this , 'undo:disabled' ) ) ;
2016-03-11 00:48:53 +00:00
toolbar . btnRedo . on ( 'click' , _ . bind ( this . onRedo , this ) ) ;
2018-02-15 23:56:17 +00:00
toolbar . btnRedo . on ( 'disabled' , _ . bind ( this . onBtnChangeState , this , 'redo:disabled' ) ) ;
2016-03-11 00:48:53 +00:00
toolbar . btnCopy . on ( 'click' , _ . bind ( this . onCopyPaste , this , true ) ) ;
toolbar . btnPaste . on ( 'click' , _ . bind ( this . onCopyPaste , this , false ) ) ;
toolbar . btnIncFontSize . on ( 'click' , _ . bind ( this . onIncrease , this ) ) ;
toolbar . btnDecFontSize . on ( 'click' , _ . bind ( this . onDecrease , this ) ) ;
2021-01-18 13:41:49 +00:00
toolbar . mnuChangeCase . on ( 'item:click' , _ . bind ( this . onChangeCase , this ) ) ;
2016-03-11 00:48:53 +00:00
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 . btnSuperscript . on ( 'click' , _ . bind ( this . onSuperscript , this ) ) ;
toolbar . btnSubscript . on ( 'click' , _ . bind ( this . onSubscript , this ) ) ;
toolbar . btnAlignLeft . on ( 'click' , _ . bind ( this . onHorizontalAlign , this , 1 ) ) ;
toolbar . btnAlignCenter . on ( 'click' , _ . bind ( this . onHorizontalAlign , this , 2 ) ) ;
toolbar . btnAlignRight . on ( 'click' , _ . bind ( this . onHorizontalAlign , this , 0 ) ) ;
toolbar . btnAlignJust . on ( 'click' , _ . bind ( this . onHorizontalAlign , this , 3 ) ) ;
toolbar . btnDecLeftOffset . on ( 'click' , _ . bind ( this . onDecOffset , this ) ) ;
toolbar . btnIncLeftOffset . on ( 'click' , _ . bind ( this . onIncOffset , this ) ) ;
toolbar . btnMarkers . on ( 'click' , _ . bind ( this . onMarkers , this ) ) ;
toolbar . btnNumbers . on ( 'click' , _ . bind ( this . onNumbers , this ) ) ;
toolbar . cmbFontName . on ( 'selected' , _ . bind ( this . onFontNameSelect , this ) ) ;
toolbar . cmbFontName . on ( 'show:after' , _ . bind ( this . onComboOpen , this , true ) ) ;
2016-07-08 09:12:09 +00:00
toolbar . cmbFontName . on ( 'hide:after' , _ . bind ( this . onHideMenus , this ) ) ;
2016-03-11 00:48:53 +00:00
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 ( 'combo:blur' , _ . bind ( this . onComboBlur , this ) ) ;
toolbar . cmbFontSize . on ( 'combo:focusin' , _ . bind ( this . onComboOpen , this , false ) ) ;
toolbar . cmbFontSize . on ( 'show:after' , _ . bind ( this . onComboOpen , this , true ) ) ;
2016-07-08 09:12:09 +00:00
toolbar . cmbFontSize . on ( 'hide:after' , _ . bind ( this . onHideMenus , this ) ) ;
2016-03-11 00:48:53 +00:00
toolbar . mnuMarkersPicker . on ( 'item:click' , _ . bind ( this . onSelectBullets , this , toolbar . btnMarkers ) ) ;
toolbar . mnuNumbersPicker . on ( 'item:click' , _ . bind ( this . onSelectBullets , this , toolbar . btnNumbers ) ) ;
toolbar . mnuMultilevelPicker . on ( 'item:click' , _ . bind ( this . onSelectBullets , this , toolbar . btnMultilevels ) ) ;
2021-04-01 15:57:00 +00:00
toolbar . btnMarkers . menu . on ( 'show:after' , _ . bind ( this . onListShowAfter , this , 0 , toolbar . mnuMarkersPicker ) ) ;
toolbar . btnNumbers . menu . on ( 'show:after' , _ . bind ( this . onListShowAfter , this , 1 , toolbar . mnuNumbersPicker ) ) ;
toolbar . btnMultilevels . menu . on ( 'show:after' , _ . bind ( this . onListShowAfter , this , 2 , toolbar . mnuMultilevelPicker ) ) ;
2019-12-04 07:05:29 +00:00
toolbar . mnuMarkerSettings . on ( 'click' , _ . bind ( this . onMarkerSettingsClick , this , 0 ) ) ;
2019-12-17 11:52:30 +00:00
toolbar . mnuNumberSettings . on ( 'click' , _ . bind ( this . onMarkerSettingsClick , this , 1 ) ) ;
2019-12-17 14:25:12 +00:00
toolbar . mnuMultilevelSettings . on ( 'click' , _ . bind ( this . onMarkerSettingsClick , this , 2 ) ) ;
2021-02-03 07:32:18 +00:00
toolbar . mnuMarkerChangeLevel && toolbar . mnuMarkerChangeLevel . menu &&
toolbar . mnuMarkerChangeLevel . menu . on ( 'show:after' , _ . bind ( this . onChangeLevelShowAfter , this , 0 ) ) ;
toolbar . mnuMarkerChangeLevel . menu . on ( 'item:click' , _ . bind ( this . onChangeLevelClick , this , 0 ) ) ;
toolbar . mnuNumberChangeLevel && toolbar . mnuNumberChangeLevel . menu &&
toolbar . mnuNumberChangeLevel . menu . on ( 'show:after' , _ . bind ( this . onChangeLevelShowAfter , this , 1 ) ) ;
toolbar . mnuNumberChangeLevel . menu . on ( 'item:click' , _ . bind ( this . onChangeLevelClick , this , 1 ) ) ;
2021-04-22 09:13:54 +00:00
toolbar . mnuMultiChangeLevel && toolbar . mnuMultiChangeLevel . menu &&
toolbar . mnuMultiChangeLevel . menu . on ( 'show:after' , _ . bind ( this . onChangeLevelShowAfter , this , 2 ) ) ;
toolbar . mnuMultiChangeLevel . menu . on ( 'item:click' , _ . bind ( this . onChangeLevelClick , this , 2 ) ) ;
2016-03-11 00:48:53 +00:00
toolbar . btnHighlightColor . on ( 'click' , _ . bind ( this . onBtnHighlightColor , this ) ) ;
toolbar . btnFontColor . on ( 'click' , _ . bind ( this . onBtnFontColor , this ) ) ;
2021-07-10 19:52:39 +00:00
toolbar . btnFontColor . on ( 'color:select' , _ . bind ( this . onSelectFontColor , this ) ) ;
toolbar . btnFontColor . on ( 'auto:select' , _ . bind ( this . onAutoFontColor , this ) ) ;
2016-03-11 00:48:53 +00:00
toolbar . btnParagraphColor . on ( 'click' , _ . bind ( this . onBtnParagraphColor , this ) ) ;
2021-07-10 19:52:39 +00:00
toolbar . btnParagraphColor . on ( 'color:select' , _ . bind ( this . onParagraphColorPickerSelect , this ) ) ;
2016-03-11 00:48:53 +00:00
toolbar . mnuHighlightColorPicker . on ( 'select' , _ . bind ( this . onSelectHighlightColor , this ) ) ;
toolbar . mnuHighlightTransparent . on ( 'click' , _ . bind ( this . onHighlightTransparentClick , this ) ) ;
toolbar . mnuLineSpace . on ( 'item:toggle' , _ . bind ( this . onLineSpaceToggle , this ) ) ;
toolbar . mnuNonPrinting . on ( 'item:toggle' , _ . bind ( this . onMenuNonPrintingToggle , this ) ) ;
toolbar . btnShowHidenChars . on ( 'toggle' , _ . bind ( this . onNonPrintingToggle , this ) ) ;
toolbar . mnuTablePicker . on ( 'select' , _ . bind ( this . onTablePickerSelect , this ) ) ;
toolbar . mnuInsertTable . on ( 'item:click' , _ . bind ( this . onInsertTableClick , this ) ) ;
2021-08-04 15:08:17 +00:00
toolbar . mnuInsertTable . on ( 'show:after' , _ . bind ( this . onInsertTableShow , this ) ) ;
2016-03-11 00:48:53 +00:00
toolbar . mnuInsertImage . on ( 'item:click' , _ . bind ( this . onInsertImageClick , this ) ) ;
toolbar . btnInsertText . on ( 'click' , _ . bind ( this . onBtnInsertTextClick , this ) ) ;
toolbar . btnInsertShape . menu . on ( 'hide:after' , _ . bind ( this . onInsertShapeHide , this ) ) ;
toolbar . btnDropCap . menu . on ( 'item:click' , _ . bind ( this . onDropCapSelect , this ) ) ;
2017-12-12 11:14:27 +00:00
toolbar . btnContentControls . menu . on ( 'item:click' , _ . bind ( this . onControlsSelect , this ) ) ;
2020-09-21 21:01:04 +00:00
toolbar . mnuDropCapAdvanced . on ( 'click' , _ . bind ( this . onDropCapAdvancedClick , this , false ) ) ;
2016-03-11 00:48:53 +00:00
toolbar . btnColumns . menu . on ( 'item:click' , _ . bind ( this . onColumnsSelect , this ) ) ;
2016-07-04 13:04:05 +00:00
toolbar . btnPageOrient . menu . on ( 'item:click' , _ . bind ( this . onPageOrientSelect , this ) ) ;
2016-03-11 00:48:53 +00:00
toolbar . btnPageMargins . menu . on ( 'item:click' , _ . bind ( this . onPageMarginsSelect , this ) ) ;
2019-04-05 11:28:51 +00:00
toolbar . btnWatermark . menu . on ( 'item:click' , _ . bind ( this . onWatermarkSelect , this ) ) ;
2016-03-11 00:48:53 +00:00
toolbar . btnClearStyle . on ( 'click' , _ . bind ( this . onClearStyleClick , this ) ) ;
toolbar . btnCopyStyle . on ( 'toggle' , _ . bind ( this . onCopyStyleToggle , this ) ) ;
toolbar . mnuPageSize . on ( 'item:click' , _ . bind ( this . onPageSizeClick , this ) ) ;
toolbar . mnuColorSchema . on ( 'item:click' , _ . bind ( this . onColorSchemaClick , this ) ) ;
2019-08-20 12:56:29 +00:00
toolbar . mnuColorSchema . on ( 'show:after' , _ . bind ( this . onColorSchemaShow , this ) ) ;
2021-08-26 20:56:09 +00:00
toolbar . mnuMailRecepients . on ( 'item:click' , _ . bind ( this . onSelectRecepientsClick , this ) ) ;
2016-03-11 00:48:53 +00:00
toolbar . mnuPageNumberPosPicker . on ( 'item:click' , _ . bind ( this . onInsertPageNumberClick , this ) ) ;
toolbar . btnEditHeader . menu . on ( 'item:click' , _ . bind ( this . onEditHeaderFooterClick , this ) ) ;
2020-03-03 08:08:15 +00:00
toolbar . btnInsDateTime . on ( 'click' , _ . bind ( this . onInsDateTimeClick , this ) ) ;
2016-03-11 00:48:53 +00:00
toolbar . mnuPageNumCurrentPos . on ( 'click' , _ . bind ( this . onPageNumCurrentPosClick , this ) ) ;
2016-10-04 12:05:12 +00:00
toolbar . mnuInsertPageCount . on ( 'click' , _ . bind ( this . onInsertPageCountClick , this ) ) ;
2018-11-20 09:57:29 +00:00
toolbar . btnBlankPage . on ( 'click' , _ . bind ( this . onBtnBlankPageClick , this ) ) ;
2016-03-11 00:48:53 +00:00
toolbar . listStyles . on ( 'click' , _ . bind ( this . onListStyleSelect , this ) ) ;
toolbar . listStyles . on ( 'contextmenu' , _ . bind ( this . onListStyleContextMenu , this ) ) ;
toolbar . styleMenu . on ( 'hide:before' , _ . bind ( this . onListStyleBeforeHide , this ) ) ;
toolbar . btnInsertEquation . on ( 'click' , _ . bind ( this . onInsertEquationClick , this ) ) ;
2019-11-08 08:34:53 +00:00
toolbar . btnInsertSymbol . on ( 'click' , _ . bind ( this . onInsertSymbolClick , this ) ) ;
2018-07-23 14:39:53 +00:00
toolbar . mnuNoControlsColor . on ( 'click' , _ . bind ( this . onNoControlsColor , this ) ) ;
toolbar . mnuControlsColorPicker . on ( 'select' , _ . bind ( this . onSelectControlsColor , this ) ) ;
2019-09-18 13:12:39 +00:00
toolbar . btnLineNumbers . menu . on ( 'item:click' , _ . bind ( this . onLineNumbersSelect , this ) ) ;
2020-09-29 09:42:16 +00:00
toolbar . btnLineNumbers . menu . on ( 'show:after' , _ . bind ( this . onLineNumbersShow , this ) ) ;
2019-07-26 11:49:53 +00:00
Common . Gateway . on ( 'insertimage' , _ . bind ( this . insertImage , this ) ) ;
2019-07-29 10:40:07 +00:00
Common . Gateway . on ( 'setmailmergerecipients' , _ . bind ( this . setMailMergeRecipients , this ) ) ;
2018-07-23 14:39:53 +00:00
$ ( '#id-toolbar-menu-new-control-color' ) . on ( 'click' , _ . bind ( this . onNewControlsColor , this ) ) ;
2021-09-16 09:36:12 +00:00
toolbar . listStylesAdditionalMenuItem . on ( 'click' , this . onMenuSaveStyle . bind ( this ) ) ;
2016-03-11 00:48:53 +00:00
this . onSetupCopyStyleButton ( ) ;
2020-06-09 20:18:44 +00:00
this . onBtnChangeState ( 'undo:disabled' , toolbar . btnUndo , toolbar . btnUndo . isDisabled ( ) ) ;
this . onBtnChangeState ( 'redo:disabled' , toolbar . btnRedo , toolbar . btnRedo . isDisabled ( ) ) ;
2016-03-11 00:48:53 +00:00
} ,
setApi : function ( api ) {
this . api = api ;
2019-03-28 08:47:51 +00:00
if ( this . mode . isEdit ) {
this . toolbar . setApi ( api ) ;
this . api . asc _registerCallback ( 'asc_onFontSize' , _ . bind ( this . onApiFontSize , this ) ) ;
this . api . asc _registerCallback ( 'asc_onBold' , _ . bind ( this . onApiBold , this ) ) ;
this . api . asc _registerCallback ( 'asc_onItalic' , _ . bind ( this . onApiItalic , this ) ) ;
this . api . asc _registerCallback ( 'asc_onUnderline' , _ . bind ( this . onApiUnderline , this ) ) ;
this . api . asc _registerCallback ( 'asc_onStrikeout' , _ . bind ( this . onApiStrikeout , this ) ) ;
this . api . asc _registerCallback ( 'asc_onVerticalAlign' , _ . bind ( this . onApiVerticalAlign , this ) ) ;
this . api . asc _registerCallback ( 'asc_onCanUndo' , _ . bind ( this . onApiCanRevert , this , 'undo' ) ) ;
this . api . asc _registerCallback ( 'asc_onCanRedo' , _ . bind ( this . onApiCanRevert , this , 'redo' ) ) ;
this . api . asc _registerCallback ( 'asc_onListType' , _ . bind ( this . onApiBullets , this ) ) ;
this . api . asc _registerCallback ( 'asc_onPrAlign' , _ . bind ( this . onApiParagraphAlign , this ) ) ;
this . api . asc _registerCallback ( 'asc_onTextColor' , _ . bind ( this . onApiTextColor , this ) ) ;
this . api . asc _registerCallback ( 'asc_onParaSpacingLine' , _ . bind ( this . onApiLineSpacing , this ) ) ;
this . api . asc _registerCallback ( 'asc_onFocusObject' , _ . bind ( this . onApiFocusObject , this ) ) ;
this . api . asc _registerCallback ( 'asc_onDocSize' , _ . bind ( this . onApiPageSize , this ) ) ;
this . api . asc _registerCallback ( 'asc_onPaintFormatChanged' , _ . bind ( this . onApiStyleChange , this ) ) ;
this . api . asc _registerCallback ( 'asc_onParaStyleName' , _ . bind ( this . onApiParagraphStyleChange , this ) ) ;
this . api . asc _registerCallback ( 'asc_onEndAddShape' , _ . bind ( this . onApiEndAddShape , this ) ) ; //for shapes
this . api . asc _registerCallback ( 'asc_onPageOrient' , _ . bind ( this . onApiPageOrient , this ) ) ;
this . api . asc _registerCallback ( 'asc_onLockDocumentProps' , _ . bind ( this . onApiLockDocumentProps , this ) ) ;
this . api . asc _registerCallback ( 'asc_onUnLockDocumentProps' , _ . bind ( this . onApiUnLockDocumentProps , this ) ) ;
this . api . asc _registerCallback ( 'asc_onLockDocumentSchema' , _ . bind ( this . onApiLockDocumentSchema , this ) ) ;
this . api . asc _registerCallback ( 'asc_onUnLockDocumentSchema' , _ . bind ( this . onApiUnLockDocumentSchema , this ) ) ;
this . api . asc _registerCallback ( 'asc_onLockHeaderFooters' , _ . bind ( this . onApiLockHeaderFooters , this ) ) ;
this . api . asc _registerCallback ( 'asc_onUnLockHeaderFooters' , _ . bind ( this . onApiUnLockHeaderFooters , this ) ) ;
this . api . asc _registerCallback ( 'asc_onZoomChange' , _ . bind ( this . onApiZoomChange , this ) ) ;
this . api . asc _registerCallback ( 'asc_onMarkerFormatChanged' , _ . bind ( this . onApiStartHighlight , this ) ) ;
this . api . asc _registerCallback ( 'asc_onTextHighLight' , _ . bind ( this . onApiHighlightColor , 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_onCanCopyCut' , _ . bind ( this . onApiCanCopyCut , this ) ) ;
2019-08-15 13:51:48 +00:00
this . api . asc _registerCallback ( 'asc_onMathTypes' , _ . bind ( this . onApiMathTypes , this ) ) ;
2019-03-28 08:47:51 +00:00
this . api . asc _registerCallback ( 'asc_onColumnsProps' , _ . bind ( this . onColumnsProps , this ) ) ;
this . api . asc _registerCallback ( 'asc_onSectionProps' , _ . bind ( this . onSectionProps , this ) ) ;
2020-09-27 20:44:54 +00:00
this . api . asc _registerCallback ( 'asc_onLineNumbersProps' , _ . bind ( this . onLineNumbersProps , this ) ) ;
2019-03-28 08:47:51 +00:00
this . api . asc _registerCallback ( 'asc_onContextMenu' , _ . bind ( this . onContextMenu , this ) ) ;
this . api . asc _registerCallback ( 'asc_onShowParaMarks' , _ . bind ( this . onShowParaMarks , this ) ) ;
this . api . asc _registerCallback ( 'asc_onChangeSdtGlobalSettings' , _ . bind ( this . onChangeSdtGlobalSettings , this ) ) ;
2019-11-06 11:15:23 +00:00
this . api . asc _registerCallback ( 'asc_onTextLanguage' , _ . bind ( this . onTextLanguage , this ) ) ;
2019-05-28 09:42:45 +00:00
Common . NotificationCenter . on ( 'fonts:change' , _ . bind ( this . onApiChangeFont , this ) ) ;
2019-11-21 14:44:29 +00:00
this . api . asc _registerCallback ( 'asc_onTableDrawModeChanged' , _ . bind ( this . onTableDraw , this ) ) ;
this . api . asc _registerCallback ( 'asc_onTableEraseModeChanged' , _ . bind ( this . onTableErase , this ) ) ;
2020-05-13 09:47:45 +00:00
Common . NotificationCenter . on ( 'storage:image-load' , _ . bind ( this . openImageFromStorage , this ) ) ;
Common . NotificationCenter . on ( 'storage:image-insert' , _ . bind ( this . insertImageFromStorage , this ) ) ;
2020-09-21 21:01:04 +00:00
Common . NotificationCenter . on ( 'dropcap:settings' , _ . bind ( this . onDropCapAdvancedClick , this ) ) ;
2019-03-28 08:47:51 +00:00
} else if ( this . mode . isRestrictedEdit ) {
this . api . asc _registerCallback ( 'asc_onFocusObject' , _ . bind ( this . onApiFocusObjectRestrictedEdit , this ) ) ;
this . api . asc _registerCallback ( 'asc_onCoAuthoringDisconnect' , _ . bind ( this . onApiCoAuthoringDisconnect , this ) ) ;
Common . NotificationCenter . on ( 'api:disconnect' , _ . bind ( this . onApiCoAuthoringDisconnect , this ) ) ;
}
2016-03-11 00:48:53 +00:00
} ,
onChangeCompactView : function ( view , compact ) {
2017-04-06 09:34:01 +00:00
this . toolbar . setFolded ( compact ) ;
2017-04-20 14:45:47 +00:00
this . toolbar . fireEvent ( 'view:compact' , [ this , compact ] ) ;
2016-03-11 00:48:53 +00:00
2017-04-20 09:27:27 +00:00
Common . localStorage . setBool ( 'de-compact-toolbar' , compact ) ;
2016-03-11 00:48:53 +00:00
Common . NotificationCenter . trigger ( 'layout:changed' , 'toolbar' ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
2017-04-22 12:42:52 +00:00
onClickChangeCompact : function ( from ) {
if ( from != 'file' ) {
var me = this ;
setTimeout ( function ( ) {
me . onChangeCompactView ( null , ! me . toolbar . isCompact ( ) ) ;
} , 0 ) ;
}
} ,
2017-04-24 14:35:00 +00:00
onContextMenu : function ( ) {
2017-07-10 15:32:33 +00:00
this . toolbar . collapse ( ) ;
2017-04-24 14:35:00 +00:00
} ,
2019-02-01 10:13:44 +00:00
onApiChangeFont : function ( font ) {
2020-04-22 09:35:55 +00:00
! Common . Utils . ModalWindow . isVisible ( ) && this . toolbar . cmbFontName . onApiChangeFont ( font ) ;
2019-02-01 10:13:44 +00:00
} ,
2016-03-11 00:48:53 +00:00
onApiFontSize : function ( size ) {
if ( this . _state . fontsize !== size ) {
this . toolbar . cmbFontSize . setValue ( size ) ;
this . _state . fontsize = size ;
}
} ,
onApiBold : function ( on ) {
if ( this . _state . bold !== on ) {
this . toolbar . btnBold . toggle ( on === true , true ) ;
this . _state . bold = on ;
}
} ,
onApiItalic : function ( on ) {
if ( this . _state . italic !== on ) {
this . toolbar . btnItalic . toggle ( on === true , true ) ;
this . _state . italic = on ;
}
} ,
onApiUnderline : function ( on ) {
if ( this . _state . underline !== on ) {
this . toolbar . btnUnderline . toggle ( on === true , true ) ;
this . _state . underline = on ;
}
} ,
onApiStrikeout : function ( on ) {
if ( this . _state . strike !== on ) {
this . toolbar . btnStrikeout . toggle ( on === true , true ) ;
this . _state . strike = on ;
}
} ,
onApiVerticalAlign : function ( typeBaseline ) {
if ( this . _state . valign !== typeBaseline ) {
this . toolbar . btnSuperscript . toggle ( typeBaseline == 1 , true ) ;
this . toolbar . btnSubscript . toggle ( typeBaseline == 2 , true ) ;
this . _state . valign = typeBaseline ;
}
} ,
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 ;
}
}
} ,
onApiCanCopyCut : function ( can ) {
if ( this . _state . can _copycut !== can ) {
this . toolbar . btnCopy . setDisabled ( ! can ) ;
this . _state . can _copycut = can ;
}
} ,
onApiBullets : function ( v ) {
var type = v . get _ListType ( ) ;
if ( this . _state . bullets . type != type || this . _state . bullets . subtype != v . get _ListSubType ( ) ||
this . toolbar . btnMarkers . pressed && ( type !== 0 ) || this . toolbar . btnNumbers . pressed && ( type !== 1 ) || this . toolbar . btnMultilevels . pressed && ( type !== 2 ) ) {
this . _state . bullets . type = type ;
this . _state . bullets . subtype = v . get _ListSubType ( ) ;
this . _clearBullets ( ) ;
switch ( this . _state . bullets . type ) {
case 0 :
this . toolbar . btnMarkers . toggle ( true , true ) ;
2019-12-18 13:48:36 +00:00
if ( this . _state . bullets . subtype > 0 )
2019-12-17 09:32:15 +00:00
this . toolbar . mnuMarkersPicker . selectByIndex ( this . _state . bullets . subtype , true ) ;
else
this . toolbar . mnuMarkersPicker . deselectAll ( true ) ;
2019-12-17 10:15:51 +00:00
this . toolbar . mnuMultilevelPicker . deselectAll ( true ) ;
2019-12-17 11:52:30 +00:00
this . toolbar . mnuMarkerSettings && this . toolbar . mnuMarkerSettings . setDisabled ( this . _state . bullets . subtype < 0 ) ;
2021-02-03 07:32:18 +00:00
this . toolbar . mnuMarkerChangeLevel && this . toolbar . mnuMarkerChangeLevel . setDisabled ( this . _state . bullets . subtype < 0 ) ;
2019-12-17 14:25:12 +00:00
this . toolbar . mnuMultilevelSettings && this . toolbar . mnuMultilevelSettings . setDisabled ( this . _state . bullets . subtype < 0 ) ;
2021-04-22 09:13:54 +00:00
this . toolbar . mnuMultiChangeLevel && this . toolbar . mnuMultiChangeLevel . setDisabled ( this . _state . bullets . subtype < 0 ) ;
2016-03-11 00:48:53 +00:00
break ;
case 1 :
2019-12-17 11:52:30 +00:00
var idx ;
2016-03-11 00:48:53 +00:00
switch ( this . _state . bullets . subtype ) {
case 1 :
idx = 4 ;
break ;
case 2 :
idx = 5 ;
break ;
case 3 :
idx = 6 ;
break ;
case 4 :
idx = 1 ;
break ;
case 5 :
idx = 2 ;
break ;
case 6 :
idx = 3 ;
break ;
case 7 :
idx = 7 ;
break ;
}
this . toolbar . btnNumbers . toggle ( true , true ) ;
2019-12-17 11:52:30 +00:00
if ( idx !== undefined )
2019-12-17 10:15:51 +00:00
this . toolbar . mnuNumbersPicker . selectByIndex ( idx , true ) ;
else
this . toolbar . mnuNumbersPicker . deselectAll ( true ) ;
this . toolbar . mnuMultilevelPicker . deselectAll ( true ) ;
2019-12-17 11:52:30 +00:00
this . toolbar . mnuNumberSettings && this . toolbar . mnuNumberSettings . setDisabled ( idx == 0 ) ;
2021-02-03 07:32:18 +00:00
this . toolbar . mnuNumberChangeLevel && this . toolbar . mnuNumberChangeLevel . setDisabled ( idx == 0 ) ;
2019-12-17 14:25:12 +00:00
this . toolbar . mnuMultilevelSettings && this . toolbar . mnuMultilevelSettings . setDisabled ( idx == 0 ) ;
2021-04-22 09:13:54 +00:00
this . toolbar . mnuMultiChangeLevel && this . toolbar . mnuMultiChangeLevel . setDisabled ( idx == 0 ) ;
2016-03-11 00:48:53 +00:00
break ;
case 2 :
this . toolbar . btnMultilevels . toggle ( true , true ) ;
this . toolbar . mnuMultilevelPicker . selectByIndex ( this . _state . bullets . subtype , true ) ;
break ;
}
}
} ,
onApiParagraphAlign : function ( v ) {
if ( this . _state . pralign !== v ) {
this . _state . pralign = v ;
var index = - 1 ,
align ,
toolbar = this . toolbar ;
switch ( v ) {
case 0 : index = 2 ; align = 'btn-align-right' ; break ;
case 1 : index = 0 ; align = 'btn-align-left' ; break ;
case 2 : index = 1 ; align = 'btn-align-center' ; break ;
case 3 : index = 3 ; align = 'btn-align-just' ; break ;
default : index = - 255 ; align = 'btn-align-left' ; break ;
}
if ( v === null || v === undefined ) {
toolbar . btnAlignRight . toggle ( false , true ) ;
toolbar . btnAlignLeft . toggle ( false , true ) ;
toolbar . btnAlignCenter . toggle ( false , true ) ;
toolbar . btnAlignJust . toggle ( false , true ) ;
return ;
}
toolbar . btnAlignRight . toggle ( v === 0 , true ) ;
toolbar . btnAlignLeft . toggle ( v === 1 , true ) ;
toolbar . btnAlignCenter . toggle ( v === 2 , true ) ;
toolbar . btnAlignJust . toggle ( v === 3 , true ) ;
}
} ,
onApiLineSpacing : function ( vc ) {
var line = ( vc . get _Line ( ) === null || vc . get _LineRule ( ) === null || vc . get _LineRule ( ) != 1 ) ? - 1 : vc . get _Line ( ) ;
if ( this . _state . linespace !== line ) {
this . _state . linespace = line ;
_ . each ( this . toolbar . mnuLineSpace . items , function ( item ) {
item . setChecked ( false , true ) ;
} ) ;
if ( line < 0 ) return ;
if ( Math . abs ( line - 1. ) < 0.0001 )
this . toolbar . mnuLineSpace . items [ 0 ] . setChecked ( true , true ) ;
else if ( Math . abs ( line - 1.15 ) < 0.0001 )
this . toolbar . mnuLineSpace . items [ 1 ] . setChecked ( true , true ) ;
else if ( Math . abs ( line - 1.5 ) < 0.0001 )
this . toolbar . mnuLineSpace . items [ 2 ] . setChecked ( true , true ) ;
else if ( Math . abs ( line - 2 ) < 0.0001 )
this . toolbar . mnuLineSpace . items [ 3 ] . setChecked ( true , true ) ;
else if ( Math . abs ( line - 2.5 ) < 0.0001 )
this . toolbar . mnuLineSpace . items [ 4 ] . setChecked ( true , true ) ;
else if ( Math . abs ( line - 3 ) < 0.0001 )
this . toolbar . mnuLineSpace . items [ 5 ] . setChecked ( true , true ) ;
}
} ,
onApiPageSize : function ( w , h ) {
2018-03-12 09:11:22 +00:00
if ( this . _state . pgorient === undefined ) return ;
2017-09-27 11:35:12 +00:00
var width = this . _state . pgorient ? w : h ,
height = this . _state . pgorient ? h : w ;
2018-08-10 10:46:19 +00:00
if ( Math . abs ( this . _state . pgsize [ 0 ] - w ) > 0.1 ||
Math . abs ( this . _state . pgsize [ 1 ] - h ) > 0.1 ) {
2016-03-11 00:48:53 +00:00
this . _state . pgsize = [ w , h ] ;
if ( this . toolbar . mnuPageSize ) {
2017-11-13 08:41:32 +00:00
this . toolbar . mnuPageSize . clearAll ( ) ;
2016-03-11 00:48:53 +00:00
_ . each ( this . toolbar . mnuPageSize . items , function ( item ) {
if ( item . value && typeof ( item . value ) == 'object' &&
2018-08-10 10:46:19 +00:00
Math . abs ( item . value [ 0 ] - width ) < 0.1 && Math . abs ( item . value [ 1 ] - height ) < 0.1 ) {
2016-03-11 00:48:53 +00:00
item . setChecked ( true ) ;
return false ;
}
} , this ) ;
}
}
} ,
onSectionProps : function ( props ) {
if ( props ) {
var left = props . get _LeftMargin ( ) ,
top = props . get _TopMargin ( ) ,
right = props . get _RightMargin ( ) ,
bottom = props . get _BottomMargin ( ) ;
2018-08-10 10:46:19 +00:00
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 ) {
2016-03-11 00:48:53 +00:00
this . _state . pgmargins = [ top , left , bottom , right ] ;
if ( this . toolbar . btnPageMargins . menu ) {
2017-11-13 08:41:32 +00:00
this . toolbar . btnPageMargins . menu . clearAll ( ) ;
2016-03-11 00:48:53 +00:00
_ . each ( this . toolbar . btnPageMargins . menu . items , function ( item ) {
if ( item . value && typeof ( item . value ) == 'object' &&
2018-08-10 10:46:19 +00:00
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 ) {
2016-03-11 00:48:53 +00:00
item . setChecked ( true ) ;
return false ;
}
} , this ) ;
}
}
}
} ,
2018-02-26 14:38:35 +00:00
onShowParaMarks : function ( v ) {
this . toolbar . mnuNonPrinting . items [ 0 ] . setChecked ( v , true ) ;
this . toolbar . btnShowHidenChars . toggle ( v , true ) ;
Common . localStorage . setItem ( "de-show-hiddenchars" , v ) ;
} ,
2019-03-28 08:47:51 +00:00
onApiFocusObjectRestrictedEdit : function ( selectedObjects ) {
if ( ! this . editMode ) return ;
var i = - 1 , type ,
paragraph _locked = false ,
header _locked = false ,
2019-11-01 08:36:32 +00:00
image _locked = false ,
2020-01-30 11:53:11 +00:00
in _image = false ,
frame _pr = undefined ;
2019-03-28 08:47:51 +00:00
while ( ++ i < selectedObjects . length ) {
type = selectedObjects [ i ] . get _ObjectType ( ) ;
if ( type === Asc . c _oAscTypeSelectElement . Paragraph ) {
2020-01-30 11:53:11 +00:00
frame _pr = selectedObjects [ i ] . get _ObjectValue ( ) ;
2019-03-28 08:47:51 +00:00
paragraph _locked = selectedObjects [ i ] . get _ObjectValue ( ) . get _Locked ( ) ;
} else if ( type === Asc . c _oAscTypeSelectElement . Header ) {
header _locked = selectedObjects [ i ] . get _ObjectValue ( ) . get _Locked ( ) ;
} else if ( type === Asc . c _oAscTypeSelectElement . Image ) {
2019-11-01 08:36:32 +00:00
in _image = true ;
2019-03-28 08:47:51 +00:00
image _locked = selectedObjects [ i ] . get _ObjectValue ( ) . get _Locked ( ) ;
}
}
2020-01-30 11:53:11 +00:00
var rich _del _lock = ( frame _pr ) ? ! frame _pr . can _DeleteBlockContentControl ( ) : false ,
rich _edit _lock = ( frame _pr ) ? ! frame _pr . can _EditBlockContentControl ( ) : false ,
plain _del _lock = ( frame _pr ) ? ! frame _pr . can _DeleteInlineContentControl ( ) : false ,
plain _edit _lock = ( frame _pr ) ? ! frame _pr . can _EditInlineContentControl ( ) : false ;
var need _disable = ! this . api . can _AddQuotedComment ( ) || paragraph _locked || header _locked || image _locked || rich _del _lock || rich _edit _lock || plain _del _lock || plain _edit _lock ;
2019-11-01 08:36:32 +00:00
if ( this . mode . compatibleFeatures ) {
need _disable = need _disable || in _image ;
}
2020-01-30 13:00:36 +00:00
if ( this . api . asc _IsContentControl ( ) ) {
var control _props = this . api . asc _GetContentControlProperties ( ) ,
spectype = control _props ? control _props . get _SpecificType ( ) : Asc . c _oAscContentControlSpecificType . None ;
need _disable = need _disable || spectype == Asc . c _oAscContentControlSpecificType . CheckBox || spectype == Asc . c _oAscContentControlSpecificType . Picture ||
spectype == Asc . c _oAscContentControlSpecificType . ComboBox || spectype == Asc . c _oAscContentControlSpecificType . DropDownList || spectype == Asc . c _oAscContentControlSpecificType . DateTime ;
}
2019-03-28 08:47:51 +00:00
if ( this . btnsComment && this . btnsComment . length > 0 )
this . btnsComment . setDisabled ( need _disable ) ;
} ,
2016-03-11 00:48:53 +00:00
onApiFocusObject : function ( selectedObjects ) {
if ( ! this . editMode ) return ;
var pr , sh , i = - 1 , type ,
paragraph _locked = false ,
header _locked = false ,
2016-12-16 11:33:38 +00:00
image _locked = false ,
2016-03-11 00:48:53 +00:00
can _add _table = false ,
can _add _image = false ,
enable _dropcap = undefined ,
disable _dropcapadv = true ,
frame _pr = undefined ,
toolbar = this . toolbar ,
in _header = false ,
in _chart = false ,
in _equation = false ,
btn _eq _state = false ,
2017-12-12 11:14:27 +00:00
in _image = false ,
2019-10-02 12:33:42 +00:00
in _control = false ,
in _para = false ;
2016-03-11 00:48:53 +00:00
while ( ++ i < selectedObjects . length ) {
type = selectedObjects [ i ] . get _ObjectType ( ) ;
pr = selectedObjects [ i ] . get _ObjectValue ( ) ;
2016-04-05 11:52:34 +00:00
if ( type === Asc . c _oAscTypeSelectElement . Paragraph ) {
2016-03-11 00:48:53 +00:00
paragraph _locked = pr . get _Locked ( ) ;
can _add _table = pr . get _CanAddTable ( ) ;
can _add _image = pr . get _CanAddImage ( ) ;
frame _pr = pr ;
sh = pr . get _Shade ( ) ;
2019-10-02 12:33:42 +00:00
in _para = true ;
2016-04-05 11:52:34 +00:00
} else if ( type === Asc . c _oAscTypeSelectElement . Header ) {
2016-03-11 00:48:53 +00:00
header _locked = pr . get _Locked ( ) ;
in _header = true ;
2016-04-05 11:52:34 +00:00
} else if ( type === Asc . c _oAscTypeSelectElement . Image ) {
2017-09-01 07:03:11 +00:00
in _image = true ;
2016-12-16 11:33:38 +00:00
image _locked = pr . get _Locked ( ) ;
2016-03-11 00:48:53 +00:00
if ( pr && pr . get _ChartProperties ( ) )
in _chart = true ;
2016-04-05 11:52:34 +00:00
} else if ( type === Asc . c _oAscTypeSelectElement . Math ) {
2016-03-11 00:48:53 +00:00
in _equation = true ;
2016-04-05 11:52:34 +00:00
if ( Asc . c _oAscMathInterfaceType . Common === pr . get _Type ( ) )
2016-03-11 00:48:53 +00:00
btn _eq _state = true ;
}
2016-04-05 11:52:34 +00:00
if ( type === Asc . c _oAscTypeSelectElement . Table || type === Asc . c _oAscTypeSelectElement . Header || type === Asc . c _oAscTypeSelectElement . Image ) {
2016-03-11 00:48:53 +00:00
enable _dropcap = false ;
}
2016-04-05 11:52:34 +00:00
if ( enable _dropcap !== false && type == Asc . c _oAscTypeSelectElement . Paragraph )
2016-03-11 00:48:53 +00:00
enable _dropcap = true ;
}
if ( sh )
this . onParagraphColor ( sh ) ;
2019-12-20 13:18:17 +00:00
var rich _del _lock = ( frame _pr ) ? ! frame _pr . can _DeleteBlockContentControl ( ) : false ,
rich _edit _lock = ( frame _pr ) ? ! frame _pr . can _EditBlockContentControl ( ) : false ,
plain _del _lock = ( frame _pr ) ? ! frame _pr . can _DeleteInlineContentControl ( ) : false ,
plain _edit _lock = ( frame _pr ) ? ! frame _pr . can _EditInlineContentControl ( ) : false ;
2019-11-21 14:29:39 +00:00
var need _disable = paragraph _locked || header _locked || rich _edit _lock || plain _edit _lock ;
2016-03-11 00:48:53 +00:00
if ( this . _state . prcontrolsdisable != need _disable ) {
if ( this . _state . activated ) this . _state . prcontrolsdisable = need _disable ;
_ . each ( toolbar . paragraphControls , function ( item ) {
item . setDisabled ( need _disable ) ;
} , this ) ;
}
2017-12-13 13:52:14 +00:00
in _control = this . api . asc _IsContentControl ( ) ;
var control _props = in _control ? this . api . asc _GetContentControlProperties ( ) : null ,
2017-12-15 08:50:56 +00:00
lock _type = ( in _control && control _props ) ? control _props . get _Lock ( ) : Asc . c _oAscSdtLockType . Unlocked ,
control _plain = ( in _control && control _props ) ? ( control _props . get _ContentControlType ( ) == Asc . c _oAscSdtLevelType . Inline ) : false ;
( lock _type === undefined ) && ( lock _type = Asc . c _oAscSdtLockType . Unlocked ) ;
2019-11-21 14:29:39 +00:00
var content _locked = lock _type == Asc . c _oAscSdtLockType . SdtContentLocked || lock _type == Asc . c _oAscSdtLockType . ContentLocked ;
2017-12-13 13:52:14 +00:00
2019-11-22 07:43:56 +00:00
toolbar . btnContentControls . setDisabled ( paragraph _locked || header _locked ) ;
if ( ! ( paragraph _locked || header _locked ) ) {
2020-10-07 16:13:24 +00:00
var control _disable = control _plain || content _locked ,
if _form = control _props && control _props . get _FormPr ( ) ;
2020-10-07 13:22:31 +00:00
for ( var i = 0 ; i < 7 ; i ++ )
2019-11-05 12:46:04 +00:00
toolbar . btnContentControls . menu . items [ i ] . setDisabled ( control _disable ) ;
2020-10-07 16:13:24 +00:00
toolbar . btnContentControls . menu . items [ 8 ] . setDisabled ( ! in _control || lock _type == Asc . c _oAscSdtLockType . SdtContentLocked || lock _type == Asc . c _oAscSdtLockType . SdtLocked || if _form ) ;
toolbar . btnContentControls . menu . items [ 10 ] . setDisabled ( ! in _control || if _form ) ;
2017-12-13 13:52:14 +00:00
}
2019-11-21 14:29:39 +00:00
var need _text _disable = paragraph _locked || header _locked || in _chart || rich _edit _lock || plain _edit _lock ;
2016-03-11 00:48:53 +00:00
if ( this . _state . textonlycontrolsdisable != need _text _disable ) {
if ( this . _state . activated ) this . _state . textonlycontrolsdisable = need _text _disable ;
if ( ! need _disable ) {
_ . each ( toolbar . textOnlyControls , function ( item ) {
item . setDisabled ( need _text _disable ) ;
} , this ) ;
}
2019-11-21 14:29:39 +00:00
// toolbar.btnCopyStyle.setDisabled(need_text_disable);
2016-03-11 00:48:53 +00:00
toolbar . btnClearStyle . setDisabled ( need _text _disable ) ;
}
if ( enable _dropcap && frame _pr ) {
var value = frame _pr . get _FramePr ( ) ,
2016-04-05 11:52:34 +00:00
drop _value = Asc . c _oAscDropCap . None ;
2016-03-11 00:48:53 +00:00
if ( value !== undefined ) {
drop _value = value . get _DropCap ( ) ;
2016-04-05 11:52:34 +00:00
enable _dropcap = ( drop _value === Asc . c _oAscDropCap . Drop || drop _value === Asc . c _oAscDropCap . Margin ) ;
2016-03-11 00:48:53 +00:00
disable _dropcapadv = false ;
} else {
enable _dropcap = frame _pr . get _CanAddDropCap ( ) ;
}
if ( enable _dropcap )
this . onDropCap ( drop _value ) ;
}
2017-12-13 13:52:14 +00:00
need _disable = need _disable || ! enable _dropcap || in _equation || control _plain ;
2017-04-03 16:24:24 +00:00
toolbar . btnDropCap . setDisabled ( need _disable ) ;
2016-03-11 00:48:53 +00:00
2017-04-03 16:24:24 +00:00
if ( ! toolbar . btnDropCap . isDisabled ( ) )
2016-03-11 00:48:53 +00:00
toolbar . mnuDropCapAdvanced . setDisabled ( disable _dropcapadv ) ;
2019-11-21 14:29:39 +00:00
need _disable = ! can _add _table || header _locked || in _equation || control _plain || rich _edit _lock || plain _edit _lock || rich _del _lock || plain _del _lock ;
2017-04-03 16:24:24 +00:00
toolbar . btnInsertTable . setDisabled ( need _disable ) ;
2016-03-11 00:48:53 +00:00
2017-12-13 13:52:14 +00:00
need _disable = toolbar . mnuPageNumCurrentPos . isDisabled ( ) && toolbar . mnuPageNumberPosPicker . isDisabled ( ) || control _plain ;
2017-04-03 16:24:24 +00:00
toolbar . mnuInsertPageNum . setDisabled ( need _disable ) ;
2016-03-11 00:48:53 +00:00
2020-09-01 08:58:50 +00:00
var in _footnote = this . api . asc _IsCursorInFootnote ( ) || this . api . asc _IsCursorInEndnote ( ) ;
2020-08-24 12:24:15 +00:00
need _disable = paragraph _locked || header _locked || in _header || in _image || in _equation && ! btn _eq _state || in _footnote || in _control || rich _edit _lock || plain _edit _lock || rich _del _lock || plain _del _lock ;
2018-02-13 14:37:22 +00:00
toolbar . btnsPageBreak . setDisabled ( need _disable ) ;
2018-11-20 09:57:29 +00:00
toolbar . btnBlankPage . setDisabled ( need _disable ) ;
2016-03-11 00:48:53 +00:00
2020-09-01 08:58:50 +00:00
need _disable = paragraph _locked || header _locked || in _equation || control _plain || content _locked || in _footnote ;
2017-04-03 16:24:24 +00:00
toolbar . btnInsertShape . setDisabled ( need _disable ) ;
toolbar . btnInsertText . setDisabled ( need _disable ) ;
2018-07-30 09:12:38 +00:00
2019-11-21 14:29:39 +00:00
need _disable = paragraph _locked || header _locked || in _para && ! can _add _image || in _equation || control _plain || rich _del _lock || plain _del _lock || content _locked ;
2018-07-30 09:12:38 +00:00
toolbar . btnInsertImage . setDisabled ( need _disable ) ;
2019-10-03 15:13:14 +00:00
toolbar . btnInsertTextArt . setDisabled ( need _disable || in _footnote ) ;
2016-12-16 11:33:38 +00:00
2016-12-27 09:34:08 +00:00
if ( in _chart !== this . _state . in _chart ) {
toolbar . btnInsertChart . updateHint ( in _chart ? toolbar . tipChangeChart : toolbar . tipInsertChart ) ;
this . _state . in _chart = in _chart ;
}
2019-11-21 14:29:39 +00:00
need _disable = in _chart && image _locked || ! in _chart && need _disable || control _plain || rich _del _lock || plain _del _lock || content _locked ;
2017-04-03 16:24:24 +00:00
toolbar . btnInsertChart . setDisabled ( need _disable ) ;
2016-03-11 00:48:53 +00:00
2019-11-21 14:29:39 +00:00
need _disable = paragraph _locked || header _locked || in _chart || ! can _add _image && ! in _equation || control _plain || rich _edit _lock || plain _edit _lock || rich _del _lock || plain _del _lock ;
2017-04-03 16:24:24 +00:00
toolbar . btnInsertEquation . setDisabled ( need _disable ) ;
2016-03-11 00:48:53 +00:00
2019-11-21 14:29:39 +00:00
toolbar . btnInsertSymbol . setDisabled ( ! in _para || paragraph _locked || header _locked || rich _edit _lock || plain _edit _lock || rich _del _lock || plain _del _lock ) ;
2020-03-03 08:08:15 +00:00
toolbar . btnInsDateTime . setDisabled ( ! in _para || paragraph _locked || header _locked || rich _edit _lock || plain _edit _lock || rich _del _lock || plain _del _lock ) ;
2019-11-08 08:34:53 +00:00
2019-11-21 14:29:39 +00:00
need _disable = paragraph _locked || header _locked || in _equation || rich _edit _lock || plain _edit _lock ;
2017-04-03 16:24:24 +00:00
toolbar . btnSuperscript . setDisabled ( need _disable ) ;
toolbar . btnSubscript . setDisabled ( need _disable ) ;
2016-03-11 00:48:53 +00:00
2017-04-03 16:24:24 +00:00
toolbar . btnEditHeader . setDisabled ( in _equation ) ;
2016-03-11 00:48:53 +00:00
2020-01-27 11:58:16 +00:00
need _disable = paragraph _locked || header _locked || in _image || control _plain || rich _edit _lock || plain _edit _lock || this . _state . lock _doc ;
2017-06-20 10:11:31 +00:00
if ( need _disable != toolbar . btnColumns . isDisabled ( ) )
toolbar . btnColumns . setDisabled ( need _disable ) ;
2021-07-07 13:18:34 +00:00
toolbar . btnLineNumbers . setDisabled ( in _image && in _para || this . _state . lock _doc ) ;
2016-03-11 00:48:53 +00:00
if ( toolbar . listStylesAdditionalMenuItem && ( frame _pr === undefined ) !== toolbar . listStylesAdditionalMenuItem . isDisabled ( ) )
toolbar . listStylesAdditionalMenuItem . setDisabled ( frame _pr === undefined ) ;
2019-11-21 14:29:39 +00:00
need _disable = ! this . api . can _AddQuotedComment ( ) || paragraph _locked || header _locked || image _locked || rich _del _lock || rich _edit _lock || plain _del _lock || plain _edit _lock ;
2019-11-01 08:36:32 +00:00
if ( this . mode . compatibleFeatures ) {
need _disable = need _disable || in _image ;
}
2020-01-30 13:00:36 +00:00
if ( control _props ) {
var spectype = control _props . get _SpecificType ( ) ;
need _disable = need _disable || spectype == Asc . c _oAscContentControlSpecificType . CheckBox || spectype == Asc . c _oAscContentControlSpecificType . Picture ||
spectype == Asc . c _oAscContentControlSpecificType . ComboBox || spectype == Asc . c _oAscContentControlSpecificType . DropDownList || spectype == Asc . c _oAscContentControlSpecificType . DateTime ;
}
2018-02-13 14:37:22 +00:00
if ( this . btnsComment && this . btnsComment . length > 0 )
this . btnsComment . setDisabled ( need _disable ) ;
2017-06-28 11:20:49 +00:00
2019-04-05 11:28:51 +00:00
toolbar . btnWatermark . setDisabled ( header _locked ) ;
2020-09-29 09:42:16 +00:00
if ( frame _pr ) {
this . _state . suppress _num = ! ! frame _pr . get _SuppressLineNumbers ( ) ;
}
2016-03-11 00:48:53 +00:00
this . _state . in _equation = in _equation ;
} ,
onApiStyleChange : function ( v ) {
this . toolbar . btnCopyStyle . toggle ( v , true ) ;
this . modeAlwaysSetStyle = false ;
} ,
2019-11-20 14:10:32 +00:00
onTableDraw : function ( v ) {
this . toolbar . mnuInsertTable && this . toolbar . mnuInsertTable . items [ 2 ] . setChecked ( ! ! v , true ) ;
} ,
onTableErase : function ( v ) {
this . toolbar . mnuInsertTable && this . toolbar . mnuInsertTable . items [ 3 ] . setChecked ( ! ! v , true ) ;
} ,
2016-03-11 00:48:53 +00:00
onApiParagraphStyleChange : function ( name ) {
if ( this . _state . prstyle != name ) {
var listStyle = this . toolbar . listStyles ,
listStylesVisible = ( listStyle . rendered ) ;
if ( listStylesVisible ) {
listStyle . suspendEvents ( ) ;
var styleRec = listStyle . menuPicker . store . findWhere ( {
title : name
} ) ;
2017-04-12 10:00:17 +00:00
this . _state . prstyle = ( listStyle . menuPicker . store . length > 0 || window . styles _loaded ) ? name : undefined ;
2016-03-11 00:48:53 +00:00
listStyle . menuPicker . selectRecord ( styleRec ) ;
listStyle . resumeEvents ( ) ;
}
}
} ,
onApiPageOrient : function ( isportrait ) {
if ( this . _state . pgorient !== isportrait ) {
2016-07-04 13:04:05 +00:00
this . toolbar . btnPageOrient . menu . items [ isportrait ? 0 : 1 ] . setChecked ( true ) ;
2016-03-11 00:48:53 +00:00
this . _state . pgorient = isportrait ;
}
} ,
onApiLockDocumentProps : function ( ) {
if ( this . _state . lock _doc !== true ) {
this . toolbar . btnPageOrient . setDisabled ( true ) ;
this . toolbar . btnPageSize . setDisabled ( true ) ;
2020-01-27 11:58:16 +00:00
this . toolbar . btnPageMargins . setDisabled ( true ) ;
2016-03-11 00:48:53 +00:00
if ( this . _state . activated ) this . _state . lock _doc = true ;
}
} ,
onApiUnLockDocumentProps : function ( ) {
if ( this . _state . lock _doc !== false ) {
this . toolbar . btnPageOrient . setDisabled ( false ) ;
this . toolbar . btnPageSize . setDisabled ( false ) ;
2020-01-27 11:58:16 +00:00
this . toolbar . btnPageMargins . setDisabled ( false ) ;
2016-03-11 00:48:53 +00:00
if ( this . _state . activated ) this . _state . lock _doc = false ;
}
} ,
onApiLockDocumentSchema : function ( ) {
this . toolbar . btnColorSchemas . setDisabled ( true ) ;
} ,
onApiUnLockDocumentSchema : function ( ) {
this . toolbar . btnColorSchemas . setDisabled ( false ) ;
} ,
onApiLockHeaderFooters : function ( ) {
this . toolbar . mnuPageNumberPosPicker . setDisabled ( true ) ;
this . toolbar . mnuInsertPageNum . setDisabled ( this . toolbar . mnuPageNumCurrentPos . isDisabled ( ) ) ;
} ,
onApiUnLockHeaderFooters : function ( ) {
this . toolbar . mnuPageNumberPosPicker . setDisabled ( false ) ;
this . toolbar . mnuInsertPageNum . setDisabled ( false ) ;
} ,
2018-03-21 11:28:28 +00:00
onApiZoomChange : function ( percent , type ) { } ,
2016-03-11 00:48:53 +00:00
onApiStartHighlight : function ( pressed ) {
this . toolbar . btnHighlightColor . toggle ( pressed , true ) ;
} ,
onApiHighlightColor : function ( c ) {
var textpr = this . api . get _TextProps ( ) . get _TextPr ( ) ;
if ( textpr ) {
c = textpr . get _HighLight ( ) ;
if ( c == - 1 ) {
if ( this . _state . clrhighlight != - 1 ) {
this . toolbar . mnuHighlightTransparent . setChecked ( true , true ) ;
if ( this . toolbar . mnuHighlightColorPicker . cmpEl ) {
this . _state . clrhighlight = - 1 ;
this . toolbar . mnuHighlightColorPicker . select ( null , true ) ;
}
}
} else if ( c !== null ) {
if ( this . _state . clrhighlight != c . get _hex ( ) . toUpperCase ( ) ) {
this . toolbar . mnuHighlightTransparent . setChecked ( false ) ;
this . _state . clrhighlight = c . get _hex ( ) . toUpperCase ( ) ;
if ( _ . contains ( this . toolbar . mnuHighlightColorPicker . colors , this . _state . clrhighlight ) )
this . toolbar . mnuHighlightColorPicker . select ( this . _state . clrhighlight , true ) ;
}
} else {
if ( this . _state . clrhighlight !== c ) {
this . toolbar . mnuHighlightTransparent . setChecked ( false , true ) ;
this . toolbar . mnuHighlightColorPicker . select ( null , true ) ;
this . _state . clrhighlight = c ;
}
}
}
} ,
onApiInitEditorStyles : function ( styles ) {
this . _onInitEditorStyles ( styles ) ;
} ,
2018-08-08 13:51:02 +00:00
onChangeSdtGlobalSettings : function ( ) {
var show = this . api . asc _GetGlobalContentControlShowHighlight ( ) ;
2020-12-25 13:46:01 +00:00
this . toolbar . mnuNoControlsColor && this . toolbar . mnuNoControlsColor . setChecked ( ! show , true ) ;
this . toolbar . mnuControlsColorPicker && this . toolbar . mnuControlsColorPicker . clearSelection ( ) ;
2018-08-08 13:51:02 +00:00
if ( show ) {
var clr = this . api . asc _GetGlobalContentControlHighlightColor ( ) ;
if ( clr ) {
2018-08-28 14:52:21 +00:00
clr = Common . Utils . ThemeColor . getHexColor ( clr . get _r ( ) , clr . get _g ( ) , clr . get _b ( ) ) ;
2020-12-25 13:46:01 +00:00
this . toolbar . mnuControlsColorPicker && this . toolbar . mnuControlsColorPicker . selectByRGB ( clr , true ) ;
2018-08-08 13:51:02 +00:00
}
}
} ,
2016-03-11 00:48:53 +00:00
onNewDocument : function ( btn , e ) {
if ( this . api )
this . api . OpenNewDocument ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'New Document' ) ;
} ,
onOpenDocument : function ( btn , e ) {
if ( this . api )
this . api . LoadDocumentFromDisk ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Open Document' ) ;
} ,
onPrint : function ( e ) {
if ( this . api )
2021-04-20 15:46:41 +00:00
this . api . asc _Print ( new Asc . asc _CDownloadOptions ( null , Common . Utils . isChrome || Common . Utils . isSafari || Common . Utils . isOpera || Common . Utils . isGecko && Common . Utils . firefoxVersion > 86 ) ) ; // if isChrome or isSafari or isOpera == true use asc_onPrintUrl event
2016-03-11 00:48:53 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'Print' ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Print' ) ;
} ,
onSave : function ( e ) {
2017-09-05 07:54:44 +00:00
var toolbar = this . toolbar ;
2016-03-11 00:48:53 +00:00
if ( this . api ) {
var isModified = this . api . asc _isDocumentCanSave ( ) ;
2019-11-20 09:42:39 +00:00
var isSyncButton = toolbar . btnCollabChanges && toolbar . btnCollabChanges . cmpEl . hasClass ( 'notify' ) ;
2017-09-05 07:54:44 +00:00
if ( ! isModified && ! isSyncButton && ! toolbar . mode . forcesave )
2016-03-11 00:48:53 +00:00
return ;
this . api . asc _Save ( ) ;
}
2018-02-15 23:56:17 +00:00
toolbar . btnSave . setDisabled ( ! toolbar . mode . forcesave ) ;
2016-03-11 00:48:53 +00:00
2017-09-05 07:54:44 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , toolbar ) ;
2016-03-11 00:48:53 +00:00
Common . component . Analytics . trackEvent ( 'Save' ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Save' ) ;
} ,
2018-02-15 23:56:17 +00:00
onBtnChangeState : function ( prop ) {
if ( /\:disabled$/ . test ( prop ) ) {
var _is _disabled = arguments [ 2 ] ;
this . toolbar . fireEvent ( prop , [ _is _disabled ] ) ;
}
} ,
2016-03-11 00:48:53 +00:00
onUndo : function ( btn , e ) {
if ( this . api )
this . api . Undo ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Undo' ) ;
} ,
onRedo : function ( btn , e ) {
if ( this . api )
this . api . Redo ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Redo' ) ;
} ,
onCopyPaste : function ( copy , e ) {
var me = this ;
if ( me . api ) {
2016-07-26 14:46:42 +00:00
var res = ( copy ) ? me . api . Copy ( ) : me . api . Paste ( ) ;
if ( ! res ) {
2017-04-19 11:22:31 +00:00
if ( ! Common . localStorage . getBool ( "de-hide-copywarning" ) ) {
2016-03-11 00:48:53 +00:00
( new Common . Views . CopyWarningDialog ( {
handler : function ( dontshow ) {
if ( dontshow ) Common . localStorage . setItem ( "de-hide-copywarning" , 1 ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
}
} ) ) . show ( ) ;
}
2016-07-26 14:46:42 +00:00
} else
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Copy Warning' ) ;
2016-03-11 00:48:53 +00:00
}
2016-07-26 14:46:42 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
2016-03-11 00:48:53 +00:00
} ,
onIncrease : function ( e ) {
if ( this . api )
this . api . FontSizeIn ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Font Size' ) ;
} ,
onDecrease : function ( e ) {
if ( this . api )
this . api . FontSizeOut ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Font Size' ) ;
} ,
onBold : function ( btn , e ) {
this . _state . bold = undefined ;
if ( this . api )
this . api . put _TextPrBold ( btn . pressed ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Bold' ) ;
} ,
onItalic : function ( btn , e ) {
this . _state . italic = undefined ;
if ( this . api )
this . api . put _TextPrItalic ( btn . pressed ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Italic' ) ;
} ,
onUnderline : function ( btn , e ) {
this . _state . underline = undefined ;
if ( this . api )
this . api . put _TextPrUnderline ( btn . pressed ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Underline' ) ;
} ,
onStrikeout : function ( btn , e ) {
this . _state . strike = undefined ;
if ( this . api )
this . api . put _TextPrStrikeout ( btn . pressed ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Strikeout' ) ;
} ,
onSuperscript : function ( btn , e ) {
if ( ! this . toolbar . btnSubscript . pressed ) {
this . _state . valign = undefined ;
if ( this . api )
this . api . put _TextPrBaseline ( btn . pressed ? 1 : 0 ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Superscript' ) ;
}
} ,
onSubscript : function ( btn , e ) {
if ( ! this . toolbar . btnSuperscript . pressed ) {
this . _state . valign = undefined ;
if ( this . api )
this . api . put _TextPrBaseline ( btn . pressed ? 2 : 0 ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Subscript' ) ;
}
} ,
onDecOffset : function ( btn , e ) {
if ( this . api )
this . api . DecreaseIndent ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Indent' ) ;
} ,
onIncOffset : function ( btn , e ) {
if ( this . api )
this . api . IncreaseIndent ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Indent' ) ;
} ,
onHorizontalAlign : function ( type , btn , e ) {
this . _state . pralign = undefined ;
2021-06-18 12:24:44 +00:00
if ( this . api ) {
if ( ! btn . pressed ) {
type = ( type == 1 ) ? 3 : 1 ;
}
2016-03-11 00:48:53 +00:00
this . api . put _PrAlign ( type ) ;
2021-06-18 12:24:44 +00:00
}
2016-03-11 00:48:53 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Align' ) ;
} ,
onMarkers : function ( btn , e ) {
var record = {
data : {
type : 0 ,
subtype : btn . pressed ? 0 : - 1
}
} ;
this . onSelectBullets ( null , null , null , record ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
onNumbers : function ( btn , e ) {
var record = {
data : {
type : 1 ,
subtype : btn . pressed ? 0 : - 1
}
} ;
this . onSelectBullets ( null , null , null , record ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
onComboBlur : function ( ) {
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
onFontNameSelect : function ( combo , record ) {
if ( this . api ) {
if ( record . isNewFont ) {
2020-04-22 09:35:55 +00:00
! Common . Utils . ModalWindow . isVisible ( ) &&
2016-03-11 00:48:53 +00:00
Common . UI . warning ( {
width : 500 ,
closable : false ,
msg : this . confirmAddFontName ,
buttons : [ 'yes' , 'no' ] ,
primary : 'yes' ,
callback : _ . bind ( function ( btn ) {
if ( btn == 'yes' ) {
this . api . put _TextPrFontName ( record . name ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Font Name' ) ;
} else {
this . toolbar . cmbFontName . setValue ( this . api . get _TextProps ( ) . get _TextPr ( ) . get _FontFamily ( ) . get _Name ( ) ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} , this )
} ) ;
} else {
this . api . put _TextPrFontName ( record . name ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Font Name' ) ;
}
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
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 . put _TextPrFontSize ( record . value ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
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 ) {
2020-03-31 13:49:33 +00:00
value = /^\+?(\d*(\.|,)?\d+)$|^\+?(\d+(\.|,)?\d*)$/ . exec ( record . value ) ;
2016-03-11 00:48:53 +00:00
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 {
2020-03-31 13:49:33 +00:00
value = Common . Utils . String . parseFloat ( record . value ) ;
2020-11-27 16:35:04 +00:00
value = value > 300
? 300
2016-03-11 00:48:53 +00:00
: value < 1
? 1
: Math . floor ( ( value + 0.4 ) * 2 ) / 2 ;
combo . setRawValue ( value ) ;
this . _state . fontsize = undefined ;
if ( this . api )
this . api . put _TextPrFontSize ( value ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
}
} ,
2021-01-18 13:41:49 +00:00
onChangeCase : function ( menu , item , e ) {
if ( this . api )
this . api . asc _ChangeTextCase ( item . value ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
2021-04-01 15:57:00 +00:00
onListShowAfter : function ( type , picker ) {
var store = picker . store ;
2021-03-30 16:40:02 +00:00
var arr = [ ] ;
store . each ( function ( item ) {
arr . push ( item . get ( 'id' ) ) ;
} ) ;
if ( this . api ) {
2021-04-01 15:57:00 +00:00
this . api . SetDrawImagePreviewBulletForMenu ( arr , type ) ;
2021-03-30 16:40:02 +00:00
}
} ,
2016-03-11 00:48:53 +00:00
onSelectBullets : function ( btn , picker , itemView , record ) {
var rawData = { } ,
isPickerSelect = _ . isFunction ( record . toJSON ) ;
if ( isPickerSelect ) {
if ( record . get ( 'selected' ) ) {
rawData = record . toJSON ( ) ;
} else {
// record deselected
return ;
}
} else {
rawData = record ;
}
if ( btn ) {
btn . toggle ( rawData . data . subtype > - 1 , true ) ;
}
2019-12-20 08:46:14 +00:00
this . _state . bullets . type = undefined ;
this . _state . bullets . subtype = undefined ;
2016-03-11 00:48:53 +00:00
if ( this . api )
this . api . put _ListType ( rawData . data . type , rawData . data . subtype ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'List Type' ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
2019-12-04 07:05:29 +00:00
onMarkerSettingsClick : function ( type ) {
2019-12-04 10:35:56 +00:00
var me = this ;
var listId = me . api . asc _GetCurrentNumberingId ( ) ,
level = me . api . asc _GetCurrentNumberingLvl ( ) ,
2019-12-18 13:48:36 +00:00
props = ( listId !== null ) ? me . api . asc _GetNumberingPr ( listId ) : null ;
2019-12-17 11:52:30 +00:00
if ( props ) {
2019-12-17 13:02:28 +00:00
( new DE . Views . ListSettingsDialog ( {
2019-12-04 07:05:29 +00:00
api : me . api ,
props : props ,
2019-12-04 10:35:56 +00:00
level : level ,
2019-12-17 11:52:30 +00:00
type : type ,
2019-12-04 07:05:29 +00:00
interfaceLang : me . mode . lang ,
handler : function ( result , value ) {
if ( result == 'ok' ) {
if ( me . api ) {
2019-12-18 13:48:36 +00:00
me . api . asc _ChangeNumberingLvl ( listId , value . props , value . num ) ;
2019-12-04 07:05:29 +00:00
}
}
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
}
} ) ) . show ( ) ;
}
} ,
2021-02-03 07:32:18 +00:00
onChangeLevelShowAfter : function ( type , menu ) {
var me = this ;
var listId = me . api . asc _GetCurrentNumberingId ( ) ,
level = me . api . asc _GetCurrentNumberingLvl ( ) ,
props = ( listId !== null ) ? me . api . asc _GetNumberingPr ( listId ) : null ;
2021-04-23 14:59:55 +00:00
var item = _ . find ( menu . items , function ( item ) { return item . options . level == level ; } ) ;
menu . clearAll ( ) ;
item && item . setChecked ( true ) ;
2021-02-03 07:32:18 +00:00
if ( props ) {
this . api . SetDrawImagePreviewBulletChangeListLevel ( menu . options . previewIds , props ) ;
}
} ,
onChangeLevelClick : function ( type , menu , item ) {
if ( this . api ) {
2021-02-05 11:08:18 +00:00
this . api . asc _SetNumberingLvl ( item . options . level ) ;
2021-02-03 07:32:18 +00:00
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
2016-03-11 00:48:53 +00:00
onLineSpaceToggle : function ( menu , item , state , e ) {
if ( ! ! state ) {
this . _state . linespace = undefined ;
if ( this . api )
this . api . put _PrLineSpacing ( c _paragraphLinerule . LINERULE _AUTO , item . value ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Line Spacing' ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
}
} ,
onMenuNonPrintingToggle : function ( menu , item , state , e ) {
var me = this ;
if ( item . value === 'characters' ) {
Common . localStorage . setItem ( "de-show-hiddenchars" , state ) ;
me . toolbar . btnShowHidenChars . toggle ( state , true ) ;
if ( me . api )
me . api . put _ShowParaMarks ( state ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Hidden Characters' ) ;
} else if ( item . value === 'table' ) {
Common . localStorage . setItem ( "de-show-tableline" , state ) ;
me . api && me . api . put _ShowTableEmptyLine ( state ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me ) ;
}
} ,
onNonPrintingToggle : function ( btn , state ) {
var me = this ;
if ( state ) {
me . toolbar . mnuNonPrinting . items [ 0 ] . setChecked ( true , true ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Hidden Characters' ) ;
} else {
me . toolbar . mnuNonPrinting . items [ 0 ] . setChecked ( false , true ) ;
}
if ( me . api )
me . api . put _ShowParaMarks ( state ) ;
Common . localStorage . setItem ( "de-show-hiddenchars" , state ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me ) ;
} ,
2017-03-31 10:54:02 +00:00
onClickPageBreak : function ( value , e ) {
if ( value === 'column' ) {
this . api . put _AddColumnBreak ( ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Column Break' ) ;
} else
if ( value == 'page' ) {
this . api . put _AddPageBreak ( ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Page Break' ) ;
} else {
this . api . add _SectionBreak ( value ) ;
2016-03-11 00:48:53 +00:00
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Section Break' ) ;
}
2017-03-31 10:54:02 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
2016-03-11 00:48:53 +00:00
} ,
onTablePickerSelect : function ( picker , columns , rows , e ) {
if ( this . api ) {
this . toolbar . fireEvent ( 'inserttable' , this . toolbar ) ;
this . api . put _Table ( columns , rows ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Table' ) ;
} ,
2021-08-04 15:08:17 +00:00
onInsertTableShow : function ( menu ) {
var selected = this . api . asc _GetSelectedText ( ) ;
menu . items [ 4 ] . setDisabled ( ! selected || selected . length < 1 ) ;
} ,
2016-03-11 00:48:53 +00:00
onInsertTableClick : function ( menu , item , e ) {
2021-04-15 21:32:56 +00:00
var me = this ;
2016-03-11 00:48:53 +00:00
if ( item . value === 'custom' ) {
( new Common . Views . InsertTableDialog ( {
handler : function ( result , value ) {
if ( result == 'ok' ) {
if ( me . api ) {
me . toolbar . fireEvent ( 'inserttable' , me . toolbar ) ;
me . api . put _Table ( value . columns , value . rows ) ;
}
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Table' ) ;
}
2017-08-23 08:02:04 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
2016-03-11 00:48:53 +00:00
}
} ) ) . show ( ) ;
2019-11-20 14:10:32 +00:00
} else if ( item . value == 'draw' ) {
item . isChecked ( ) && menu . items [ 3 ] . setChecked ( false , true ) ;
this . api . SetTableDrawMode ( item . isChecked ( ) ) ;
} else if ( item . value == 'erase' ) {
item . isChecked ( ) && menu . items [ 2 ] . setChecked ( false , true ) ;
this . api . SetTableEraseMode ( item . isChecked ( ) ) ;
2021-04-15 21:32:56 +00:00
} else if ( item . value == 'convert' ) {
( new DE . Views . TextToTableDialog ( {
props : this . api . asc _PreConvertTextToTable ( ) ,
handler : function ( result , value ) {
if ( result == 'ok' && me . api ) {
me . api . asc _ConvertTextToTable ( value ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
}
} ) ) . show ( ) ;
2016-03-11 00:48:53 +00:00
}
} ,
onInsertImageClick : function ( menu , item , e ) {
var me = this ;
if ( item . value === 'file' ) {
this . toolbar . fireEvent ( 'insertimage' , this . toolbar ) ;
if ( this . api )
2021-05-11 12:24:53 +00:00
setTimeout ( function ( ) { me . api . asc _addImage ( ) ; } , 1 ) ;
2016-03-11 00:48:53 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Image' ) ;
2018-10-03 11:00:08 +00:00
} else if ( item . value === 'url' ) {
2016-03-11 00:48:53 +00:00
( new Common . Views . ImageFromUrlDialog ( {
handler : function ( result , value ) {
if ( result == 'ok' ) {
if ( me . api ) {
var checkUrl = value . replace ( / /g , '' ) ;
if ( ! _ . isEmpty ( checkUrl ) ) {
me . toolbar . fireEvent ( 'insertimage' , me . toolbar ) ;
2021-08-26 12:14:29 +00:00
me . api . AddImageUrl ( [ checkUrl ] ) ;
2016-03-11 00:48:53 +00:00
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Image' ) ;
} else {
Common . UI . warning ( {
msg : this . textEmptyImgUrl
} ) ;
}
}
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
}
}
} ) ) . show ( ) ;
2018-10-03 11:00:08 +00:00
} else if ( item . value === 'storage' ) {
2020-05-13 09:47:45 +00:00
Common . NotificationCenter . trigger ( 'storage:image-load' , 'add' ) ;
2019-07-26 11:49:53 +00:00
}
} ,
2020-05-13 09:47:45 +00:00
openImageFromStorage : function ( type ) {
var me = this ;
if ( this . toolbar . mode . canRequestInsertImage ) {
Common . Gateway . requestInsertImage ( type ) ;
} else {
( new Common . Views . SelectFileDlg ( {
fileChoiceUrl : this . toolbar . mode . fileChoiceUrl . replace ( "{fileExt}" , "" ) . replace ( "{documentType}" , "ImagesOnly" )
} ) ) . on ( 'selectfile' , function ( obj , file ) {
file && ( file . c = type ) ;
2021-10-04 16:29:27 +00:00
! file . images && ( file . images = [ { fileType : file . fileType , url : file . url } ] ) ; // SelectFileDlg uses old format for inserting image
file . url = null ;
2020-05-13 09:47:45 +00:00
me . insertImage ( file ) ;
} ) . show ( ) ;
}
} ,
insertImageFromStorage : function ( data ) {
2021-08-27 11:07:50 +00:00
if ( data && data . _urls && ( ! data . c || data . c == 'add' ) ) {
2019-07-26 11:49:53 +00:00
this . toolbar . fireEvent ( 'insertimage' , this . toolbar ) ;
2021-08-27 11:07:50 +00:00
( data . _urls . length > 0 ) && this . api . AddImageUrl ( data . _urls , undefined , data . token ) ; // for loading from storage
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Image' ) ;
}
} ,
insertImage : function ( data ) { // gateway
if ( data && ( data . url || data . images ) ) {
2021-08-30 21:12:45 +00:00
data . url && console . log ( "Obsolete: The 'url' parameter of the 'insertImage' method is deprecated. Please use 'images' parameter instead." ) ;
2021-08-26 12:14:29 +00:00
var arr = [ ] ;
if ( data . images && data . images . length > 0 ) {
for ( var i = 0 ; i < data . images . length ; i ++ ) {
data . images [ i ] && data . images [ i ] . url && arr . push ( data . images [ i ] . url ) ;
}
} else
data . url && arr . push ( data . url ) ;
2021-08-27 11:07:50 +00:00
data . _urls = arr ;
2016-03-11 00:48:53 +00:00
}
2020-05-13 09:47:45 +00:00
Common . NotificationCenter . trigger ( 'storage:image-insert' , data ) ;
} ,
2016-03-11 00:48:53 +00:00
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 , this . toolbar . btnInsertShape ) ;
} ,
2016-07-04 13:04:05 +00:00
onPageOrientSelect : function ( menu , item ) {
2016-03-11 00:48:53 +00:00
this . _state . pgorient = undefined ;
2016-07-04 13:04:05 +00:00
if ( this . api && item . checked ) {
this . api . change _PageOrient ( item . value ) ;
}
2016-03-11 00:48:53 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Page Orientation' ) ;
} ,
onClearStyleClick : function ( btn , e ) {
if ( this . api )
this . api . ClearFormating ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
onCopyStyleToggle : function ( btn , state , e ) {
if ( this . api )
this . api . SetPaintFormat ( state ? 1 : 0 ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
this . modeAlwaysSetStyle = state ;
} ,
onPageSizeClick : function ( menu , item , state ) {
if ( this . api && state ) {
this . _state . pgsize = [ 0 , 0 ] ;
if ( item . value !== 'advanced' )
this . api . change _DocSize ( item . value [ 0 ] , item . value [ 1 ] ) ;
else {
2017-04-25 13:16:12 +00:00
var win , props ,
2016-03-11 00:48:53 +00:00
me = this ;
win = new DE . Views . PageSizeDialog ( {
handler : function ( dlg , result ) {
if ( result == 'ok' ) {
props = dlg . getSettings ( ) ;
me . api . change _DocSize ( props [ 0 ] , props [ 1 ] ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
}
}
} ) ;
win . show ( ) ;
win . setSettings ( me . api . asc _GetSectionProps ( ) ) ;
}
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' ) {
var section = this . api . asc _GetSectionProps ( ) ,
errmsg = null ,
me = this ;
if ( item . value [ 1 ] + item . value [ 3 ] > parseFloat ( section . get _W ( ) . toFixed ( 4 ) ) - 12.7 )
errmsg = this . txtMarginsW ;
else if ( item . value [ 0 ] + item . value [ 2 ] > parseFloat ( section . get _H ( ) . toFixed ( 4 ) ) - 2.6 )
errmsg = this . txtMarginsH ;
if ( errmsg ) {
Common . UI . warning ( {
title : this . notcriticalErrorTitle ,
msg : errmsg ,
callback : function ( ) {
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
}
} ) ;
this . onSectionProps ( section ) ;
return ;
} else {
2016-05-06 15:20:32 +00:00
var props = new Asc . CDocumentSectionProps ( ) ;
2016-03-11 00:48:53 +00:00
props . put _TopMargin ( item . value [ 0 ] ) ;
props . put _LeftMargin ( item . value [ 1 ] ) ;
props . put _BottomMargin ( item . value [ 2 ] ) ;
props . put _RightMargin ( item . value [ 3 ] ) ;
this . api . asc _SetSectionProps ( props ) ;
}
} else {
var win , props ,
me = this ;
win = new DE . Views . PageMarginsDialog ( {
2019-12-18 08:08:58 +00:00
api : me . api ,
2016-03-11 00:48:53 +00:00
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 . get _TopMargin ( ) , props . get _LeftMargin ( ) , props . get _BottomMargin ( ) , props . get _RightMargin ( ) ] ;
$ ( mnu . el ) . html ( mnu . template ( { id : Common . UI . getId ( ) , caption : mnu . caption , options : mnu . options } ) ) ;
Common . localStorage . setItem ( "de-pgmargins-top" , props . get _TopMargin ( ) ) ;
Common . localStorage . setItem ( "de-pgmargins-left" , props . get _LeftMargin ( ) ) ;
Common . localStorage . setItem ( "de-pgmargins-bottom" , props . get _BottomMargin ( ) ) ;
Common . localStorage . setItem ( "de-pgmargins-right" , props . get _RightMargin ( ) ) ;
me . api . asc _SetSectionProps ( props ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
}
}
} ) ;
win . show ( ) ;
win . setSettings ( me . api . asc _GetSectionProps ( ) ) ;
}
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Page Margins' ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
2019-09-18 13:12:39 +00:00
onLineNumbersSelect : function ( menu , item ) {
2020-09-27 20:44:54 +00:00
if ( _ . isUndefined ( item . value ) )
return ;
2019-09-18 13:12:39 +00:00
switch ( item . value ) {
case 0 :
2021-07-07 13:18:34 +00:00
this . _state . linenum = undefined ;
2020-11-05 10:11:40 +00:00
this . api . asc _SetLineNumbersProps ( Asc . c _oAscSectionApplyType . Current , null ) ;
2020-09-28 20:49:46 +00:00
break ;
2019-09-18 13:12:39 +00:00
case 1 :
case 2 :
case 3 :
2020-09-27 20:44:54 +00:00
this . _state . linenum = undefined ;
if ( this . api && item . checked ) {
2020-09-28 20:49:46 +00:00
var props = new Asc . CSectionLnNumType ( ) ;
props . put _Restart ( item . value == 1 ? Asc . c _oAscLineNumberRestartType . Continuous : ( item . value == 2 ? Asc . c _oAscLineNumberRestartType . NewPage : Asc . c _oAscLineNumberRestartType . NewSection ) ) ;
2020-11-25 15:28:56 +00:00
! ! this . api . asc _GetLineNumbersProps ( ) && props . put _CountBy ( undefined ) ;
2020-11-05 10:11:40 +00:00
this . api . asc _SetLineNumbersProps ( Asc . c _oAscSectionApplyType . Current , props ) ;
2020-09-27 20:44:54 +00:00
}
2019-09-18 13:12:39 +00:00
break ;
case 4 :
2020-09-28 20:49:46 +00:00
this . api && this . api . asc _SetParagraphSuppressLineNumbers ( item . checked ) ;
2019-09-18 13:12:39 +00:00
break ;
case 5 :
var win ,
me = this ;
win = new DE . Views . LineNumbersDialog ( {
2020-09-28 20:49:46 +00:00
applyTo : me . _state . linenum _apply ,
2019-09-18 13:12:39 +00:00
handler : function ( dlg , result ) {
if ( result == 'ok' ) {
2020-09-28 20:49:46 +00:00
var settings = dlg . getSettings ( ) ;
me . api . asc _SetLineNumbersProps ( settings . type , settings . props ) ;
me . _state . linenum _apply = settings . type ;
2019-09-18 13:12:39 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
}
}
} ) ;
win . show ( ) ;
2020-09-28 20:49:46 +00:00
win . setSettings ( me . api . asc _GetLineNumbersProps ( ) ) ;
2019-09-18 13:12:39 +00:00
break ;
}
2020-09-28 20:49:46 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
2019-09-18 13:12:39 +00:00
} ,
2020-09-27 20:44:54 +00:00
onLineNumbersProps : function ( props ) {
2020-09-28 20:49:46 +00:00
var index = 0 ;
2020-09-27 20:44:54 +00:00
if ( props ) {
2020-09-28 20:49:46 +00:00
switch ( props . get _Restart ( ) ) {
case Asc . c _oAscLineNumberRestartType . Continuous : index = 1 ; break ;
case Asc . c _oAscLineNumberRestartType . NewPage : index = 2 ; break ;
case Asc . c _oAscLineNumberRestartType . NewSection : index = 3 ; break ;
}
2020-09-27 20:44:54 +00:00
}
2020-09-28 20:49:46 +00:00
if ( this . _state . linenum === index )
return ;
this . toolbar . btnLineNumbers . menu . items [ index ] . setChecked ( true ) ;
this . _state . linenum = index ;
2020-09-27 20:44:54 +00:00
} ,
2020-09-29 09:42:16 +00:00
onLineNumbersShow : function ( menu ) {
menu . items [ 4 ] . setChecked ( this . _state . suppress _num ) ;
} ,
2016-03-11 00:48:53 +00:00
onColorSchemaClick : function ( menu , item ) {
if ( this . api ) {
2019-12-19 08:00:49 +00:00
this . api . asc _ChangeColorSchemeByIdx ( item . value ) ;
2016-03-11 00:48:53 +00:00
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Color Scheme' ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
2019-08-20 12:56:29 +00:00
onColorSchemaShow : function ( menu ) {
if ( this . api ) {
2019-12-19 08:00:49 +00:00
var value = this . api . asc _GetCurrentColorSchemeIndex ( ) ;
2019-08-20 12:56:29 +00:00
var item = _ . find ( menu . items , function ( item ) { return item . value == value ; } ) ;
( item ) ? item . setChecked ( true ) : menu . clearAll ( ) ;
}
} ,
2016-03-11 00:48:53 +00:00
onDropCapSelect : function ( menu , item ) {
if ( _ . isUndefined ( item . value ) )
return ;
this . _state . dropcap = undefined ;
if ( this . api && item . checked ) {
2016-04-05 11:52:34 +00:00
if ( item . value === Asc . c _oAscDropCap . None ) {
2016-03-11 00:48:53 +00:00
this . api . removeDropcap ( true ) ;
} else {
var SelectedObjects = this . api . getSelectedElements ( ) ,
i = - 1 ;
while ( ++ i < SelectedObjects . length ) {
2016-04-05 11:52:34 +00:00
if ( SelectedObjects [ i ] . get _ObjectType ( ) == Asc . c _oAscTypeSelectElement . Paragraph ) {
2016-03-11 00:48:53 +00:00
var pr = SelectedObjects [ i ] . get _ObjectValue ( ) ;
var value = pr . get _FramePr ( ) ;
if ( ! _ . isUndefined ( value ) ) {
2016-04-18 12:21:15 +00:00
value = new Asc . asc _CParagraphFrame ( ) ;
2016-03-11 00:48:53 +00:00
value . put _FromDropCapMenu ( true ) ;
value . put _DropCap ( item . value ) ;
this . api . put _FramePr ( value ) ;
} else {
2016-04-05 11:52:34 +00:00
this . api . asc _addDropCap ( ( item . value === Asc . c _oAscDropCap . Drop ) ) ;
2016-03-11 00:48:53 +00:00
}
break ;
}
}
}
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Drop Cap' ) ;
} ,
onDropCap : function ( v ) {
if ( this . _state . dropcap === v )
return ;
var index = - 1 ;
switch ( v ) {
2016-04-05 11:52:34 +00:00
case Asc . c _oAscDropCap . None : index = 0 ; break ;
case Asc . c _oAscDropCap . Drop : index = 1 ; break ;
case Asc . c _oAscDropCap . Margin : index = 2 ; break ;
2016-03-11 00:48:53 +00:00
}
if ( index < 0 )
2017-11-13 08:41:32 +00:00
this . toolbar . btnDropCap . menu . clearAll ( ) ;
2016-03-11 00:48:53 +00:00
else
this . toolbar . btnDropCap . menu . items [ index ] . setChecked ( true ) ;
this . _state . dropcap = v ;
} ,
2020-09-21 21:01:04 +00:00
onDropCapAdvancedClick : function ( isFrame ) {
2016-03-11 00:48:53 +00:00
var win , props , text ,
me = this ;
2020-09-21 21:01:04 +00:00
if ( ! isFrame && _ . isUndefined ( me . fontstore ) ) {
2016-03-11 00:48:53 +00:00
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 ) ;
}
if ( me . api ) {
var selectedElements = me . api . getSelectedElements ( ) ,
selectedElementsLenght = selectedElements . length ;
if ( selectedElements && _ . isArray ( selectedElements ) ) {
for ( var i = 0 ; i < selectedElementsLenght ; i ++ ) {
2016-04-05 11:52:34 +00:00
if ( selectedElements [ i ] . get _ObjectType ( ) == Asc . c _oAscTypeSelectElement . Paragraph ) {
2016-03-11 00:48:53 +00:00
props = selectedElements [ i ] . get _ObjectValue ( ) ;
break ;
}
}
}
if ( props ) {
( new DE . Views . DropcapSettingsAdvanced ( {
tableStylerRows : 2 ,
tableStylerColumns : 1 ,
2020-09-21 21:01:04 +00:00
fontStore : ! isFrame ? me . fontstore : null ,
2016-03-11 00:48:53 +00:00
paragraphProps : props ,
borderProps : me . borderAdvancedProps ,
api : me . api ,
2020-09-21 21:01:04 +00:00
isFrame : ! ! isFrame ,
2016-03-11 00:48:53 +00:00
handler : function ( result , value ) {
if ( result == 'ok' ) {
me . borderAdvancedProps = value . borderProps ;
2020-09-21 21:01:04 +00:00
if ( value . paragraphProps &&
( ! isFrame && value . paragraphProps . get _DropCap ( ) === Asc . c _oAscDropCap . None ||
isFrame && value . paragraphProps . get _Wrap ( ) === c _oAscFrameWrap . None ) ) {
me . api . removeDropcap ( ! isFrame ) ;
2016-03-11 00:48:53 +00:00
} else
me . api . put _FramePr ( value . paragraphProps ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
}
} ) ) . show ( ) ;
}
}
} ,
2017-12-12 11:14:27 +00:00
onControlsSelect : function ( menu , item ) {
2020-01-24 13:39:08 +00:00
if ( ! ( this . mode && this . mode . canFeatureContentControl ) ) return ;
2017-12-12 11:14:27 +00:00
if ( item . value == 'settings' || item . value == 'remove' ) {
if ( this . api . asc _IsContentControl ( ) ) {
var props = this . api . asc _GetContentControlProperties ( ) ;
if ( props ) {
var id = props . get _InternalId ( ) ;
if ( item . value == 'settings' ) {
var me = this ;
( new DE . Views . ControlSettingsDialog ( {
props : props ,
2018-08-28 14:37:45 +00:00
api : me . api ,
2019-11-14 13:28:28 +00:00
controlLang : me . _state . lang ,
interfaceLang : me . mode . lang ,
2017-12-12 11:14:27 +00:00
handler : function ( result , value ) {
if ( result == 'ok' ) {
me . api . asc _SetContentControlProperties ( value , id ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
}
} ) ) . show ( ) ;
} else {
this . api . asc _RemoveContentControlWrapper ( id ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Remove Content Control' ) ;
}
}
}
} else {
2020-06-22 17:15:47 +00:00
var isnew = ( item . value . indexOf ( 'new-' ) == 0 ) ,
oPr , oFormPr ;
if ( isnew ) {
oFormPr = new AscCommon . CSdtFormPr ( ) ;
2020-09-30 15:52:11 +00:00
this . toolbar . fireEvent ( 'insertcontrol' , this . toolbar ) ;
2020-06-22 17:15:47 +00:00
}
2019-11-05 12:46:04 +00:00
if ( item . value == 'plain' || item . value == 'rich' )
this . api . asc _AddContentControl ( ( item . value == 'plain' ) ? Asc . c _oAscSdtLevelType . Inline : Asc . c _oAscSdtLevelType . Block ) ;
2020-06-22 17:15:47 +00:00
else if ( item . value . indexOf ( 'picture' ) >= 0 )
this . api . asc _AddContentControlPicture ( oFormPr ) ;
2020-06-23 10:14:45 +00:00
else if ( item . value . indexOf ( 'checkbox' ) >= 0 || item . value . indexOf ( 'radiobox' ) >= 0 ) {
if ( isnew ) {
oPr = new AscCommon . CSdtCheckBoxPr ( ) ;
2021-03-26 21:36:57 +00:00
( item . value . indexOf ( 'radiobox' ) >= 0 ) && oPr . put _GroupKey ( this . textGroup + ' 1' ) ;
2020-06-23 10:14:45 +00:00
}
2020-06-22 17:15:47 +00:00
this . api . asc _AddContentControlCheckBox ( oPr , oFormPr ) ;
} else if ( item . value == 'date' )
2019-11-05 12:46:04 +00:00
this . api . asc _AddContentControlDatePicker ( ) ;
2020-06-22 17:15:47 +00:00
else if ( item . value . indexOf ( 'combobox' ) >= 0 || item . value . indexOf ( 'dropdown' ) >= 0 )
this . api . asc _AddContentControlList ( item . value . indexOf ( 'combobox' ) >= 0 , oPr , oFormPr ) ;
2020-06-23 10:14:45 +00:00
else if ( item . value == 'new-field' ) {
oPr = new AscCommon . CSdtTextFormPr ( ) ;
2020-06-22 17:15:47 +00:00
this . api . asc _AddContentControlTextForm ( oPr , oFormPr ) ;
2020-06-23 10:14:45 +00:00
}
2019-11-05 12:46:04 +00:00
2017-12-12 11:14:27 +00:00
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Add Content Control' ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
2016-03-11 00:48:53 +00:00
2018-07-23 14:39:53 +00:00
onNewControlsColor : function ( picker , color ) {
this . toolbar . mnuControlsColorPicker . addNewColor ( ) ;
} ,
onNoControlsColor : function ( item ) {
2018-08-08 13:51:02 +00:00
if ( ! item . isChecked ( ) )
2019-01-31 12:22:55 +00:00
this . api . asc _SetGlobalContentControlShowHighlight ( true , 220 , 220 , 220 ) ;
else
this . api . asc _SetGlobalContentControlShowHighlight ( false ) ;
2018-07-23 14:39:53 +00:00
} ,
onSelectControlsColor : function ( picker , color ) {
var clr = Common . Utils . ThemeColor . getRgbColor ( color ) ;
if ( this . api ) {
2019-01-31 12:22:55 +00:00
this . api . asc _SetGlobalContentControlShowHighlight ( true , clr . get _r ( ) , clr . get _g ( ) , clr . get _b ( ) ) ;
2018-07-23 14:39:53 +00:00
}
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Content Controls Color' ) ;
} ,
2016-03-11 00:48:53 +00:00
onColumnsSelect : function ( menu , item ) {
if ( _ . isUndefined ( item . value ) )
return ;
this . _state . columns = undefined ;
2017-06-23 14:27:20 +00:00
if ( this . api ) {
if ( item . value == 'advanced' ) {
2020-04-08 16:35:41 +00:00
var win ,
2017-06-23 14:27:20 +00:00
me = this ;
win = new DE . Views . CustomColumnsDialog ( {
handler : function ( dlg , result ) {
if ( result == 'ok' ) {
props = dlg . getSettings ( ) ;
me . api . asc _SetColumnsProps ( props ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
}
}
} ) ;
win . show ( ) ;
win . setSettings ( me . api . asc _GetColumnsProps ( ) ) ;
} else if ( item . checked ) {
var props = new Asc . CDocumentColumnsProps ( ) ,
cols = item . value ,
def _space = 12.5 ;
props . put _EqualWidth ( cols < 3 ) ;
if ( cols < 3 ) {
props . put _Num ( cols + 1 ) ;
props . put _Space ( def _space ) ;
} else {
var total = this . api . asc _GetColumnsProps ( ) . get _TotalWidth ( ) ,
left = ( total - def _space * 2 ) / 3 ,
right = total - def _space - left ;
props . put _ColByValue ( 0 , ( cols == 3 ) ? left : right , def _space ) ;
props . put _ColByValue ( 1 , ( cols == 3 ) ? right : left , 0 ) ;
}
this . api . asc _SetColumnsProps ( props ) ;
2016-03-11 00:48:53 +00:00
}
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Insert Columns' ) ;
} ,
onColumnsProps : function ( props ) {
if ( props ) {
var equal = props . get _EqualWidth ( ) ,
num = ( equal ) ? props . get _Num ( ) : props . get _ColsCount ( ) ,
def _space = 12.5 ,
index = - 1 ;
if ( equal && num < 4 && ( num == 1 || Math . abs ( props . get _Space ( ) - def _space ) < 0.1 ) )
index = ( num - 1 ) ;
else if ( ! equal && num == 2 ) {
var left = props . get _Col ( 0 ) . get _W ( ) ,
space = props . get _Col ( 0 ) . get _Space ( ) ,
right = props . get _Col ( 1 ) . get _W ( ) ,
total = props . get _TotalWidth ( ) ;
if ( Math . abs ( space - def _space ) < 0.1 ) {
var width = ( total - space * 2 ) / 3 ;
if ( left < right && Math . abs ( left - width ) < 0.1 )
index = 3 ;
else if ( left > right && Math . abs ( right - width ) < 0.1 )
index = 4 ;
}
}
if ( this . _state . columns === index )
return ;
if ( index < 0 )
2017-11-13 08:41:32 +00:00
this . toolbar . btnColumns . menu . clearAll ( ) ;
2016-03-11 00:48:53 +00:00
else
this . toolbar . btnColumns . menu . items [ index ] . setChecked ( true ) ;
this . _state . columns = index ;
}
} ,
2019-08-30 14:55:29 +00:00
onSelectChart : function ( type ) {
2016-03-11 00:48:53 +00:00
var me = this ,
2016-12-16 11:33:38 +00:00
chart = false ;
var selectedElements = me . api . getSelectedElements ( ) ;
if ( selectedElements && _ . isArray ( selectedElements ) ) {
for ( var i = 0 ; i < selectedElements . length ; i ++ ) {
if ( Asc . c _oAscTypeSelectElement . Image == selectedElements [ i ] . get _ObjectType ( ) ) {
var elValue = selectedElements [ i ] . get _ObjectValue ( ) . get _ChartProperties ( ) ;
if ( elValue ) {
chart = elValue ;
break ;
}
}
}
}
if ( chart ) {
2020-12-08 08:48:28 +00:00
var isCombo = ( type == Asc . c _oAscChartTypeSettings . comboBarLine || type == Asc . c _oAscChartTypeSettings . comboBarLineSecondary ||
type == Asc . c _oAscChartTypeSettings . comboAreaBar || type == Asc . c _oAscChartTypeSettings . comboCustom ) ;
if ( isCombo && chart . getSeries ( ) . length < 2 ) {
Common . NotificationCenter . trigger ( 'showerror' , Asc . c _oAscError . ID . ComboSeriesError , Asc . c _oAscError . Level . NoCritical ) ;
} else
chart . changeType ( type ) ;
2016-12-16 11:33:38 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} else {
2021-02-02 12:37:00 +00:00
var controller = this . getApplication ( ) . getController ( 'Common.Controllers.ExternalDiagramEditor' ) ;
2016-12-16 11:33:38 +00:00
if ( ! this . diagramEditor )
2021-02-02 12:37:00 +00:00
this . diagramEditor = controller . getView ( 'Common.Views.ExternalDiagramEditor' ) ;
2016-03-11 00:48:53 +00:00
2016-12-16 11:33:38 +00:00
if ( this . diagramEditor && me . api ) {
this . diagramEditor . setEditMode ( false ) ;
2021-02-02 12:37:00 +00:00
// this.diagramEditor.show();
controller . showExternalEditor ( ) ;
2016-03-11 00:48:53 +00:00
2016-12-16 11:33:38 +00:00
chart = me . api . asc _getChartObject ( type ) ;
if ( chart ) {
this . diagramEditor . setChartData ( new Asc . asc _CChartBinary ( chart ) ) ;
}
me . toolbar . fireEvent ( 'insertchart' , me . toolbar ) ;
2016-03-11 00:48:53 +00:00
}
}
} ,
2019-09-03 10:32:06 +00:00
onInsertTextart : function ( data ) {
if ( this . api ) {
this . toolbar . fireEvent ( 'inserttextart' , this . toolbar ) ;
this . api . 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' ) ;
}
} ,
2021-09-20 14:38:41 +00:00
onInsertPageNumberClick : function ( picker , item , record , e ) {
2016-03-11 00:48:53 +00:00
if ( this . api )
this . api . put _PageNum ( record . get ( 'data' ) . type , record . get ( 'data' ) . subtype ) ;
2021-09-20 14:38:41 +00:00
if ( e . type !== 'click' )
this . toolbar . btnEditHeader . menu . hide ( ) ;
2016-03-11 00:48:53 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Page Number' ) ;
} ,
2016-10-04 12:05:12 +00:00
onInsertPageCountClick : function ( item , e ) {
if ( this . api )
this . api . asc _AddPageCount ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Pages Count' ) ;
} ,
2016-03-11 00:48:53 +00:00
onEditHeaderFooterClick : function ( menu , item ) {
if ( this . api ) {
if ( item . value == 'header' )
this . api . GoToHeader ( this . api . getCurrentPage ( ) ) ;
else if ( item . value == 'footer' )
this . api . GoToFooter ( this . api . getCurrentPage ( ) ) ;
else
return ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Edit ' + item . value ) ;
}
} ,
onPageNumCurrentPosClick : function ( item , e ) {
if ( this . api )
this . api . put _PageNum ( - 1 ) ;
if ( e . type !== 'click' )
this . toolbar . btnEditHeader . menu . hide ( ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Page Number' ) ;
} ,
2018-11-20 09:57:29 +00:00
onBtnBlankPageClick : function ( btn ) {
if ( this . api )
2018-11-20 14:43:15 +00:00
this . api . asc _AddBlankPage ( ) ;
2018-11-20 09:57:29 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Blank Page' ) ;
} ,
2019-04-05 11:28:51 +00:00
onWatermarkSelect : function ( menu , item ) {
if ( this . api ) {
2019-06-18 09:35:01 +00:00
if ( item . value == 'remove' )
this . api . asc _WatermarkRemove ( ) ;
else {
2019-04-05 11:28:51 +00:00
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 ) ;
}
( new DE . Views . WatermarkSettingsDialog ( {
2019-06-17 14:05:27 +00:00
props : me . api . asc _GetWatermarkProps ( ) ,
2019-04-05 11:28:51 +00:00
api : me . api ,
2019-09-16 11:46:03 +00:00
lang : me . mode . lang ,
2020-05-13 09:47:45 +00:00
storage : me . mode . canRequestInsertImage || me . mode . fileChoiceUrl && me . mode . fileChoiceUrl . indexOf ( "{documentType}" ) > - 1 ,
2019-04-05 11:28:51 +00:00
fontStore : me . fontstore ,
handler : function ( result , value ) {
if ( result == 'ok' ) {
2019-06-17 14:05:27 +00:00
me . api . asc _SetWatermarkProps ( value ) ;
2019-04-05 11:28:51 +00:00
}
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
}
} ) ) . show ( ) ;
2019-06-18 09:35:01 +00:00
}
2019-04-05 11:28:51 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Edit ' + item . value ) ;
}
} ,
2016-03-11 00:48:53 +00:00
onListStyleSelect : function ( combo , record ) {
this . _state . prstyle = undefined ;
if ( this . api )
this . api . put _Style ( record . get ( 'title' ) ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Style' ) ;
} ,
onListStyleBeforeHide : function ( item , e ) {
this . toolbar . listStyles . isStylesNotClosable = false ;
} ,
onListStyleContextMenu : function ( combo , record , e ) {
if ( ! this . toolbar . mode . canEditStyles )
return ;
var showPoint ;
var menu = this . toolbar . styleMenu ;
var api = this . api ;
var isAllCustomDeleted = true ;
var isAllDefailtNotModifaed = true ;
_ . each ( window . styles . get _MergedStyles ( ) , function ( style ) {
var isDefault = api . asc _IsStyleDefault ( style . get _Name ( ) ) ;
if ( isDefault ) {
if ( api . asc _IsDefaultStyleChanged ( style . get _Name ( ) ) ) {
isAllDefailtNotModifaed = false ;
}
} else {
isAllCustomDeleted = false ;
}
} ) ;
menu . items [ 3 ] . setDisabled ( isAllDefailtNotModifaed ) ;
menu . items [ 4 ] . setDisabled ( isAllCustomDeleted ) ;
2018-05-07 08:13:41 +00:00
var parentOffset = this . toolbar . $el . offset ( ) ,
top = e . clientY * Common . Utils . zoom ( ) ;
2016-03-11 00:48:53 +00:00
if ( $ ( '#header-container' ) . is ( ":visible" ) ) {
top -= $ ( '#header-container' ) . height ( )
}
2018-05-07 08:13:41 +00:00
showPoint = [ e . clientX * Common . Utils . zoom ( ) , top - parentOffset . top ] ;
2016-03-11 00:48:53 +00:00
if ( record != undefined ) {
//itemMenu
var isDefault = this . api . asc _IsStyleDefault ( record . get ( "title" ) ) ;
menu . items [ 0 ] . setVisible ( true ) ;
menu . items [ 1 ] . setVisible ( ! isDefault ) ;
menu . items [ 2 ] . setVisible ( isDefault ) ;
menu . items [ 3 ] . setVisible ( isDefault ) ;
menu . items [ 4 ] . setVisible ( ! isDefault ) ;
menu . items [ 2 ] . setDisabled ( ! this . api . asc _IsDefaultStyleChanged ( record . get ( "title" ) ) ) ;
for ( var i in menu . items ) {
menu . items [ i ] . styleTitle = record . get ( "title" ) ;
}
var selectedElements = api . getSelectedElements ( ) ,
isParagraph = false ;
if ( selectedElements && _ . isArray ( selectedElements ) ) {
for ( var i = 0 ; i < selectedElements . length ; i ++ ) {
2016-04-05 11:52:34 +00:00
if ( Asc . c _oAscTypeSelectElement . Paragraph == selectedElements [ i ] . get _ObjectType ( ) ) {
2016-03-11 00:48:53 +00:00
isParagraph = true ; break ;
}
}
}
menu . items [ 0 ] . setDisabled ( ! isParagraph ) ;
} else {
//comboMenu
menu . items [ 0 ] . setVisible ( false ) ;
menu . items [ 1 ] . setVisible ( false ) ;
menu . items [ 2 ] . setVisible ( false ) ;
menu . items [ 3 ] . setVisible ( true ) ;
menu . items [ 4 ] . setVisible ( true ) ;
}
if ( showPoint != undefined ) {
var menuContainer = this . toolbar . $el . find ( '#menu-style-container' ) ;
if ( ! menu . rendered ) {
if ( menuContainer . length < 1 ) {
menuContainer = $ ( '<div id="menu-style-container" style="position: absolute; z-index: 10000;"><div class="dropdown-toggle" data-toggle="dropdown"></div></div>' , menu . id ) ;
$ ( this . toolbar . el ) . append ( menuContainer ) ;
}
menu . render ( menuContainer ) ;
menu . cmpEl . attr ( { tabindex : "-1" } ) ;
}
menuContainer . css ( {
left : showPoint [ 0 ] ,
top : showPoint [ 1 ]
} ) ;
var parent = $ ( menu . el ) ;
parent . trigger ( $ . Event ( 'show.bs.dropdown' ) ) ;
parent . trigger ( $ . Event ( 'hide.bs.dropdown' ) ) ;
if ( menu . isVisible ( ) ) {
$ ( menu ) . toggleClass ( 'open' ) . trigger ( 'shown.bs.dropdown' ) ;
}
this . toolbar . listStyles . isStylesNotClosable = true ;
menu . show ( ) ;
}
} ,
onSaveStyle : function ( style ) {
window . styles _loaded = false ;
var me = this , win ;
if ( me . api ) {
var handlerDlg = function ( dlg , result ) {
if ( result == 'ok' ) {
var title = dlg . getTitle ( ) ,
nextStyle = dlg . getNextStyle ( ) ,
characterStyle = style . get _Link ( ) ;
me . _state . prstyle = title ;
style . put _Name ( title ) ;
characterStyle . put _Name ( title + '_character' ) ;
2017-04-12 10:00:17 +00:00
style . put _Next ( ( nextStyle ) ? nextStyle . asc _getName ( ) : null ) ;
2016-03-11 00:48:53 +00:00
me . api . asc _AddNewStyle ( style ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
} ;
2017-06-23 13:46:10 +00:00
var formats = [ ] ,
mainController = me . getApplication ( ) . getController ( 'Main' ) ;
2016-03-11 00:48:53 +00:00
_ . each ( window . styles . get _MergedStyles ( ) , function ( style ) {
2017-06-23 13:46:10 +00:00
formats . push ( { value : style , displayValue : mainController . translationTable [ style . get _Name ( ) ] || style . get _Name ( ) } )
2016-03-11 00:48:53 +00:00
} ) ;
win = new DE . Views . StyleTitleDialog ( {
handler : handlerDlg ,
formats : formats
} ) ;
win . show ( ) ;
}
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Save as Style' ) ;
} ,
onMenuSaveStyle : function ( item , e ) {
var me = this ;
if ( me . api && ! me . toolbar . listStylesAdditionalMenuItem . isDisabled ( ) ) {
me . onSaveStyle ( me . api . asc _GetStyleFromFormatting ( ) ) ;
}
} ,
// onAfterKeydownMenu: function (e) {
// if (e.keyCode == Common.UI.Keys.ESC) {
// if ($('#menu-style-container').hasClass("open")) {
// $('#menu-style-container').removeClass('open').trigger('hidden.bs.dropdown');
// } else if ($(e.currentTarget).hasClass("open")) {
// $(e.currentTarget).removeClass('open').trigger('hidden.bs.dropdown');
// }
// }
// },
onUpdateStyle : function ( newStyle ) {
if ( this . api ) {
newStyle . put _Name ( this . _state . prstyle ) ;
this . api . asc _AddNewStyle ( newStyle ) ;
}
} ,
_clearBullets : function ( ) {
this . toolbar . btnMarkers . toggle ( false , true ) ;
this . toolbar . btnNumbers . toggle ( false , true ) ;
this . toolbar . btnMultilevels . toggle ( false , true ) ;
this . toolbar . mnuMarkersPicker . selectByIndex ( 0 , true ) ;
this . toolbar . mnuNumbersPicker . selectByIndex ( 0 , true ) ;
this . toolbar . mnuMultilevelPicker . selectByIndex ( 0 , true ) ;
2019-12-17 11:52:30 +00:00
this . toolbar . mnuMarkerSettings && this . toolbar . mnuMarkerSettings . setDisabled ( true ) ;
this . toolbar . mnuNumberSettings && this . toolbar . mnuNumberSettings . setDisabled ( true ) ;
2019-12-17 14:25:12 +00:00
this . toolbar . mnuMultilevelSettings && this . toolbar . mnuMultilevelSettings . setDisabled ( true ) ;
2021-02-03 07:32:18 +00:00
this . toolbar . mnuMarkerChangeLevel && this . toolbar . mnuMarkerChangeLevel . setDisabled ( true ) ;
this . toolbar . mnuNumberChangeLevel && this . toolbar . mnuNumberChangeLevel . setDisabled ( true ) ;
2021-04-22 09:13:54 +00:00
this . toolbar . mnuMultiChangeLevel && this . toolbar . mnuMultiChangeLevel . setDisabled ( true ) ;
2016-03-11 00:48:53 +00:00
} ,
_getApiTextSize : function ( ) {
var out _value = 12 ,
textPr = this . api . get _TextProps ( ) ;
if ( textPr && textPr . get _TextPr ) {
out _value = textPr . get _TextPr ( ) . get _FontSize ( ) ;
}
return out _value ;
} ,
onAutoFontColor : function ( e ) {
this . _state . clrtext = this . _state . clrtext _asccolor = undefined ;
2016-04-18 12:21:15 +00:00
var color = new Asc . asc _CColor ( ) ;
2016-03-11 00:48:53 +00:00
color . put _auto ( true ) ;
this . api . put _TextColor ( color ) ;
this . toolbar . btnFontColor . currentColor = { color : color , isAuto : true } ;
this . toolbar . mnuFontColorPicker . currentColor = { color : color , isAuto : true } ;
} ,
onSelectHighlightColor : function ( picker , color ) {
this . _setMarkerColor ( color , 'menu' ) ;
} ,
2021-07-10 23:25:12 +00:00
onSelectFontColor : function ( btn , color ) {
2016-03-11 00:48:53 +00:00
this . _state . clrtext = this . _state . clrtext _asccolor = undefined ;
this . toolbar . btnFontColor . currentColor = color ;
2021-01-21 19:48:27 +00:00
this . toolbar . btnFontColor . setColor ( ( typeof ( color ) == 'object' ) ? ( color . isAuto ? '000' : color . color ) : color ) ;
2016-03-11 00:48:53 +00:00
this . toolbar . mnuFontColorPicker . currentColor = color ;
if ( this . api )
this . api . put _TextColor ( color . isAuto ? color . color : Common . Utils . ThemeColor . getRgbColor ( color ) ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Text Color' ) ;
} ,
2021-07-10 23:25:12 +00:00
onParagraphColorPickerSelect : function ( btn , color ) {
2016-03-11 00:48:53 +00:00
this . _state . clrback = this . _state . clrshd _asccolor = undefined ;
this . toolbar . btnParagraphColor . currentColor = color ;
2021-01-21 19:48:27 +00:00
this . toolbar . btnParagraphColor . setColor ( color ) ;
2016-03-11 00:48:53 +00:00
this . toolbar . mnuParagraphColorPicker . currentColor = color ;
if ( this . api ) {
if ( color == 'transparent' ) {
this . api . put _ParagraphShade ( false ) ;
} else {
this . api . put _ParagraphShade ( true , Common . Utils . ThemeColor . getRgbColor ( color ) ) ;
}
}
Common . NotificationCenter . trigger ( 'edit:complete' , this ) ;
} ,
onBtnHighlightColor : function ( btn ) {
if ( btn . pressed ) {
this . _setMarkerColor ( btn . currentColor ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Highlight Color' ) ;
}
else {
this . api . SetMarkerFormat ( false ) ;
}
} ,
onBtnFontColor : function ( ) {
this . toolbar . mnuFontColorPicker . trigger ( 'select' , this . toolbar . mnuFontColorPicker , this . toolbar . mnuFontColorPicker . currentColor ) ;
} ,
onBtnParagraphColor : function ( ) {
this . toolbar . mnuParagraphColorPicker . trigger ( 'select' , this . toolbar . mnuParagraphColorPicker , this . toolbar . mnuParagraphColorPicker . currentColor ) ;
} ,
onHighlightTransparentClick : function ( item , e ) {
this . _setMarkerColor ( 'transparent' , 'menu' ) ;
} ,
onParagraphColor : function ( shd ) {
var picker = this . toolbar . mnuParagraphColorPicker , clr ;
2016-04-05 16:18:57 +00:00
if ( shd !== null && shd !== undefined && shd . get _Value ( ) === Asc . c _oAscShdClear ) {
2016-03-11 00:48:53 +00:00
var color = shd . get _Color ( ) ;
if ( color ) {
2016-04-05 11:52:34 +00:00
if ( color . get _type ( ) == Asc . c _oAscColor . COLOR _TYPE _SCHEME ) {
2016-03-11 00:48:53 +00:00
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' ;
} else {
clr = 'transparent' ;
}
var 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 . indexOf ( clr ) < 0 ) ) {
if ( typeof ( clr ) == 'object' ) {
var isselected = false ;
for ( var i = 0 ; i < 10 ; i ++ ) {
if ( Common . Utils . ThemeColor . ThemeValues [ i ] == clr . effectValue ) {
picker . select ( clr , true ) ;
isselected = true ;
break ;
}
}
if ( ! isselected ) picker . clearSelection ( ) ;
} else
picker . select ( clr , true ) ;
this . _state . clrback = clr ;
}
this . _state . clrshd _asccolor = shd ;
} ,
onApiTextColor : function ( color ) {
if ( color . get _auto ( ) ) {
if ( this . _state . clrtext !== 'auto' ) {
2021-07-10 19:52:39 +00:00
this . toolbar . btnFontColor . setAutoColor ( true ) ;
2016-03-11 00:48:53 +00:00
this . toolbar . mnuFontColorPicker . clearSelection ( ) ;
this . _state . clrtext = 'auto' ;
}
} else {
var picker = this . toolbar . mnuFontColorPicker , clr ;
if ( color ) {
2016-04-05 11:52:34 +00:00
color . get _type ( ) == Asc . c _oAscColor . COLOR _TYPE _SCHEME ?
2016-03-11 00:48:53 +00:00
clr = { color : Common . Utils . ThemeColor . getHexColor ( color . get _r ( ) , color . get _g ( ) , color . get _b ( ) ) , effectValue : color . get _value ( ) } :
clr = Common . Utils . ThemeColor . getHexColor ( color . get _r ( ) , color . get _g ( ) , color . get _b ( ) ) ;
}
var type1 = typeof ( clr ) ,
type2 = typeof ( this . _state . clrtext ) ;
if ( ( this . _state . clrtext == 'auto' ) || ( type1 !== type2 ) || ( type1 == 'object' &&
( clr . effectValue !== this . _state . clrtext . effectValue || this . _state . clrtext . color . indexOf ( clr . color ) < 0 ) ) ||
( type1 != 'object' && this . _state . clrtext . indexOf ( clr ) < 0 ) ) {
2021-07-10 19:52:39 +00:00
this . toolbar . btnFontColor . setAutoColor ( false ) ;
2016-03-11 00:48:53 +00:00
if ( typeof ( clr ) == 'object' ) {
var isselected = false ;
for ( var i = 0 ; i < 10 ; i ++ ) {
if ( Common . Utils . ThemeColor . ThemeValues [ i ] == clr . effectValue ) {
picker . select ( clr , true ) ;
isselected = true ;
break ;
}
}
if ( ! isselected ) picker . clearSelection ( ) ;
} else {
picker . select ( clr , true ) ;
}
this . _state . clrtext = clr ;
}
}
this . _state . clrtext _asccolor = color ;
} ,
2019-08-20 11:05:13 +00:00
onApiAutoShapes : function ( ) {
var me = this ;
var onShowBefore = function ( menu ) {
me . fillAutoShapes ( ) ;
menu . off ( 'show:before' , onShowBefore ) ;
} ;
me . toolbar . btnInsertShape . menu . on ( 'show:before' , onShowBefore ) ;
} ,
2016-03-11 00:48:53 +00:00
fillAutoShapes : function ( ) {
var me = this ,
shapesStore = this . getApplication ( ) . getCollection ( 'ShapeGroups' ) ;
2019-08-19 14:33:30 +00:00
var onShowAfter = function ( menu ) {
for ( var i = 0 ; i < shapesStore . length ; i ++ ) {
var shapePicker = new Common . UI . DataViewSimple ( {
2019-08-20 11:05:13 +00:00
el : $ ( '#id-toolbar-menu-shapegroup' + i , menu . items [ i ] . $el ) ,
2019-08-19 14:33:30 +00:00
store : shapesStore . at ( i ) . get ( 'groupStore' ) ,
parentMenu : menu . items [ i ] . menu ,
itemTemplate : _ . template ( '<div class="item-shape" id="<%= id %>"><svg width="20" height="20" class=\"icon\"><use xlink:href=\"#svg-icon-<%= data.shapeType %>\"></use></svg></div>' )
} ) ;
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' ) ;
}
} ) ;
}
2019-08-20 08:05:52 +00:00
menu . off ( 'show:after' , onShowAfter ) ;
2019-08-19 14:33:30 +00:00
} ;
2019-08-20 11:05:13 +00:00
me . toolbar . btnInsertShape . menu . on ( 'show:after' , onShowAfter ) ;
2019-08-19 14:33:30 +00:00
2016-03-11 00:48:53 +00:00
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 ( '<div id="id-toolbar-menu-shapegroup' + i + '" class="menu-shape" style="width: ' + ( shapeGroup . get ( 'groupWidth' ) - 8 ) + 'px; margin-left: 5px;"></div>' ) }
]
} )
} ) ;
me . toolbar . btnInsertShape . menu . addItem ( menuItem ) ;
}
} ,
fillEquations : function ( ) {
2016-10-24 10:58:34 +00:00
if ( ! this . toolbar . btnInsertEquation . rendered || this . toolbar . btnInsertEquation . menu . items . length > 0 ) return ;
2016-08-23 08:50:19 +00:00
2016-03-11 00:48:53 +00:00
var me = this , equationsStore = this . getApplication ( ) . getCollection ( 'EquationGroups' ) ;
2019-08-15 12:54:53 +00:00
2016-08-23 11:36:55 +00:00
me . toolbar . btnInsertEquation . menu . removeAll ( ) ;
2019-08-15 12:54:53 +00:00
var onShowAfter = function ( menu ) {
for ( var i = 0 ; i < equationsStore . length ; ++ i ) {
var equationPicker = new Common . UI . DataViewSimple ( {
2019-08-20 11:05:13 +00:00
el : $ ( '#id-toolbar-menu-equationgroup' + i , menu . items [ i ] . $el ) ,
2019-08-15 12:54:53 +00:00
parentMenu : menu . items [ i ] . menu ,
store : equationsStore . at ( i ) . get ( 'groupStore' ) ,
scrollAlwaysVisible : true ,
2021-01-18 09:19:38 +00:00
itemTemplate : _ . template (
'<div class="item-equation" style="" >' +
'<div class="equation-icon" style="background-position:<%= posX %>px <%= posY %>px;width:<%= width %>px;height:<%= height %>px;" id="<%= id %>"></div>' +
2019-08-15 12:54:53 +00:00
'</div>' )
} ) ;
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' ) ;
}
} ) ;
}
2019-08-20 08:05:52 +00:00
menu . off ( 'show:after' , onShowAfter ) ;
2019-08-15 12:54:53 +00:00
} ;
me . toolbar . btnInsertEquation . menu . on ( 'show:after' , onShowAfter ) ;
2019-08-15 11:33:50 +00:00
2016-03-11 00:48:53 +00:00
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 ( '<div id="id-toolbar-menu-equationgroup' + i +
'" class="menu-shape" style="width:' + ( equationGroup . get ( 'groupWidth' ) + 8 ) + 'px; ' +
equationGroup . get ( 'groupHeight' ) + 'margin-left:5px;"></div>' ) }
]
} )
} ) ;
me . toolbar . btnInsertEquation . menu . addItem ( menuItem ) ;
}
} ,
onInsertEquationClick : function ( ) {
if ( this . api && ! this . _state . in _equation ) {
this . api . asc _AddMath ( ) ;
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Add Equation' ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar , this . toolbar . btnInsertEquation ) ;
} ,
2019-11-08 08:34:53 +00:00
onInsertSymbolClick : function ( ) {
2019-11-15 11:42:07 +00:00
if ( this . dlgSymbolTable && this . dlgSymbolTable . isVisible ( ) ) return ;
2019-11-08 08:34:53 +00:00
if ( this . api ) {
2020-10-05 14:32:18 +00:00
var me = this ,
selected = me . api . asc _GetSelectedText ( ) ;
2019-11-15 11:42:07 +00:00
me . dlgSymbolTable = new Common . Views . SymbolTableDialog ( {
api : me . api ,
lang : me . mode . lang ,
modal : false ,
type : 1 ,
2020-04-02 13:14:45 +00:00
special : true ,
showShortcutKey : true ,
2020-10-05 14:32:18 +00:00
font : selected && selected . length > 0 ? this . api . get _TextProps ( ) . get _TextPr ( ) . get _FontFamily ( ) . get _Name ( ) : undefined ,
symbol : selected && selected . length > 0 ? selected . charAt ( 0 ) : undefined ,
2019-11-15 11:42:07 +00:00
buttons : [ { value : 'ok' , caption : this . textInsert } , 'close' ] ,
handler : function ( dlg , result , settings ) {
if ( result == 'ok' ) {
2020-08-27 15:54:14 +00:00
me . api . asc _insertSymbol ( settings . font ? settings . font : me . api . get _TextProps ( ) . get _TextPr ( ) . get _FontFamily ( ) . get _Name ( ) , settings . code , settings . special ) ;
2019-11-15 11:42:07 +00:00
} else
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
}
} ) ;
me . dlgSymbolTable . show ( ) ;
2019-11-15 13:57:55 +00:00
me . dlgSymbolTable . on ( 'symbol:dblclick' , function ( cmp , result , settings ) {
2020-08-27 15:54:14 +00:00
me . api . asc _insertSymbol ( settings . font ? settings . font : me . api . get _TextProps ( ) . get _TextPr ( ) . get _FontFamily ( ) . get _Name ( ) , settings . code , settings . special ) ;
2019-11-11 14:48:09 +00:00
} ) ;
2019-11-08 08:34:53 +00:00
}
} ,
2019-08-15 13:51:48 +00:00
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 ) ;
} ,
2016-03-11 00:48:53 +00:00
onMathTypes : function ( equation ) {
var equationgrouparray = [ ] ,
equationsStore = this . getCollection ( 'EquationGroups' ) ;
equationsStore . reset ( ) ;
// equations groups
var c _oAscMathMainTypeStrings = { } ;
// [translate, count cells, scroll]
2016-10-21 10:54:36 +00:00
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 ] ;
2016-03-11 00:48:53 +00:00
// equations sub groups
// equations types
var translationTable = { } , name = '' , translate = '' ;
2016-10-21 10:54:36 +00:00
for ( name in Common . define . c _oAscMathType ) {
if ( Common . define . c _oAscMathType . hasOwnProperty ( name ) ) {
2016-03-11 00:48:53 +00:00
var arr = name . split ( '_' ) ;
if ( arr . length == 2 && arr [ 0 ] == 'Symbol' ) {
translate = 'txt' + arr [ 0 ] + '_' + arr [ 1 ] . toLocaleLowerCase ( ) ;
} else
translate = 'txt' + name ;
2016-10-21 10:54:36 +00:00
translationTable [ Common . define . c _oAscMathType [ name ] ] = this [ translate ] ;
2016-03-11 00:48:53 +00:00
}
}
2019-08-15 13:39:48 +00:00
var i , id = 0 , count = 0 , length = 0 , width = 0 , height = 0 , store = null , list = null , eqStore = null , eq = null , data ;
2016-03-11 00:48:53 +00:00
if ( equation ) {
2019-08-15 13:39:48 +00:00
data = equation . get _Data ( ) ;
count = data . length ;
2016-03-11 00:48:53 +00:00
if ( count ) {
for ( var j = 0 ; j < count ; ++ j ) {
2019-08-15 13:39:48 +00:00
var group = data [ j ] ;
id = group . get _Id ( ) ;
width = group . get _W ( ) ;
height = group . get _H ( ) ;
2016-03-11 00:48:53 +00:00
store = new Backbone . Collection ( [ ] , {
model : DE . Models . EquationModel
} ) ;
if ( store ) {
2019-08-15 13:39:48 +00:00
var allItemsCount = 0 , itemsCount = 0 , ids = 0 , arr = [ ] ;
length = group . get _Data ( ) . length ;
2016-03-11 00:48:53 +00:00
for ( i = 0 ; i < length ; ++ i ) {
2019-08-15 13:39:48 +00:00
eqStore = group . get _Data ( ) [ i ] ;
2016-03-11 00:48:53 +00:00
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 ] ;
}
2019-08-15 13:39:48 +00:00
arr . push ( {
2016-03-11 00:48:53 +00:00
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 ;
}
2019-08-15 13:39:48 +00:00
store . add ( arr ) ;
2016-03-11 00:48:53 +00:00
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 ( ) ;
}
}
} ,
activateControls : function ( ) {
_ . each ( this . toolbar . toolbarControls , function ( item ) {
item . setDisabled ( false ) ;
} , this ) ;
this . toolbar . btnUndo . setDisabled ( this . _state . can _undo !== true ) ;
this . toolbar . btnRedo . setDisabled ( this . _state . can _redo !== true ) ;
this . toolbar . btnCopy . setDisabled ( this . _state . can _copycut !== true ) ;
this . toolbar . btnPrint . setDisabled ( ! this . toolbar . mode . canPrint ) ;
2021-08-26 20:56:09 +00:00
if ( ! this . _state . mmdisable ) {
2016-03-11 00:48:53 +00:00
this . toolbar . btnMailRecepients . setDisabled ( false ) ;
2021-08-26 20:56:09 +00:00
this . toolbar . mnuMailRecepients . items [ 2 ] . setVisible ( this . toolbar . mode . fileChoiceUrl || this . toolbar . mode . canRequestMailMergeRecipients ) ;
}
2016-03-11 00:48:53 +00:00
this . _state . activated = true ;
var props = this . api . asc _GetSectionProps ( ) ;
this . onApiPageSize ( props . get _W ( ) , props . get _H ( ) ) ;
} ,
2019-08-22 14:16:07 +00:00
DisableMailMerge : function ( ) {
this . _state . mmdisable = true ;
this . toolbar && this . toolbar . btnMailRecepients && this . toolbar . btnMailRecepients . setDisabled ( true ) ;
} ,
2016-03-11 00:48:53 +00:00
updateThemeColors : function ( ) {
var updateColors = function ( picker , defaultColorIndex ) {
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 = effectcolors [ defaultColorIndex ] ;
} else if ( clr !== undefined ) {
picker . currentColor = clr ;
}
}
} ;
updateColors ( this . toolbar . mnuFontColorPicker , 1 ) ;
if ( this . toolbar . btnFontColor . currentColor === undefined || ! this . toolbar . btnFontColor . currentColor . isAuto ) {
this . toolbar . btnFontColor . currentColor = this . toolbar . mnuFontColorPicker . currentColor . color || this . toolbar . mnuFontColorPicker . currentColor ;
2021-01-21 19:48:27 +00:00
this . toolbar . btnFontColor . setColor ( this . toolbar . btnFontColor . currentColor ) ;
2016-03-11 00:48:53 +00:00
}
if ( this . _state . clrtext _asccolor !== undefined ) {
this . _state . clrtext = undefined ;
this . onApiTextColor ( this . _state . clrtext _asccolor ) ;
}
this . _state . clrtext _asccolor = undefined ;
updateColors ( this . toolbar . mnuParagraphColorPicker , 0 ) ;
this . toolbar . btnParagraphColor . currentColor = this . toolbar . mnuParagraphColorPicker . currentColor . color || this . toolbar . mnuParagraphColorPicker . currentColor ;
2021-01-21 19:48:27 +00:00
this . toolbar . btnParagraphColor . setColor ( this . toolbar . btnParagraphColor . currentColor ) ;
2016-03-11 00:48:53 +00:00
if ( this . _state . clrshd _asccolor !== undefined ) {
this . _state . clrback = undefined ;
this . onParagraphColor ( this . _state . clrshd _asccolor ) ;
}
this . _state . clrshd _asccolor = undefined ;
} ,
_onInitEditorStyles : function ( styles ) {
window . styles _loaded = false ;
var self = this ,
listStyles = self . toolbar . listStyles ;
window . styles = styles ;
if ( ! listStyles ) {
self . styles = styles ;
return ;
}
2019-08-21 07:50:32 +00:00
var arr = [ ] ;
2017-06-23 13:46:10 +00:00
var mainController = this . getApplication ( ) . getController ( 'Main' ) ;
2016-03-11 00:48:53 +00:00
_ . each ( styles . get _MergedStyles ( ) , function ( style ) {
2019-08-21 07:50:32 +00:00
arr . push ( {
2016-03-11 00:48:53 +00:00
imageUrl : style . asc _getImage ( ) ,
title : style . get _Name ( ) ,
2017-06-23 13:46:10 +00:00
tip : mainController . translationTable [ style . get _Name ( ) ] || style . get _Name ( ) ,
2016-03-11 00:48:53 +00:00
id : Common . UI . getId ( )
} ) ;
} ) ;
2019-08-21 07:50:32 +00:00
listStyles . menuPicker . store . reset ( arr ) ; // remove all
2016-03-11 00:48:53 +00:00
if ( listStyles . menuPicker . store . length > 0 && listStyles . rendered ) {
var styleRec ;
if ( self . _state . prstyle ) styleRec = listStyles . menuPicker . store . findWhere ( { title : self . _state . prstyle } ) ;
listStyles . fillComboView ( ( styleRec ) ? styleRec : listStyles . menuPicker . store . at ( 0 ) , true ) ;
Common . NotificationCenter . trigger ( 'edit:complete' , this ) ;
2017-04-12 10:00:17 +00:00
} else if ( listStyles . rendered )
listStyles . clearComboView ( ) ;
2016-03-11 00:48:53 +00:00
window . styles _loaded = true ;
} ,
2018-03-05 09:28:37 +00:00
onHomeOpen : function ( ) {
var listStyles = this . toolbar . listStyles ;
if ( listStyles && listStyles . needFillComboView && listStyles . menuPicker . store . length > 0 && listStyles . rendered ) {
var styleRec ;
if ( this . _state . prstyle ) styleRec = listStyles . menuPicker . store . findWhere ( { title : this . _state . prstyle } ) ;
listStyles . fillComboView ( ( styleRec ) ? styleRec : listStyles . menuPicker . store . at ( 0 ) , true ) ;
}
} ,
2016-03-11 00:48:53 +00:00
_setMarkerColor : function ( strcolor , h ) {
var me = this ;
if ( h === 'menu' ) {
2021-07-10 19:54:51 +00:00
me . _state . clrhighlight = undefined ;
me . onApiHighlightColor ( ) ;
2016-03-11 00:48:53 +00:00
me . toolbar . btnHighlightColor . currentColor = strcolor ;
2021-01-21 19:48:27 +00:00
me . toolbar . btnHighlightColor . setColor ( me . toolbar . btnHighlightColor . currentColor ) ;
2016-03-11 00:48:53 +00:00
me . toolbar . btnHighlightColor . toggle ( true , true ) ;
}
strcolor = strcolor || 'transparent' ;
if ( strcolor == 'transparent' ) {
me . api . SetMarkerFormat ( true , false ) ;
} else {
var r = strcolor [ 0 ] + strcolor [ 1 ] ,
g = strcolor [ 2 ] + strcolor [ 3 ] ,
b = strcolor [ 4 ] + strcolor [ 5 ] ;
me . api . SetMarkerFormat ( true , true , parseInt ( r , 16 ) , parseInt ( g , 16 ) , parseInt ( b , 16 ) ) ;
}
2016-10-13 08:40:59 +00:00
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar , me . toolbar . btnHighlightColor ) ;
2016-03-11 00:48:53 +00:00
Common . component . Analytics . trackEvent ( 'ToolBar' , 'Highlight Color' ) ;
} ,
2016-07-08 09:12:09 +00:00
onHideMenus : function ( e ) {
Common . NotificationCenter . trigger ( 'edit:complete' , this . toolbar ) ;
} ,
2016-03-11 00:48:53 +00:00
onSetupCopyStyleButton : function ( ) {
this . modeAlwaysSetStyle = false ;
var me = this ;
Common . NotificationCenter . on ( {
'edit:complete' : function ( ) {
if ( me . api && me . modeAlwaysSetStyle ) {
2019-02-19 12:47:50 +00:00
me . api . SetPaintFormat ( AscCommon . c _oAscFormatPainterState . kOff ) ;
2016-03-11 00:48:53 +00:00
me . toolbar . btnCopyStyle . toggle ( false , true ) ;
me . modeAlwaysSetStyle = false ;
}
}
} ) ;
$ ( me . toolbar . btnCopyStyle . cmpEl ) . dblclick ( function ( ) {
if ( me . api ) {
me . modeAlwaysSetStyle = true ;
me . toolbar . btnCopyStyle . toggle ( true , true ) ;
2019-02-19 12:47:50 +00:00
me . api . SetPaintFormat ( AscCommon . c _oAscFormatPainterState . kMultiple ) ;
2016-03-11 00:48:53 +00:00
}
} ) ;
} ,
2018-10-25 13:19:29 +00:00
onApiCoAuthoringDisconnect : function ( enableDownload ) {
2019-03-28 08:47:51 +00:00
this . mode . isEdit && this . toolbar . setMode ( { isDisconnected : true , enableDownload : ! ! enableDownload } ) ;
2016-03-11 00:48:53 +00:00
this . editMode = false ;
2017-11-22 12:20:51 +00:00
this . DisableToolbar ( true , true ) ;
2016-03-11 00:48:53 +00:00
} ,
2020-10-08 08:11:34 +00:00
DisableToolbar : function ( disable , viewMode , reviewmode , fillformmode ) {
2016-03-11 00:48:53 +00:00
if ( viewMode !== undefined ) this . editMode = ! viewMode ;
disable = disable || ! this . editMode ;
2017-08-23 14:49:56 +00:00
var toolbar _mask = $ ( '.toolbar-mask' ) ,
group _mask = $ ( '.toolbar-group-mask' ) ,
2020-10-08 08:11:34 +00:00
mask = ( reviewmode || fillformmode ) ? group _mask : toolbar _mask ;
2016-03-11 00:48:53 +00:00
if ( disable && mask . length > 0 || ! disable && mask . length == 0 ) return ;
var toolbar = this . toolbar ;
if ( disable ) {
2017-08-23 14:49:56 +00:00
if ( reviewmode ) {
2021-07-04 12:40:17 +00:00
mask = $ ( "<div class='toolbar-group-mask'>" ) . appendTo ( toolbar . $el . find ( '.toolbar section.panel .group:not(.no-mask):not(.no-group-mask.review):not(.no-group-mask.inner-elset)' ) ) ;
mask = $ ( "<div class='toolbar-group-mask'>" ) . appendTo ( toolbar . $el . find ( '.toolbar section.panel .group.no-group-mask.inner-elset .elset' ) ) ;
2020-10-08 08:11:34 +00:00
} else if ( fillformmode ) {
2021-07-04 12:40:17 +00:00
mask = $ ( "<div class='toolbar-group-mask'>" ) . appendTo ( toolbar . $el . find ( '.toolbar section.panel .group:not(.no-mask):not(.no-group-mask.form-view):not(.no-group-mask.inner-elset)' ) ) ;
mask = $ ( "<div class='toolbar-group-mask'>" ) . appendTo ( toolbar . $el . find ( '.toolbar section.panel .group.no-group-mask.inner-elset .elset:not(.no-group-mask.form-view)' ) ) ;
2017-08-23 14:49:56 +00:00
} else
mask = $ ( "<div class='toolbar-mask'>" ) . appendTo ( toolbar . $el . find ( '.toolbar' ) ) ;
2016-03-11 00:48:53 +00:00
} else {
mask . remove ( ) ;
}
2020-10-08 08:11:34 +00:00
$ ( '.no-group-mask' ) . each ( function ( index , item ) {
var $el = $ ( item ) ;
2021-07-04 12:40:17 +00:00
if ( $el . find ( '> .toolbar-group-mask' ) . length > 0 )
2020-10-08 08:11:34 +00:00
$el . css ( 'opacity' , 0.4 ) ;
else {
$el . css ( 'opacity' , reviewmode || fillformmode || ! disable ? 1 : 0.4 ) ;
2021-07-04 12:40:17 +00:00
$el . find ( '.elset' ) . each ( function ( index , elitem ) {
var $elset = $ ( elitem ) ;
if ( $elset . find ( '> .toolbar-group-mask' ) . length > 0 ) {
$elset . css ( 'opacity' , 0.4 ) ;
} else {
$elset . css ( 'opacity' , reviewmode || fillformmode || ! disable ? 1 : 0.4 ) ;
}
$el . css ( 'opacity' , 1 ) ;
} ) ;
2020-10-08 08:11:34 +00:00
}
} ) ;
2017-08-23 14:49:56 +00:00
2020-10-08 08:11:34 +00:00
disable = disable || ( ( reviewmode || fillformmode ) ? toolbar _mask . length > 0 : group _mask . length > 0 ) ;
2017-08-23 14:49:56 +00:00
toolbar . $el . find ( '.toolbar' ) . toggleClass ( 'masked' , disable ) ;
2017-04-21 13:36:06 +00:00
if ( toolbar . synchTooltip )
toolbar . synchTooltip . hide ( ) ;
2017-09-01 14:48:31 +00:00
toolbar . _state . previewmode = reviewmode && disable ;
if ( reviewmode ) {
2018-12-18 14:27:19 +00:00
toolbar . _state . previewmode && toolbar . btnSave && toolbar . btnSave . setDisabled ( true ) ;
2017-09-05 07:54:44 +00:00
2017-09-01 14:48:31 +00:00
if ( toolbar . needShowSynchTip ) {
toolbar . needShowSynchTip = false ;
toolbar . onCollaborativeChanges ( ) ;
}
}
disable ? Common . util . Shortcuts . suspendEvents ( 'alt+h' ) : Common . util . Shortcuts . resumeEvents ( 'alt+h' ) ;
2016-03-11 00:48:53 +00:00
} ,
2021-08-26 20:56:09 +00:00
onSelectRecepientsClick : function ( menu , item , e ) {
2016-03-11 00:48:53 +00:00
if ( this . _mailMergeDlg ) return ;
2021-08-26 20:56:09 +00:00
var me = this ;
if ( item . value === 'file' ) {
this . api && this . api . asc _StartMailMerge ( ) ;
} else if ( item . value === 'url' ) {
( new Common . Views . ImageFromUrlDialog ( {
2021-11-29 09:45:30 +00:00
title : me . dataUrl ,
2021-08-26 20:56:09 +00:00
handler : function ( result , value ) {
if ( result == 'ok' ) {
if ( me . api ) {
var checkUrl = value . replace ( / /g , '' ) ;
if ( ! _ . isEmpty ( checkUrl ) ) {
2021-08-27 08:19:59 +00:00
me . api . asc _StartMailMerge ( { fileType : "csv" , url : checkUrl } ) ;
2021-08-26 20:56:09 +00:00
} else {
Common . UI . warning ( {
msg : me . textEmptyMMergeUrl
} ) ;
}
}
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
}
}
} ) ) . show ( ) ;
} else if ( item . value === 'storage' ) {
if ( this . toolbar . mode . canRequestMailMergeRecipients ) {
Common . Gateway . requestMailMergeRecipients ( ) ;
} else {
me . _mailMergeDlg = new Common . Views . SelectFileDlg ( {
fileChoiceUrl : this . toolbar . mode . fileChoiceUrl . replace ( "{fileExt}" , "xlsx" ) . replace ( "{documentType}" , "" )
} ) ;
me . _mailMergeDlg . on ( 'selectfile' , function ( obj , recepients ) {
me . setMailMergeRecipients ( recepients ) ;
} ) . on ( 'close' , function ( obj ) {
me . _mailMergeDlg = undefined ;
} ) ;
me . _mailMergeDlg . show ( ) ;
}
2019-07-29 10:40:07 +00:00
}
} ,
2016-03-11 00:48:53 +00:00
2019-07-29 10:40:07 +00:00
setMailMergeRecipients : function ( recepients ) {
this . api . asc _StartMailMerge ( recepients ) ;
if ( ! this . mergeEditor )
this . mergeEditor = this . getApplication ( ) . getController ( 'Common.Controllers.ExternalMergeEditor' ) . getView ( 'Common.Views.ExternalMergeEditor' ) ;
if ( this . mergeEditor )
this . mergeEditor . setEditMode ( false ) ;
2016-03-11 00:48:53 +00:00
} ,
2016-08-04 17:02:57 +00:00
createDelayedElements : function ( ) {
this . toolbar . createDelayedElements ( ) ;
2017-04-24 11:41:51 +00:00
this . attachUIEvents ( this . toolbar ) ;
2016-08-04 17:02:57 +00:00
} ,
2017-04-04 15:22:02 +00:00
onAppShowed : function ( config ) {
var me = this ;
2017-04-10 13:39:03 +00:00
2021-12-05 09:12:27 +00:00
var compactview = ! ( config . isEdit || config . isRestrictedEdit && config . canFillForms && config . isFormCreator ) ;
if ( config . isEdit || config . isRestrictedEdit && config . canFillForms && config . isFormCreator ) {
2017-04-20 14:45:47 +00:00
if ( Common . localStorage . itemExists ( "de-compact-toolbar" ) ) {
compactview = Common . localStorage . getBool ( "de-compact-toolbar" ) ;
} else
if ( config . customization && config . customization . compactToolbar )
compactview = true ;
}
2017-04-20 11:16:50 +00:00
2019-10-29 08:30:08 +00:00
me . toolbar . render ( _ . extend ( { isCompactView : compactview } , config ) ) ;
2017-04-10 13:39:03 +00:00
2021-11-11 18:00:38 +00:00
var tab = { action : 'review' , caption : me . toolbar . textTabCollaboration , dataHintTitle : 'U' } ;
2019-10-29 08:30:08 +00:00
var $panel = me . application . getController ( 'Common.Controllers.ReviewChanges' ) . createToolbarPanel ( ) ;
2020-12-22 12:37:05 +00:00
if ( $panel ) {
2020-10-07 07:43:34 +00:00
me . toolbar . addTab ( tab , $panel , 5 ) ;
2021-02-09 14:34:52 +00:00
me . toolbar . setVisible ( 'review' , config . isEdit || config . canCoAuthoring && config . canComments ) ; // use config.canViewReview in review controller. set visible review tab in view mode only when asc_HaveRevisionsChanges
2020-12-22 12:37:05 +00:00
}
2018-12-18 14:27:19 +00:00
2019-10-29 08:30:08 +00:00
if ( config . isEdit ) {
me . toolbar . setMode ( config ) ;
2018-05-15 12:37:26 +00:00
2019-10-29 08:30:08 +00:00
me . toolbar . btnSave . on ( 'disabled' , _ . bind ( me . onBtnChangeState , me , 'save:disabled' ) ) ;
2017-11-28 12:23:37 +00:00
2019-10-29 08:30:08 +00:00
if ( ! ( config . customization && config . customization . compactHeader ) ) {
// hide 'print' and 'save' buttons group and next separator
me . toolbar . btnPrint . $el . parents ( '.group' ) . hide ( ) . next ( ) . hide ( ) ;
2018-09-25 10:46:28 +00:00
2019-10-29 08:30:08 +00:00
// hide 'undo' and 'redo' buttons and retrieve parent container
var $box = me . toolbar . btnUndo . $el . hide ( ) . next ( ) . hide ( ) . parent ( ) ;
2018-02-07 15:30:45 +00:00
2019-10-29 08:30:08 +00:00
// move 'paste' button to the container instead of 'undo' and 'redo'
me . toolbar . btnPaste . $el . detach ( ) . appendTo ( $box ) ;
2021-11-12 13:21:01 +00:00
me . toolbar . btnPaste . $el . find ( 'button' ) . attr ( 'data-hint-direction' , 'bottom' ) ;
2019-10-29 08:30:08 +00:00
me . toolbar . btnCopy . $el . removeClass ( 'split' ) ;
}
2018-02-07 15:30:45 +00:00
2019-10-29 08:30:08 +00:00
if ( config . isDesktopApp ) {
if ( config . canProtect ) {
2021-11-11 18:00:38 +00:00
tab = { action : 'protect' , caption : me . toolbar . textTabProtect , dataHintTitle : 'T' } ;
2019-10-29 08:30:08 +00:00
$panel = me . getApplication ( ) . getController ( 'Common.Controllers.Protection' ) . createToolbarPanel ( ) ;
2018-02-07 15:30:45 +00:00
2020-10-07 07:43:34 +00:00
if ( $panel ) me . toolbar . addTab ( tab , $panel , 6 ) ;
2018-02-07 15:30:45 +00:00
}
2019-09-25 09:50:58 +00:00
}
2019-10-29 08:30:08 +00:00
var links = me . getApplication ( ) . getController ( 'Links' ) ;
links . setApi ( me . api ) . setConfig ( { toolbar : me } ) ;
Array . prototype . push . apply ( me . toolbar . toolbarControls , links . getView ( 'Links' ) . getButtons ( ) ) ;
2021-02-04 20:19:43 +00:00
}
2021-12-05 09:12:27 +00:00
if ( config . isEdit && config . canFeatureContentControl && config . canFeatureForms || config . isRestrictedEdit && config . canFillForms ) {
if ( config . isFormCreator ) {
2021-11-11 18:00:38 +00:00
tab = { caption : me . textTabForms , action : 'forms' , dataHintTitle : 'M' } ;
2021-04-30 09:36:34 +00:00
var forms = me . getApplication ( ) . getController ( 'FormsTab' ) ;
forms . setApi ( me . api ) . setConfig ( { toolbar : me , config : config } ) ;
$panel = forms . createToolbarPanel ( ) ;
if ( $panel ) {
me . toolbar . addTab ( tab , $panel , 4 ) ;
me . toolbar . setVisible ( 'forms' , true ) ;
2021-12-05 09:12:27 +00:00
config . isEdit && config . canFeatureContentControl && config . canFeatureForms && Array . prototype . push . apply ( me . toolbar . toolbarControls , forms . getView ( 'FormsTab' ) . getButtons ( ) ) ;
2021-10-28 13:41:06 +00:00
! compactview && ( config . isFormCreator || config . isRestrictedEdit && config . canFillForms ) && me . toolbar . setTab ( 'forms' ) ;
2021-02-04 20:19:43 +00:00
}
2020-10-07 11:20:14 +00:00
}
2019-10-29 08:30:08 +00:00
}
2021-04-30 09:36:34 +00:00
config . isEdit && config . canFeatureContentControl && me . onChangeSdtGlobalSettings ( ) ;
2017-04-04 15:22:02 +00:00
} ,
2017-03-29 16:29:04 +00:00
onAppReady : function ( config ) {
var me = this ;
2018-05-16 14:41:47 +00:00
me . appOptions = config ;
2017-03-29 16:29:04 +00:00
2017-06-15 13:18:40 +00:00
if ( config . canCoAuthoring && config . canComments ) {
2021-05-26 15:30:18 +00:00
this . btnsComment = Common . Utils . injectButtons ( this . toolbar . $el . find ( '.slot-comment' ) , 'tlbtn-addcomment-' , 'toolbar__icon btn-menu-comments' , this . toolbar . capBtnComment , undefined , undefined , undefined , undefined , '1' , 'bottom' ) ;
2017-06-28 11:20:49 +00:00
if ( this . btnsComment . length ) {
2017-04-06 09:42:43 +00:00
var _comments = DE . getController ( 'Common.Controllers.Comments' ) . getView ( ) ;
2017-06-28 11:20:49 +00:00
this . btnsComment . forEach ( function ( btn ) {
2017-08-02 13:47:40 +00:00
btn . updateHint ( _comments . textHintAddComment ) ;
2017-03-31 10:55:10 +00:00
btn . on ( 'click' , function ( btn , e ) {
Common . NotificationCenter . trigger ( 'app:comment:add' , 'toolbar' ) ;
} ) ;
2019-11-06 14:22:12 +00:00
if ( btn . cmpEl . closest ( '#review-changes-panel' ) . length > 0 )
btn . setCaption ( me . toolbar . capBtnAddComment ) ;
2017-03-31 10:55:10 +00:00
} , this ) ;
}
2017-03-29 16:29:04 +00:00
}
2017-04-04 15:43:19 +00:00
( new Promise ( function ( accept ) {
accept ( ) ;
} ) ) . then ( function ( ) {
if ( config . isEdit ) {
me . controllers . pageLayout = new DE . Controllers . PageLayout ( {
id : 'ImageLayout' ,
application : me . getApplication ( )
} ) ;
me . controllers . pageLayout . onLaunch ( me . toolbar )
. setApi ( me . api )
. onAppReady ( config ) ;
}
} ) ;
2017-03-29 16:29:04 +00:00
} ,
2017-04-21 13:36:06 +00:00
getView : function ( name ) {
return ! name ? this . toolbar : Backbone . Controller . prototype . getView . apply ( this , arguments ) ;
} ,
2017-04-27 14:34:34 +00:00
onFileMenu : function ( opts ) {
2018-05-18 09:59:01 +00:00
if ( opts == 'show' ) {
if ( ! this . toolbar . isTabActive ( 'file' ) )
this . toolbar . setTab ( 'file' ) ;
} else {
2018-05-16 14:41:47 +00:00
if ( this . toolbar . isTabActive ( 'file' ) )
this . toolbar . setTab ( ) ;
}
2017-04-27 14:34:34 +00:00
} ,
2019-11-06 11:15:23 +00:00
onTextLanguage : function ( langId ) {
this . _state . lang = langId ;
} ,
2020-03-03 08:08:15 +00:00
onInsDateTimeClick : function ( ) {
//insert date time
var me = this ;
( new DE . Views . DateTimeDialog ( {
api : this . api ,
lang : this . _state . lang ,
handler : function ( result , value ) {
if ( result == 'ok' ) {
if ( me . api ) {
2020-03-06 11:18:01 +00:00
me . api . asc _addDateTime ( value ) ;
2020-03-03 08:08:15 +00:00
}
}
Common . NotificationCenter . trigger ( 'edit:complete' , me . toolbar ) ;
}
} ) ) . show ( ) ;
} ,
2016-03-11 00:48:53 +00:00
textEmptyImgUrl : 'You need to specify image URL.' ,
textWarning : 'Warning' ,
2021-02-03 13:56:01 +00:00
textFontSizeErr : 'The entered value is incorrect.<br>Please enter a numeric value between 1 and 300' ,
2016-03-11 00:48:53 +00:00
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' ,
confirmAddFontName : 'The font you are going to save is not available on the current device.<br>The text style will be displayed using one of the device fonts, the saved font will be used when it is available.<br>Do you want to continue?' ,
notcriticalErrorTitle : 'Warning' ,
txtMarginsW : 'Left and right margins are too high for a given page wight' ,
2019-11-11 14:48:09 +00:00
txtMarginsH : 'Top and bottom margins are too high for a given page height' ,
2020-10-07 11:20:14 +00:00
textInsert : 'Insert' ,
2021-03-26 21:36:57 +00:00
textTabForms : 'Forms' ,
2021-08-26 20:56:09 +00:00
textGroup : 'Group' ,
2021-11-29 09:45:30 +00:00
textEmptyMMergeUrl : 'You need to specify URL.' ,
dataUrl : 'Paste a data URL'
2016-03-11 00:48:53 +00:00
} , DE . Controllers . Toolbar || { } ) ) ;
2020-06-09 20:18:44 +00:00
} ) ;