Add symbol table dialog
This commit is contained in:
parent
f79725ac7a
commit
73f268aa54
1335
apps/common/main/lib/util/character.js
Normal file
1335
apps/common/main/lib/util/character.js
Normal file
File diff suppressed because it is too large
Load diff
961
apps/common/main/lib/view/SymbolTableDialog.js
Normal file
961
apps/common/main/lib/view/SymbolTableDialog.js
Normal file
|
@ -0,0 +1,961 @@
|
|||
/*
|
||||
*
|
||||
* (c) Copyright Ascensio System SIA 2010-2019
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at 20A-12 Ernesta Birznieka-Upisha
|
||||
* street, Riga, Latvia, EU, LV-1050.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* SymbolTableDialog.js
|
||||
*
|
||||
* Created by Julia Radzhabova on 07.11.2019
|
||||
* Copyright (c) 2019 Ascensio System SIA. All rights reserved.
|
||||
*
|
||||
*/
|
||||
if (Common === undefined)
|
||||
var Common = {};
|
||||
define([
|
||||
'common/main/lib/util/utils',
|
||||
'common/main/lib/util/character',
|
||||
'common/main/lib/component/InputField',
|
||||
'common/main/lib/component/Window'
|
||||
], function () { 'use strict';
|
||||
|
||||
var oRangeNames = {};
|
||||
oRangeNames[1] = 'Basic Latin';
|
||||
oRangeNames[2] = 'Latin 1 Supplement';
|
||||
oRangeNames[3] = 'Latin Extended A';
|
||||
oRangeNames[4] = 'Latin Extended B';
|
||||
oRangeNames[5] = 'IPA Extensions';
|
||||
oRangeNames[6] = 'Spacing Modifier Letters';
|
||||
oRangeNames[7] = 'Combining Diacritical Marks';
|
||||
oRangeNames[8] = 'Greek and Coptic';
|
||||
oRangeNames[9] = 'Cyrillic';
|
||||
oRangeNames[10] = 'Cyrillic Supplement';
|
||||
oRangeNames[11] = 'Armenian';
|
||||
oRangeNames[12] = 'Hebrew';
|
||||
oRangeNames[13] = 'Arabic';
|
||||
oRangeNames[14] = 'Syriac';
|
||||
oRangeNames[15] = 'Arabic Supplement';
|
||||
oRangeNames[16] = 'Thaana';
|
||||
oRangeNames[17] = 'NKo';
|
||||
oRangeNames[18] = 'Samaritan';
|
||||
oRangeNames[19] = 'Mandaic';
|
||||
oRangeNames[20] = 'Arabic Extended A';
|
||||
oRangeNames[21] = 'Devanagari';
|
||||
oRangeNames[22] = 'Bengali';
|
||||
oRangeNames[23] = 'Gurmukhi';
|
||||
oRangeNames[24] = 'Gujarati';
|
||||
oRangeNames[25] = 'Oriya';
|
||||
oRangeNames[26] = 'Tamil';
|
||||
oRangeNames[27] = 'Telugu';
|
||||
oRangeNames[28] = 'Kannada';
|
||||
oRangeNames[29] = 'Malayalam';
|
||||
oRangeNames[30] = 'Sinhala';
|
||||
oRangeNames[31] = 'Thai';
|
||||
oRangeNames[32] = 'Lao';
|
||||
oRangeNames[33] = 'Tibetan';
|
||||
oRangeNames[34] = 'Myanmar';
|
||||
oRangeNames[35] = 'Georgian';
|
||||
oRangeNames[36] = 'Hangul Jamo';
|
||||
oRangeNames[37] = 'Ethiopic';
|
||||
oRangeNames[38] = 'Ethiopic Supplement';
|
||||
oRangeNames[39] = 'Cherokee';
|
||||
oRangeNames[40] = 'Unified Canadian Aboriginal Syllabics';
|
||||
oRangeNames[41] = 'Ogham';
|
||||
oRangeNames[42] = 'Runic';
|
||||
oRangeNames[43] = 'Tagalog';
|
||||
oRangeNames[44] = 'Hanunoo';
|
||||
oRangeNames[45] = 'Buhid';
|
||||
oRangeNames[46] = 'Tagbanwa';
|
||||
oRangeNames[47] = 'Khmer';
|
||||
oRangeNames[48] = 'Mongolian';
|
||||
oRangeNames[49] = 'Unified Canadian Aboriginal Syllabics Extended';
|
||||
oRangeNames[50] = 'Limbu';
|
||||
oRangeNames[51] = 'Tai Le';
|
||||
oRangeNames[52] = 'New Tai Lue';
|
||||
oRangeNames[53] = 'Khmer Symbols';
|
||||
oRangeNames[54] = 'Buginese';
|
||||
oRangeNames[55] = 'Tai Tham';
|
||||
oRangeNames[56] = 'Combining Diacritical Marks Extended';
|
||||
oRangeNames[57] = 'Balinese';
|
||||
oRangeNames[58] = 'Sundanese';
|
||||
oRangeNames[59] = 'Batak';
|
||||
oRangeNames[60] = 'Lepcha';
|
||||
oRangeNames[61] = 'Ol Chiki';
|
||||
oRangeNames[62] = 'Cyrillic Extended C';
|
||||
oRangeNames[63] = 'Sundanese Supplement';
|
||||
oRangeNames[64] = 'Vedic Extensions';
|
||||
oRangeNames[65] = 'Phonetic Extensions';
|
||||
oRangeNames[66] = 'Phonetic Extensions Supplement';
|
||||
oRangeNames[67] = 'Combining Diacritical Marks Supplement';
|
||||
oRangeNames[68] = 'Latin Extended Additional';
|
||||
oRangeNames[69] = 'Greek Extended';
|
||||
oRangeNames[70] = 'General Punctuation';
|
||||
oRangeNames[71] = 'Superscripts and Subscripts';
|
||||
oRangeNames[72] = 'Currency Symbols';
|
||||
oRangeNames[73] = 'Combining Diacritical Marks for Symbols';
|
||||
oRangeNames[74] = 'Letterlike Symbols';
|
||||
oRangeNames[75] = 'Number Forms';
|
||||
oRangeNames[76] = 'Arrows';
|
||||
oRangeNames[77] = 'Mathematical Operators';
|
||||
oRangeNames[78] = 'Miscellaneous Technical';
|
||||
oRangeNames[79] = 'Control Pictures';
|
||||
oRangeNames[80] = 'Optical Character Recognition';
|
||||
oRangeNames[81] = 'Enclosed Alphanumerics';
|
||||
oRangeNames[82] = 'Box Drawing';
|
||||
oRangeNames[83] = 'Block Elements';
|
||||
oRangeNames[84] = 'Geometric Shapes';
|
||||
oRangeNames[85] = 'Miscellaneous Symbols';
|
||||
oRangeNames[86] = 'Dingbats';
|
||||
oRangeNames[87] = 'Miscellaneous Mathematical Symbols A';
|
||||
oRangeNames[88] = 'Supplemental Arrows A';
|
||||
oRangeNames[89] = 'Braille Patterns';
|
||||
oRangeNames[90] = 'Supplemental Arrows B';
|
||||
oRangeNames[91] = 'Miscellaneous Mathematical Symbols B';
|
||||
oRangeNames[92] = 'Supplemental Mathematical Operators';
|
||||
oRangeNames[93] = 'Miscellaneous Symbols and Arrows';
|
||||
oRangeNames[94] = 'Glagolitic';
|
||||
oRangeNames[95] = 'Latin Extended C';
|
||||
oRangeNames[96] = 'Coptic';
|
||||
oRangeNames[97] = 'Georgian Supplement';
|
||||
oRangeNames[98] = 'Tifinagh';
|
||||
oRangeNames[99] = 'Ethiopic Extended';
|
||||
oRangeNames[100] = 'Cyrillic Extended A';
|
||||
oRangeNames[101] = 'Supplemental Punctuation';
|
||||
oRangeNames[102] = 'CJK Radicals Supplement';
|
||||
oRangeNames[103] = 'Kangxi Radicals';
|
||||
oRangeNames[104] = 'Ideographic Description Characters';
|
||||
oRangeNames[105] = 'CJK Symbols and Punctuation';
|
||||
oRangeNames[106] = 'Hiragana';
|
||||
oRangeNames[107] = 'Katakana';
|
||||
oRangeNames[108] = 'Bopomofo';
|
||||
oRangeNames[109] = 'Hangul Compatibility Jamo';
|
||||
oRangeNames[110] = 'Kanbun';
|
||||
oRangeNames[111] = 'Bopomofo Extended';
|
||||
oRangeNames[112] = 'CJK Strokes';
|
||||
oRangeNames[113] = 'Katakana Phonetic Extensions';
|
||||
oRangeNames[114] = 'Enclosed CJK Letters and Months';
|
||||
oRangeNames[115] = 'CJK Compatibility';
|
||||
oRangeNames[116] = 'CJK Unified Ideographs Extension';
|
||||
oRangeNames[117] = 'Yijing Hexagram Symbols';
|
||||
oRangeNames[118] = 'CJK Unified Ideographs';
|
||||
oRangeNames[119] = 'Yi Syllables';
|
||||
oRangeNames[120] = 'Yi Radicals';
|
||||
oRangeNames[121] = 'Lisu';
|
||||
oRangeNames[122] = 'Vai';
|
||||
oRangeNames[123] = 'Cyrillic Extended B';
|
||||
oRangeNames[124] = 'Bamum';
|
||||
oRangeNames[125] = 'Modifier Tone Letters';
|
||||
oRangeNames[126] = 'Latin Extended D';
|
||||
oRangeNames[127] = 'Syloti Nagri';
|
||||
oRangeNames[128] = 'Common Indic Number Forms';
|
||||
oRangeNames[129] = 'Phags pa';
|
||||
oRangeNames[130] = 'Saurashtra';
|
||||
oRangeNames[131] = 'Devanagari Extended';
|
||||
oRangeNames[132] = 'Kayah Li';
|
||||
oRangeNames[133] = 'Rejang';
|
||||
oRangeNames[134] = 'Hangul Jamo Extended A';
|
||||
oRangeNames[135] = 'Javanese';
|
||||
oRangeNames[136] = 'Myanmar Extended B';
|
||||
oRangeNames[137] = 'Cham';
|
||||
oRangeNames[138] = 'Myanmar Extended A';
|
||||
oRangeNames[139] = 'Tai Viet';
|
||||
oRangeNames[140] = 'Meetei Mayek Extensions';
|
||||
oRangeNames[141] = 'Ethiopic Extended A';
|
||||
oRangeNames[142] = 'Latin Extended E';
|
||||
oRangeNames[143] = 'Cherokee Supplement';
|
||||
oRangeNames[144] = 'Meetei Mayek';
|
||||
oRangeNames[145] = 'Hangul Syllables';
|
||||
oRangeNames[146] = 'Hangul Jamo Extended B';
|
||||
oRangeNames[147] = 'High Surrogates';
|
||||
oRangeNames[148] = 'High Private Use Surrogates';
|
||||
oRangeNames[149] = 'Low Surrogates';
|
||||
oRangeNames[150] = 'Private Use Area';
|
||||
oRangeNames[151] = 'CJK Compatibility Ideographs';
|
||||
oRangeNames[152] = 'Alphabetic Presentation Forms';
|
||||
oRangeNames[153] = 'Arabic Presentation Forms A';
|
||||
oRangeNames[154] = 'Variation Selectors';
|
||||
oRangeNames[155] = 'Vertical Forms';
|
||||
oRangeNames[156] = 'Combining Half Marks';
|
||||
oRangeNames[157] = 'CJK Compatibility Forms';
|
||||
oRangeNames[158] = 'Small Form Variants';
|
||||
oRangeNames[159] = 'Arabic Presentation Forms B';
|
||||
oRangeNames[160] = 'Halfwidth and Fullwidth Forms';
|
||||
oRangeNames[161] = 'Specials';
|
||||
oRangeNames[162] = 'Linear B Syllabary';
|
||||
oRangeNames[163] = 'Linear B Ideograms';
|
||||
oRangeNames[164] = 'Aegean Numbers';
|
||||
oRangeNames[165] = 'Ancient Greek Numbers';
|
||||
oRangeNames[166] = 'Ancient Symbols';
|
||||
oRangeNames[167] = 'Phaistos Disc';
|
||||
oRangeNames[168] = 'Lycian';
|
||||
oRangeNames[169] = 'Carian';
|
||||
oRangeNames[170] = 'Coptic Epact Numbers';
|
||||
oRangeNames[171] = 'Old Italic';
|
||||
oRangeNames[172] = 'Gothic';
|
||||
oRangeNames[173] = 'Old Permic';
|
||||
oRangeNames[174] = 'Ugaritic';
|
||||
oRangeNames[175] = 'Old Persian';
|
||||
oRangeNames[176] = 'Deseret';
|
||||
oRangeNames[177] = 'Shavian';
|
||||
oRangeNames[178] = 'Osmanya';
|
||||
oRangeNames[179] = 'Osage';
|
||||
oRangeNames[180] = 'Elbasan';
|
||||
oRangeNames[181] = 'Caucasian Albanian';
|
||||
oRangeNames[182] = 'Linear A';
|
||||
oRangeNames[183] = 'Cypriot Syllabary';
|
||||
oRangeNames[184] = 'Imperial Aramaic';
|
||||
oRangeNames[185] = 'Palmyrene';
|
||||
oRangeNames[186] = 'Nabataean';
|
||||
oRangeNames[187] = 'Hatran';
|
||||
oRangeNames[188] = 'Phoenician';
|
||||
oRangeNames[189] = 'Lydian';
|
||||
oRangeNames[190] = 'Meroitic Hieroglyphs';
|
||||
oRangeNames[191] = 'Meroitic Cursive';
|
||||
oRangeNames[192] = 'Kharoshthi';
|
||||
oRangeNames[193] = 'Old South Arabian';
|
||||
oRangeNames[194] = 'Old North Arabian';
|
||||
oRangeNames[195] = 'Manichaean';
|
||||
oRangeNames[196] = 'Avestan';
|
||||
oRangeNames[197] = 'Inscriptional Parthian';
|
||||
oRangeNames[198] = 'Inscriptional Pahlavi';
|
||||
oRangeNames[199] = 'Psalter Pahlavi';
|
||||
oRangeNames[200] = 'Old Turkic';
|
||||
oRangeNames[201] = 'Old Hungarian';
|
||||
oRangeNames[202] = 'Rumi Numeral Symbols';
|
||||
oRangeNames[203] = 'Brahmi';
|
||||
oRangeNames[204] = 'Kaithi';
|
||||
oRangeNames[205] = 'Sora Sompeng';
|
||||
oRangeNames[206] = 'Chakma';
|
||||
oRangeNames[207] = 'Mahajani';
|
||||
oRangeNames[208] = 'Sharada';
|
||||
oRangeNames[209] = 'Sinhala Archaic Numbers';
|
||||
oRangeNames[210] = 'Khojki';
|
||||
oRangeNames[211] = 'Multani';
|
||||
oRangeNames[212] = 'Khudawadi';
|
||||
oRangeNames[213] = 'Grantha';
|
||||
oRangeNames[214] = 'Newa';
|
||||
oRangeNames[215] = 'Tirhuta';
|
||||
oRangeNames[216] = 'Siddham';
|
||||
oRangeNames[217] = 'Modi';
|
||||
oRangeNames[218] = 'Mongolian Supplement';
|
||||
oRangeNames[219] = 'Takri';
|
||||
oRangeNames[220] = 'Ahom';
|
||||
oRangeNames[221] = 'Warang Citi';
|
||||
oRangeNames[222] = 'Pau Cin Hau';
|
||||
oRangeNames[223] = 'Bhaiksuki';
|
||||
oRangeNames[224] = 'Marchen';
|
||||
oRangeNames[225] = 'Cuneiform';
|
||||
oRangeNames[226] = 'Cuneiform Numbers and Punctuation';
|
||||
oRangeNames[227] = 'Early Dynastic Cuneiform';
|
||||
oRangeNames[228] = 'Egyptian Hieroglyphs';
|
||||
oRangeNames[229] = 'Anatolian Hieroglyphs';
|
||||
oRangeNames[230] = 'Bamum Supplement';
|
||||
oRangeNames[231] = 'Mro';
|
||||
oRangeNames[232] = 'Bassa Vah';
|
||||
oRangeNames[233] = 'Pahawh Hmong';
|
||||
oRangeNames[234] = 'Miao';
|
||||
oRangeNames[235] = 'Ideographic Symbols and Punctuation';
|
||||
oRangeNames[236] = 'Tangut';
|
||||
oRangeNames[237] = 'Tangut Components';
|
||||
oRangeNames[238] = 'Kana Supplement';
|
||||
oRangeNames[239] = 'Duployan';
|
||||
oRangeNames[240] = 'Shorthand Format Controls';
|
||||
oRangeNames[241] = 'Byzantine Musical Symbols';
|
||||
oRangeNames[242] = 'Musical Symbols';
|
||||
oRangeNames[243] = 'Ancient Greek Musical Notation';
|
||||
oRangeNames[244] = 'Tai Xuan Jing Symbols';
|
||||
oRangeNames[245] = 'Counting Rod Numerals';
|
||||
oRangeNames[246] = 'Mathematical Alphanumeric Symbols';
|
||||
oRangeNames[247] = 'Sutton SignWriting';
|
||||
oRangeNames[248] = 'Glagolitic Supplement';
|
||||
oRangeNames[249] = 'Mende Kikakui';
|
||||
oRangeNames[250] = 'Adlam';
|
||||
oRangeNames[251] = 'Arabic Mathematical Alphabetic Symbols';
|
||||
oRangeNames[252] = 'Mahjong Tiles';
|
||||
oRangeNames[253] = 'Domino Tiles';
|
||||
oRangeNames[254] = 'Playing Cards';
|
||||
oRangeNames[255] = 'Enclosed Alphanumeric Supplement';
|
||||
oRangeNames[256] = 'Enclosed Ideographic Supplement';
|
||||
oRangeNames[257] = 'Miscellaneous Symbols and Pictographs';
|
||||
oRangeNames[258] = 'Emoticons';
|
||||
oRangeNames[259] = 'Ornamental Dingbats';
|
||||
oRangeNames[260] = 'Transport and Map Symbols';
|
||||
oRangeNames[261] = 'Alchemical Symbols';
|
||||
oRangeNames[262] = 'Geometric Shapes Extended';
|
||||
oRangeNames[263] = 'Supplemental Arrows C';
|
||||
oRangeNames[264] = 'Supplemental Symbols and Pictographs';
|
||||
oRangeNames[265] = 'CJK Unified Ideographs Extension B';
|
||||
oRangeNames[266] = 'CJK Unified Ideographs Extension C';
|
||||
oRangeNames[267] = 'CJK Unified Ideographs Extension D';
|
||||
oRangeNames[268] = 'CJK Unified Ideographs Extension E';
|
||||
oRangeNames[269] = 'CJK Compatibility Ideographs Supplement';
|
||||
oRangeNames[270] = 'Tags';
|
||||
oRangeNames[271] = 'Variation Selectors Supplement';
|
||||
oRangeNames[272] = 'Supplementary Private Use Area A';
|
||||
oRangeNames[273] = 'Supplementary Private Use Area B';
|
||||
|
||||
var aFontSelects = [];
|
||||
var aRanges = [];
|
||||
var aRecents = [];
|
||||
var nCurrentFont = -1;// индекс в aFontSelects
|
||||
var nCurrentSymbol = -1;// code
|
||||
var bMainFocus = true;//фокус в основной таблице
|
||||
var nFontNameRecent = -1;
|
||||
|
||||
var nMaxRecent = 36;
|
||||
var bScrollMouseUp = false;
|
||||
|
||||
var sInitFont = "";
|
||||
var sInitSymbol = "";
|
||||
|
||||
var nLastScroll = -1000;
|
||||
var bShowTooltip = true;
|
||||
|
||||
Common.Views.SymbolTableDialog = Common.UI.Window.extend(_.extend({
|
||||
options: {
|
||||
width: 400,
|
||||
style: 'min-width: 230px;',
|
||||
cls: 'modal-dlg',
|
||||
buttons: ['ok', 'cancel']
|
||||
},
|
||||
|
||||
initialize : function(options) {
|
||||
_.extend(this.options, {
|
||||
title: this.textTitle
|
||||
}, options || {});
|
||||
|
||||
this.template = [
|
||||
'<div class="box" style="height: 260px;">',
|
||||
'<table cols="2" style="width: 100%;margin-bottom: 10px;">',
|
||||
'<tr>',
|
||||
'<td style="padding-right: 10px;padding-bottom: 8px;">',
|
||||
'<label class="input-label">' + this.textFont + '</label>',
|
||||
'<div id="symbol-table-cmb-fonts"></div>',
|
||||
'</td>',
|
||||
'<td style="padding-bottom: 8px;">',
|
||||
'<label class="input-label">' + this.textRange + '</label>',
|
||||
'<div id="symbol-table-cmb-range"></div>',
|
||||
'</td>',
|
||||
'</tr>',
|
||||
'<tr>',
|
||||
'<td colspan="2" style="padding-bottom: 8px;">',
|
||||
'<div id="scrollable-table-div"></div>',
|
||||
'</td>',
|
||||
'</tr>',
|
||||
'<tr>',
|
||||
'<td colspan="2" style="padding-bottom: 8px;">',
|
||||
'<label class="input-label">' + this.textRecent + '</label>',
|
||||
'<div id="symbol-table-recent"></div>',
|
||||
'</td>',
|
||||
'</tr>',
|
||||
'<tr>',
|
||||
'<td colspan="2">',
|
||||
'<label class="input-label">' + this.textCode + '</label>',
|
||||
'<div id="symbol-table-text-code"></div>',
|
||||
'</td>',
|
||||
'</tr>',
|
||||
'</table>',
|
||||
'</div>'
|
||||
].join('');
|
||||
|
||||
this.options.tpl = _.template(this.template)(this.options);
|
||||
this.api = this.options.api;
|
||||
|
||||
var fontList = this.api.pluginMethod_GetFontList();
|
||||
fontList.sort(function(a, b){
|
||||
if(a.m_wsFontName < b.m_wsFontName) return -1;
|
||||
if(a.m_wsFontName > b.m_wsFontName) return 1;
|
||||
return 0;
|
||||
});
|
||||
|
||||
var oCurFont, oLastFont;
|
||||
var data = [];
|
||||
var oFontsByName = {};
|
||||
var sCurFontNameInMap;
|
||||
for(var i = 0; i < fontList.length; ++i){
|
||||
oCurFont = fontList[i];
|
||||
sCurFontNameInMap = oCurFont.m_wsFontName;
|
||||
oLastFont = oFontsByName[sCurFontNameInMap];
|
||||
if(!oLastFont){
|
||||
oFontsByName[sCurFontNameInMap] = oCurFont;
|
||||
}
|
||||
else{
|
||||
if(oLastFont.m_bBold && oLastFont.m_bItalic){
|
||||
oFontsByName[sCurFontNameInMap] = oCurFont;
|
||||
}
|
||||
else if(oLastFont.m_bBold && !oCurFont.m_bBold){
|
||||
oFontsByName[sCurFontNameInMap] = oCurFont;
|
||||
}
|
||||
else if(oLastFont.m_bItalic && !oCurFont.m_bBold && !oCurFont.m_bItalic){
|
||||
oFontsByName[sCurFontNameInMap] = oCurFont;
|
||||
}
|
||||
}
|
||||
}
|
||||
delete oFontsByName['ASCW3'];
|
||||
var i = 0;
|
||||
for(var key in oFontsByName){
|
||||
if(oFontsByName.hasOwnProperty(key)){
|
||||
data.push(oFontsByName[key]);
|
||||
data[data.length-1].value = i++;
|
||||
data[data.length-1].displayValue = oFontsByName[key].m_wsFontName;
|
||||
}
|
||||
}
|
||||
|
||||
//initialize params
|
||||
aFontSelects = data;
|
||||
aFontSelects.sort(function(a, b){return (a.displayValue.toLowerCase() > b.displayValue.toLowerCase()) ? 1 : -1;});
|
||||
if(!oFontsByName[sInitFont]){
|
||||
if(oFontsByName['Cambria Math']){
|
||||
sInitFont = 'Cambria Math';
|
||||
}
|
||||
else if(oFontsByName['Asana-Math']){
|
||||
sInitFont = 'Asana-Math';
|
||||
}
|
||||
}
|
||||
if(oFontsByName[sInitFont]){
|
||||
for(i = 0; i < aFontSelects.length; ++i){
|
||||
if(aFontSelects[i].displayValue === sInitFont){
|
||||
nCurrentFont = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (nCurrentFont < 0)
|
||||
nCurrentFont = 0;
|
||||
|
||||
|
||||
aRanges = this.getArrRangesByFont(nCurrentFont);
|
||||
if(sInitSymbol && sInitSymbol.length > 0){
|
||||
nCurrentSymbol = this.fixedCharCodeAt(sInitSymbol, 0);
|
||||
if(false === nCurrentSymbol){
|
||||
nCurrentSymbol = -1;
|
||||
}
|
||||
else{
|
||||
for(i = 0; i < aRanges.length; ++i){
|
||||
if(nCurrentSymbol >= aRanges[i].Start && nCurrentSymbol <= aRanges[i].End){
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(i === aRanges.length){
|
||||
nCurrentSymbol = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(nCurrentSymbol === -1){
|
||||
nCurrentSymbol = aRanges[0].Start;
|
||||
}
|
||||
|
||||
Common.UI.Window.prototype.initialize.call(this, this.options);
|
||||
},
|
||||
|
||||
render: function() {
|
||||
Common.UI.Window.prototype.render.call(this);
|
||||
|
||||
var me = this,
|
||||
$window = this.getChild();
|
||||
|
||||
this.cmbFonts = new Common.UI.ComboBox({
|
||||
el : $window.find('#symbol-table-cmb-fonts'),
|
||||
cls : 'input-group-nr',
|
||||
data : aFontSelects,
|
||||
editable : false,
|
||||
menuStyle : 'min-width: 100%; max-height: 200px;'
|
||||
}).on('selected', function(combo, record) {
|
||||
var oCurrentRange = me.getRangeBySymbol(aRanges, nCurrentSymbol);
|
||||
nCurrentFont = record.value;
|
||||
aRanges = me.getArrRangesByFont(nCurrentFont);
|
||||
if(oCurrentRange){
|
||||
for(var i = 0; i < aRanges.length; ++i){
|
||||
if(oCurrentRange.Name === aRanges[i].Name){
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(i === aRanges.length){
|
||||
nCurrentSymbol = aRanges[0].Start;
|
||||
}
|
||||
}
|
||||
else{
|
||||
nCurrentSymbol = aRanges[0].Start;
|
||||
}
|
||||
bMainFocus = true;
|
||||
me.updateView();
|
||||
});
|
||||
this.cmbFonts.setValue(nCurrentFont);
|
||||
|
||||
this.cmbRange = new Common.UI.ComboBox({
|
||||
el : $window.find('#symbol-table-cmb-range'),
|
||||
cls : 'input-group-nr',
|
||||
editable : false,
|
||||
menuStyle : 'min-width: 100%; max-height: 200px;'
|
||||
});
|
||||
this.updateRangeSelector();
|
||||
|
||||
me.inputCode = new Common.UI.InputField({
|
||||
el : $window.find('#symbol-table-text-code'),
|
||||
allowBlank : false,
|
||||
blankError : me.txtEmpty,
|
||||
style : 'width: 100%;',
|
||||
validateOnBlur: false,
|
||||
validateOnChange: true
|
||||
}).on('changing', function(cmp, newValue, oldValue) {
|
||||
me.isTextChanged = true;
|
||||
});
|
||||
|
||||
// this.updateView(undefined, undefined, undefined, true);
|
||||
|
||||
$window.find('.dlg-btn').on('click', _.bind(this.onBtnClick, this));
|
||||
},
|
||||
|
||||
show: function() {
|
||||
Common.UI.Window.prototype.show.apply(this, arguments);
|
||||
|
||||
var me = this;
|
||||
_.delay(function(){
|
||||
// me.inputUrl.cmpEl.find('input').focus();
|
||||
},50);
|
||||
},
|
||||
|
||||
setSettings: function (props) {
|
||||
},
|
||||
|
||||
getSettings: function () {
|
||||
},
|
||||
|
||||
onBtnClick: function(event) {
|
||||
this._handleInput(event.currentTarget.attributes['result'].value);
|
||||
},
|
||||
|
||||
onPrimary: function(event) {
|
||||
this._handleInput('ok');
|
||||
return false;
|
||||
},
|
||||
|
||||
_handleInput: function(state) {
|
||||
if (this.options.handler) {
|
||||
this.options.handler.call(this, this, state);
|
||||
}
|
||||
|
||||
this.close();
|
||||
},
|
||||
|
||||
encodeSurrogateChar: function(nUnicode) {
|
||||
if (nUnicode < 0x10000)
|
||||
{
|
||||
return String.fromCharCode(nUnicode);
|
||||
}
|
||||
else
|
||||
{
|
||||
nUnicode = nUnicode - 0x10000;
|
||||
var nLeadingChar = 0xD800 | (nUnicode >> 10);
|
||||
var nTrailingChar = 0xDC00 | (nUnicode & 0x3FF);
|
||||
return String.fromCharCode(nLeadingChar) + String.fromCharCode(nTrailingChar);
|
||||
}
|
||||
},
|
||||
|
||||
fixedCharCodeAt: function(str, idx) {
|
||||
idx = idx || 0;
|
||||
var code = str.charCodeAt(idx);
|
||||
var hi, low;
|
||||
if (0xD800 <= code && code <= 0xDBFF) {
|
||||
hi = code;
|
||||
low = str.charCodeAt(idx + 1);
|
||||
if (isNaN(low)) {
|
||||
throw 'Старшая часть суррогатной пары без следующей младшей в fixedCharCodeAt()';
|
||||
}
|
||||
return ((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000;
|
||||
}
|
||||
if (0xDC00 <= code && code <= 0xDFFF) {
|
||||
return false;
|
||||
}
|
||||
return code;
|
||||
},
|
||||
|
||||
getArrRangesByFont: function(nFontName){
|
||||
var _ret = getSupportedRangesByFont(aFontSelects[nFontName]);
|
||||
if(_ret.length === 0){
|
||||
_ret.push({Start:0x20, End: 0xFF});
|
||||
}
|
||||
if(_ret[0].Start < 0x20){
|
||||
_ret[0].Start = 0x20;
|
||||
}
|
||||
return _ret;
|
||||
},
|
||||
|
||||
getRangeBySymbol: function(arrRanges, nCode){
|
||||
for(var i = 0; i < arrRanges.length; ++i){
|
||||
if(arrRanges[i].Start <= nCode && arrRanges[i].End >= nCode){
|
||||
return arrRanges[i];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
},
|
||||
|
||||
getRangeByName: function(arrRanges, nName){
|
||||
for(var i = 0; i < arrRanges.length; ++i){
|
||||
if(arrRanges[i].Name === nName){
|
||||
return arrRanges[i];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
},
|
||||
|
||||
getLinearIndexByCode: function(arrRanges, nCode){
|
||||
var nLinearIndex = -1;
|
||||
var nCounter = 0;
|
||||
var oCurRange;
|
||||
for(var i = 0; i < arrRanges.length; ++i){
|
||||
oCurRange = arrRanges[i];
|
||||
if(oCurRange.Start > nCode){
|
||||
return -1;
|
||||
}
|
||||
if(oCurRange.Start <= nCode && oCurRange.End >= nCode){
|
||||
return nCounter + (nCode - oCurRange.Start);
|
||||
}
|
||||
nCounter += (oCurRange.End - oCurRange.Start + 1);
|
||||
}
|
||||
return nLinearIndex;
|
||||
},
|
||||
|
||||
getCodeByLinearIndex: function(arrRanges, nIndex){
|
||||
if(nIndex < 0){
|
||||
return -1;
|
||||
}
|
||||
var nCount = 0;
|
||||
var oCurRange = arrRanges[0];
|
||||
var nDiff;
|
||||
for(var i = 0; i < arrRanges.length; ++i){
|
||||
oCurRange = arrRanges[i];
|
||||
nDiff = oCurRange.End - oCurRange.Start + 1;
|
||||
if(nCount + nDiff > nIndex){
|
||||
return oCurRange.Start + nIndex - nCount;
|
||||
}
|
||||
nCount += nDiff;
|
||||
}
|
||||
return -1;
|
||||
},
|
||||
|
||||
createTable: function(arrSym, nRowsCount, nColsCount, oDiv){
|
||||
|
||||
var nDivCount = nRowsCount*nColsCount;
|
||||
var nCellsCounter = 0;
|
||||
var sInnerHtml = '';
|
||||
var sId;
|
||||
var sStyle = 'style=\'border-bottom: none\'';
|
||||
var sCellStyle;
|
||||
for(var i = 0; i < nDivCount; ++i){
|
||||
|
||||
|
||||
if(((i / nColsCount) >> 0) === (nRowsCount - 1)){
|
||||
sCellStyle = sStyle;
|
||||
}
|
||||
else{
|
||||
sCellStyle = '';
|
||||
}
|
||||
if(i < arrSym.length){
|
||||
sId = 'c' + arrSym[i];
|
||||
sInnerHtml += '<div class=\"cell\" '+sCellStyle +' id=\"' + sId + '\">' + '&#' + arrSym[i].toString(10) + '</div>';
|
||||
}
|
||||
else{
|
||||
sInnerHtml += '<div class=\"cell\"'+sCellStyle +'></div>';
|
||||
}
|
||||
++nCellsCounter;
|
||||
if(nCellsCounter >= nColsCount){
|
||||
sInnerHtml += '<br class=\"noselect\">';
|
||||
nCellsCounter = 0;
|
||||
}
|
||||
}
|
||||
oDiv.innerHTML = sInnerHtml;
|
||||
},
|
||||
|
||||
fillRecentSymbols: function(){
|
||||
var sRecents = window.localStorage.getItem('recentSymbols');
|
||||
var aRecentCookies;
|
||||
if(sRecents != ''){
|
||||
aRecentCookies = JSON.parse(sRecents);
|
||||
}
|
||||
if(Array.isArray(aRecentCookies)){
|
||||
aRecents = aRecentCookies;
|
||||
}
|
||||
},
|
||||
|
||||
saveRecent: function(){
|
||||
var sJSON = JSON.stringify(aRecents);
|
||||
window.localStorage.setItem('recentSymbols', sJSON);
|
||||
},
|
||||
|
||||
checkRecent: function(sSymbol, sFont){
|
||||
if(aRecents.length === 0){
|
||||
aRecents.push({symbol: sSymbol, font: sFont});
|
||||
return;
|
||||
}
|
||||
for(var i = 0; i < aRecents.length; ++i){
|
||||
if(aRecents[i].symbol === sSymbol && aRecents[i].font === sFont){
|
||||
aRecents.splice(i, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
aRecents.splice(0, 0, {symbol: sSymbol, font: sFont});
|
||||
if(aRecents.length > nMaxRecent){
|
||||
aRecents.splice(nMaxRecent, aRecents.length - nMaxRecent);
|
||||
}
|
||||
this.saveRecent();
|
||||
},
|
||||
|
||||
createCell: function(nSymbolCode, sFontName){
|
||||
var sId;
|
||||
if(sFontName){
|
||||
var nFontIndex = 0;
|
||||
aFontSelects[nCurrentFont].displayValue
|
||||
for(var i = 0; i < aFontSelects.length; ++i){
|
||||
if(aFontSelects[i].displayValue === sFontName){
|
||||
nFontIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
sId = 'r_' + nSymbolCode + '_' + nFontIndex;
|
||||
}
|
||||
else{
|
||||
sId = 'r' + nSymbolCode;
|
||||
}
|
||||
var _ret = $('<div id=\"' + sId + '\">&#' + nSymbolCode.toString() + '</div>');
|
||||
_ret.addClass('cell');
|
||||
_ret.addClass('noselect');
|
||||
_ret.mousedown(cellClickHandler);
|
||||
if(sFontName){
|
||||
_ret.css('font-family', '\'' + sFontName + '\'');
|
||||
}
|
||||
//_ret.mouseup(function (e) {
|
||||
// e.stopPropagation();
|
||||
//});
|
||||
return _ret;
|
||||
},
|
||||
|
||||
updateRecents: function(){
|
||||
var oRecentsDiv = $('#recent-table');
|
||||
oRecentsDiv.empty();
|
||||
var nRecents = Math.min(this.getColsCount(), aRecents.length);
|
||||
if(aRecents.length === 0){
|
||||
oRecentsDiv.css('border', '1px solid rgb(247, 247, 247)');
|
||||
return;
|
||||
}
|
||||
oRecentsDiv.css('border', '1px solid rgb(122, 122, 122)');
|
||||
for(var i = 0; i < nRecents; ++i){
|
||||
var oCell = this.createCell(aRecents[i].symbol, aRecents[i].font);
|
||||
|
||||
oCell.css('border-bottom', 'none');
|
||||
oRecentsDiv.append(oCell);
|
||||
if(i === (nRecents - 1)){
|
||||
oCell.css('border-right', 'none');
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
getColsCount: function(){
|
||||
var nMaxWidth = $('#main-div').innerWidth() - 17 - 2;
|
||||
return ((nMaxWidth/CELL_WIDTH) >> 0);
|
||||
},
|
||||
|
||||
getMaxHeight: function(){
|
||||
|
||||
var nMaxHeight = $('#main-div').innerHeight() - 10 - $('#header-div').outerHeight(true) - $('#recent-symbols-wrap').outerHeight(true)
|
||||
- $('#value-wrap').outerHeight(true) - $('#insert-button').outerHeight(true) - 2;
|
||||
return nMaxHeight;
|
||||
},
|
||||
|
||||
getRowsCount: function() {
|
||||
return Math.max(1, ((this.getMaxHeight()/CELL_HEIGHT) >> 0));
|
||||
},
|
||||
|
||||
getAllSymbolsCount: function(arrRanges){
|
||||
var _count = 0;
|
||||
var oRange;
|
||||
for(var i = 0; i < arrRanges.length; ++i){
|
||||
oRange = arrRanges[i];
|
||||
_count += (oRange.End - oRange.Start + 1);
|
||||
}
|
||||
return _count;
|
||||
},
|
||||
|
||||
setTable: function(nStartCode){
|
||||
var nColsCount = this.getColsCount();
|
||||
var nRowsCount = this.getRowsCount();
|
||||
var nIndexSymbol = this.getLinearIndexByCode(aRanges, nStartCode);
|
||||
var nAllSymbolsCount = this.getAllSymbolsCount(aRanges);
|
||||
var nAllRowsCount = Math.ceil(nAllSymbolsCount/nColsCount);
|
||||
var nRowsSkip = Math.max(0, Math.min(nAllRowsCount - nRowsCount, ((nIndexSymbol / nColsCount) >> 0)));
|
||||
var nFirst = nRowsSkip*nColsCount;
|
||||
var nSymbolsCount = nRowsCount*nColsCount;
|
||||
var aSymbols = [];
|
||||
var nCode;
|
||||
for(var i = 0; i < nSymbolsCount; ++i){
|
||||
nCode = this.getCodeByLinearIndex(aRanges, nFirst + i);
|
||||
if(nCode === -1){
|
||||
break;
|
||||
}
|
||||
aSymbols.push(nCode);
|
||||
}
|
||||
var oSymbolTable = $('#symbols-table')[0];
|
||||
$('#symbols-table').css('font-family', '\'' + aFontSelects[nCurrentFont].displayValue + '\'');
|
||||
this.createTable(aSymbols, nRowsCount, nColsCount, oSymbolTable);
|
||||
return nRowsSkip;
|
||||
},
|
||||
|
||||
updateView: function(bUpdateTable, nTopSymbol, bUpdateInput, bUpdateRecents, bUpdateRanges) {
|
||||
//fill ranges combo box
|
||||
if(bMainFocus){
|
||||
if(bUpdateRanges !== false){
|
||||
this.updateRangeSelector();
|
||||
}
|
||||
}
|
||||
|
||||
if(bMainFocus){
|
||||
if(aFontSelects[nCurrentFont]){
|
||||
$("#font-name-label").text(aFontSelects[nCurrentFont].displayValue);
|
||||
}
|
||||
else{
|
||||
$("#font-name-label").text('');
|
||||
}
|
||||
}
|
||||
else{
|
||||
if(aFontSelects[nFontNameRecent]){
|
||||
$("#font-name-label").text(aFontSelects[nFontNameRecent].displayValue);
|
||||
}
|
||||
else{
|
||||
$("#font-name-label").text('');
|
||||
}
|
||||
}
|
||||
|
||||
if(bUpdateTable !== false){
|
||||
//fill fonts combo box
|
||||
this.cmbFonts.setValue(nCurrentFont);
|
||||
}
|
||||
/*
|
||||
//main table
|
||||
var nRowsCount = this.getRowsCount();
|
||||
|
||||
var nHeight = nRowsCount*CELL_HEIGHT - 1;
|
||||
$('#scrollable-table-div').height(nHeight);
|
||||
$('#scrollable-table-div').css('margin-bottom', this.getMaxHeight() - nHeight);
|
||||
|
||||
|
||||
bScrollMouseUp = false;
|
||||
if(bUpdateTable !== false){
|
||||
//fill table
|
||||
var nSymbol = (nTopSymbol !== null && nTopSymbol !== undefined)? nTopSymbol : nCurrentSymbol;
|
||||
var nRowSkip = this.setTable(nSymbol);
|
||||
//update scroll
|
||||
var nSymbolsCount = this.getAllSymbolsCount(aRanges);
|
||||
var nAllRowsCount = Math.ceil(nSymbolsCount/this.getColsCount());
|
||||
var nFullHeight = nAllRowsCount*CELL_HEIGHT;
|
||||
|
||||
var nOldHeight = $("#fake-symbol-table-wrap").height();
|
||||
$("#fake-symbol-table-wrap").height(nHeight);
|
||||
$("#fake-symbol-table").height(nFullHeight);
|
||||
|
||||
|
||||
var container = document.getElementById('fake-symbol-table-wrap');
|
||||
// if(nOldHeight !== nHeight){
|
||||
// Ps.destroy();
|
||||
// Ps = new PerfectScrollbar('#' + container.id, {
|
||||
// minScrollbarLength: Math.max((CELL_HEIGHT*2.0/3.0 + 0.5) >> 0, ((nHeight/8.0 + 0.5) >> 0))
|
||||
// });
|
||||
// }
|
||||
bShowTooltip = false;
|
||||
container.scrollTop = nRowSkip*CELL_HEIGHT;
|
||||
// Ps.update();
|
||||
bShowTooltip = true;
|
||||
var aCells = $('#symbols-table > .cell');
|
||||
aCells.mousedown(cellClickHandler);
|
||||
//aCells.mouseup(function (e) {
|
||||
// e.stopPropagation();
|
||||
//});
|
||||
}
|
||||
|
||||
//fill recent
|
||||
if(bUpdateRecents){
|
||||
this.updateRecents();
|
||||
}
|
||||
|
||||
//reset selection
|
||||
$('.cell').removeClass('cell-selected');
|
||||
|
||||
//select current cell
|
||||
if(bMainFocus){
|
||||
$('#c' + nCurrentSymbol).addClass('cell-selected');
|
||||
}
|
||||
else{
|
||||
$('#r_' + nCurrentSymbol + '_' + nFontNameRecent).addClass('cell-selected');
|
||||
}
|
||||
|
||||
//update input
|
||||
if(bUpdateInput !== false){
|
||||
this.updateInput();
|
||||
}
|
||||
*/
|
||||
},
|
||||
|
||||
updateInput: function(){
|
||||
|
||||
var sVal = nCurrentSymbol.toString(16).toUpperCase();
|
||||
var sValLen = sVal.length;
|
||||
for(var i = sValLen; i < 5; ++i){
|
||||
sVal = '0' + sVal;
|
||||
}
|
||||
$('#symbol-code-input').val(sVal);
|
||||
},
|
||||
|
||||
updateRangeSelector: function() {
|
||||
var oCurrentRange = this.getRangeBySymbol(aRanges, nCurrentSymbol);
|
||||
if(!oCurrentRange || !oCurrentRange.Name){
|
||||
this.cmbRange.setDisabled(true);
|
||||
this.cmbRange.setValue('');
|
||||
}
|
||||
else{
|
||||
this.cmbRange.setDisabled(false);
|
||||
var oOption, i, data = [];
|
||||
for(i = 0; i < aRanges.length; ++i){
|
||||
data.push({
|
||||
value: aRanges[i].Name,
|
||||
displayValue: oRangeNames[aRanges[i].Name]
|
||||
});
|
||||
}
|
||||
this.cmbRange.setData(data);
|
||||
this.cmbRange.setValue(oCurrentRange.Name);
|
||||
}
|
||||
},
|
||||
|
||||
textTitle: 'Symbol Table',
|
||||
textFont: 'Font',
|
||||
textRange: 'Range',
|
||||
textRecent: 'Recently used symbols',
|
||||
textCode: 'Unicode HEX value'
|
||||
}, Common.Views.SymbolTableDialog || {}))
|
||||
});
|
|
@ -47,6 +47,7 @@ define([
|
|||
'common/main/lib/view/ImageFromUrlDialog',
|
||||
'common/main/lib/view/InsertTableDialog',
|
||||
'common/main/lib/view/SelectFileDlg',
|
||||
'common/main/lib/view/SymbolTableDialog',
|
||||
'common/main/lib/util/define',
|
||||
'documenteditor/main/app/view/Toolbar',
|
||||
'documenteditor/main/app/view/DropcapSettingsAdvanced',
|
||||
|
@ -324,6 +325,7 @@ define([
|
|||
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));
|
||||
toolbar.btnInsertSymbol.on('click', _.bind(this.onInsertSymbolClick, this));
|
||||
toolbar.mnuNoControlsColor.on('click', _.bind(this.onNoControlsColor, this));
|
||||
toolbar.mnuControlsColorPicker.on('select', _.bind(this.onSelectControlsColor, this));
|
||||
Common.Gateway.on('insertimage', _.bind(this.insertImage, this));
|
||||
|
@ -820,6 +822,8 @@ define([
|
|||
need_disable = paragraph_locked || header_locked || in_chart || !can_add_image&&!in_equation || control_plain;
|
||||
toolbar.btnInsertEquation.setDisabled(need_disable);
|
||||
|
||||
toolbar.btnInsertSymbol.setDisabled(!in_para || paragraph_locked || header_locked);
|
||||
|
||||
need_disable = paragraph_locked || header_locked || in_equation;
|
||||
toolbar.btnSuperscript.setDisabled(need_disable);
|
||||
toolbar.btnSubscript.setDisabled(need_disable);
|
||||
|
@ -2470,6 +2474,24 @@ define([
|
|||
Common.NotificationCenter.trigger('edit:complete', this.toolbar, this.toolbar.btnInsertEquation);
|
||||
},
|
||||
|
||||
onInsertSymbolClick: function() {
|
||||
if (this.api) {
|
||||
var me = this,
|
||||
win = new Common.Views.SymbolTableDialog({
|
||||
api: me.api,
|
||||
handler: function(dlg, result) {
|
||||
if (result == 'ok') {
|
||||
// dlg.getSettings();
|
||||
}
|
||||
Common.NotificationCenter.trigger('edit:complete', me.toolbar);
|
||||
}
|
||||
});
|
||||
win.show();
|
||||
// win.setSettings();
|
||||
}
|
||||
Common.NotificationCenter.trigger('edit:complete', this.toolbar, this.toolbar.btnInsertSymbol);
|
||||
},
|
||||
|
||||
onApiMathTypes: function(equation) {
|
||||
this._equationTemp = equation;
|
||||
var me = this;
|
||||
|
|
|
@ -108,6 +108,7 @@
|
|||
<div class="separator long"></div>
|
||||
<div class="group">
|
||||
<span class="btn-slot text x-huge" id="slot-btn-insequation"></span>
|
||||
<span class="btn-slot text x-huge" id="slot-btn-inssymbol"></span>
|
||||
</div>
|
||||
<div class="separator long"></div>
|
||||
<div class="group">
|
||||
|
|
|
@ -583,6 +583,14 @@ define([
|
|||
});
|
||||
this.paragraphControls.push(this.btnInsertEquation);
|
||||
|
||||
this.btnInsertSymbol = new Common.UI.Button({
|
||||
id: 'tlbtn-insertsymbol',
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
iconCls: 'btn-insertequation',
|
||||
caption: me.capBtnInsSymbol
|
||||
});
|
||||
this.paragraphControls.push(this.btnInsertSymbol);
|
||||
|
||||
this.btnDropCap = new Common.UI.Button({
|
||||
id: 'tlbtn-dropcap',
|
||||
cls: 'btn-toolbar x-huge icon-top',
|
||||
|
@ -1309,6 +1317,7 @@ define([
|
|||
_injectComponent('#slot-btn-blankpage', this.btnBlankPage);
|
||||
_injectComponent('#slot-btn-insshape', this.btnInsertShape);
|
||||
_injectComponent('#slot-btn-insequation', this.btnInsertEquation);
|
||||
_injectComponent('#slot-btn-inssymbol', this.btnInsertSymbol);
|
||||
_injectComponent('#slot-btn-pageorient', this.btnPageOrient);
|
||||
_injectComponent('#slot-btn-pagemargins', this.btnPageMargins);
|
||||
_injectComponent('#slot-btn-pagesize', this.btnPageSize);
|
||||
|
@ -1579,6 +1588,7 @@ define([
|
|||
this.btnBlankPage.updateHint(this.tipBlankPage);
|
||||
this.btnInsertShape.updateHint(this.tipInsertShape);
|
||||
this.btnInsertEquation.updateHint(this.tipInsertEquation);
|
||||
this.btnInsertSymbol.updateHint(this.tipInsertSymbol);
|
||||
this.btnDropCap.updateHint(this.tipDropCap);
|
||||
this.btnContentControls.updateHint(this.tipControls);
|
||||
this.btnColumns.updateHint(this.tipColumns);
|
||||
|
@ -2324,7 +2334,9 @@ define([
|
|||
capBtnWatermark: 'Watermark',
|
||||
textEditWatermark: 'Custom Watermark',
|
||||
textRemWatermark: 'Remove Watermark',
|
||||
tipWatermark: 'Edit watermark'
|
||||
tipWatermark: 'Edit watermark',
|
||||
capBtnInsSymbol: 'Symbol',
|
||||
tipInsertSymbol: 'Insert symbol'
|
||||
}
|
||||
})(), DE.Views.Toolbar || {}));
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue