[PDFE] Add highlight, strikeout, underline buttons

This commit is contained in:
Julia Radzhabova
2023-08-23 18:20:19 +03:00
parent 48ce3fcae7
commit bf90d6f416
5 changed files with 281 additions and 7 deletions

View File

@ -62,7 +62,7 @@ Common.UI.FocusManager = new(function() {
item = field;
else {
item.cmp = field;
if (field instanceof Common.UI.ListView)
if (Common.UI.ListView && field instanceof Common.UI.ListView)
item.selector = '.listview';
else if (field instanceof Common.UI.CheckBox)
item.selector = '.checkbox-indeterminate';

View File

@ -587,7 +587,6 @@ define([
app.getController('Toolbar').DisableToolbar(disable, options.viewMode, options.reviewMode, options.fillFormMode);
}
if (options.documentHolder) {
options.documentHolder.clear && app.getController('DocumentHolder').clearSelection();
options.documentHolder.disable && app.getController('DocumentHolder').SetDisabled(disable, options.allowProtect, options.fillFormMode);
}
if (options.leftMenu) {
@ -689,6 +688,21 @@ define([
}
application.getController('DocumentHolder').getView().focus();
if (this.appOptions.isEdit && toolbarView) {
if (toolbarView.btnStrikeout.pressed && ( !_.isObject(arguments[1]) || arguments[1].id !== 'id-toolbar-btn-strikeout')) {
// this.api.SetMarkerFormat(false);
toolbarView.btnStrikeout.toggle(false, false);
}
if (toolbarView.btnUnderline.pressed && ( !_.isObject(arguments[1]) || arguments[1].id !== 'id-toolbar-btn-underline')) {
// this.api.SetMarkerFormat(false);
toolbarView.btnUnderline.toggle(false, false);
}
if (toolbarView.btnHighlight.pressed && ( !_.isObject(arguments[1]) || arguments[1].id !== 'id-toolbar-btn-highlight')) {
// this.api.SetMarkerFormat(false);
toolbarView.btnHighlight.toggle(false, false);
}
}
if (this.api && this.appOptions.isEdit && !toolbarView._state.previewmode) {
var cansave = this.api.asc_isDocumentCanSave(),
forcesave = this.appOptions.forcesave,

View File

@ -63,7 +63,10 @@ define([
can_undo: undefined,
can_redo: undefined,
lock_doc: undefined,
can_copycut: undefined
can_copycut: undefined,
clrstrike: undefined,
clrunderline: undefined,
clrhighlight: undefined
};
this.editMode = true;
this.binding = {};
@ -174,6 +177,15 @@ define([
toolbar.btnAddComment.on('click', function (btn, e) {
Common.NotificationCenter.trigger('app:comment:add', 'toolbar');
});
toolbar.btnStrikeout.on('click', _.bind(this.onBtnStrikeout, this));
toolbar.mnuStrikeoutColorPicker.on('select', _.bind(this.onSelectStrikeoutColor, this));
toolbar.mnuStrikeoutTransparent.on('click', _.bind(this.onStrikeoutTransparentClick, this));
toolbar.btnUnderline.on('click', _.bind(this.onBtnUnderline, this));
toolbar.mnuUnderlineColorPicker.on('select', _.bind(this.onSelectUnderlineColor, this));
toolbar.mnuUnderlineTransparent.on('click', _.bind(this.onUnderlineTransparentClick, this));
toolbar.btnHighlight.on('click', _.bind(this.onBtnHighlight, this));
toolbar.mnuHighlightColorPicker.on('select', _.bind(this.onSelectHighlightColor, this));
toolbar.mnuHighlightTransparent.on('click', _.bind(this.onHighlightTransparentClick, this));
this.onBtnChangeState('undo:disabled', toolbar.btnUndo, toolbar.btnUndo.isDisabled());
this.onBtnChangeState('redo:disabled', toolbar.btnRedo, toolbar.btnRedo.isDisabled());
@ -393,6 +405,133 @@ define([
Common.NotificationCenter.trigger('edit:complete', this.toolbar);
},
onBtnStrikeout: function(btn) {
if (btn.pressed) {
this._setStrikeoutColor(btn.currentColor);
}
else {
// this.api.SetMarkerFormat(false);
}
},
onStrikeoutTransparentClick: function(item, e) {
this._setStrikeoutColor('transparent', 'menu');
},
onSelectStrikeoutColor: function(picker, color) {
this._setStrikeoutColor(color, 'menu');
},
_setStrikeoutColor: function(strcolor, h) {
var me = this;
if (h === 'menu') {
me._state.clrstrike = undefined;
// me.onApiHighlightColor();
me.toolbar.btnStrikeout.currentColor = strcolor;
me.toolbar.btnStrikeout.setColor(me.toolbar.btnStrikeout.currentColor);
me.toolbar.btnStrikeout.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));
}
Common.NotificationCenter.trigger('edit:complete', me.toolbar, me.toolbar.btnStrikeout);
},
onBtnUnderline: function(btn) {
if (btn.pressed) {
this._setUnderlineColor(btn.currentColor);
}
else {
// this.api.SetMarkerFormat(false);
}
},
onUnderlineTransparentClick: function(item, e) {
this._setUnderlineColor('transparent', 'menu');
},
onSelectUnderlineColor: function(picker, color) {
this._setUnderlineColor(color, 'menu');
},
_setUnderlineColor: function(strcolor, h) {
var me = this;
if (h === 'menu') {
me._state.clrunderline = undefined;
// me.onApiHighlightColor();
me.toolbar.btnUnderline.currentColor = strcolor;
me.toolbar.btnUnderline.setColor(me.toolbar.btnUnderline.currentColor);
me.toolbar.btnUnderline.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));
}
Common.NotificationCenter.trigger('edit:complete', me.toolbar, me.toolbar.btnUnderline);
},
onBtnHighlight: function(btn) {
if (btn.pressed) {
this._setHighlightColor(btn.currentColor);
}
else {
// this.api.SetMarkerFormat(false);
}
},
onHighlightTransparentClick: function(item, e) {
this._setHighlightColor('transparent', 'menu');
},
onSelectHighlightColor: function(picker, color) {
this._setHighlightColor(color, 'menu');
},
_setHighlightColor: function(strcolor, h) {
var me = this;
if (h === 'menu') {
me._state.clrhighlight = undefined;
// me.onApiHighlightColor();
me.toolbar.btnHighlight.currentColor = strcolor;
me.toolbar.btnHighlight.setColor(me.toolbar.btnHighlight.currentColor);
me.toolbar.btnHighlight.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));
}
Common.NotificationCenter.trigger('edit:complete', me.toolbar, me.toolbar.btnHighlight);
},
activateControls: function() {
this.toolbar.lockToolbar(Common.enumLock.disableOnStart, false);
this.toolbar.lockToolbar(Common.enumLock.undoLock, this._state.can_undo!==true, {array: [this.toolbar.btnUndo]});

View File

@ -69,14 +69,14 @@
</div>
<div class="separator long"></div>
<div class="group">
<span class="btn-slot text x-huge" id="slot-btn-highlight"></span>
<span class="btn-slot text x-huge emptycaption" id="slot-btn-highlight"></span>
</div>
<div class="group small">
<div class="elset">
<span class="btn-slot" id="slot-btn-strikeout"></span>
<span class="btn-slot split" id="slot-btn-strikeout"></span>
</div>
<div class="elset">
<span class="btn-slot" id="slot-btn-underline"></span>
<span class="btn-slot split" id="slot-btn-underline"></span>
</div>
</div>
<div class="separator long draw-groups"></div>

View File

@ -274,6 +274,58 @@ define([
});
this.toolbarControls.push(this.btnAddComment);
this.btnStrikeout = new Common.UI.ButtonColored({
id: 'id-toolbar-btn-strikeout',
cls: 'btn-toolbar',
iconCls: 'toolbar__icon btn-strikeout',
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockComments],
enableToggle: true,
allowDepress: true,
split: true,
menu: true,
dataHint: '1',
dataHintDirection: 'bottom',
dataHintOffset: '0, -16',
penOptions: {color: '000000'}
});
this.paragraphControls.push(this.btnStrikeout);
this.btnUnderline = new Common.UI.ButtonColored({
id: 'id-toolbar-btn-underline',
cls: 'btn-toolbar',
iconCls: 'toolbar__icon btn-underline',
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockComments],
enableToggle: true,
allowDepress: true,
split: true,
menu: true,
dataHint: '1',
dataHintDirection: 'bottom',
dataHintOffset: '0, -16',
penOptions: {color: '000000'}
});
this.paragraphControls.push(this.btnUnderline);
this.btnHighlight = new Common.UI.ButtonColored({
id: 'id-toolbar-btn-highlight',
cls: 'btn-toolbar x-huge icon-top',
iconCls: 'toolbar__icon btn-highlighter-tool',
caption: ' ',
lock: [_set.paragraphLock, _set.headerLock, _set.richEditLock, _set.plainEditLock, _set.previewReviewMode, _set.viewFormMode, _set.lostConnect, _set.disableOnStart, _set.docLockView, _set.docLockComments],
enableToggle: true,
allowDepress: true,
split: true,
menu: true,
dataHint: '1',
dataHintDirection: 'bottom',
ataHintOffset: 'small',
penOptions: {color: 'FFFC54', colors: [
'FFFC54', '72F54A', '74F9FD', 'EB51F7', 'A900F9', 'EF8B3A', '7272FF', 'FF63A4', '1DFF92', '03DA18',
'249B01', 'C504D2', '0633D1', 'FFF7A0', 'FF0303', 'FFFFFF', 'D3D3D4', '969696', '606060', '000000'
]}
});
this.paragraphControls.push(this.btnHighlight);
//
// Menus
//
@ -361,11 +413,58 @@ define([
_injectComponent('#slot-btn-select-tool', this.btnSelectTool);
_injectComponent('#slot-btn-hand-tool', this.btnHandTool);
_injectComponent('#slot-btn-comment', this.btnAddComment);
_injectComponent('#slot-btn-strikeout', this.btnStrikeout);
_injectComponent('#slot-btn-underline', this.btnUnderline);
_injectComponent('#slot-btn-highlight', this.btnHighlight);
this.btnPrint.menu && this.btnPrint.$el.addClass('split');
return $host;
},
createPen: function(button, id) {
var mnu;
button.setMenu(new Common.UI.Menu({
cls: 'shifted-left',
style: 'min-width: 100px;',
items: [
{template: _.template('<div id="id-toolbar-menu-' + id + '" style="width: 174px; display: inline-block;" class="palette-large"></div>')},
{
id: 'id-toolbar-menu-' + id + '-color-new',
template: _.template('<a tabindex="-1" type="menuitem" style="">' + button.textNewColor + '</a>')
},
{caption: '--'},
mnu = new Common.UI.MenuItem({
caption: this.strMenuNoFill,
checkable: true,
style: 'padding-left:20px;padding-right:20px;'
})
]
}), true);
button.currentColor = button.options.penOptions.color;
button.setColor(button.currentColor);
var picker = new Common.UI.ThemeColorPalette({
el: $('#id-toolbar-menu-' + id),
colors: button.options.penOptions.colors || [
'1755A0', 'D43230', 'F5C346', 'EA3368', '12A489', '552F8B', '9D1F87', 'BB2765', '479ED2', '67C9FA',
'3D8A44', '80CA3D', '1C19B4', '7F4B0F', 'FF7E07', 'FFFFFF', 'D3D3D4', '879397', '575757', '000000'
],
value: button.currentColor,
dynamiccolors: 5,
themecolors: 0,
effects: 0,
columns: 5,
outerMenu: {menu: button.menu, index: 0, focusOnShow: true},
storageSuffix: '-draw'
});
button.setPicker(picker);
picker.on('select', _.bind(button.onColorSelect, button));
button.menu.setInnerMenu([{menu: picker, index: 0}]);
button.menu.cmpEl.find('#id-toolbar-menu-' + id + '-color-new').on('click', function() {
picker.addNewColor(button.currentColor);
});
return [picker, mnu];
},
onAppReady: function (config) {
var me = this;
(new Promise( function(resolve, reject) {
@ -396,6 +495,21 @@ define([
]
}));
}
if (me.btnStrikeout.menu) {
var arr = me.createPen(me.btnStrikeout, 'strikeout');
me.mnuStrikeoutColorPicker = arr[0];
me.mnuStrikeoutTransparent = arr[1];
}
if (me.btnUnderline.menu) {
var arr = me.createPen(me.btnUnderline, 'underline');
me.mnuUnderlineColorPicker = arr[0];
me.mnuUnderlineTransparent = arr[1];
}
if (me.btnHighlight.menu) {
var arr = me.createPen(me.btnHighlight, 'highlight');
me.mnuHighlightColorPicker = arr[0];
me.mnuHighlightTransparent = arr[1];
}
});
},
@ -416,6 +530,9 @@ define([
this.btnSelectTool.updateHint(this.tipSelectTool);
this.btnHandTool.updateHint(this.tipHandTool);
this.btnAddComment.updateHint(this.tipAddComment);
this.btnStrikeout.updateHint(this.textStrikeout);
this.btnUnderline.updateHint(this.textUnderline);
this.btnHighlight.updateHint(this.textHighlight);
},
onToolbarAfterRender: function(toolbar) {
@ -577,7 +694,11 @@ define([
tipCut: 'Cut',
textTabComment: 'Comment',
capBtnComment: 'Comment',
tipAddComment: 'Add comment'
tipAddComment: 'Add comment',
strMenuNoFill: 'No Fill',
textStrikeout: 'Strikeout',
textUnderline: 'Underline',
textHighlight: 'Highlight',
}
})(), PDFE.Views.Toolbar || {}));
});