diff --git a/apps/common/main/lib/util/define.js b/apps/common/main/lib/util/define.js index bb826a37fa..57fc090cef 100644 --- a/apps/common/main/lib/util/define.js +++ b/apps/common/main/lib/util/define.js @@ -794,6 +794,9 @@ define(function(){ 'use strict'; textTurns: 'Turns', textShapes: 'Shapes', textLoops: 'Loops', + textPathCurve: 'Curve', + textPathLine: 'Line', + textPathScribble: 'Scribble', getEffectGroupData: function () { return [ @@ -1039,7 +1042,7 @@ define(function(){ 'use strict'; {group: 'menu-effect-group-path', level: 'menu-effect-level-special', value: AscFormat.MOTION_POINTY_STAR, displayValue: this.textPointStar}, {group: 'menu-effect-group-path', level: 'menu-effect-level-special', value: AscFormat.MOTION_SWOOSH, displayValue: this.textSwoosh}, {group: 'menu-effect-group-path', level: 'menu-effect-level-special', value: AscFormat.MOTION_VERTICAL_FIGURE_8, displayValue: this.textVerticalFigure, familyEffect: 'pathloops'}, - {group: 'menu-effect-group-path', level: 'menu-effect-level-special', value: AscFormat.MOTION_CUSTOM_PATH, displayValue: this.textCustomPath, notsupported: true} + {group: 'menu-effect-group-path', level: 'menu-effect-level-special', value: AscFormat.MOTION_CUSTOM_PATH, displayValue: this.textCustomPath, notsupported: true} ]; }, @@ -1278,11 +1281,21 @@ define(function(){ 'use strict'; return undefined; } break; + case 'menu-effect-group-path': + switch (type) { + case AscFormat.MOTION_CUSTOM_PATH: + return [ + {value: AscFormat.MOTION_CUSTOM_PATH_CURVE, caption: this.textPathCurve, isCustom: true}, + {value: AscFormat.MOTION_CUSTOM_PATH_LINE, caption: this.textPathLine, isCustom: true}, + {value: AscFormat.MOTION_CUSTOM_PATH_SCRIBBLE, caption: this.textPathScribble, isCustom: true} + ]; + } + break; default: return undefined; } }, - getSimilarEffectsArray: function (group, familyEffect) { + getSimilarEffectsArray: function (familyEffect) { switch (familyEffect){ case 'shape': return [ diff --git a/apps/presentationeditor/main/app/controller/Animation.js b/apps/presentationeditor/main/app/controller/Animation.js index eaa4576bfb..bd7b351276 100644 --- a/apps/presentationeditor/main/app/controller/Animation.js +++ b/apps/presentationeditor/main/app/controller/Animation.js @@ -155,6 +155,10 @@ define([ this.AnimationProperties.asc_putSubtype(value); this.api.asc_SetAnimationProperties(this.AnimationProperties); } + else if(toggleGroup=='custompath') { + var groupName = _.findWhere(this.EffectGroups, {value: this._state.EffectGroup}).id; + this.addNewEffect(AscFormat.MOTION_CUSTOM_PATH, this._state.EffectGroup, groupName,true, value); + } else { var groupName = _.findWhere(this.EffectGroups, {value: this._state.EffectGroup}).id; this.addNewEffect(value, this._state.EffectGroup, groupName,true, this._state.EffectOption); diff --git a/apps/presentationeditor/main/app/view/Animation.js b/apps/presentationeditor/main/app/view/Animation.js index b171256543..b971b32c60 100644 --- a/apps/presentationeditor/main/app/view/Animation.js +++ b/apps/presentationeditor/main/app/view/Animation.js @@ -96,7 +96,7 @@ define([ if (me.btnParameters) { me.btnParameters.menu.on('item:click', function (menu, item, e) { - me.fireEvent('animation:parameters', [item.value, item.toggleGroup]); + me.fireEvent('animation:parameters', [item.value, item.options.isCustom ? 'custompath' : item.toggleGroup]); }); } @@ -572,25 +572,32 @@ define([ } if (arrEffectOptions){ if (this.btnParameters.menu.items.length == 0) { - arrEffectOptions.forEach(function (opt, index) { - opt.checkable = true; - opt.toggleGroup = 'animateeffects'; - this.btnParameters.menu.addItem(opt); - (opt.value == option || option===undefined && !!opt.defvalue) && (selectedElement = this.btnParameters.menu.items[index]); - }, this); + if (effectGroup==='menu-effect-group-path' && effectId===AscFormat.MOTION_CUSTOM_PATH) { + arrEffectOptions.forEach(function (opt, index) { + this.btnParameters.menu.addItem(opt); + (opt.value == option || option===undefined && !!opt.defvalue) && (selectedElement = this.btnParameters.menu.items[index]); + }, this); + } else { + arrEffectOptions.forEach(function (opt, index) { + opt.checkable = true; + opt.toggleGroup = 'animateeffects'; + this.btnParameters.menu.addItem(opt); + (opt.value == option || option===undefined && !!opt.defvalue) && (selectedElement = this.btnParameters.menu.items[index]); + }, this); + } (effect && effect.familyEffect) && this.btnParameters.menu.addItem({caption: '--'}); } else { this.btnParameters.menu.clearAll(); this.btnParameters.menu.items.forEach(function (opt) { - if(opt.toggleGroup == 'animateeffects' && (opt.value == option || option===undefined && !!opt.options.defvalue)) + if((opt.toggleGroup == 'animateeffects' || effectGroup==='menu-effect-group-path' && effectId===AscFormat.MOTION_CUSTOM_PATH) && (opt.value == option || option===undefined && !!opt.options.defvalue)) selectedElement = opt; },this); } - selectedElement && selectedElement.setChecked(true); + !(effectGroup==='menu-effect-group-path' && effectId===AscFormat.MOTION_CUSTOM_PATH) && selectedElement && selectedElement.setChecked(true); } if (effect && effect.familyEffect){ if (this._familyEffect != effect.familyEffect) { - var effectsArray = Common.define.effectData.getSimilarEffectsArray(effectGroup, effect.familyEffect); + var effectsArray = Common.define.effectData.getSimilarEffectsArray(effect.familyEffect); effectsArray.forEach(function (opt) { opt.checkable = true; opt.toggleGroup = 'animatesimilareffects' diff --git a/apps/presentationeditor/main/locale/en.json b/apps/presentationeditor/main/locale/en.json index a2534b18b2..1fbe254480 100644 --- a/apps/presentationeditor/main/locale/en.json +++ b/apps/presentationeditor/main/locale/en.json @@ -245,6 +245,9 @@ "Common.define.effectData.textWipe": "Wipe", "Common.define.effectData.textZigzag": "Zigzag", "Common.define.effectData.textZoom": "Zoom", + "Common.define.effectData.textPathCurve": "Curve", + "Common.define.effectData.textPathLine": "Line", + "Common.define.effectData.textPathScribble": "Scribble", "Common.Translation.textMoreButton": "More", "Common.Translation.warnFileLocked": "The file is being edited in another app. You can continue editing and save it as a copy.", "Common.Translation.warnFileLockedBtnEdit": "Create a copy",