[PE] Add guides settings

This commit is contained in:
Julia Radzhabova 2022-09-29 10:55:41 +03:00
parent fd961d81a2
commit c67d30f897
2 changed files with 169 additions and 73 deletions

View file

@ -61,7 +61,6 @@ define([
zoom_type: undefined,
zoom_percent: undefined
};
Common.NotificationCenter.on('app:ready', this.onAppReady.bind(this));
Common.NotificationCenter.on('uitheme:changed', this.onThemeChanged.bind(this));
Common.NotificationCenter.on('document:ready', _.bind(this.onDocumentReady, this));
},
@ -87,10 +86,18 @@ define([
});
this.addListeners({
'ViewTab': {
'zoom:selected': _.bind(this.onSelectedZoomValue, this),
'zoom:changedbefore': _.bind(this.onZoomChanged, this),
'zoom:changedafter': _.bind(this.onZoomChanged, this),
'zoom:toslide': _.bind(this.onBtnZoomTo, this, 'toslide'),
'zoom:towidth': _.bind(this.onBtnZoomTo, this, 'towidth'),
'rulers:change': _.bind(this.onChangeRulers, this),
'notes:change': _.bind(this.onChangeNotes, this)
'notes:change': _.bind(this.onChangeNotes, this),
'guides:show': _.bind(this.onGuidesShow, this),
'guides:aftershow': _.bind(this.onGuidesAfterShow, this),
'guides:add': _.bind(this.onGuidesAdd, this),
'guides:clear': _.bind(this.onGuidesClear, this),
'guides:smart': _.bind(this.onGuidesSmartShow, this)
},
'Toolbar': {
'view:compact': _.bind(function (toolbar, state) {
@ -143,70 +150,6 @@ define([
Common.localStorage.setBool('pe-hidden-notes', !bIsShow);
},
onAppReady: function (config) {
var me = this;
if (me.view) {
(new Promise(function (accept, reject) {
accept();
})).then(function () {
me.view.setEvents();
if (!Common.UI.Themes.available()) {
me.view.btnInterfaceTheme.$el.closest('.group').remove();
me.view.$el.find('.separator-theme').remove();
}
if (config.canBrandingExt && config.customization && config.customization.statusBar === false || !Common.UI.LayoutManager.isElementVisible('statusBar')) {
me.view.chStatusbar.$el.remove();
if (!config.isEdit) {
var slotChkNotes = me.view.chNotes.$el,
groupRulers = slotChkNotes.closest('.group'),
groupToolbar = me.view.chToolbar.$el.closest('.group');
groupToolbar.find('.elset')[1].append(slotChkNotes[0]);
groupRulers.remove();
me.view.$el.find('.separator-rulers').remove();
}
} else if (!config.isEdit) {
me.view.chRulers.hide();
}
me.view.cmbZoom.on('selected', _.bind(me.onSelectedZoomValue, me))
.on('changed:before',_.bind(me.onZoomChanged, me, true))
.on('changed:after', _.bind(me.onZoomChanged, me, false))
.on('combo:blur', _.bind(me.onComboBlur, me, false));
});
if (Common.UI.Themes.available()) {
function _fill_themes() {
var btn = this.view.btnInterfaceTheme;
if ( typeof(btn.menu) == 'object' ) btn.menu.removeAll();
else btn.setMenu(new Common.UI.Menu());
var currentTheme = Common.UI.Themes.currentThemeId() || Common.UI.Themes.defaultThemeId();
for (var t in Common.UI.Themes.map()) {
btn.menu.addItem({
value: t,
caption: Common.UI.Themes.get(t).text,
checked: t === currentTheme,
checkable: true,
toggleGroup: 'interface-theme'
});
}
}
Common.NotificationCenter.on('uitheme:countchanged', _fill_themes.bind(me));
_fill_themes.call(me);
if (me.view.btnInterfaceTheme.menu.items.length) {
this.view.btnInterfaceTheme.menu.on('item:click', _.bind(function (menu, item) {
var value = item.value;
Common.UI.Themes.setTheme(value);
}, this));
}
}
}
},
onBtnZoomTo: function (type, btn) {
this._state.zoom_type = undefined;
this._state.zoom_percent = undefined;
@ -275,6 +218,37 @@ define([
onComboBlur: function() {
Common.NotificationCenter.trigger('edit:complete', this.view);
},
onGuidesShow: function(state) {
this.api.asc_setShowGuides(state);
Common.NotificationCenter.trigger('edit:complete', this.view);
},
onGuidesAfterShow: function() {
if (this.view) {
this.view.btnGuides.menu.items[6].setDisabled(this.api.asc_canClearGuides());
this.view.btnGuides.menu.items[0].setChecked(this.api.asc_getShowGuides(), true);
this.view.btnGuides.menu.items[5].setChecked(this.api.asc_getShowSmartGuides(), true);
}
},
onGuidesAdd: function(type) {
if (type==='add-vert')
this.api.asc_addVerticalGuide();
else
this.api.asc_addHorizontalGuide();
Common.NotificationCenter.trigger('edit:complete', this.view);
},
onGuidesClear: function() {
this.api.asc_clearGuides();
Common.NotificationCenter.trigger('edit:complete', this.view);
},
onGuidesSmartShow: function(state) {
this.api.asc_setShowSmartGuides(state);
Common.NotificationCenter.trigger('edit:complete', this.view);
}
}, PE.Controllers.ViewTab || {}));

View file

@ -77,6 +77,9 @@ define([
'<span class="btn-slot text" id="slot-chk-rulers"></span>' +
'</div>' +
'</div>' +
'<div class="group small">' +
'<span class="btn-slot text x-huge" id="slot-btn-guides"></span>' +
'</div>' +
'<div class="separator long separator-rulers"></div>' +
'<div class="group small">' +
'<div class="elset">' +
@ -110,8 +113,33 @@ define([
me.chNotes && me.chNotes.on('change', _.bind(function (checkbox, state) {
me.fireEvent('notes:change', [me.chNotes, state === 'checked']);
}, me));
me.cmbZoom.on('combo:focusin', _.bind(this.onComboOpen, this, false));
me.cmbZoom.on('show:after', _.bind(this.onComboOpen, this, true));
me.cmbZoom.on('selected', function (combo, record) {
me.fireEvent('zoom:selected', [combo, record]);
}).on('changed:before', function (combo, record) {
me.fireEvent('zoom:changedbefore', [true, combo, record]);
}).on('changed:after', function (combo, record) {
me.fireEvent('zoom:changedafter', [false, combo, record]);
}).on('combo:blur', function () {
me.fireEvent('editcomplete', me);
}).on('combo:focusin', _.bind(this.onComboOpen, this, false))
.on('show:after', _.bind(this.onComboOpen, this, true));
me.btnGuides.on('toggle', _.bind(function(btn, state) {
me.fireEvent('guides:show', [state]);
}, me));
me.btnGuides.menu.on('item:click', _.bind(function(menu, item) {
if (item.value === 'add-vert' || item.value === 'add-hor')
me.fireEvent('guides:add', [item.value]);
else if (item.value === 'clear')
me.fireEvent('guides:clear');
else if (item.value === 'smart')
me.fireEvent('guides:smart', [item.isChecked()]);
else
me.fireEvent('guides:show', [item.isChecked()]);
}, me));
me.btnGuides.menu.on('show:after', _.bind(function(btn, state) {
me.fireEvent('guides:aftershow');
}, me));
},
initialize: function (options) {
@ -226,6 +254,21 @@ define([
});
this.lockedControls.push(this.chNotes);
this.btnGuides = new Common.UI.Button({
cls: 'btn-toolbar x-huge icon-top',
iconCls: 'toolbar__icon day',
caption: this.textGuides,
lock: [_set.disableOnStart],
enableToggle: true,
allowDepress: true,
split: true,
menu: true,
dataHint: '1',
dataHintDirection: 'bottom',
dataHintOffset: 'small'
});
this.lockedControls.push(this.btnGuides);
Common.NotificationCenter.on('app:ready', this.onAppReady.bind(this));
},
@ -248,13 +291,85 @@ define([
this.chToolbar.render($host.find('#slot-chk-toolbar'));
this.chRulers.render($host.find('#slot-chk-rulers'));
this.chNotes.render($host.find('#slot-chk-notes'));
this.btnGuides.render($host.find('#slot-btn-guides'));
return this.$el;
},
onAppReady: function () {
this.btnFitToSlide.updateHint(this.tipFitToSlide);
this.btnFitToWidth.updateHint(this.tipFitToWidth);
this.btnInterfaceTheme.updateHint(this.tipInterfaceTheme);
onAppReady: function (config) {
var me = this;
(new Promise(function (accept, reject) {
accept();
})).then(function () {
me.btnFitToSlide.updateHint(me.tipFitToSlide);
me.btnFitToWidth.updateHint(me.tipFitToWidth);
me.btnInterfaceTheme.updateHint(me.tipInterfaceTheme);
me.btnGuides.updateHint(me.tipGuides);
me.btnGuides.setMenu( new Common.UI.Menu({
items: [
{ caption: me.textShowGuides, value: 'show', checkable: true },
{ caption: '--'},
{ caption: me.textAddVGuides, value: 'add-vert' },
{ caption: me.textAddHGuides, value: 'add-hor' },
{ caption: '--'},
{ caption: me.textSmartGuides, value: 'smart', checkable: true },
{ caption: me.textClearGuides, value: 'clear' }
]
}));
if (!Common.UI.Themes.available()) {
me.btnInterfaceTheme.$el.closest('.group').remove();
me.$el.find('.separator-theme').remove();
}
if (config.canBrandingExt && config.customization && config.customization.statusBar === false || !Common.UI.LayoutManager.isElementVisible('statusBar')) {
me.chStatusbar.$el.remove();
if (!config.isEdit) {
var slotChkNotes = me.chNotes.$el,
groupRulers = slotChkNotes.closest('.group'),
groupToolbar = me.chToolbar.$el.closest('.group');
groupToolbar.find('.elset')[1].append(slotChkNotes[0]);
groupRulers.remove();
me.$el.find('.separator-rulers').remove();
}
} else if (!config.isEdit) {
me.chRulers.hide();
}
if (!config.isEdit) {
me.btnGuides.$el.closest('.group').remove();
}
if (Common.UI.Themes.available()) {
function _fill_themes() {
var btn = this.btnInterfaceTheme;
if ( typeof(btn.menu) == 'object' ) btn.menu.removeAll();
else btn.setMenu(new Common.UI.Menu());
var currentTheme = Common.UI.Themes.currentThemeId() || Common.UI.Themes.defaultThemeId();
for (var t in Common.UI.Themes.map()) {
btn.menu.addItem({
value: t,
caption: Common.UI.Themes.get(t).text,
checked: t === currentTheme,
checkable: true,
toggleGroup: 'interface-theme'
});
}
}
Common.NotificationCenter.on('uitheme:countchanged', _fill_themes.bind(me));
_fill_themes.call(me);
if (me.btnInterfaceTheme.menu.items.length) {
me.btnInterfaceTheme.menu.on('item:click', _.bind(function (menu, item) {
var value = item.value;
Common.UI.Themes.setTheme(value);
}, me));
}
}
me.setEvents();
});
},
show: function () {
@ -294,7 +409,14 @@ define([
textNotes: 'Notes',
tipFitToSlide: 'Fit to slide',
tipFitToWidth: 'Fit to width',
tipInterfaceTheme: 'Interface theme'
tipInterfaceTheme: 'Interface theme',
textGuides: 'Guides',
tipGuides: 'Show guides',
textShowGuides: 'Show Guides',
textAddVGuides: 'Add vertical guide',
textAddHGuides: 'Add horizontal guide',
textSmartGuides: 'Smart Guides',
textClearGuides: 'Clear Guides'
}
}()), PE.Views.ViewTab || {}));
});