Compare commits

...

108 commits

Author SHA1 Message Date
ca46b20e41
chore: push new version 2021-12-02 12:31:16 +01:00
e62d44cd89
chore: new version 2021-12-02 12:21:29 +01:00
a5ac4cbb43
feat: replace default paragraph styles with the same tool 2021-11-30 19:09:21 +01:00
6d138ae938 chore: push new version 2021-10-19 23:44:46 +02:00
d06657e3ee feat: provide more info if headings linking with TOC gone wrong #2 2021-10-19 23:43:25 +02:00
7a389b1b17 chore: push new version 2021-10-19 23:11:25 +02:00
fa35152083 New version 2021-10-19 23:05:30 +02:00
05041fc38b feat: provide more info if headings linking with TOC gone wrong 2021-10-19 23:02:41 +02:00
82dc861e82 Push new version 2021-10-06 12:25:02 +02:00
6843f73923 fix: convert mm to long 2021-10-06 12:23:31 +02:00
1f4f9d757d push new version 2021-10-01 11:05:57 +02:00
075bfc85aa fix: don't split pages while breaking paragraph 2021-10-01 11:00:28 +02:00
b0b5460032 chore: push new version 2021-09-23 14:33:28 +02:00
797ff48837 fix: Fixed archive conversion. Fixed new para balance function 2021-09-20 15:53:51 +02:00
fe1fc573eb fix: refactoring and fixes for working with archive 2021-08-29 16:44:00 +02:00
82c63c82ca fix: multiple fixes for processing archive books 2021-08-27 22:31:59 +02:00
941ac1c9cc fix: improved speed of shrink page content by changing order of shrink methods 2021-08-27 15:27:12 +02:00
5dcf629d0d fix: fixed wrong character numbers for lowercased cyrillic and latin characters 2021-08-27 15:26:04 +02:00
1eaa629949 chore: updated version 2021-08-27 13:03:13 +02:00
be702bc60f feat: added icon for para tail balance 2021-08-27 13:02:48 +02:00
f39f25b053 fix: exit if excerption happened while compiling journal 2021-08-27 12:13:36 +02:00
5bb9600439 fix rewritten shrink content function 2021-08-26 16:38:55 +02:00
f58b4f58de chore: cleaning a bit 2021-08-26 16:38:21 +02:00
48ebe71c8e fix: fixed kern increment/decrement while balancing para tail 2021-08-24 15:01:11 +02:00
ab552a70db fix: improved paragraph balance macro 2021-08-24 10:45:47 +02:00
8785038720 fix: Fixed shrink page content bug 2021-08-24 10:44:39 +02:00
8611814942 fix: added script to fix footnote sign positions 2021-08-24 10:43:44 +02:00
2b37cfe542 fix: fixed text char height shrinking. Use initial value of characters instead of getting it from paragraph style 2021-08-23 18:53:47 +02:00
d05aed70d6 fix: fixed footnote sign position while converting from links 2021-08-23 18:52:23 +02:00
79f8164650 feat: para balance improvements 2021-08-23 18:01:38 +02:00
c5dfb15133 feat: improved icons 2021-08-02 13:40:16 +02:00
13ba8d4f0c Push new version 2021-07-20 14:34:03 +02:00
c44890068b New version 2021-07-20 14:31:31 +02:00
c5da7ca352 Fix (endnotes) removed useless document text selection 2021-07-20 14:31:12 +02:00
8411b36a8f push new version 2021-07-12 18:17:54 +02:00
25372f07a2 Safe go to range with controller select 2021-07-12 18:04:20 +02:00
b8d2fc8361 push version 2021-06-21 19:53:48 +02:00
13d70679cc Fix for hyphenations convertation to manual 2021-06-21 19:51:47 +02:00
ff35128df4 New version push 2021-06-16 15:57:34 +02:00
383c0c832d Copy space if endnote is empty 2021-06-16 15:55:06 +02:00
f2cf656958 New version 2021-06-08 14:53:23 +02:00
1ee8b5f951 Added custom endnote back to standard conversion 2021-06-08 14:52:46 +02:00
f889f0edb7 Added endnotes conversion icon 2021-06-06 21:59:39 +02:00
f7bf8fd316 Fix error if image was selected 2021-06-04 17:05:34 +02:00
f912e831a0 Check if no textranges selected 2021-06-04 16:40:15 +02:00
71f52c5c01 Added panel button for endnotes conversion 2021-06-03 21:19:22 +02:00
58bab11323 Added dialog and functions to convert native endnotes to custom endnotes 2021-06-03 21:09:17 +02:00
ffa704353a push new version 2021-05-21 00:22:30 +02:00
38c23dc75d New version 2021-05-21 00:19:21 +02:00
097883c65a Fixed getting footnote sign in footnote conversion for archive 2021-05-21 00:18:29 +02:00
df65b5efe1 Fixed conversion links to footnotes 2021-05-20 18:07:13 +02:00
edeef39f82 Fixes for footnotes configuration 2021-05-20 14:18:06 +02:00
4d687b4923 Use IsNumeric instead of IsDigit 2021-05-19 20:19:47 +02:00
995d7801a5 Typo 2021-05-19 17:40:41 +02:00
58f1fb4c34 Fixes for Foontote/Endnote numeration functions 2021-05-19 17:33:27 +02:00
55f8f9e79b Foontote/Endnote numeration functions added 2021-05-19 17:11:47 +02:00
90207f01d0 Improving footnote/endnote configuration in progress 2021-05-19 15:50:10 +02:00
8087152c4a Modified release notes 2020-10-26 12:54:22 +01:00
6d42c6a449 new version 2020-10-26 08:57:41 +01:00
2c7c35297e Set articles limit to 50 2020-10-26 08:54:43 +01:00
434c083f3b New version 2020-09-14 22:47:09 +02:00
6dbe28c2f5 Dispose bookmark before adding another one with the same name 2020-09-14 22:45:01 +02:00
30dcf4c5de Revert "Added on document load event"
This reverts commit 9a72d7d7e0.
2020-09-08 18:43:16 +02:00
ec75bae72d Revert "Fix for prev commit"
This reverts commit 843846b8a0.
2020-09-08 18:42:38 +02:00
843846b8a0 Fix for prev commit 2020-09-08 16:45:56 +02:00
9a72d7d7e0 Added on document load event 2020-09-08 16:41:08 +02:00
8a99a25f43 New version 2020-08-31 13:56:13 +02:00
2adb633b82 New version 2020-08-31 13:51:59 +02:00
03b6c75cf3 Forbid creating bidirectional links with empty text 2020-08-31 13:41:59 +02:00
795ce507b7 push version 2020-07-06 12:20:26 +02:00
adb6e97f65 Fixed mistake in code 2020-07-06 11:57:10 +02:00
3afbc932a9 New version push 2020-06-27 13:27:21 +02:00
05020edb1d TOC Links creation improved 2020-06-27 13:21:30 +02:00
e2d0bd1bb6 new version 2020-06-26 15:18:44 +02:00
daf1b542d4 More one fix for prev commit 2020-06-26 15:17:16 +02:00
c8751d75c9 push new version 2020-06-26 15:10:08 +02:00
52550f79ab Remove last paragraph balance in page conversion 2020-06-26 15:08:51 +02:00
a444d942f3 New version 2020-06-23 16:38:06 +02:00
e607dd98de Use Long for ASC result 2020-06-23 16:07:11 +02:00
1ec3e9ad34 New version 2020-06-23 16:02:40 +02:00
85e11b73a5 Fixed headings settings while working with archive 2020-06-23 13:58:46 +02:00
8fab22ff8c New version 2020-06-22 22:33:44 +02:00
eb6427e657 Footnote area calculations 2020-06-22 22:32:48 +02:00
f8887020b9 Improved archive macro 2020-06-22 22:29:58 +02:00
07624d0907 Modified translations 2020-05-20 15:35:05 +02:00
5e252a96f9 French translations for panels 2020-05-13 12:14:16 +02:00
f7fa3981f4 updates 2020-05-12 20:37:50 +02:00
a8f9b71ab0 Release notes updated 2020-05-12 19:44:36 +02:00
724d455bff Merged french menu translations 2020-05-12 19:43:38 +02:00
06285ba9e6 Merge branch 'master' of dev.litvinovg.pro:litvinovg/epublishing 2020-05-12 19:35:30 +02:00
Svetlana Rastegina
56a421eb7c Added translations. 2020-05-12 19:32:03 +02:00
63f9348421 Description changed 2020-05-12 18:57:04 +02:00
da73b84f39 French, Croatina, Bosnian and Serbian translations added 2020-05-12 18:46:51 +02:00
Svetlana Rastegina
fdc474ac94 Modified translations. 2020-05-12 18:04:30 +02:00
ca9f335156 Fixed help text 2020-05-11 20:33:44 +02:00
fa4c3518d7 updates 2020-05-11 20:05:18 +02:00
e064dcfdf4 New version 2020-05-11 20:02:36 +02:00
8c445ba964 release notes 2020-05-11 20:00:12 +02:00
ba8a410416 Unique page styles 2020-05-11 19:59:08 +02:00
59c5e6396c Unique page styles 2020-05-11 19:58:47 +02:00
15a423b3c4 new version 2020-05-08 17:17:01 +02:00
c9b2e2d6fd updates 2020-05-08 16:46:50 +02:00
01d814b22f New version 2020-05-08 16:45:46 +02:00
28ae0a1349 One more fix 2020-05-08 16:45:27 +02:00
60deb71b08 Version change 2020-05-08 16:35:36 +02:00
e72ccdda16 Fixes 2020-05-08 16:35:26 +02:00
0cf66ed037 Updates 2020-05-07 12:22:16 +02:00
1d7c37bf5d Fixes in page config dialog 2020-05-07 12:20:56 +02:00
43 changed files with 5503 additions and 652 deletions

View file

@ -3,6 +3,10 @@
<node oor:name="AddonUI"> <node oor:name="AddonUI">
<node oor:name="OfficeToolBar"> <node oor:name="OfficeToolBar">
<node oor:name="pro.litvinovg.ePublishing.panel" oor:op="replace"> <node oor:name="pro.litvinovg.ePublishing.panel" oor:op="replace">
<prop oor:name="Docked" oor:op="fuse"><value>true</value></prop>
<prop oor:name="HideFromToolbarMenu" oor:op="fuse"><value>false</value></prop>
<prop oor:name="Locked" oor:op="fuse"><value>false</value></prop>
<node oor:name="buttonShrinkText" oor:op="replace"> <node oor:name="buttonShrinkText" oor:op="replace">
<prop oor:name="Context" oor:type="xs:string"> <prop oor:name="Context" oor:type="xs:string">
<value>com.sun.star.text.TextDocument,com.sun.star.text.WebDocument</value> <value>com.sun.star.text.TextDocument,com.sun.star.text.WebDocument</value>
@ -10,6 +14,10 @@
<prop oor:name="Title" oor:type="xs:string"> <prop oor:name="Title" oor:type="xs:string">
<value xml:lang="ru">Сжать текст</value> <value xml:lang="ru">Сжать текст</value>
<value xml:lang="en">Shrink text</value> <value xml:lang="en">Shrink text</value>
<value xml:lang="sr">Стисни текст</value>
<value xml:lang="hr">Stisni tekst</value>
<value xml:lang="bs">Stisni tekst</value>
<value xml:lang="fr">Ressérer le texte</value>
</prop> </prop>
<prop oor:name="URL" oor:type="xs:string"> <prop oor:name="URL" oor:type="xs:string">
<value>macro:///ePublishing.Archive.shrinkPageContent</value> <value>macro:///ePublishing.Archive.shrinkPageContent</value>
@ -23,8 +31,12 @@
<value>com.sun.star.text.TextDocument,com.sun.star.text.WebDocument</value> <value>com.sun.star.text.TextDocument,com.sun.star.text.WebDocument</value>
</prop> </prop>
<prop oor:name="Title" oor:type="xs:string"> <prop oor:name="Title" oor:type="xs:string">
<value xml:lang="ru">Заменить cтиль параграфа</value> <value xml:lang="ru">Заменить cтиль параграфа с удалением заменяемого</value>
<value xml:lang="en">Replace para style</value> <value xml:lang="en">Replace para style and remove replaced</value>
<value xml:lang="fr">Remplacer style du paragraphe</value>
<value xml:lang="sr">Замените стил параграфа и уклоните замењено</value>
<value xml:lang="hr">Zamijenite stil paragrafа i uklonite zamijenjeno</value>
<value xml:lang="bs">Zamijenite stil paragrafа i uklonite zamijenjeno</value>
</prop> </prop>
<prop oor:name="URL" oor:type="xs:string"> <prop oor:name="URL" oor:type="xs:string">
<value>macro:///ePublishing.Archive.replaceParaStyle</value> <value>macro:///ePublishing.Archive.replaceParaStyle</value>
@ -40,6 +52,10 @@
<prop oor:name="Title" oor:type="xs:string"> <prop oor:name="Title" oor:type="xs:string">
<value xml:lang="ru">Создать связанные ссылки</value> <value xml:lang="ru">Создать связанные ссылки</value>
<value xml:lang="en">Create bidirectional links</value> <value xml:lang="en">Create bidirectional links</value>
<value xml:lang="fr">Créer liens bidirectionnels</value>
<value xml:lang="sr">Креирајте повезане везе</value>
<value xml:lang="hr">Kreirajte povezane veze</value>
<value xml:lang="bs">Kreirajte povezane veze</value>
</prop> </prop>
<prop oor:name="URL" oor:type="xs:string"> <prop oor:name="URL" oor:type="xs:string">
<value>macro:///ePublishing.Archive.createBidirectLink</value> <value>macro:///ePublishing.Archive.createBidirectLink</value>
@ -48,17 +64,65 @@
<value>_self</value> <value>_self</value>
</prop> </prop>
</node> </node>
<node oor:name="buttonEndnotesConversion" oor:op="replace">
<prop oor:name="Context" oor:type="xs:string">
<value>com.sun.star.text.TextDocument,com.sun.star.text.WebDocument</value>
</prop>
<prop oor:name="Title" oor:type="xs:string">
<value xml:lang="ru">Конвертация концевых сносок</value>
<value xml:lang="en">Endnotes conversion</value>
<value xml:lang="fr">Conversion de notes de fin</value>
<value xml:lang="sr">Конверзија крајњих белешки</value>
<value xml:lang="hr">konverzija završnih bilješki</value>
<value xml:lang="bs">konverzija završnih bilješki</value>
</prop>
<prop oor:name="URL" oor:type="xs:string">
<value>macro:///ePublishing.Endnotes.convertEndnotesExecution</value>
</prop>
<prop oor:name="Target" oor:type="xs:string">
<value>_self</value>
</prop>
</node>
<node oor:name="balanceTail" oor:op="replace">
<prop oor:name="Context" oor:type="xs:string">
<value>com.sun.star.text.TextDocument,com.sun.star.text.WebDocument</value>
</prop>
<prop oor:name="Title" oor:type="xs:string">
<value xml:lang="ru">Балансировка хвоста</value>
<value xml:lang="fr">Équilibrer la dernière ligne</value>
<value xml:lang="en">Balance the last line </value>
<value xml:lang="sr">Уравнотежите последњу линију</value>
<value xml:lang="hr">Uravnotežite posljednji redak</value>
<value xml:lang="bs">Uravnotežite posljednji redak</value>
</prop>
<prop oor:name="URL" oor:type="xs:string">
<value>macro:///ePublishing.Archive.balanceCurParaLastLine</value>
</prop>
<prop oor:name="Target" oor:type="xs:string">
<value>_self</value>
</prop>
</node>
</node> </node>
</node> </node>
<node oor:name="OfficeToolBar"> <node oor:name="OfficeToolBar">
<node oor:name="pro.litvinovg.ePublishing.makeuppanel" oor:op="replace"> <node oor:name="pro.litvinovg.ePublishing.makeuppanel" oor:op="replace">
<prop oor:name="Docked" oor:op="fuse"><value>true</value></prop>
<prop oor:name="HideFromToolbarMenu" oor:op="fuse"><value>false</value></prop>
<prop oor:name="Locked" oor:op="fuse"><value>false</value></prop>
<node oor:name="percentPlus" oor:op="replace"> <node oor:name="percentPlus" oor:op="replace">
<prop oor:name="Context" oor:type="xs:string"> <prop oor:name="Context" oor:type="xs:string">
<value>com.sun.star.text.TextDocument,com.sun.star.text.WebDocument</value> <value>com.sun.star.text.TextDocument,com.sun.star.text.WebDocument</value>
</prop> </prop>
<prop oor:name="Title" oor:type="xs:string"> <prop oor:name="Title" oor:type="xs:string">
<value xml:lang="fr">Augmenter la largeur des caractères</value>
<value xml:lang="ru">Увеличить ширину символа</value> <value xml:lang="ru">Увеличить ширину символа</value>
<value xml:lang="en">Increase symbol width</value> <value xml:lang="en">Increase symbol width</value>
<value xml:lang="sr">Повећајте ширину знака</value>
<value xml:lang="hr">Povećajte širinu znaka</value>
<value xml:lang="bs">Povećajte širinu znaka</value>
</prop> </prop>
<prop oor:name="URL" oor:type="xs:string"> <prop oor:name="URL" oor:type="xs:string">
<value>macro:///ePublishing.MakeUp.incrementCharWidth</value> <value>macro:///ePublishing.MakeUp.incrementCharWidth</value>
@ -73,7 +137,11 @@
</prop> </prop>
<prop oor:name="Title" oor:type="xs:string"> <prop oor:name="Title" oor:type="xs:string">
<value xml:lang="ru">Уменьшить ширину символа</value> <value xml:lang="ru">Уменьшить ширину символа</value>
<value xml:lang="fr">Diminuer la largeur des caractères</value>
<value xml:lang="en">Decrease symbol width</value> <value xml:lang="en">Decrease symbol width</value>
<value xml:lang="sr">Смањивање ширине знака</value>
<value xml:lang="hr">Smanjivanje širine znaka</value>
<value xml:lang="bs">Smanjivanje širine znaka</value>
</prop> </prop>
<prop oor:name="URL" oor:type="xs:string"> <prop oor:name="URL" oor:type="xs:string">
<value>macro:///ePublishing.MakeUp.decrementCharWidth</value> <value>macro:///ePublishing.MakeUp.decrementCharWidth</value>
@ -88,8 +156,12 @@
<value>com.sun.star.text.TextDocument,com.sun.star.text.WebDocument</value> <value>com.sun.star.text.TextDocument,com.sun.star.text.WebDocument</value>
</prop> </prop>
<prop oor:name="Title" oor:type="xs:string"> <prop oor:name="Title" oor:type="xs:string">
<value xml:lang="ru">Увеличить межсимволный интервал</value> <value xml:lang="ru">Увеличить межсимвольный интервал</value>
<value xml:lang="fr">Augmenter la chasse</value>
<value xml:lang="en">Increase kerning</value> <value xml:lang="en">Increase kerning</value>
<value xml:lang="sr">Повећајте интервал интерсимволе</value>
<value xml:lang="hr">Povećajte interval intersimvole</value>
<value xml:lang="bs">Povećajte interval intersimvole</value>
</prop> </prop>
<prop oor:name="URL" oor:type="xs:string"> <prop oor:name="URL" oor:type="xs:string">
<value>macro:///ePublishing.MakeUp.incrementKern</value> <value>macro:///ePublishing.MakeUp.incrementKern</value>
@ -104,7 +176,11 @@
</prop> </prop>
<prop oor:name="Title" oor:type="xs:string"> <prop oor:name="Title" oor:type="xs:string">
<value xml:lang="ru">Уменьшить межсимвольный интервал</value> <value xml:lang="ru">Уменьшить межсимвольный интервал</value>
<value xml:lang="fr">Diminuer la chasse</value>
<value xml:lang="en">Decrese kerning</value> <value xml:lang="en">Decrese kerning</value>
<value xml:lang="sr">Смањивање интервал интерсимволе</value>
<value xml:lang="hr">Smanjivanje interval intersimvole</value>
<value xml:lang="bs">Smanjivanje interval intersimvole</value>
</prop> </prop>
<prop oor:name="URL" oor:type="xs:string"> <prop oor:name="URL" oor:type="xs:string">
<value>macro:///ePublishing.MakeUp.decrementKern</value> <value>macro:///ePublishing.MakeUp.decrementKern</value>
@ -123,7 +199,7 @@
</prop> </prop>
<node oor:name="UserDefinedImages"> <node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL"> <prop oor:name="ImageBigURL">
<value>%origin%/icons/paragraph.png</value> <value>%origin%/icons/paragraph.svg</value>
</prop> </prop>
</node> </node>
</node> </node>
@ -133,7 +209,7 @@
</prop> </prop>
<node oor:name="UserDefinedImages"> <node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL"> <prop oor:name="ImageBigURL">
<value>%origin%/icons/links.png</value> <value>%origin%/icons/links.svg</value>
</prop> </prop>
</node> </node>
</node> </node>
@ -143,7 +219,7 @@
</prop> </prop>
<node oor:name="UserDefinedImages"> <node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL"> <prop oor:name="ImageBigURL">
<value>%origin%/icons/press_text.png</value> <value>%origin%/icons/press_text.svg</value>
</prop> </prop>
</node> </node>
</node> </node>
@ -154,7 +230,7 @@
</prop> </prop>
<node oor:name="UserDefinedImages"> <node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL"> <prop oor:name="ImageBigURL">
<value>%origin%/icons/incChar.png</value> <value>%origin%/icons/incChar.svg</value>
</prop> </prop>
</node> </node>
</node> </node>
@ -164,7 +240,7 @@
</prop> </prop>
<node oor:name="UserDefinedImages"> <node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL"> <prop oor:name="ImageBigURL">
<value>%origin%/icons/decChar.png</value> <value>%origin%/icons/decChar.svg</value>
</prop> </prop>
</node> </node>
</node> </node>
@ -174,7 +250,7 @@
</prop> </prop>
<node oor:name="UserDefinedImages"> <node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL"> <prop oor:name="ImageBigURL">
<value>%origin%/icons/incKern.png</value> <value>%origin%/icons/incKern.svg</value>
</prop> </prop>
</node> </node>
</node> </node>
@ -184,10 +260,32 @@
</prop> </prop>
<node oor:name="UserDefinedImages"> <node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL"> <prop oor:name="ImageBigURL">
<value>%origin%/icons/decKern.png</value> <value>%origin%/icons/decKern.svg</value>
</prop> </prop>
</node> </node>
</node> </node>
<node oor:name="convert-endnotes" oor:op="replace">
<prop oor:name="URL" oor:type="xs:string">
<value>macro:///ePublishing.Endnotes.convertEndnotesExecution</value>
</prop>
<node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL">
<value>%origin%/icons/endnotes.svg</value>
</prop>
</node>
</node>
<node oor:name="balance-tail" oor:op="replace">
<prop oor:name="URL" oor:type="xs:string">
<value>macro:///ePublishing.Archive.balanceCurParaLastLine</value>
</prop>
<node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL">
<value>%origin%/icons/tail.svg</value>
</prop>
</node>
</node>
@ -204,7 +302,11 @@
<node oor:name="journalsMenu" oor:op="replace"> <node oor:name="journalsMenu" oor:op="replace">
<prop oor:name="Title" oor:type="xs:string"> <prop oor:name="Title" oor:type="xs:string">
<value xml:lang="en">Journals</value> <value xml:lang="en">Journals</value>
<value xml:lang="fr">Magazines</value>
<value xml:lang="ru">Журналы</value> <value xml:lang="ru">Журналы</value>
<value xml:lang="sr">Часописи</value>
<value xml:lang="hr">Časopisi</value>
<value xml:lang="bs">Časopisi</value>
</prop> </prop>
<node oor:name="Submenu"> <node oor:name="Submenu">
<node oor:name="makeUpIssueItem" oor:op="replace"> <node oor:name="makeUpIssueItem" oor:op="replace">
@ -218,6 +320,10 @@
<value/> <value/>
<value xml:lang="en">Compose articles into issue template</value> <value xml:lang="en">Compose articles into issue template</value>
<value xml:lang="ru">Собрать статьи в шаблон выпуска</value> <value xml:lang="ru">Собрать статьи в шаблон выпуска</value>
<value xml:lang="fr">Rassembler les articles dans un modèle de publication</value>
<value xml:lang="sr">Скупити чланке у шаблон за издавање</value>
<value xml:lang="hr">Skupiti članke u šablon za izdavanje</value>
<value xml:lang="bs">Skupiti članke u šablon za izdavanje</value>
</prop> </prop>
</node> </node>
<node oor:name="setLastPageNumbersItem" oor:op="replace"> <node oor:name="setLastPageNumbersItem" oor:op="replace">
@ -232,30 +338,11 @@
</prop> </prop>
<prop oor:name="Title" oor:type="xs:string"> <prop oor:name="Title" oor:type="xs:string">
<value xml:lang="en">Update articles' last page number</value> <value xml:lang="en">Update articles' last page number</value>
<value xml:lang="fr">Mise à jour du numéro de la dernière page</value>
<value xml:lang="ru">Обновить номера последних страниц статей</value> <value xml:lang="ru">Обновить номера последних страниц статей</value>
</prop> <value xml:lang="sr">Ажурирајте бројеве најновијих страница чланака</value>
</node> <value xml:lang="hr">Ažurirajte brojeve najnovijih stranica članaka</value>
</node> <value xml:lang="bs">Ažurirajte brojeve najnovijih stranica članaka</value>
</node>
</node>
<node oor:name="Submenu">
<node oor:name="booksMenu" oor:op="replace">
<prop oor:name="Title" oor:type="xs:string">
<value xml:lang="en">Books</value>
<value xml:lang="ru">Книги</value>
</prop>
<node oor:name="Submenu">
<node oor:name="UniquePageStylesItem" oor:op="replace">
<prop oor:name="URL" oor:type="xs:string">
<value>macro:///ePublishing.Books.setUniqPageStyles</value>
</prop>
<prop oor:name="Target" oor:type="xs:string">
<value>_self</value>
</prop>
<prop oor:name="Title" oor:type="xs:string">
<value/>
<value xml:lang="en">Make page styles unique</value>
<value xml:lang="ru">Сделать стили страниц уникальными</value>
</prop> </prop>
</node> </node>
</node> </node>
@ -266,6 +353,10 @@
<prop oor:name="Title" oor:type="xs:string"> <prop oor:name="Title" oor:type="xs:string">
<value xml:lang="en">Archive</value> <value xml:lang="en">Archive</value>
<value xml:lang="ru">Архив</value> <value xml:lang="ru">Архив</value>
<value xml:lang="fr">Archive</value>
<value xml:lang="sr">Архива</value>
<value xml:lang="hr">Arhiv</value>
<value xml:lang="bs">Arhiva</value>
</prop> </prop>
<node oor:name="Submenu"> <node oor:name="Submenu">
<node oor:name="footnotesRecovery" oor:op="replace"> <node oor:name="footnotesRecovery" oor:op="replace">
@ -277,8 +368,12 @@
</prop> </prop>
<prop oor:name="Title" oor:type="xs:string"> <prop oor:name="Title" oor:type="xs:string">
<value/> <value/>
<value xml:lang="en">Recovery footnotes from text</value> <value xml:lang="en">Restore footnotes from text</value>
<value xml:lang="ru">Восстановление сносок из текста</value> <value xml:lang="ru">Восстановление сносок из текста</value>
<value xml:lang="fr">Récupération des notes de bas de page dans le texte</value>
<value xml:lang="sr">Враћање фуснота из текста</value>
<value xml:lang="hr">Vraćanje fusnota iz teksta</value>
<value xml:lang="bs">Vraćanje fusnota iz teksta</value>
</prop> </prop>
</node> </node>
<node oor:name="pageBreaksRecovery" oor:op="replace"> <node oor:name="pageBreaksRecovery" oor:op="replace">
@ -290,21 +385,66 @@
</prop> </prop>
<prop oor:name="Title" oor:type="xs:string"> <prop oor:name="Title" oor:type="xs:string">
<value/> <value/>
<value xml:lang="en">PageBreaks recovery</value> <value xml:lang="en">Restore page breaks</value>
<value xml:lang="ru">Восстановление разрывов страниц</value> <value xml:lang="ru">Восстановление разрывов страниц</value>
<value xml:lang="fr">Restauration des sauts de page</value>
<value xml:lang="sr">Опоравак прекида странице</value>
<value xml:lang="hr">Oporavak prekida stranice</value>
<value xml:lang="bs">Oporavak prekida stranice</value>
</prop> </prop>
</node> </node>
<node oor:name="ConfigureArchiveHeadings" oor:op="replace">
<prop oor:name="URL" oor:type="xs:string">
<value>macro:///ePublishing.Archive.configureHeadings</value>
</prop>
<prop oor:name="Target" oor:type="xs:string">
<value>_self</value>
</prop>
<prop oor:name="Title" oor:type="xs:string">
<value/>
<value xml:lang="en">Configure headings</value>
<value xml:lang="ru">Настроить заголовки</value>
<value xml:lang="fr">Configurer les en-têtes</value>
<value xml:lang="sr">Конфигурише заглавља</value>
<value xml:lang="hr">Konfiguriranje naslova</value>
<value xml:lang="bs">Konfiguriranje naslova</value>
</prop>
</node>
</node> </node>
</node> </node>
</node> </node>
<node oor:name="Submenu"> <node oor:name="Submenu">
<node oor:name="uniquePageStyles" oor:op="replace">
<prop oor:name="Context" oor:type="xs:string">
<value>com.sun.star.text.TextDocument,com.sun.star.text.WebDocument</value>
</prop>
<prop oor:name="Title" oor:type="xs:string">
<value xml:lang="en">Set unique style for each page</value>
<value xml:lang="ru">Каждой странице уникальный стиль</value>
<value xml:lang="fr">Définir un style unique pour chaque page</value>
<value xml:lang="sr">Свакој страници јединствени стил</value>
<value xml:lang="hr">Svakoj stranici jedinstveni stil</value>
<value xml:lang="bs">Svakoj stranici jedinstveni stil</value>
</prop>
<prop oor:name="URL" oor:type="xs:string">
<value>macro:///ePublishing.Books.setUniqPageStyles</value>
</prop>
<prop oor:name="Target" oor:type="xs:string">
<value>_self</value>
</prop>
</node>
<node oor:name="cleanConfigure" oor:op="replace"> <node oor:name="cleanConfigure" oor:op="replace">
<prop oor:name="Context" oor:type="xs:string"> <prop oor:name="Context" oor:type="xs:string">
<value>com.sun.star.text.TextDocument,com.sun.star.text.WebDocument</value> <value>com.sun.star.text.TextDocument,com.sun.star.text.WebDocument</value>
</prop> </prop>
<prop oor:name="Title" oor:type="xs:string"> <prop oor:name="Title" oor:type="xs:string">
<value xml:lang="en">Configure clean</value> <value xml:lang="en">Configure cleaning</value>
<value xml:lang="fr">Nettoyage</value>
<value xml:lang="ru">Настройка чистки</value> <value xml:lang="ru">Настройка чистки</value>
<value xml:lang="sr">Подешавање чишћења</value>
<value xml:lang="hr">Podešavanje čišćenja</value>
<value xml:lang="bs">Podešavanje čišćenja</value>
</prop> </prop>
<prop oor:name="URL" oor:type="xs:string"> <prop oor:name="URL" oor:type="xs:string">
<value>macro:///Redaction.Configuration.ConfigurationDialog</value> <value>macro:///Redaction.Configuration.ConfigurationDialog</value>
@ -319,7 +459,11 @@
</prop> </prop>
<prop oor:name="Title" oor:type="xs:string"> <prop oor:name="Title" oor:type="xs:string">
<value xml:lang="en">Convert auto hyphenations to manual</value> <value xml:lang="en">Convert auto hyphenations to manual</value>
<value xml:lang="fr">Convertir la césure automatique en césure manuelle</value>
<value xml:lang="ru">Конвертация автоматических переносов в ручные</value> <value xml:lang="ru">Конвертация автоматических переносов в ручные</value>
<value xml:lang="sr">Конверзија аутоматског хифенације у ручни</value>
<value xml:lang="hr">Konverzija automatskog hifenacije u ručni</value>
<value xml:lang="bs">Konverzija automatskog hifenacije u ručni</value>
</prop> </prop>
<prop oor:name="URL" oor:type="xs:string"> <prop oor:name="URL" oor:type="xs:string">
<value>macro:///ePublishing.Hyphenations.convertHyphInDoc</value> <value>macro:///ePublishing.Hyphenations.convertHyphInDoc</value>
@ -334,7 +478,11 @@
</prop> </prop>
<prop oor:name="Title" oor:type="xs:string"> <prop oor:name="Title" oor:type="xs:string">
<value xml:lang="en">Page styles batch configuration</value> <value xml:lang="en">Page styles batch configuration</value>
<value xml:lang="fr">Personnalisation en série du style des pages</value>
<value xml:lang="ru">Массовая настройка стилей страниц</value> <value xml:lang="ru">Массовая настройка стилей страниц</value>
<value xml:lang="sr">Масовно прилагођавање стилова страница</value>
<value xml:lang="hr">Masovno prilagođavanje stilova stranica</value>
<value xml:lang="bs">Masovno prilagođavanje stilova stranica</value>
</prop> </prop>
<prop oor:name="URL" oor:type="xs:string"> <prop oor:name="URL" oor:type="xs:string">
<value>macro:///ePublishing.PageStyles.pageStylesDialog</value> <value>macro:///ePublishing.PageStyles.pageStylesDialog</value>
@ -349,7 +497,11 @@
</prop> </prop>
<prop oor:name="Title" oor:type="xs:string"> <prop oor:name="Title" oor:type="xs:string">
<value xml:lang="en">Convert found fonts to character styles</value> <value xml:lang="en">Convert found fonts to character styles</value>
<value xml:lang="fr">Conversion des polices des styles de caractères</value>
<value xml:lang="ru">Перевод найденных шрифтов в стили символов</value> <value xml:lang="ru">Перевод найденных шрифтов в стили символов</value>
<value xml:lang="sr">Превођење пронађених фонтова у стилове знакова</value>
<value xml:lang="hr">Prevođenje pronađenih fontova u stilove znakova</value>
<value xml:lang="bs">Prevođenje pronađenih fontova u stilove znakova</value>
</prop> </prop>
<prop oor:name="URL" oor:type="xs:string"> <prop oor:name="URL" oor:type="xs:string">
<value>macro:///Redaction.Clean.convertFontsToCharStyles</value> <value>macro:///Redaction.Clean.convertFontsToCharStyles</value>
@ -365,6 +517,10 @@
<prop oor:name="Title" oor:type="xs:string"> <prop oor:name="Title" oor:type="xs:string">
<value xml:lang="en">Footnotes numbering configuration</value> <value xml:lang="en">Footnotes numbering configuration</value>
<value xml:lang="ru">Настройка нумерации сносок</value> <value xml:lang="ru">Настройка нумерации сносок</value>
<value xml:lang="fr">Configuration de la numérotation des notes</value>
<value xml:lang="sr">Подешавање нумерисања фусноте</value>
<value xml:lang="hr">Podešavanje numerisanja fusnote</value>
<value xml:lang="bs">Podešavanje numerisanja fusnote</value>
</prop> </prop>
<prop oor:name="URL" oor:type="xs:string"> <prop oor:name="URL" oor:type="xs:string">
<value>macro:///ePublishing.Footnotes.openFootNotesDialog</value> <value>macro:///ePublishing.Footnotes.openFootNotesDialog</value>
@ -379,7 +535,11 @@
</prop> </prop>
<prop oor:name="Title" oor:type="xs:string"> <prop oor:name="Title" oor:type="xs:string">
<value xml:lang="en">Create links in Table Of Contents</value> <value xml:lang="en">Create links in Table Of Contents</value>
<value xml:lang="ru">Создать в ссылки в оглавлении</value> <value xml:lang="ru">Создать ссылки в оглавлении</value>
<value xml:lang="fr">Créer des liens dans la table des matières</value>
<value xml:lang="sr">Креирајте везе у садржају</value>
<value xml:lang="hr">Kreirajte veze u sadržaju</value>
<value xml:lang="bs">Kreirajte veze u sadržaju</value>
</prop> </prop>
<prop oor:name="URL" oor:type="xs:string"> <prop oor:name="URL" oor:type="xs:string">
<value>macro:///ePublishing.TOCLinks.makeOutlineLinks</value> <value>macro:///ePublishing.TOCLinks.makeOutlineLinks</value>
@ -394,7 +554,11 @@
</prop> </prop>
<prop oor:name="Title" oor:type="xs:string"> <prop oor:name="Title" oor:type="xs:string">
<value xml:lang="en">Rotate page</value> <value xml:lang="en">Rotate page</value>
<value xml:lang="fr">Rotation de la page</value>
<value xml:lang="ru">Повернуть страницу</value> <value xml:lang="ru">Повернуть страницу</value>
<value xml:lang="sr">Ротирање странице</value>
<value xml:lang="hr">Rotiranje stranice</value>
<value xml:lang="bs">Rotiranje stranice</value>
</prop> </prop>
<prop oor:name="URL" oor:type="xs:string"> <prop oor:name="URL" oor:type="xs:string">
<value>macro:///ePublishing.Album.rotatePageButton</value> <value>macro:///ePublishing.Album.rotatePageButton</value>

View file

@ -5,12 +5,14 @@
<node oor:name="private:resource/toolbar/addon_pro.litvinovg.ePublishing.panel" oor:op="replace"> <node oor:name="private:resource/toolbar/addon_pro.litvinovg.ePublishing.panel" oor:op="replace">
<prop oor:name="UIName" oor:type="xs:string"> <prop oor:name="UIName" oor:type="xs:string">
<value xml:lang="en">ePublishing main panel</value> <value xml:lang="en">ePublishing main panel</value>
<value xml:lang="fr">Panneau principal de ePublishing</value>
<value xml:lang="ru">Основная панель ePublishing</value> <value xml:lang="ru">Основная панель ePublishing</value>
</prop> </prop>
</node> </node>
<node oor:name="private:resource/toolbar/addon_pro.litvinovg.ePublishing.makeuppanel" oor:op="replace"> <node oor:name="private:resource/toolbar/addon_pro.litvinovg.ePublishing.makeuppanel" oor:op="replace">
<prop oor:name="UIName" oor:type="xs:string"> <prop oor:name="UIName" oor:type="xs:string">
<value xml:lang="en">ePublishing make-up</value> <value xml:lang="en">ePublishing make-up</value>
<value xml:lang="fr">Panneau de réglages de ePublishing make-up</value>
<value xml:lang="ru">Панель верстки ePublishing</value> <value xml:lang="ru">Панель верстки ePublishing</value>
</prop> </prop>
</node> </node>

View file

@ -3,7 +3,7 @@
xmlns:dep="http://openoffice.org/extensions/description/2006" xmlns:dep="http://openoffice.org/extensions/description/2006"
xmlns:xlink="http://www.w3.org/1999/xlink"> xmlns:xlink="http://www.w3.org/1999/xlink">
<identifier value="pro.litvinovg.epublishing" /> <identifier value="pro.litvinovg.epublishing" />
<version value="0.5.4" /> <version value="0.7.16" />
<platform value="all" /> <platform value="all" />
<display-name> <display-name>
<name lang="ru">Инструменты для создания электронных изданий</name> <name lang="ru">Инструменты для создания электронных изданий</name>
@ -33,8 +33,8 @@
</extension-description> </extension-description>
<icon> <icon>
<default xlink:href="icons/addon_icon.png" /> <default xlink:href="icons/addon_icon.svg" />
<high-contrast xlink:href="icons/addon_icon.png" /> <high-contrast xlink:href="icons/addon_icon.svg" />
</icon> </icon>
</description> </description>

View file

@ -1 +1,19 @@
Extenstion for digital publishing in HTML and EPUB with pagingation. Tools for publishing in LibreOffice Writer: books, journals, etc.
Project Description
Tools for publishing in LibreOffice Writer:
- Create links in table of contents
- Rotate page to album and backwards
- Convert documents exported from InDesing in html
- Compose journal issues from articles
- Convert found fonts to character styles
- Enable advanced mode for Clean and validate extension
- Convert automatic hyphenation to manual
- Set unique page style to each page in document
- Footnotes numbering according to outline levels
- Configure multiple page styles at once
- Shrink text to previous page
- Create bidirectional links
- Replace paragraph style with removal of replaced style (useful for applying styles to documents imported from html)
- Kerning increment and decrement buttons
- Width increment and decrement buttons

View file

@ -1,2 +1,18 @@
Расширение для верстки документов в html и epub с сохранением пагинации. Инструменты для подготовки документов к публикации в LibreOffice Writer: книг, журналов и т.д.
Предоставляет различные инструменты для автоматизации подготовки документа к публикации.
Включает в себя следующие инструменты
- Создание ссылок между содержаниями и заголовками
- Поворот страницы в альбомную ориентацию и обратно
- Конвертация документов, экспортированных из InDesing в html
- Сборка выпусков журналов из набора статей и шаблона выпуска
- Перевод всех найденных шрифтов в стили символов
- Включение экспертного режима для расширения "Чистка и проверка"
- Конвертация автоматических переносов в ручные
- Назначение уникальных стилей всем страницам документа
- Footnotes numbering according to outline levels
- Configure multiple page styles at once
- Сжатие текста, чтобы уместить его на одной странице
- Создание двунаправленных ссылок
- Замена стиля параграфа с удалением заменяемого (полезно при обработке документов, импортированных из html)
- Кнопки для увеличения и уменьшения кернинга
- Кнопки для увеличения и уменьшения масштаба символа по ширине

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Album" script:language="StarBasic" script:moduleType="normal">Sub albumMark3 <script:module xmlns:script="http://openoffice.org/2000/script" script:name="Album" script:language="StarBasic" script:moduleType="normal">Sub albumMark6
End Sub End Sub
Sub rotatePageButton Sub rotatePageButton

File diff suppressed because it is too large Load diff

View file

@ -1,8 +1,302 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Books" script:language="StarBasic" script:moduleType="normal">Sub markBooks3 <script:module xmlns:script="http://openoffice.org/2000/script" script:name="Books" script:language="StarBasic" script:moduleType="normal">Sub markBooks7
End Sub End Sub
Sub setUniqPageStyles Sub setUniqPageStyles
Dim pageStyleBreaks As Variant
Dim filteredDupStyles As Variant
pageStyleBreaks = getPageStyleBreaks()
Dim pageCount As Integer
Dim pageStyleNames() As String
Dim pageNumbers() As Integer
Dim pageStarts() As Object
Dim pageCounter As Integer
pageStyleNames = pageStyleBreaks(0)
pageNumbers = pageStyleBreaks(1)
pageStarts = pageStyleBreaks(2)
&apos;Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; )
pageCount = thiscomponent.currentController.pageCount
Dim fullChain(pageCount - 1) As String
Dim dupNames() As String
Dim dupCounters() As Integer
Dim chainNum As Integer
Dim pageStyleFamily As Object
Dim pageStyle As Object
pageStyleFamily = ThisComponent.StyleFamilies.getByName(&quot;PageStyles&quot;)
chainNum = 0
For pageCounter = 1 To pageCount
If pageNumbers(chainNum) = pageCounter Then
fullChain(pageCounter - 1) = pageStyleNames(chainNum)
If Ubound(pageNumbers) &gt; chainNum Then
chainNum = chainNum + 1
EndIf
Else
pageStyle = pageStyleFamily.getByName(fullChain(pageCounter - 1 - 1))
fullChain(pageCounter - 1) = pageStyle.FollowStyle
EndIf
Dim dupPosition As Integer
dupPosition = getIndex(dupNames, fullChain(pageCounter - 1) )
If dupPosition = -1 Then
addToArray(dupNames, fullChain(pageCounter - 1))
addToArray(dupCounters, 1)
Else
dupCounters(dupPosition) = dupCounters(dupPosition) + 1
EndIf
Next pageCounter
filteredDupStyles = filterPageStyleNames(dupNames,dupCounters)
filteredDupStyles = createDupNames(filteredDupStyles)
Dim duplicateNames() As String
Dim initNames() As String
Dim dupName As String
duplicateNames = filteredDupStyles(2)
initNames = filteredDupStyles(0)
createPageStyleClones(filteredDupStyles)
chainNum = 0
Dim curName As String
Dim pageStart As Object
Dim prevPageStyle As Object
Dim index As Integer
For pageCounter = 1 To pageCount
If pageNumbers(chainNum) = pageCounter Then
index = getIndex(initNames, pageStyleNames(chainNum))
If index &gt; -1 Then
pageStart = pageStarts(chainNum)
dupName = getDuplicate(duplicateNames(index))
pageStart.pageDescName = dupName
fullChain(pageCounter - 1) = dupName
EndIf
If Ubound(pageNumbers) &gt; chainNum Then
chainNum = chainNum + 1
EndIf
Else
curName = fullChain(pageCounter - 1)
index = getIndex(initNames, curName)
If index &gt; -1 Then
dupName = getDuplicate(duplicateNames(index))
prevPageStyle = pageStyleFamily.getByName(fullChain(pageCounter - 1 - 1))
prevPageStyle.FollowStyle = dupName
fullChain(pageCounter - 1) = dupName
EndIf
EndIf
Next pageCounter
MsgBox getTranslation(&quot;allPagesHaveUniqPageStyle&quot;)
End Sub
Function getDuplicate(duplicateNames() As String) As String
Dim index As Integer
Dim dupName As String
For index = LBound(duplicateNames) To Ubound(duplicateNames)
dupName = duplicateNames(index)
If dupName &lt;&gt; &quot;&quot; Then
getDuplicate = dupName
duplicateNames(index) = &quot;&quot;
Exit Function
EndIf
Next index
End Function
Sub createPageStyleClones(filteredDupStyles As Variant)
&apos;Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; )
Dim oViewCursor As Object
Dim initialNames() As String
Dim dupNames() As Variant
Dim initialName As String
Dim style As Object
initialNames = filteredDupStyles(0)
dupNames = filteredDupStyles(2)
Dim pageStyleFamily As Object
pageStyleFamily = ThisComponent.StyleFamilies.getByName(&quot;PageStyles&quot;)
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oViewCursor.goToEnd(False)
Dim index As Integer
Dim dupInedx As Integer
insertPageBreak()
Dim duplicates() As String
Dim duplicate As String
Dim pageStyleOriginals As Integer
Dim newStyle As Object
For index = LBound(initialNames) To Ubound(initialNames)
initialName = initialNames(index)
style = pageStyleFamily.getByName(initialName)
oViewCursor.PageDescName = style.Name
duplicates = dupNames(index)
For dupIndex = LBound(duplicates) To Ubound(duplicates)
duplicate = duplicates(dupIndex)
createPageStyleByExample(duplicate)
newStyle = pageStyleFamily.getByName(duplicate)
newStyle.FollowStyle = style.Name
Next
Next
backspace
End Sub
Function createDupNames(dupStyles As Variant) As Variant
Dim newDupStyles(2) As Variant
Dim counters() As Integer
Dim initNames() As String
Dim initName As String
initNames = dupStyles(0)
counters = dupStyles(1)
Dim newDupNames() As Variant
Dim i As Integer
Dim nameIt As Integer
For i = LBound(counters) To UBound(counters)
ReDim newNames(counters(i) - 1) As String
addToArray(newDupNames, newNames)
initName = initNames(i)
For nameIt = LBound(newNames) To UBound(newNames)
newNames(nameIt) = createDupName(initName, newDupNames)
newDupNames(UBound(newDupNames)) = newNames
Next nameIt
Next i
newDupStyles(0) = initNames
newDupStyles(1) = counters
newDupStyles(2) = newDupNames
createDupNames = newDupStyles
End Function
Function createDupName(initName As String, newDupNames As Variant )
Dim pageStyleFamily As Object
pageStyleFamily = ThisComponent.StyleFamilies.getByName(&quot;PageStyles&quot;)
Dim proposeName As String
Dim i As Integer
Dim postfix As String
Dim prefixName As String
prefixName = getPrefixName(initName)
For i = 1 To 10000
proposeName = prefixName &amp; i
If NOT pageStyleFamily.hasByName(proposeName) And Not IsInArrays(newDupNames, proposeName) Then
createDupName = proposeName
Exit Function
EndIf
Next i
End Function
Function getPrefixName(initName As String) As String
Dim num As Long
Dim tmpName As String
tmpName = Trim(initName)
If tmpName = &quot;&quot; Then
getPrefixName = &quot;&quot;
Exit Function
EndIf
num = Asc(Right(tmpName, 1))
Do while num &gt;= 48 AND num &lt;= 57
tmpName = Trim(Left(tmpName, Len(tmpName) - 1))
If tmpName = &quot;&quot; Then
getPrefixName = &quot;&quot;
Exit Function
EndIf
num = Asc(Right(tmpName, 1))
Loop
If tmpName = &quot;Статья&quot; Then
Dim result As String
result = Trim(initName) &amp; &quot; стр.&quot;
getPrefixName = result
Exit Function
EndIf
If Len(tmpName) &gt; 4 AND Right(tmpName,4) = &quot;стр.&quot; Then
getPrefixName = tmpName
Exit Function
EndIf
getPrefixName = tmpName &amp; &quot; &quot;
End Function
Function IsInArrays(newDupNames As Variant, proposeName As String) As Boolean
&apos;Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; )
Dim i As Integer
Dim names() As String
For i = LBound(newDupNames) To Ubound(newDupNames)
names = newDupNames(i)
If getIndex(names, proposeName) &gt; -1 Then
IsInArrays = True
Exit Function
EndIf
Next i
IsInArrays = False
End Function
Function filterPageStyleNames(names() As String, counters() As Integer) As Variant
Dim i As Integer
Dim filteredNames() As String
Dim filteredCounters() As Integer
For i=Lbound(counters) To Ubound(counters)
If counters(i) &gt; 1 Then
addToArray(filteredNames, names(i))
addToArray(filteredCounters, counters(i))
EndIf
Next i
Dim filteredDups(1) As Variant
filteredDups(0) = filteredNames
filteredDups(1) = filteredCounters
filterPageStyleNames = filteredDups
End Function
Function getPageStyleBreaks()
Dim enum1 As Object
Dim enum1Element As Object
Dim pageStyleName As String
Dim pageNumber As Integer
Dim pageName As String
Dim oViewCursor As Object
Dim anchor As Object
Dim oSavePosition As Object
Dim pageStyleBreaks(2) As Variant
Dim pageStyleNames() As String
Dim pageNumbers() As Integer
Dim pageStarts() As Object
oViewCursor = ThisComponent.CurrentController.getViewCursor()
enum1 = ThisComponent.Text.createEnumeration()
&apos; Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; )
Dim i As Integer
i = 0
Dim first As Boolean
first = true
While enum1.hasMoreElements
enum1Element = enum1.nextElement
If enum1Element.supportsService(&quot;com.sun.star.text.Paragraph&quot;) OR enum1Element.supportsService(&quot;com.sun.star.text.TextTable&quot;) Then
&apos; MRi enum1Element
If NOT isEmpty(enum1Element.PageDescName) And enum1Element.PageDescName &lt;&gt; &quot;&quot; Then
pageStyleName = enum1Element.PageStyleName
addToArray(pageStyleNames(),pageStyleName)
If enum1Element.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
oViewCursor.goToRange(enum1Element.Anchor,false)
ElseIf enum1Element.supportsService(&quot;com.sun.star.text.TextTable&quot;) Then
oViewCursor.goToRange(enum1Element.getCellByPosition(0,0).getStart(),false)
EndIf
addToArray(pageNumbers(),CInt(oViewCursor.Page))
addToArray(pageStarts(),enum1Element)
first = false
ElseIf first Then
addToArray(pageStyleNames(), enum1Element.PageStyleName)
addToArray(pageNumbers(),1)
addToArray(pageStarts(),enum1Element)
first = false
EndIf
EndIf
i = i + 1
Wend
pageStyleBreaks(0) = pageStyleNames
pageStyleBreaks(1) = pageNumbers
pageStyleBreaks(2) = pageStarts
getPageStyleBreaks = pageStyleBreaks
End Function
Sub setUniqPageStylesDEPRECATED
Dim prevPageName As String Dim prevPageName As String
Dim firstPageName As String Dim firstPageName As String
Dim pageName As String Dim pageName As String
@ -68,7 +362,7 @@ Sub setUniqPageStyles
End Sub End Sub
Function hasPageStyleWith(pageStyleName) Function hasPageStyleWith(pageStyleName As String) As Boolean
Dim enum1 As Object Dim enum1 As Object
Dim enum1Element As Object Dim enum1Element As Object
Dim curPage As String Dim curPage As String
@ -93,7 +387,7 @@ Function hasPageStyleWith(pageStyleName)
hasPageStyleWith = false hasPageStyleWith = false
End Function End Function
Function findFirstPageNumberWithStyle(pageStyleName) Function findFirstPageNumberWithStyle(pageStyleName As String) As Integer
Dim enum1 As Object Dim enum1 As Object
Dim enum1Element As Object Dim enum1Element As Object
Dim curPage As String Dim curPage As String
@ -102,6 +396,7 @@ Function findFirstPageNumberWithStyle(pageStyleName)
Dim oViewCursor As Object Dim oViewCursor As Object
Dim anchor As Object Dim anchor As Object
Dim oSavePosition As Object Dim oSavePosition As Object
Dim curPageStyleName As String
oViewCursor = ThisComponent.CurrentController.getViewCursor() oViewCursor = ThisComponent.CurrentController.getViewCursor()
oSavePosition = oViewCursor.Text.createTextCursorByRange(oViewCursor) oSavePosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
enum1 = ThisComponent.Text.createEnumeration() enum1 = ThisComponent.Text.createEnumeration()
@ -123,4 +418,27 @@ Function findFirstPageNumberWithStyle(pageStyleName)
Wend Wend
findFirstPageNumberWithStyle = -1 findFirstPageNumberWithStyle = -1
End Function End Function
sub testStyleCopy
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;)
rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = &quot;Param&quot;
args1(0).Value = &quot;alb2&quot;
args1(1).Name = &quot;Family&quot;
args1(1).Value = 8
dispatcher.executeDispatch(document, &quot;.uno:StyleNewByExample&quot;, &quot;&quot;, 0, args1())
end sub
</script:module> </script:module>

466
ePublishing/Endnotes.xba Normal file
View file

@ -0,0 +1,466 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Endnotes" script:language="StarBasic" script:moduleType="normal">Global Const endnoteFieldPrefix = &quot;custom_endnote_&quot;
Global Const endnoteInTextAnchorSuffix = &quot;-text_anchor&quot;
Global Const endnoteInBodyAnchorSuffix = &quot;-body_anchor&quot;
Sub convertEndnotesExecution
Dim oSelections As Object
Dim oAnchor1 As Object
Dim oAnchor2 As Object
Dim oAnchor1Name As String
Dim oAnchor2Name As String
Dim foundEndNotes() As Object
Dim textSelection As Object
Dim nativeEndnotesCounter As Integer
Dim customEndnotesCounter As Integer
If IsNull(ThisComponent) Then
MsgBox getTranslation(&quot;something weird happened error text&quot;)
Exit Sub
End If
oSelections = ThisComponent.getCurrentSelection()
If NOT oSelections.supportsService(&quot;com.sun.star.text.TextRanges&quot;) Then
MsgBox getTranslation(&quot;EndnotesNotFound&quot;)
Exit Sub
End If
objectsCount = oSelections.getCount()
If objectsCount &gt; 1 Then
MsgBox getTranslation(&quot;too much selections&quot;)
Exit Sub
End If
textSelection = oSelections.getByIndex(0)
foundEndNotes() = findEndNotesInSelection(textSelection)
nativeEndnotesCounter = UBound(foundEndNotes(0))
customEndnotesCounter = UBound(foundEndNotes(1))
If (nativeEndnotesCounter = -1 And customEndnotesCounter = -1 ) Then
MsgBox getTranslation(&quot;EndnotesNotFound&quot;)
Exit Sub
EndIf
If ( customEndnotesCounter = -1 ) Then
&apos;only native found window convert to custom?
&apos;Window Select paragraph for endnotes output or cancel
runEndnotesConversionDialog(foundEndNotes(0))
Exit Sub
EndIf
If (nativeEndnotesCounter = -1 ) Then
&apos;only custom endnotes found. Window convert to native?
runEndnotesCustomToNativeDialog(foundEndNotes(1))
Exit Sub
EndIf
&apos;both custom and native endnotes found
&apos;convert to custom all or
&apos;convert to native
runDualEndnotesDialog(foundEndNotes(0),foundEndNotes(1))
End Sub
Sub runDualEndnotesDialog(nativeEndNotes() As Object,customEndnotes() As Object)
Dim dialog As Object
waitingForDialog = true
dialog = notModalDialog(&quot;EndnotesConversion&quot;)
dialog.getControl(&quot;found&quot;).SetText(getTranslation(&quot;EndnotesNativeDialogFound&quot;) &amp; CStr(UBound(nativeEndNotes)+1))
dialog.getControl(&quot;found2&quot;).SetText(getTranslation(&quot;EndnotesCustomDialogFound&quot;) &amp; CStr(UBound(customEndnotes)+1))
dialog.getControl(&quot;found2&quot;).Model.EnableVisible = TRUE
dialog.getControl(&quot;description&quot;).SetText(getTranslation(&quot;EndnotesConversionTwoOptions&quot;))
dialog.getControl(&quot;cancel&quot;).Label = getTranslation(&quot;buttonCancel&quot;)
dialog.getControl(&quot;start&quot;).Label = getTranslation(&quot;toNativeEndnotes&quot;)
dialog.getControl(&quot;option2&quot;).Label = getTranslation(&quot;toCustomEndnotes&quot;)
dialog.getControl(&quot;option2&quot;).Model.EnableVisible = TRUE
dialog.setvisible(true)
Do While waitingForDialog
If dialog.getControl(&quot;cancel&quot;).model.state = 1 then
exit Do
EndIf
If dialog.getControl(&quot;start&quot;).model.state = 1 then
convertCustomEndnotesToNative(customEndnotes)
exit Do
EndIf
If dialog.getControl(&quot;option2&quot;).model.state = 1 then
convertEndnotesToCustom(nativeEndNotes)
exit Do
EndIf
wait (100)
Loop
dialog.dispose
End Sub
Sub runEndnotesCustomToNativeDialog(customEndnotes() As Object)
Dim dialog As Object
waitingForDialog = true
dialog = notModalDialog(&quot;EndnotesConversion&quot;)
dialog.getControl(&quot;found&quot;).SetText(getTranslation(&quot;EndnotesCustomDialogFound&quot;) &amp; CStr(UBound(customEndnotes)+1))
dialog.getControl(&quot;description&quot;).SetText(getTranslation(&quot;EndnotesCustomConversionOption&quot;))
dialog.getControl(&quot;cancel&quot;).Label = getTranslation(&quot;buttonCancel&quot;)
dialog.getControl(&quot;start&quot;).Label = getTranslation(&quot;buttonOk&quot;)
dialog.setvisible(true)
Do While waitingForDialog
If dialog.getControl(&quot;cancel&quot;).model.state = 1 then
exit Do
EndIf
If dialog.getControl(&quot;start&quot;).model.state = 1 then
convertCustomEndnotesToNative(customEndnotes)
exit Do
EndIf
wait (100)
Loop
dialog.dispose
End Sub
Sub convertCustomEndnotesToNative(foundEndnotes() As Object)
Dim i As Long
Dim bodyAnchorName As String
Dim textAnchorName As String
Dim bookmarksName As String
Dim bookmarks As Object
bookmarksName = ThisComponent.Links.ElementNames(6)
bookmarks = ThisComponent.Links.getByName(bookmarksName)
For i = LBound(foundEndnotes) To UBound(foundEndnotes)
bodyAnchorName = getBodyAnchorName(foundEndnotes(i))
textAnchorName = getTextAnchorName(bodyAnchorName)
If bookmarks.hasByName(bodyAnchorName) And bookmarks.hasByName(textAnchorName) Then
convertLinksToEndnote(bodyAnchorName,textAnchorName)
EndIf
Next i
End Sub
Function getBodyAnchorName(textRange As Object) As String
getBodyAnchorName = &quot;&quot;
If (Len(textRange.HyperLinkURL) &gt; 0) Then
getBodyAnchorName = Right(textRange.HyperLinkURL,Len(textRange.HyperLinkURL)-1)
EndIf
End Function
Function getTextAnchorName(bodyAnchorName As String) As String
getTextAnchorName = &quot;&quot;
If Len(bodyAnchorName) &gt; Len(endnoteInBodyAnchorSuffix) Then
getTextAnchorName = Left(bodyAnchorName,Len(bodyAnchorName)-Len(endnoteInBodyAnchorSuffix)) &amp; endnoteInTextAnchorSuffix
EndIf
End Function
Sub convertLinksToEndnote(forwardLink As String,backwardLink As String)
Dim bookMarkName As String
bookmarkName = ThisComponent.Links.ElementNames(6)
Dim bookmarks As Object
bookmarks = ThisComponent.Links.getByName(bookmarkName)
Dim forward As Object
Dim backward As Object
Dim oViewCursor As Object
Dim footNoteSign As String
oViewCursor = ThisComponent.CurrentController.getViewCursor()
Dim oTextCursor As Object
If NOT bookmarks.hasByName(forwardLink) OR NOT bookmarks.hasByName(backwardLink) Then
exit sub
EndIf
forward = bookmarks.getByName(forwardLink)
backward = bookmarks.getByName(backwardLink)
footNoteSign = forward.Anchor.String
oViewCursor.goToRange(forward.Anchor,false)
SendRM
SendRM
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
goToEndOfEndnoteBody(oTextCursor)
oTextCursor.goToRange(oViewCursor,true)
oViewCursor.goToRange(oTextCursor,true)
unoCut()
SendRM
oViewCursor.goToRange(backward.Anchor,false)
removeEndnoteSignInText()
createEndnote
unoPaste()
oViewCursor.getText.setLabel(footNoteSign)
forward.dispose()
backward.dispose()
End Sub
Sub goToEndOfEndnoteBody(oTextCursor As Object)
Dim position As Object
position = oTextCursor.End
oTextCursor.goToEndOfParagraph(false)
oTextCursor.goRight(1,false)
If oTextCursor.ParaStyleName &lt;&gt; &quot;Endnote&quot; OR oTextCursor.CharStyleName = &quot;Endnote Symbol&quot; Then
oTextCursor.goLeft(1,false)
Exit Sub
EndIf
&apos;Got to the end of the document
If oTextCursor.Text.compareRegionEnds(position,oTextCursor.End) = 0 Then
Exit Sub
EndIf
goToEndOfEndnoteBody(oTextCursor)
End Sub
Sub removeEndnoteSignInText()
Dim oViewCursor As Object
Dim character As String
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oViewCursor.String = &quot;&quot;
oViewCursor.HyperLinkURL=&quot;&quot;
End Sub
sub createEndnote
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;)
dispatcher.executeDispatch(document, &quot;.uno:InsertEndnote&quot;, &quot;&quot;, 0, Array())
end Sub
Sub runEndnotesConversionDialog(foundEndNotes As Variant)
Dim dialog As Object
waitingForDialog = true
dialog = notModalDialog(&quot;EndnotesConversion&quot;)
dialog.getControl(&quot;found&quot;).SetText(getTranslation(&quot;EndnotesNativeDialogFound&quot;) &amp; CStr(UBound(foundEndNotes)+1))
dialog.getControl(&quot;description&quot;).SetText(getTranslation(&quot;EndnotesNativeDialogDescriptionSelect&quot;))
dialog.getControl(&quot;cancel&quot;).Label = getTranslation(&quot;buttonCancel&quot;)
dialog.getControl(&quot;start&quot;).Label = getTranslation(&quot;buttonOk&quot;)
dialog.setvisible(true)
Do While waitingForDialog
If dialog.getControl(&quot;cancel&quot;).model.state = 1 then
exit Do
EndIf
If dialog.getControl(&quot;start&quot;).model.state = 1 then
convertEndnotesToCustom(foundEndNotes)
exit Do
EndIf
wait (100)
Loop
dialog.dispose
End Sub
Sub convertEndnotesToCustom(foundEndNotes As Variant)
Dim oViewCursor As Object
Dim outputPosition As Object
Dim endnoteSigns() As String
Dim fieldPrefix As String
Dim i As Integer
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oViewCursor.goToStartOfLine(false)
outputPosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
endnoteSigns = getEndnoteSigns(foundEndNotes)
fieldPrefix = createEndnoteFieldPrefix()
For i = LBound(foundEndNotes) To Ubound(foundEndNotes)
convertNativeEndnoteToCustom(endnoteSigns(i), foundEndNotes(i),outputPosition,fieldPrefix, i)
Next i
End Sub
Function createEndnoteFieldPrefix As String
Dim names() As String
Dim prefix As String
names = ThisComponent.getTextFieldMasters().getElementNames()
prefix = endnoteFieldPrefix &amp; RND_String() &amp; &quot;_&quot;
If NOT startsWithInArray(prefix, names) Then
createEndnoteFieldPrefix = prefix
Exit Function
EndIf
createEndnoteFieldPrefix = prefix
End Function
Function startsWithInArray(prefix As String, names As Variant) As Boolean
Dim i As Long
For i = LBound(names) To Ubound(names)
If InStr(names(i), &quot;com.sun.star.text.fieldmaster.User.&quot; &amp; prefix) = 1 Then
startsWithInArray = true
Exit Function
EndIf
Next i
startsWithInArray = false
End Function
Sub convertNativeEndnoteToCustom(sign As String, nativeEndNoteTextRange As Object,outputPosition As Object, fieldPrefix As String, num As Integer)
&apos;Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; )
Dim oViewCursor As Object
Dim oTextCursor As Object
Dim endNote As Object
Dim anchorInBody As Object
Dim anchorInText As Object
Dim bodyAnchorName As String
Dim textAnchorName As String
endNote = nativeEndNoteTextRange.Footnote
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oViewCursor.goToRange(nativeEndNoteTextRange.Footnote.Text.Start,false)
oViewCursor.goToRange(nativeEndNoteTextRange.Footnote.Text.End,true)
If oViewCursor.String = &quot;&quot; Then
oViewCursor.String = &quot; &quot;
EndIf
unoCut()
oViewCursor.goToRange(outputPosition,false)
getEndnotePara()
oViewCursor.ParaStyleName = &quot;Endnote&quot;
anchorInBody = createEndnoteSign(outputPosition, sign, fieldPrefix &amp; num, true)
addEndnoteSpacer(fieldPrefix)
unoPaste()
outputPosition = oViewCursor.End
oViewCursor.goToRange(nativeEndNoteTextRange,false)
endNote.dispose()
anchorInText = createEndnoteSign(oViewCursor, sign, fieldPrefix &amp; num, false)
bodyAnchorName = fieldPrefix &amp; num &amp; endnoteInBodyAnchorSuffix
textAnchorName = fieldPrefix &amp; num &amp; endnoteInTextAnchorSuffix
anchorInBody.goRight(1,true)
anchorInText.goRight(1,true)
createAnchor(anchorInBody, bodyAnchorName )
createAnchor(anchorInText,textAnchorName )
createLink(anchorInBody,anchorInBody.String, textAnchorName)
createLink(anchorInText,anchorInText.String, bodyAnchorName)
End Sub
Sub getEndnotePara()
Dim oViewCursor As Object
Dim oTextCursor As Object
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor.Start)
oTextCursor.gotoStartOfParagraph(false)
oTextCursor.gotoEndOfParagraph(true)
If Len(oTextCursor.String) &gt; 0 Then
oViewCursor.Text.insertControlCharacter(oViewCursor.End,com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK,False)
EndIf
End Sub
Function createEndnoteSign(cursor As Object,sign As String,fieldName As String, inBody As Boolean) As Object
Dim oField As Object &apos;Field to insert
Dim oFieldMaster As Object
Dim oTextCursor As Object
Dim oMasters As Object
oTextCursor = cursor.Text.createTextCursorByRange(cursor.Start)
If inBody Then
oTextCursor.CharStyleName = &quot;Endnote Symbol&quot;
Else
oTextCursor.CharStyleName = &quot;Endnote anchor&quot;
EndIf
oField = ThisComponent.createInstance(&quot;com.sun.star.text.textfield.User&quot;)
oMasters = ThisComponent.getTextFieldMasters()
If oMasters.hasByName(&quot;com.sun.star.text.FieldMaster.User&quot; &amp; &quot;.&quot; &amp; fieldName) Then
oFieldMaster = oMasters.getByName(&quot;com.sun.star.text.FieldMaster.User&quot; &amp; &quot;.&quot; &amp; fieldName)
oFieldMaster.Name = fieldName
oFieldMaster.Content = sign
Else
oFieldMaster = ThisComponent.createInstance(&quot;com.sun.star.text.FieldMaster.User&quot;)
oFieldMaster.Name = fieldName
oFieldMaster.Content = sign
EndIf
oField.attachTextFieldMaster(oFieldMaster)
oTextCursor.Text.insertTextContent(oTextCursor, oField, False)
oTextCursor.CharStyleName = &quot;Standard&quot;
oTextCursor.goLeft(1,false)
createEndnoteSign = oTextCursor
End Function
Sub addEndnoteSpacer(fieldPrefix As String)
Dim oViewCursor As Object
oViewCursor = ThisComponent.CurrentController.getViewCursor()
insertUserField(oViewCursor,fieldPrefix &amp; &quot;spacer&quot;,&quot; &quot;)
End Sub
Function getEndnoteSigns(foundEndNotes As Variant) As Variant
Dim i As Integer
Dim signs() As String
For i = LBound(foundEndNotes) To Ubound(foundEndNotes)
AddToArray(signs, foundEndNotes(i).String)
Next i
getEndnoteSigns = signs
End Function
Function notModalDialog(dialogName As String) As Variant
Dim windowProvider As Object
Dim containerWindow As Object
Dim handler As Object
Dim dialogUrl As String
Dim dialog As Object
containerWindow = ThisComponent.getCurrentController().getFrame().getContainerWindow()
dialogUrl = &quot;vnd.sun.star.script:ePublishing.&quot; &amp; dialogName &amp; &quot;?location=application&quot;
windowProvider = CreateUnoService(&quot;com.sun.star.awt.ContainerWindowProvider&quot;)
dialog = windowProvider.createContainerWindow(dialogUrl, &quot;&quot;, containerWindow, handler)
notModalDialog = dialog
End Function
Function findEndNotesInSelection(textSelection) As Variant
Dim nativeEndNotes() As Object
Dim customEndNotes() As Object
Dim outerArray() As Object
findEndNotesInSelection = Array()
Dim enum1Element As Object
Dim cellEnumElement As Object
Dim enum1 As Object
Dim enum2 As Object
Dim curNum As Integer
Dim i As Integer
Dim cell As Object
Dim cellEnum As Object
enum1 = textSelection.createEnumeration
While enum1.hasMoreElements
enum1Element = enum1.nextElement
If enum1Element.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
findEndNotesInParagraph(enum1Element, nativeEndNotes, customEndNotes)
ElseIf enum1Element.supportsService(&quot;com.sun.star.text.TextTable&quot;) Then
cellNames = enum1Element.cellNames
For i = LBound(cellNames) To Ubound(cellNames)
cell = enum1Element.getCellByName(cellNames(i))
cellEnum = cell.getText().createEnumeration()
While cellEnum.hasMoreElements
cellEnumElement = cellEnum.nextElement
If cellEnumElement.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
findEndNotesInParagraph(cellEnumElement, nativeEndNotes, customEndNotes)
EndIf
Wend
Next i
EndIf
Wend
addToArray(outerArray, nativeEndNotes)
addToArray(outerArray, customEndNotes)
findEndNotesInSelection = outerArray
End Function
Sub findEndNotesInParagraph(enum1Element As Object,nativeEndNotes As Variant, customEndNotes As Variant)
Dim textPortions As Object
Dim thisPortion As Object
Dim footnoteText As Object
Dim label As String
Dim labelNum As Long
Dim bookmarkName As String
If enum1Element.OutlineLevel = level Then
curNum = 1
EndIf
textPortions = enum1Element.createEnumeration
While textPortions.hasMoreElements
thisPortion = textPortions.nextElement
If isTargetNote(thisPortion,1) Then
AddToArray(nativeEndNotes, thisPortion)
ElseIf isCustomEndnote(thisPortion) Then
AddToArray(customEndNotes, thisPortion)
EndIf
Wend
End Sub
Function isCustomEndnote(portion As Object) As Boolean
If InStr(portion.HyperLinkURL, &quot;#&quot; &amp; endnoteFieldPrefix) = 1 And portion.String &lt;&gt; &quot;&quot; Then
If InStr(portion.HyperLinkURL, endnoteInBodyAnchorSuffix) &gt; 0 Then
isCustomEndnote = true
Exit Function
EndIf
EndIf
isCustomEndnote = false
End Function
</script:module>

View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd">
<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="EndnotesConversion" dlg:left="199" dlg:top="0" dlg:width="160" dlg:height="84" dlg:closeable="true" dlg:moveable="true">
<dlg:bulletinboard>
<dlg:text dlg:id="description" dlg:tab-index="0" dlg:left="8" dlg:top="28" dlg:width="147" dlg:height="36" dlg:value="Для вывода концевых сносок установите курсор в целевом параграфе и нажмите Конвертация" dlg:align="center" dlg:multiline="true"/>
<dlg:text dlg:id="found" dlg:tab-index="1" dlg:left="8" dlg:top="3" dlg:width="145" dlg:height="8" dlg:value="Найдено концевых сносок" dlg:align="center"/>
<dlg:button dlg:id="cancel" dlg:tab-index="2" dlg:left="2" dlg:top="69" dlg:width="50" dlg:height="13" dlg:value="Отмена" dlg:toggled="1"/>
<dlg:button dlg:id="start" dlg:tab-index="3" dlg:left="107" dlg:top="69" dlg:width="50" dlg:height="13" dlg:value="Конвертация" dlg:toggled="1"/>
<dlg:button dlg:id="option2" dlg:tab-index="4" dlg:visible="false" dlg:left="55" dlg:top="69" dlg:width="50" dlg:height="13" dlg:value="Вариант2" dlg:toggled="1"/>
<dlg:text dlg:id="found2" dlg:tab-index="5" dlg:visible="false" dlg:left="8" dlg:top="14" dlg:width="145" dlg:height="8" dlg:value="Найдено концевых сносок" dlg:align="center"/>
</dlg:bulletinboard>
</dlg:window>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Footnotes" script:language="StarBasic" script:moduleType="normal">sub footMark1 <script:module xmlns:script="http://openoffice.org/2000/script" script:name="Footnotes" script:language="StarBasic" script:moduleType="normal">sub footMark8
End Sub End Sub
Sub openFootNotesDialog Sub openFootNotesDialog
@ -14,7 +14,17 @@ Sub openFootNotesDialog
dialog.getControl(&quot;configText3&quot;).setText(getTranslation(&quot;configText3&quot;)) dialog.getControl(&quot;configText3&quot;).setText(getTranslation(&quot;configText3&quot;))
dialog.getControl(&quot;configText4&quot;).setText(getTranslation(&quot;configText4&quot;)) dialog.getControl(&quot;configText4&quot;).setText(getTranslation(&quot;configText4&quot;))
dialog.getControl(&quot;configText5&quot;).setText(getTranslation(&quot;configText5&quot;)) dialog.getControl(&quot;configText5&quot;).setText(getTranslation(&quot;configText5&quot;))
dialog.getControl(&quot;notesTypeLabel&quot;).setText(getTranslation(&quot;FootnotesConfigDialogNotesTypeLabel&quot;))
dialog.getControl(&quot;PerPageRangeLabel&quot;).setText(getTranslation(&quot;FootnotesConfigDialogNotesPerPageRangeLabel&quot;))
dialog.getControl(&quot;groupByPages&quot;).Model.Label = getTranslation(&quot;FootnotesConfigDialogNotesPerPage&quot;)
dialog.getControl(&quot;groupByHeadings&quot;).Model.Label = getTranslation(&quot;FootnotesConfigDialogNotesByHeadingsLabel&quot;)
dialog.Title = getTranslation(&quot;footnotesConfigDialogTitle&quot;) dialog.Title = getTranslation(&quot;footnotesConfigDialogTitle&quot;)
Dim nCount As Integer
nCount = dialog.getControl(&quot;lb_notes_types&quot;).getItemCount()
dialog.getControl(&quot;lb_notes_types&quot;).addItem( getTranslation(&quot;FootnotesConfigDialogFootnotesName&quot;), nCount )
dialog.getControl(&quot;lb_notes_types&quot;).addItem( getTranslation(&quot;FootnotesConfigDialogEndnotesName&quot;), nCount + 1 )
dialog.getControl(&quot;lb_notes_types&quot;).selectItemPos( 0, True )
dialog.setVisible(true) dialog.setVisible(true)
Select Case dialog.Execute() Select Case dialog.Execute()
Case 1 Case 1
@ -24,75 +34,107 @@ Sub openFootNotesDialog
dialog.dispose() dialog.dispose()
End Sub End Sub
Sub setFootnotesNumberingFrom(dialog) Sub setFootnotesNumberingFrom(dialog As Object)
Dim statusIndicator as Object Dim statusIndicator as Object
Dim targetLevel As Integer Dim targetLevel As Integer
Dim stringLevelInput As String
Dim stringPageRangeInput As String
Dim noteType As Integer
statusIndicator = ThisComponent.getCurrentController.statusIndicator statusIndicator = ThisComponent.getCurrentController.statusIndicator
dialog.setVisible(false) dialog.setVisible(false)
doNotTrack doNotTrack
targetLevel = dialog.getControl(&quot;level&quot;).Value stringLevelInput = dialog.getControl(&quot;level&quot;).getText
stringPageRangeInput = dialog.getControl(&quot;pageRange&quot;).getText
noteType = dialog.getControl(&quot;lb_notes_types&quot;).getSelectedItemPos()
If (stringLevelInput &lt;&gt; &quot;&quot;) Then
targetLevel = CInt(stringLevelInput)
If targetLevel &gt; -1 AND targetLevel &lt; 11 Then If targetLevel &gt; -1 AND targetLevel &lt; 11 Then
statusIndicator.Start(getTranslation(&quot;statusNumberingInProcess&quot;),100) statusIndicator.Start(getTranslation(&quot;statusNumberingInProcess&quot;),100)
setFootnotesNumberingLevel(targetLevel) setFootnotesNumberingLevel(targetLevel,noteType)
Else Else
MsgBox getTranslation(&quot;numberingInputOutOfRange&quot;) MsgBox getTranslation(&quot;numberingInputOutOfRange&quot;)
EndIf EndIf
EndIf
If (stringPageRangeInput &lt;&gt; &quot;&quot;) Then
Dim pageNums() As Integer
getPageNumsFrom(stringPageRangeInput, pageNums())
statusIndicator.Start(getTranslation(&quot;statusNumberingInProcess&quot;),100)
setNotesPaginatedNumbering(noteType, pageNums())
EndIf
statusIndicator.end() statusIndicator.end()
MsgBox getTranslation(&quot;statusNumberingFinished&quot;)
End Sub End Sub
Sub setFootnotesNumberingLevel(level) Sub setNotesPaginatedNumbering(noteType As Integer, pageNums() As Integer)
Dim allNotes As Object
Dim statusIndicator as Object
Dim i As Integer
Dim curNote As Object
Dim curPage As String
Dim prevPage As String
Dim curNum As Integer
Dim notesToValidate() As Object
statusIndicator = ThisComponent.getCurrentController.statusIndicator
statusIndicator.Start(getTranslation(&quot;statusNumberingInProcess&quot;),30)
curNum = 1
prevPage = &quot;&quot;
If noteType = 0 Then
allNotes = thisComponent.FootNotes
Else
allNotes = thisComponent.EndNotes
EndIf
For i = 0 to allNotes.Count -1
curNote = allNotes.getByIndex(i)
curPage = getPageNumberVCurs(curNote.Anchor)
If ( IsInArray(pageNums, CInt(curPage) ) ) Then
If (curPage &lt;&gt; prevPage) Then
curNum = 1
prevPage = curPage
EndIf
label = curNote.getLabel
If label = &quot;&quot; Or IsNumeric(label) Then
curNote.setLabel(CStr(curNum))
addToArray(notesToValidate,curnote)
curNum = curNum + 1
EndIf
EndIf
Next i
&apos;Second pass in case layout has changed
For i = 0 To Ubound(notesToValidate)
curNote = notesToValidate(i)
curPage = getPageNumberVCurs(curNote.Anchor)
If (curPage &lt;&gt; prevPage) Then
curNum = 1
prevPage = curPage
EndIf
curNote.setLabel(CStr(curNum))
curNum = curNum + 1
Next i
statusIndicator.end()
End Sub
Sub setFootnotesNumberingLevel(level As Integer,noteType As Integer)
Dim enum1Element As Object Dim enum1Element As Object
Dim enum1 As Object Dim enum1 As Object
Dim enum2 As Object Dim enum2 As Object
Dim thisPortion As Object
Dim curNum As Integer Dim curNum As Integer
Dim footnoteText As Object
Dim label As String
Dim labelNum As Integer
Dim i As Integer Dim i As Integer
Dim cell As Object Dim cell As Object
Dim cellEnum As Object Dim cellEnum As Object
Dim cellEnum2 As Object
Dim statusIndicator as Object Dim statusIndicator as Object
statusIndicator = ThisComponent.getCurrentController.statusIndicator statusIndicator = ThisComponent.getCurrentController.statusIndicator
statusIndicator.Start(getTranslation(&quot;statusNumberingInProcess&quot;),30) statusIndicator.Start(getTranslation(&quot;statusNumberingInProcess&quot;),30)
curNum = 1 curNum = 1
enum1 = ThisComponent.Text.createEnumeration enum1 = ThisComponent.Text.createEnumeration
While enum1.hasMoreElements While enum1.hasMoreElements
enum1Element = enum1.nextElement enum1Element = enum1.nextElement
If enum1Element.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then If enum1Element.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
If enum1Element.OutlineLevel = level Then traverseNoteParagraphs(curNum, enum1Element ,noteType, level)
curNum = 1
EndIf
enum2 = enum1Element.createEnumeration
While enum2.hasMoreElements
thisPortion = enum2.nextElement
If thisPortion.TextPortionType = &quot;Footnote&quot; Then
footnoteText = thisPortion.Footnote
label = footnoteText.getLabel
If label = &quot;&quot; Then
If level &gt; 0 Then
footnoteText.setLabel(CStr(curNum))
curNum = curNum + 1
EndIf
Else
labelNum = CInt(label)
If labelNum &gt; 0 Then
If level &lt; 1 Then
footnoteText.setLabel(&quot;&quot;)
Else
footnoteText.setLabel(CStr(curNum))
EndIf
curNum = curNum + 1
EndIf
EndIf
EndIf
Wend
ElseIf enum1Element.supportsService(&quot;com.sun.star.text.TextTable&quot;) Then ElseIf enum1Element.supportsService(&quot;com.sun.star.text.TextTable&quot;) Then
cellNames = enum1Element.cellNames cellNames = enum1Element.cellNames
For i = LBound(cellNames) To Ubound(cellNames) For i = LBound(cellNames) To Ubound(cellNames)
@ -101,13 +143,28 @@ Sub setFootnotesNumberingLevel(level)
While cellEnum.hasMoreElements While cellEnum.hasMoreElements
cellEnumElement = cellEnum.nextElement cellEnumElement = cellEnum.nextElement
If cellEnumElement.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then If cellEnumElement.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
If cellEnumElement.OutlineLevel = level Then traverseNoteParagraphs(curNum, cellEnumElement ,noteType, level)
EndIf
Wend
Next i
EndIf
Wend
statusIndicator.end()
End Sub
Sub traverseNoteParagraphs(curNum As Integer, enum1Element As Object, noteType As Integer, level As Integer)
Dim textPortions As Object
Dim thisPortion As Object
Dim footnoteText As Object
Dim label As String
Dim labelNum As Long
If enum1Element.OutlineLevel = level Then
curNum = 1 curNum = 1
EndIf EndIf
cellEnum2 = cellEnumElement.createEnumeration textPortions = enum1Element.createEnumeration
While cellEnum2.hasMoreElements While textPortions.hasMoreElements
thisPortion = cellEnum2.nextElement thisPortion = textPortions.nextElement
If thisPortion.TextPortionType = &quot;Footnote&quot; Then If isTargetNote(thisPortion, noteType) Then
footnoteText = thisPortion.Footnote footnoteText = thisPortion.Footnote
label = footnoteText.getLabel label = footnoteText.getLabel
If label = &quot;&quot; Then If label = &quot;&quot; Then
@ -116,27 +173,103 @@ Sub setFootnotesNumberingLevel(level)
curNum = curNum + 1 curNum = curNum + 1
EndIf EndIf
Else Else
labelNum = CInt(label) If IsNumeric(label) Then
If labelNum &gt; 0 Then
If level &lt; 1 Then If level &lt; 1 Then
footnoteText.setLabel(&quot;&quot;) footnoteText.setLabel(&quot;&quot;)
Else Else
footnoteText.setLabel(CStr(curNum)) footnoteText.setLabel(CStr(curNum))
EndIf
curNum = curNum + 1 curNum = curNum + 1
EndIf EndIf
EndIf EndIf
EndIf EndIf
Wend
EndIf EndIf
Wend Wend
End Sub
Function isTargetNote(portion As Object, noteType As Integer) As Boolean
If ( portion.TextPortionType &lt;&gt; &quot;Footnote&quot; ) Then
isTargetNote = false
Exit Function
EndIf
If ( isEndNote(portion) = CBool(noteType) ) Then
isTargetNote = true
Exit Function
EndIf
isTargetNote = false
End Function
&apos;Sub testRange
&apos; Dim pageNums() As Integer
&apos; getPageNumsFrom(&quot;9-10,8-12,-111-099,99,102,105,187,187&quot;,pageNums())
&apos;End Sub
Sub getPageNumsFrom(inputString As String, pageNums() As Integer)
Dim ranges() As String
ranges = split(inputString,&quot;,&quot;)
For i = Lbound(ranges) To (Ubound(ranges))
processNumRange(ranges(i),pageNums())
Next i
End Sub
Function IsInArray(array As Variant, content As Variant) As Boolean
IsInArray = false
For i = LBound(array) To UBound(array)
inArr = array(i)
If inArr = content Then
IsInArray = true
Exit Function
EndIf
Next i
End Function
Sub processNumRange(range As String, pageNums() As Integer)
Dim rangeParts() As String
Dim firstValue As String
Dim secondValue As String
Dim firstNum As Integer
Dim secondNum As Integer
rangeParts = split( range, &quot;-&quot;)
If UBound(rangeParts) = 1 Then
firstValue = trim(rangeParts(0))
secondValue = trim(rangeParts(1))
If ( IsNumeric(firstValue) And IsNumeric(secondValue)) Then
firstNum = CInt(firstValue)
secondNum = CInt(secondValue)
If firstNum &lt;= secondNum Then
For i = firstNum To secondNum
If (NOT IsInArray(pageNums, i)) Then
addToArray(pageNums, i)
EndIf
Next i Next i
EndIf EndIf
Wend EndIf
statusIndicator.end() EndIf
MsgBox getTranslation(&quot;statusNumberingFinished&quot;) If UBound(rangeParts) = 0 Then
firstValue = trim(rangeParts(0))
If IsNumeric(firstValue) Then
firstNum = CInt(firstValue)
If (NOT IsInArray(pageNums, firstNum)) Then
addToArray(pageNums, firstNum)
EndIf
EndIf
EndIf
End Sub End Sub
Function isEndNote(portion As Object) As Boolean
If (IsEmpty(portion.Start.EndNote)) Then
isEndNote = false
Else
isEndNote = true
EndIf
End Function
Private Sub doNotTrack Private Sub doNotTrack
Dim dispatcher As Object Dim dispatcher As Object
Dim document As Object Dim document As Object
@ -151,4 +284,27 @@ Private Sub doNotTrack
args1(0).Value = true args1(0).Value = true
dispatcher.executeDispatch(document, &quot;.uno:ShowTrackedChanges&quot;, &quot;&quot;, 0, args1()) dispatcher.executeDispatch(document, &quot;.uno:ShowTrackedChanges&quot;, &quot;&quot;, 0, args1())
End Sub End Sub
Sub FixFootnotes()
Dim description As String
Dim allNotes As Object
Dim aNote As Object
Dim oViewCursor As Object
turnOffTracking
AcceptAllTrackedChanges
oViewCursor = ThisComponent.currentController.getViewCursor()
&apos;Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; )
allNotes = ThisComponent.FootNotes
For x = 0 to allNotes.Count -1
aNote = allNotes.getByIndex(x)
anchor = aNote.anchor
oViewCursor.goToRange(anchor,false)
oViewCursor.collapseToStart()
oViewCursor.goToRange(anchor,true)
unoCut()
oViewCursor.goLeft(1,false)
unoPaste()
Next
End Sub
</script:module> </script:module>

View file

@ -1,20 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd"> <!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd">
<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="FootnotesConfig" dlg:left="99" dlg:top="62" dlg:width="160" dlg:height="98" dlg:closeable="true" dlg:moveable="true"> <dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="FootnotesConfig" dlg:left="99" dlg:top="62" dlg:width="157" dlg:height="170" dlg:closeable="true" dlg:moveable="true">
<dlg:styles> <dlg:styles>
<dlg:style dlg:style-id="0" dlg:border="none"/> <dlg:style dlg:style-id="0" dlg:border="none"/>
</dlg:styles> </dlg:styles>
<dlg:bulletinboard> <dlg:bulletinboard>
<dlg:text dlg:id="Label2" dlg:tab-index="1" dlg:left="158" dlg:top="132" dlg:width="0" dlg:height="2" dlg:value="Label2"/> <dlg:text dlg:id="Label2" dlg:tab-index="2" dlg:left="158" dlg:top="132" dlg:width="0" dlg:height="2" dlg:value="Label2"/>
<dlg:button dlg:id="CommandButton2" dlg:tab-index="3" dlg:left="77" dlg:top="122" dlg:width="2" dlg:height="0" dlg:value="CommandButton2"/> <dlg:button dlg:id="CommandButton2" dlg:tab-index="4" dlg:left="77" dlg:top="122" dlg:width="2" dlg:height="0" dlg:value="CommandButton2"/>
<dlg:text dlg:id="Label6" dlg:tab-index="9" dlg:left="9" dlg:top="120" dlg:width="2" dlg:height="0" dlg:value="Label6"/> <dlg:text dlg:id="Label6" dlg:tab-index="9" dlg:left="9" dlg:top="120" dlg:width="2" dlg:height="0" dlg:value="Label6"/>
<dlg:numericfield dlg:style-id="0" dlg:id="level" dlg:tab-index="6" dlg:left="77" dlg:top="54" dlg:width="17" dlg:height="10"/> <dlg:textfield dlg:style-id="0" dlg:id="level" dlg:tab-index="6" dlg:left="75" dlg:top="78" dlg:width="17" dlg:height="10"/>
<dlg:button dlg:id="buttonOK" dlg:tab-index="2" dlg:left="5" dlg:top="78" dlg:width="69" dlg:height="17" dlg:value="OK" dlg:button-type="ok"/> <dlg:button dlg:id="buttonOK" dlg:tab-index="3" dlg:left="11" dlg:top="146" dlg:width="60" dlg:height="17" dlg:value="OK" dlg:button-type="ok"/>
<dlg:button dlg:id="buttonCancel" dlg:tab-index="4" dlg:left="86" dlg:top="78" dlg:width="69" dlg:height="17" dlg:value="Отмена" dlg:button-type="cancel"/> <dlg:button dlg:id="buttonCancel" dlg:tab-index="0" dlg:left="85" dlg:top="146" dlg:width="60" dlg:height="17" dlg:value="Отмена" dlg:button-type="cancel"/>
<dlg:text dlg:id="configText1" dlg:tab-index="8" dlg:left="16" dlg:top="15" dlg:width="109" dlg:height="10" dlg:value="Введите в поле число от 0 до 10"/> <dlg:text dlg:id="configText1" dlg:tab-index="8" dlg:left="14" dlg:top="38" dlg:width="109" dlg:height="10" dlg:value="Введите в поле число от 0 до 10"/>
<dlg:text dlg:id="configText3" dlg:tab-index="0" dlg:left="16" dlg:top="41" dlg:width="112" dlg:height="10" dlg:value="Начинать нумерацию сносок заново "/> <dlg:text dlg:id="configText3" dlg:tab-index="1" dlg:left="14" dlg:top="64" dlg:width="112" dlg:height="10" dlg:value="Начинать нумерацию сносок заново "/>
<dlg:text dlg:id="configText2" dlg:tab-index="10" dlg:left="16" dlg:top="28" dlg:width="122" dlg:height="10" dlg:value="0 - возврат к стандартной нумерации"/> <dlg:text dlg:id="configText2" dlg:tab-index="10" dlg:left="14" dlg:top="52" dlg:width="122" dlg:height="10" dlg:value="0 - возврат к стандартной нумерации"/>
<dlg:text dlg:id="configText4" dlg:tab-index="7" dlg:left="16" dlg:top="54" dlg:width="58" dlg:height="10" dlg:value="после заголовков"/> <dlg:text dlg:id="configText4" dlg:tab-index="7" dlg:left="14" dlg:top="78" dlg:width="58" dlg:height="10" dlg:value="после заголовков"/>
<dlg:text dlg:id="configText5" dlg:tab-index="5" dlg:left="96" dlg:top="54" dlg:width="24" dlg:height="10" dlg:value="уровня"/> <dlg:text dlg:id="configText5" dlg:tab-index="5" dlg:left="94" dlg:top="78" dlg:width="24" dlg:height="10" dlg:value="уровня"/>
<dlg:text dlg:id="notesTypeLabel" dlg:tab-index="11" dlg:left="14" dlg:top="9" dlg:width="39" dlg:height="10" dlg:value="Тип сносок"/>
<dlg:menulist dlg:id="lb_notes_types" dlg:tab-index="12" dlg:left="53" dlg:top="9" dlg:width="91" dlg:height="10" dlg:spin="true"/>
<dlg:titledbox dlg:id="groupByHeadings" dlg:tab-index="13" dlg:left="11" dlg:top="24" dlg:width="134" dlg:height="69">
<dlg:title dlg:value="По заголовкам"/>
</dlg:titledbox>
<dlg:titledbox dlg:id="groupByPages" dlg:tab-index="14" dlg:left="11" dlg:top="100" dlg:width="134" dlg:height="40">
<dlg:title dlg:value="По страницам"/>
</dlg:titledbox>
<dlg:text dlg:id="PerPageRangeLabel" dlg:tab-index="15" dlg:left="14" dlg:top="113" dlg:width="109" dlg:height="10" dlg:value="Задайте диапазон страниц"/>
<dlg:textfield dlg:style-id="0" dlg:id="pageRange" dlg:tab-index="16" dlg:left="14" dlg:top="126" dlg:width="70" dlg:height="10"/>
</dlg:bulletinboard> </dlg:bulletinboard>
</dlg:window> </dlg:window>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Hyphenations" script:language="StarBasic">Private Sub markHyph4 <script:module xmlns:script="http://openoffice.org/2000/script" script:name="Hyphenations" script:language="StarBasic">Private Sub markHyph
End sub End sub
Private Sub convertHyphInDoc() Private Sub convertHyphInDoc()
@ -15,6 +15,7 @@ Private Sub convertHyphInDoc()
statusIndicator = ThisComponent.getCurrentController.StatusIndicator statusIndicator = ThisComponent.getCurrentController.StatusIndicator
statusIndicator.Start(getTranslation(&quot;hyphenationsInProgress&quot;),10) statusIndicator.Start(getTranslation(&quot;hyphenationsInProgress&quot;),10)
turnOffTracking turnOffTracking
setZoomToSpeedUpTasks()
AcceptAllTrackedChanges AcceptAllTrackedChanges
convertHyphInText(ThisComponent.Text) convertHyphInText(ThisComponent.Text)
&apos; Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; ) &apos; Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; )
@ -33,6 +34,11 @@ End Sub
Private sub disableAutoHyph() Private sub disableAutoHyph()
Dim propertySetInfo As Object Dim propertySetInfo As Object
Dim oPositionOfMatch As Long Dim oPositionOfMatch As Long
Dim oFamilies As Object
Dim sElements() As String
Dim oFamily As Object
Dim oStyle As Object
Dim j As Integer
oFamilies = ThisComponent.StyleFamilies oFamilies = ThisComponent.StyleFamilies
sElements() = oFamilies.getElementNames() sElements() = oFamilies.getElementNames()
oFamily = oFamilies.getByName(sElements(1)) oFamily = oFamilies.getByName(sElements(1))
@ -50,6 +56,8 @@ Private Sub convertHyphInText(textElement As Object)
Dim enum1 As Object Dim enum1 As Object
Dim i As Integer Dim i As Integer
Dim cell As Object Dim cell As Object
Dim cellNames() As Object
Dim cellText As Object
enum1 = textElement.createEnumeration() enum1 = textElement.createEnumeration()
While enum1.hasMoreElements While enum1.hasMoreElements
enum1Element = enum1.nextElement enum1Element = enum1.nextElement
@ -67,18 +75,21 @@ Private Sub convertHyphInText(textElement As Object)
Wend Wend
End Sub End Sub
Private Sub convertParaHyphens(para) Private Sub convertParaHyphens(para As Object)
Dim lineEnds() As Object Dim lineEnds() As Object
Dim autoHyphens() As Object Dim autoHyphens() As Object
Dim autoBreaks() As Object Dim autoBreaks() As Object
Dim lineNumbers() As Integer Dim lineNumbers() As Integer
&apos; Dim lineShifts() As Integer &apos; Dim lineShifts() As Integer
Dim charNum as Integer Dim charNum as Long
Dim lineLength As Integer Dim lineLength As Integer
Dim lineCursor As Object
Dim i As Integer Dim i As Integer
Dim vCurs As Object Dim vCurs As Object
Dim tCurs As Object Dim tCurs As Object
Dim lineCurs As Object Dim lineCurs As Object
Dim lastChar As String
Dim nextChar As String
&apos;No hyphenation needed &apos;No hyphenation needed
If para.ParaIsHyphenation = false Then If para.ParaIsHyphenation = false Then
Exit Sub Exit Sub
@ -170,13 +181,13 @@ Private Sub insertBreak(tCursor As Object)
tCursor.String = &quot;&quot; tCursor.String = &quot;&quot;
End Sub End Sub
Private Function getPrevChar(tCurs As Object) Private Function getPrevChar(tCurs As Object) As String
tCurs.goLeft(1,true) tCurs.goLeft(1,true)
getPrevChar = tCurs.getString() getPrevChar = tCurs.getString()
tCurs.goRight(1,false) tCurs.goRight(1,false)
End Function End Function
Private Function getNextChar(tCurs As Object) Private Function getNextChar(tCurs As Object) As String
tCurs.goRight(1,true) tCurs.goRight(1,true)
getNextChar = tCurs.getString() getNextChar = tCurs.getString()
tCurs.goLeft(1,false) tCurs.goLeft(1,false)
@ -291,7 +302,7 @@ Private Sub stretchLine(tCurs As Object)
End Sub End Sub
Private Function getParaLineNumber(vCursor As Object) Private Function getParaLineNumber(vCursor As Object) As Integer
Dim lineNumber As Integer Dim lineNumber As Integer
Dim oSavePosition As Object Dim oSavePosition As Object
Dim tCursor As Object Dim tCursor As Object
@ -325,9 +336,9 @@ End Sub
Private Function needHyphen(before As String, after As String,lineLength As Integer) Private Function needHyphen(before As String, after As String,lineLength As Integer) As boolean
Dim charNumBefore as Integer Dim charNumBefore as Long
Dim charNumAfter as Integer Dim charNumAfter as Long
needHyphen = true needHyphen = true
If lineLength &lt; 2 Then If lineLength &lt; 2 Then
needHyphen = false needHyphen = false
@ -370,6 +381,10 @@ Dim charNumAfter as Integer
needHyphen = false needHyphen = false
Case &quot;/&quot; Case &quot;/&quot;
needHyphen = false needHyphen = false
Case &quot;?&quot;
needHyphen = false
Case &quot;!&quot;
needHyphen = false
End Select End Select
Select Case after Select Case after
Case &quot; &quot; Case &quot; &quot;
@ -420,7 +435,5 @@ Private Function confirm(description)
End Function End Function
Sub Macro1
End Sub
</script:module> </script:module>

View file

@ -19,8 +19,251 @@ Sub decrementKern()
changeKern(-2) changeKern(-2)
End Sub End Sub
Sub balanceDoublePagesFootnotes
Dim oViewCursor As Object
oViewCursor = Thiscomponent.currentController.getViewCursor()
Dim leftHeight As Long
Dim rightHeight As Long
Dim odd As Integer
Dim rightPageNum As Integer
Dim leftPageNum As Integer
Dim startPage As Integer
Dim docPages As Integer
startPage = oViewCursor.getPage()
docPages = thiscomponent.currentController.pageCount
odd = startPage Mod 2
If startPage &lt;&gt; 1 AND (startPage &lt;&gt; docPages Or odd = 1) Then
If odd = 1 Then
rightPageNum = startPage
leftPageNum = startPage - 1
Else
leftPageNum = startPage
rightPageNum = startPage + 1
EndIf
If pageHasNotes(leftPageNum) And pageHasNotes(rightPageNum) Then
leftHeight = getFootnoteAreaHeight(leftPageNum)
rightHeight = getFootnoteAreaHeight(rightPageNum)
EndIf
MsgBox leftHeight &amp; &quot; &quot; &amp; rightHeight
EndIf
Function changeCharWidth(delta) As Boolean End Sub
Function getFootnoteAreaHeight(pageNumber As Integer)
Dim oViewCursor As Object
Dim fnAreaEnd As Object
Dim pageStyleName As String
Dim oStyles As Object
Dim newHeight As Integer
Dim initialHeight As Integer
oStyles = ThisComponent.StyleFamilies
Dim pageSTyles As Object
pageStyles = oStyles.getByName(oStyles.elementNames(2))
Dim pageStyle As Object
Dim decrement As Integer
Dim tmpPageNum As Integer
decrement = 10000
oViewCursor = Thiscomponent.currentController.getViewCursor()
oViewCursor.jumpToPage(pageNumber)
pageStyleName = getCurPageStyleName()
pageStyle = pageStyles.getByName(pageStyleName)
initialHeight = pageStyle.FootnoteHeight
If pageStyle.FootnoteHeight = 0 Then
pageStyle.FootnoteHeight = pageStyle.Height - pageStyle.TopMargin - pageStyle.BottomMargin
EndIf
&apos;TODO ADD CHECK IF THERE IS A FOOTNOTE AREA ON PAGE
fnAreaEnd = getFNAreaEnd(pageNumber)
Dim savePageHeight As Long
savePageHeight = pageStyle.Height
Do While pageStyle.FootnoteHeight &gt; 10
Do While pageStyle.FootnoteHeight &lt; decrement
decrement = decrement / 2
Loop
newHeight = pageStyle.FootnoteHeight - decrement
pageStyle.FootnoteHeight = newHeight
tmpPageNum = getPageNumberVCurs(fnAreaEnd)
If tmpPageNum &lt;&gt; pageNumber Then
If decrement &lt; 4 Then
pageStyle.FootnoteHeight = pageStyle.FootnoteHeight + decrement * 2
&apos;Hack to force libreoffice to refresh page layout
tmpPageNum = getPageNumberVCurs(fnAreaEnd)
If tmpPageNum &lt;&gt; pageNumber Then
pageStyle.Height = savePageHeight + 100
pageStyle.Height = savePageHeight
EndIf
Exit Do
Else
newHeight = pageStyle.FootnoteHeight + decrement
decrement = decrement / 2
pageStyle.FootnoteHeight = newHeight
&apos;Hack to force libreoffice to refresh page layout
tmpPageNum = getPageNumberVCurs(fnAreaEnd)
If tmpPageNum &lt;&gt; pageNumber Then
pageStyle.Height = savePageHeight + 100
pageStyle.Height = savePageHeight
EndIf
EndIf
EndIf
Loop
tmpPageNum = getPageNumberVCurs(fnAreaEnd)
If tmpPageNum &lt;&gt; pageNumber Then
pageStyle.FootnoteHeight = 0
MsgBox &quot;Error&quot;
Stop
EndIf
getFootnoteAreaHeight = pageStyle.FootnoteHeight
End Function
sub pageDialog
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;)
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, &quot;.uno:PageSettingDialog&quot;, &quot;&quot;, 0, Array())
end sub
Function getPageNumberVCurs(cursor As object) As Integer
Dim oViewCursor As Object
Dim oSavePosition As Object
oViewCursor = Thiscomponent.currentController.getViewCursor()
oSavePosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
oViewCursor.goToRange(cursor.Start,false)
getPageNumberVCurs = oViewCursor.getPage()
oViewCursor.goToRange(oViewCursor, false)
End Function
Function pageHasNotes(pageNumber As Integer) As Boolean
Dim allNotes As Object
allNotes = thisComponent.FootNotes
Dim curNote As Object
Dim noteStartPage As Integer
Dim noteEndPage As Integer
Dim oEnum As Object
&apos; Dim noteStartCursor As Object
Dim endtText As Object
pageHasNotes = false
Dim x As Integer
For x = 0 to allNotes.Count -1
curNote = allNotes.getByIndex(x)
noteEndPage = getPageNumberVCurs(curNote.Text.End)
If noteEndPage &gt;= pageNumber Then
noteStartPage = getPageNumberVCurs(curNote.Text.Start)
If pageNumber = noteStartPage Or (noteStartPage &lt; pageNumber And noteEndPage &gt;= pageNumber) Then
pageHasNotes = true
Exit function
EndIf
EndIf
Next x
End Function
Function getFNAreaEnd(pageNumber As Integer)
Dim allNotes As Object
allNotes = thisComponent.FootNotes
Dim curNote As Object
Dim noteStartPage As Integer
Dim noteEndPage As Integer
Dim prevNote As Object
Dim oEnum As Object
&apos; Dim noteStartCursor As Object
Dim endtText As Object
Dim pageHasNotes As Boolean
pageHasNotes = false
Dim x As Integer
For x = 0 to allNotes.Count -1
curNote = allNotes.getByIndex(x)
noteEndPage = getPageNumberVCurs(curNote.Text.End)
If noteEndPage &gt;= pageNumber Then
noteStartPage = getPageNumberVCurs(curNote.Text.Start)
If pageNumber = noteStartPage Or (noteStartPage &lt; pageNumber And noteEndPage &gt;= pageNumber) Then
pageHasNotes = true
EndIf
If pageHasNotes AND pageNumber &lt; noteStartPage Then
getFNAreaEnd = prevNote.Text.createTextCursorByRange(prevNote.Text.End)
Exit function
Endif
If pageHasNotes AND pageNumber &lt; noteEndPage Then
getFNAreaEnd = getFNAreaEndInFootnote(curNote,pageNumber)
Exit function
EndIf
prevNote = curNote
EndIf
Next x
End Function
Function getFNAreaEndInFootnote(note As Object, pageNum As Integer)
Dim oViewCursor As Object
Dim oSavePosition As Object
Dim tmpPageNum As Integer
If getPageNumber(note.Text.Start) &gt; pageNum Then
&apos;ERROR Footnote starts after this page number
Exit Function
EndIf
oViewCursor = Thiscomponent.currentController.getViewCursor()
oSavePosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
oViewCursor.goToRange(note.Text.End,false)
Do
oViewCursor.gotoStartOfLine(false)
tmpPageNum = getPageNumber(oViewCursor)
If tmpPageNum &lt;= pageNum Then
Exit Do
EndIf
oViewCursor.goLeft(1,false)
tmpPageNum = getPageNumber(oViewCursor)
Loop While tmpPageNum &gt; pageNum
getFNAreaEndInFootnote = oViewCursor.Text.createTextCursorByRange(oViewCursor)
oViewCursor.goToRange(oSavePosition,false)
End Function
Sub getFNAreaStart
Dim pageNumber As Integer
pageNumber = getPageNumber(Thiscomponent.currentController.getViewCursor())
Dim allNotes As Object
allNotes = thisComponent.FootNotes
Dim aNote As Object
Dim oEnum As Object
Dim noteStart As Object
Dim noteEnd As Object
Dim x As Integer
For x = 0 to allNotes.Count -1
aNote = allNotes.getByIndex(x)
&apos;oEnum = aNote.Text.createEnumeration()
noteStart = aNote.Text.createTextCursorByRange(aNote.Text.Start)
noteEnd = aNote.Text.createTextCursorByRange(aNote.Text.End)
If pageNumber = getPageNumber(noteStart) Then
MsgBox &quot;Starts here &quot; &amp; x &amp; &quot; page number &quot; &amp; pageNumber
Exit sub
Endif
If pageNumber = getPageNumber(noteEnd) Then
MsgBox &quot;ends here &quot; + x
Exit sub
EndIf
&apos;Do While oEnum.hasMoreElements()
&apos; oCurPar = oEnum.nextElement()
&apos;Loop
Next
&apos;Globalscope.BasicLibraries.LoadLibrary(&quot;MRILib&quot;)
&apos;mri ThisComponent
End Sub
Function changeCharWidth(delta As Integer) As Boolean
Dim oViewCursor As Object Dim oViewCursor As Object
Dim oTextCursor As Object Dim oTextCursor As Object
Dim charScale As Integer Dim charScale As Integer
@ -34,7 +277,7 @@ Function changeCharWidth(delta) As Boolean
oViewCursor.charScaleWidth = charScale + delta oViewCursor.charScaleWidth = charScale + delta
End Function End Function
Function changeKern(delta) As Boolean Function changeKern(delta As Integer) As Boolean
Dim oViewCursor As Object Dim oViewCursor As Object
Dim oTextCursor As Object Dim oTextCursor As Object
Dim kerning As Integer Dim kerning As Integer
@ -46,4 +289,21 @@ Function changeKern(delta) As Boolean
End If End If
oViewCursor.CharKerning = kerning + delta oViewCursor.CharKerning = kerning + delta
End Function End Function
sub undoUno
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;)
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, &quot;.uno:Undo&quot;, &quot;&quot;, 0, Array())
end sub
</script:module> </script:module>

View file

@ -2,28 +2,42 @@
<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd"> <!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd">
<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="PageConfig" dlg:left="102" dlg:top="13" dlg:width="386" dlg:height="316" dlg:closeable="true" dlg:moveable="true"> <dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="PageConfig" dlg:left="102" dlg:top="13" dlg:width="386" dlg:height="316" dlg:closeable="true" dlg:moveable="true">
<dlg:styles> <dlg:styles>
<dlg:style dlg:style-id="0" dlg:border="none"/> <dlg:style dlg:style-id="0" dlg:border="simple"/>
<dlg:style dlg:style-id="1" dlg:border="none"/>
</dlg:styles> </dlg:styles>
<dlg:bulletinboard> <dlg:bulletinboard>
<dlg:textfield dlg:style-id="0" dlg:id="pageHeight" dlg:tab-index="12" dlg:left="6" dlg:top="143" dlg:width="16" dlg:height="10" dlg:value="1000"/> <dlg:textfield dlg:style-id="0" dlg:id="pageHeight" dlg:tab-index="13" dlg:left="3" dlg:top="143" dlg:width="16" dlg:height="10" dlg:valign="center" dlg:value="1000"/>
<dlg:textfield dlg:style-id="0" dlg:id="pageWidth" dlg:tab-index="8" dlg:left="98" dlg:top="301" dlg:width="16" dlg:height="10" dlg:value="1000"/> <dlg:textfield dlg:style-id="0" dlg:id="pageWidth" dlg:tab-index="9" dlg:left="108" dlg:top="301" dlg:width="16" dlg:height="10" dlg:valign="center" dlg:value="1000"/>
<dlg:textfield dlg:style-id="0" dlg:id="leftPageMargin" dlg:tab-index="7" dlg:left="32" dlg:top="3" dlg:width="16" dlg:height="10" dlg:value="1000"/> <dlg:textfield dlg:style-id="0" dlg:id="leftPageMargin" dlg:tab-index="8" dlg:left="40" dlg:top="3" dlg:width="18" dlg:height="10" dlg:valign="center" dlg:value="1000"/>
<dlg:textfield dlg:style-id="0" dlg:id="topPageMargin" dlg:tab-index="3" dlg:left="194" dlg:top="32" dlg:width="16" dlg:height="10" dlg:value="1000"/> <dlg:textfield dlg:style-id="0" dlg:id="topPageMargin" dlg:tab-index="4" dlg:left="204" dlg:top="32" dlg:width="16" dlg:height="10" dlg:valign="center" dlg:value="1000"/>
<dlg:textfield dlg:style-id="0" dlg:id="headerHeight" dlg:tab-index="4" dlg:left="194" dlg:top="46" dlg:width="16" dlg:height="10" dlg:value="1000"/> <dlg:textfield dlg:style-id="0" dlg:id="headerHeight" dlg:tab-index="5" dlg:left="204" dlg:top="46" dlg:width="16" dlg:height="10" dlg:valign="center" dlg:value="1000"/>
<dlg:textfield dlg:style-id="0" dlg:id="headerOffset" dlg:tab-index="5" dlg:left="194" dlg:top="62" dlg:width="16" dlg:height="10" dlg:value="1000"/> <dlg:textfield dlg:style-id="0" dlg:id="headerOffset" dlg:tab-index="6" dlg:left="204" dlg:top="62" dlg:width="16" dlg:height="10" dlg:valign="center" dlg:value="1000"/>
<dlg:textfield dlg:style-id="0" dlg:id="footerHeight" dlg:tab-index="10" dlg:left="194" dlg:top="261" dlg:width="16" dlg:height="10" dlg:value="1000"/> <dlg:textfield dlg:style-id="0" dlg:id="footerHeight" dlg:tab-index="11" dlg:left="204" dlg:top="261" dlg:width="16" dlg:height="10" dlg:valign="center" dlg:value="1000"/>
<dlg:textfield dlg:style-id="0" dlg:id="footerOffset" dlg:tab-index="9" dlg:left="194" dlg:top="246" dlg:width="16" dlg:height="10" dlg:value="1000"/> <dlg:textfield dlg:style-id="0" dlg:id="footerOffset" dlg:tab-index="10" dlg:left="204" dlg:top="245" dlg:width="16" dlg:height="10" dlg:valign="center" dlg:value="1000"/>
<dlg:textfield dlg:style-id="0" dlg:id="footnoteAreaHeight" dlg:tab-index="6" dlg:left="194" dlg:top="232" dlg:width="16" dlg:height="10" dlg:value="1000"/> <dlg:textfield dlg:style-id="0" dlg:id="footnoteAreaHeight" dlg:tab-index="7" dlg:left="204" dlg:top="232" dlg:width="16" dlg:height="10" dlg:valign="center" dlg:value="1000"/>
<dlg:textfield dlg:style-id="0" dlg:id="footnoteAreaOffset" dlg:tab-index="2" dlg:left="194" dlg:top="205" dlg:width="16" dlg:height="10" dlg:value="1000"/> <dlg:textfield dlg:style-id="0" dlg:id="footnoteAreaOffset" dlg:tab-index="3" dlg:left="204" dlg:top="205" dlg:width="16" dlg:height="10" dlg:valign="center" dlg:value="1000"/>
<dlg:text dlg:id="description" dlg:tab-index="13" dlg:left="228" dlg:top="8" dlg:width="155" dlg:height="42" dlg:value="Label1" dlg:multiline="true"/> <dlg:text dlg:id="description" dlg:tab-index="14" dlg:left="238" dlg:top="8" dlg:width="145" dlg:height="42" dlg:value="Label1" dlg:multiline="true"/>
<dlg:button dlg:id="Cancel" dlg:tab-index="15" dlg:left="313" dlg:top="292" dlg:width="60" dlg:height="13" dlg:value="Cancel" dlg:button-type="cancel"/> <dlg:button dlg:id="Cancel" dlg:tab-index="16" dlg:left="313" dlg:top="292" dlg:width="60" dlg:height="13" dlg:value="Cancel" dlg:button-type="cancel"/>
<dlg:button dlg:id="Ok" dlg:tab-index="14" dlg:left="240" dlg:top="292" dlg:width="60" dlg:height="13" dlg:value="Ok" dlg:toggled="1"> <dlg:button dlg:id="Ok" dlg:tab-index="15" dlg:left="240" dlg:top="292" dlg:width="60" dlg:height="13" dlg:value="Ok" dlg:toggled="1">
<script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:ePublishing.PageStyles.applyPageStyleConfiguration?language=Basic&amp;location=application" script:language="Script"/> <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:ePublishing.PageStyles.applyPageStyleConfiguration?language=Basic&amp;location=application" script:language="Script"/>
</dlg:button> </dlg:button>
<dlg:img dlg:style-id="0" dlg:id="ImageControl1" dlg:tab-index="17" dlg:left="10" dlg:top="10" dlg:width="214" dlg:height="291" dlg:scale-mode="isotropic"/> <dlg:img dlg:style-id="1" dlg:id="ImageControl1" dlg:tab-index="30" dlg:left="21" dlg:top="10" dlg:width="214" dlg:height="291" dlg:scale-mode="isotropic" dlg:tabstop="true"/>
<dlg:menulist dlg:style-id="0" dlg:id="pageStyles" dlg:tab-index="16" dlg:left="228" dlg:top="52" dlg:width="155" dlg:height="230" dlg:multiselection="true"/> <dlg:menulist dlg:style-id="1" dlg:id="pageStyles" dlg:tab-index="17" dlg:left="238" dlg:top="52" dlg:width="145" dlg:height="230" dlg:multiselection="true"/>
<dlg:textfield dlg:style-id="0" dlg:id="rightPageMargin" dlg:tab-index="1" dlg:left="167" dlg:top="3" dlg:width="16" dlg:height="10" dlg:value="1000"/> <dlg:textfield dlg:style-id="0" dlg:id="rightPageMargin" dlg:tab-index="2" dlg:left="178" dlg:top="3" dlg:width="18" dlg:height="10" dlg:valign="center" dlg:value="1000"/>
<dlg:textfield dlg:style-id="0" dlg:id="bottomPageMargin" dlg:tab-index="11" dlg:left="194" dlg:top="280" dlg:width="16" dlg:height="10" dlg:value="1000"/> <dlg:textfield dlg:style-id="0" dlg:id="bottomPageMargin" dlg:tab-index="12" dlg:left="204" dlg:top="280" dlg:width="16" dlg:height="10" dlg:valign="center" dlg:value="1000"/>
<dlg:textfield dlg:style-id="0" dlg:id="textToLine" dlg:tab-index="0" dlg:left="194" dlg:top="189" dlg:width="16" dlg:height="10" dlg:value="1000"/> <dlg:textfield dlg:style-id="0" dlg:id="textToLine" dlg:tab-index="1" dlg:left="204" dlg:top="189" dlg:width="16" dlg:height="10" dlg:valign="center" dlg:value="1000"/>
<dlg:text dlg:id="mm1" dlg:tab-index="0" dlg:left="20" dlg:top="143" dlg:width="12" dlg:height="10" dlg:value="mm" dlg:align="center" dlg:valign="center" dlg:tabstop="true"/>
<dlg:text dlg:id="mm2" dlg:tab-index="29" dlg:left="58" dlg:top="3" dlg:width="12" dlg:height="10" dlg:value="mm" dlg:align="center" dlg:valign="center"/>
<dlg:text dlg:id="mm3" dlg:tab-index="28" dlg:left="124" dlg:top="301" dlg:width="12" dlg:height="10" dlg:value="mm" dlg:align="center" dlg:valign="center"/>
<dlg:text dlg:id="mm4" dlg:tab-index="27" dlg:left="220" dlg:top="32" dlg:width="12" dlg:height="10" dlg:value="mm" dlg:align="center" dlg:valign="center"/>
<dlg:text dlg:id="mm5" dlg:tab-index="26" dlg:left="196" dlg:top="3" dlg:width="12" dlg:height="10" dlg:value="mm" dlg:align="center" dlg:valign="center"/>
<dlg:text dlg:id="mm6" dlg:tab-index="25" dlg:left="220" dlg:top="46" dlg:width="12" dlg:height="10" dlg:value="mm" dlg:align="center" dlg:valign="center"/>
<dlg:text dlg:id="mm7" dlg:tab-index="24" dlg:left="220" dlg:top="62" dlg:width="12" dlg:height="10" dlg:value="mm" dlg:align="center" dlg:valign="center"/>
<dlg:text dlg:id="mm8" dlg:tab-index="23" dlg:left="220" dlg:top="280" dlg:width="12" dlg:height="10" dlg:value="mm" dlg:align="center" dlg:valign="center"/>
<dlg:text dlg:id="mm9" dlg:tab-index="22" dlg:left="220" dlg:top="261" dlg:width="12" dlg:height="10" dlg:value="mm" dlg:align="center" dlg:valign="center"/>
<dlg:text dlg:id="mm10" dlg:tab-index="21" dlg:left="220" dlg:top="232" dlg:width="12" dlg:height="10" dlg:value="mm" dlg:align="center" dlg:valign="center"/>
<dlg:text dlg:id="mm11" dlg:tab-index="20" dlg:left="220" dlg:top="205" dlg:width="12" dlg:height="10" dlg:value="mm" dlg:align="center" dlg:valign="center"/>
<dlg:text dlg:id="mm12" dlg:tab-index="19" dlg:left="220" dlg:top="189" dlg:width="12" dlg:height="10" dlg:value="mm" dlg:align="center" dlg:valign="center"/>
<dlg:text dlg:id="mm13" dlg:tab-index="18" dlg:left="220" dlg:top="245" dlg:width="12" dlg:height="10" dlg:value="mm" dlg:align="center" dlg:valign="center"/>
</dlg:bulletinboard> </dlg:bulletinboard>
</dlg:window> </dlg:window>

View file

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="PageStyles" script:language="StarBasic" script:moduleType="normal"> Dim pDialog As Object <script:module xmlns:script="http://openoffice.org/2000/script" script:name="PageStyles" script:language="StarBasic" script:moduleType="normal">
Dim pDialog As Object
Sub pageStylesDialog Sub pageStylesDialog
Dim listBox As Object Dim listBox As Object
@ -122,6 +123,19 @@ Sub setHelpText
pDialog.getControl(&quot;footnoteAreaHeight&quot;).Model.HelpText = getTranslation(&quot;PageConfigFootnoteAreaHeight&quot;) pDialog.getControl(&quot;footnoteAreaHeight&quot;).Model.HelpText = getTranslation(&quot;PageConfigFootnoteAreaHeight&quot;)
pDialog.getControl(&quot;footnoteAreaOffset&quot;).Model.HelpText = getTranslation(&quot;PageConfigFootnoteAreaOffset&quot;) pDialog.getControl(&quot;footnoteAreaOffset&quot;).Model.HelpText = getTranslation(&quot;PageConfigFootnoteAreaOffset&quot;)
pDialog.getControl(&quot;textToLine&quot;).Model.HelpText = getTranslation(&quot;PageConfigTextToLine&quot;) pDialog.getControl(&quot;textToLine&quot;).Model.HelpText = getTranslation(&quot;PageConfigTextToLine&quot;)
pDialog.getControl(&quot;mm1&quot;).setText(getTranslation(&quot;PageConfigMM&quot;))
pDialog.getControl(&quot;mm2&quot;).setText(getTranslation(&quot;PageConfigMM&quot;))
pDialog.getControl(&quot;mm3&quot;).setText(getTranslation(&quot;PageConfigMM&quot;))
pDialog.getControl(&quot;mm4&quot;).setText(getTranslation(&quot;PageConfigMM&quot;))
pDialog.getControl(&quot;mm5&quot;).setText(getTranslation(&quot;PageConfigMM&quot;))
pDialog.getControl(&quot;mm6&quot;).setText(getTranslation(&quot;PageConfigMM&quot;))
pDialog.getControl(&quot;mm7&quot;).setText(getTranslation(&quot;PageConfigMM&quot;))
pDialog.getControl(&quot;mm8&quot;).setText(getTranslation(&quot;PageConfigMM&quot;))
pDialog.getControl(&quot;mm9&quot;).setText(getTranslation(&quot;PageConfigMM&quot;))
pDialog.getControl(&quot;mm10&quot;).setText(getTranslation(&quot;PageConfigMM&quot;))
pDialog.getControl(&quot;mm11&quot;).setText(getTranslation(&quot;PageConfigMM&quot;))
pDialog.getControl(&quot;mm12&quot;).setText(getTranslation(&quot;PageConfigMM&quot;))
pDialog.getControl(&quot;mm13&quot;).setText(getTranslation(&quot;PageConfigMM&quot;))
End Sub End Sub
@ -343,8 +357,8 @@ Function covertMMtoLong(dimension As String) As Long
convertMMtoLong = -1 convertMMtoLong = -1
Exit Function Exit Function
EndIf EndIf
dimension = customReplace(dimension, &quot;,&quot;, &quot;.&quot;) dimension = customReplace(dimension, &quot;.&quot;, &quot;,&quot;)
If Not IsNumeric(dimension) Then If Not IsNumeric( dimension ) Then
convertMMtoLong = -1 convertMMtoLong = -1
Exit Function Exit Function
EndIf EndIf

View file

@ -1,11 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="TOCLinks" script:language="StarBasic" script:moduleType="normal">Sub makeOutlineLinks <script:module xmlns:script="http://openoffice.org/2000/script" script:name="TOCLinks" script:language="StarBasic" script:moduleType="normal">Sub makeOutlineLinks
Dim oViewCursor As Object
Dim i As Integer Dim i As Integer
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oViewCursor.jumpToFirstPage()
For i = 1 To 10 For i = 1 To 10
makeLinksWithLevel(i) makeLinksWithLevel(i)
Next i Next i
MsgBox (getTranslation(&quot;OutlineLinksFinished&quot;))
End Sub End Sub
@ -15,6 +18,7 @@ Sub makeLinksWithLevel(level)
Dim outline() As Object Dim outline() As Object
Dim oAnchor1Name As String Dim oAnchor1Name As String
Dim oAnchor2Name As String Dim oAnchor2Name As String
Dim message As String
Dim i As Integer Dim i As Integer
heading = getHeadingWithLevel(level) heading = getHeadingWithLevel(level)
outline = getOutlineWithLevel(level) outline = getOutlineWithLevel(level)
@ -28,12 +32,15 @@ Sub makeLinksWithLevel(level)
createLink(outline(i),&quot;&quot;,oAnchor2Name) createLink(outline(i),&quot;&quot;,oAnchor2Name)
Next i Next i
Else Else
MsgBox (getTranslation(&quot;TOCErrorContentsNotMatchHeadings1&quot;) &amp; &quot; &quot; &amp; level &amp; &quot; (&quot; &amp; (Ubound(outline)+1) &amp; getTranslation(&quot;TOCErrorContentsNotMatchHeadings2&quot;) &amp; &quot; &quot; &amp; level &amp; &quot; &quot; &amp; getTranslation(&quot;TOCErrorContentsNotMatchHeadings3&quot;) &amp; (Ubound(heading)+1) &amp; &quot;)&quot; message = getTranslation(&quot;TOCErrorContentsNotMatchHeadings1&quot;) &amp; &quot; &quot; &amp; level &amp; &quot; (&quot; &amp; (Ubound(outline)+1) &amp;&quot;) &quot; &amp; _
getTranslation(&quot;TOCErrorContentsNotMatchHeadings2&quot;) &amp; &quot; &quot; &amp; level &amp; &quot; &quot; &amp; _
getTranslation(&quot;TOCErrorContentsNotMatchHeadings3&quot;) &amp; &quot; (&quot; &amp; (Ubound(heading)+1) &amp; &quot;)&quot;
showTOCLinksDialog(message, heading(), outline() )
EndIf EndIf
ElseIf Ubound(outline) = -1 Then ElseIf Ubound(outline) = -1 Then
&apos; MsgBox (getTranslation(&quot;TOCErrorNoContents1&quot;) &amp; &quot; &quot; &amp; level &amp; &quot; &quot; &amp; getTranslation(&quot;TOCErrorNoContents2&quot;)) &apos; MsgBox (getTranslation(&quot;TOCErrorNoContents1&quot;) &amp; &quot; &quot; &amp; level &amp; &quot; &quot; &amp; getTranslation(&quot;TOCErrorNoContents2&quot;))
ElseIf Ubound(heading) = -1 Then ElseIf Ubound(heading) = -1 Then
MsgBox (getTranslation(&quot;TOCErrorNoHeadings1&quot;) &amp; &quot; &quot; &amp; level &amp; &quot; &quot; &amp; getTranslation(&quot;TOCErrorNoHeadings2&quot;)) MsgBox getTranslation(&quot;TOCErrorNoHeadings1&quot;) &amp; &quot; &quot; &amp; level &amp; &quot; &quot; &amp; getTranslation(&quot;TOCErrorNoHeadings2&quot;)
EndIf EndIf
End Sub End Sub
@ -128,6 +135,95 @@ Function getOutlineWithLevel(curNum)
getOutlineWithLevel = par() getOutlineWithLevel = par()
End Function End Function
Sub showTOCLinksDialog(message As String, heading() As Object, outline() As Object)
Dim pDialog As Object
Dim grid As Object
Dim headingsColumn As Object
Dim tocColumn As Object
Dim oGridControl As Object
Dim oColumnModel As Object
Dim oDataModel As Object
Dim rect As Object
Dim i As Integer
Dim j As Integer
Dim outlineCell As String
Dim headingCell As String
DialogLibraries.LoadLibrary(&quot;ePublishing&quot;)
pDialog = CreateUnoDialog( DialogLibraries.ePublishing.toc_links )
&apos;grid = pDialog.getControl(&quot;grid&quot;)
grid = pDialog.Model.createInstance(&quot;com.sun.star.awt.grid.UnoControlGridModel&quot;)
grid.Name = &quot;tocGrid&quot;
grid.ShowColumnHeader = True
grid.ShowRowHeader = True
grid.VScroll = true
grid.Sizeable = true
grid.Step = 0
oColumnModel = createUnoService( &quot;com.sun.star.awt.grid.DefaultGridColumnModel&quot;)
tocColumn = createUnoService( &quot;com.sun.star.awt.grid.GridColumn&quot;)
tocColumn.Title = getTranslation(&quot;tocItemText&quot;)
tocColumn.ColumnWidth = 100
tocColumn.Resizeable = true
&apos;tocColumn.Flexibility = true
oColumnModel.addColumn( tocColumn )
headingsColumn = createUnoService( &quot;com.sun.star.awt.grid.GridColumn&quot;)
headingsColumn.Title = getTranslation(&quot;headingItemText&quot;)
headingsColumn.ColumnWidth = 100
headingsColumn.Resizeable = true
&apos;headingsColumn.Flexibility = true
oColumnModel.addColumn( headingsColumn )
grid.ColumnModel = oColumnModel
&apos;grid.Sizeable = False
&apos;gridStep = 0
oDataModel = createUnoService( &quot;com.sun.star.awt.grid.DefaultGridDataModel&quot;)
If Ubound(outline) &gt; Ubound(heading) Then
For i = 0 To (Ubound(outline))
outlineCell = outline(i).getString()
j = i MOD (Ubound(heading) + 1)
headingCell = heading(j).getString()
oDataModel.addRow ( i+1 , Array(outlineCell, headingCell) )
Next
Else
For i = 0 To (Ubound(heading))
headingCell = heading(i).getString()
If i &gt; Ubound(outline) Then
outlineCell = &quot;&quot;
Else
outlineCell = outline(i).getString()
EndIf
oDataModel.addRow ( i+1 , Array(outlineCell, headingCell) )
Next i
EndIf
grid.GridDataModel = oDataModel
oGridControl = createUnoService(&quot;com.sun.star.awt.grid.UnoControlGrid&quot;)
oGridControl.setModel(grid)
pDialog.addControl(&quot;gridtab&quot;, oGridControl)
rect = pDialog.getPosSize()
oGridControl.setPosSize(10,60,rect.Width - 20,rect.Height - 120, com.sun.star.awt.PosSize.POSSIZE)
pDialog.getControl(&quot;Ok&quot;).Label = getTranslation(&quot;buttonOk&quot;)
pDialog.getControl(&quot;message&quot;).SetText(message)
pDialog.Title = getTranslation(&quot;tocDialogLabel&quot;)
pDialog.Execute()
pDialog.dispose()
End Sub
Sub addToArray(xArray(),vNextElement) Sub addToArray(xArray(),vNextElement)
Dim iUB As Integer Dim iUB As Integer
Dim iLB As Integer Dim iLB As Integer

File diff suppressed because it is too large Load diff

View file

@ -4,4 +4,6 @@
<library:element library:name="FootnotesConfig"/> <library:element library:name="FootnotesConfig"/>
<library:element library:name="replaceParaStyle"/> <library:element library:name="replaceParaStyle"/>
<library:element library:name="PageConfig"/> <library:element library:name="PageConfig"/>
<library:element library:name="EndnotesConversion"/>
<library:element library:name="toc_links"/>
</library:library> </library:library>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> <!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="journals" script:language="StarBasic">Private sub journalsMark21 <script:module xmlns:script="http://openoffice.org/2000/script" script:name="journals" script:language="StarBasic">Private sub journalsMark36
End sub End sub
Dim templateName As String Dim templateName As String
@ -29,6 +29,7 @@ Private Sub makeUpIssue
If NOT confirm(description) Then If NOT confirm(description) Then
Exit Sub Exit Sub
EndIf EndIf
setZoomToSpeedUpTasks()
EIFN = &quot;ЭиФН&quot; EIFN = &quot;ЭиФН&quot;
PHA = &quot;ФА&quot; PHA = &quot;ФА&quot;
@ -64,7 +65,7 @@ Private Sub makeUpIssue
oViewCursor.jumpToPage(page) oViewCursor.jumpToPage(page)
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor) oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
statusIndicator.Start(getTranslation(&quot;compileJournalIssueStatusInProgerss&quot;),30) statusIndicator.Start(getTranslation(&quot;compileJournalIssueStatusInProgerss&quot;),30)
For i = 1 To 25 For i = 1 To 50
&apos;Find section file &apos;Find section file
FilePath = findArticleFile(path,i) FilePath = findArticleFile(path,i)
If FilePath=&quot;&quot; Then If FilePath=&quot;&quot; Then
@ -228,7 +229,7 @@ Private Function getUDK()
backspace backspace
sendRM sendRM
End If End If
oViewCursor.goToRange(oSavePosition, false) Thiscomponent.CurrentController.select(oSavePosition)
End Function End Function
Private Function getCopyright() Private Function getCopyright()
@ -628,6 +629,7 @@ Private Sub setArticleUniqPageStyles(i)
Dim clonedStyle As Object Dim clonedStyle As Object
Dim clonedStyleName As String Dim clonedStyleName As String
Dim oViewCursor As Object Dim oViewCursor As Object
Dim newPageName As String
oViewCursor = ThisComponent.CurrentController.getViewCursor() oViewCursor = ThisComponent.CurrentController.getViewCursor()
pageStyles = ThisComponent.StyleFamilies.getByName(&quot;PageStyles&quot;) pageStyles = ThisComponent.StyleFamilies.getByName(&quot;PageStyles&quot;)
&apos;Constants &apos;Constants
@ -661,7 +663,11 @@ Private Sub setArticleUniqPageStyles(i)
&apos;Iterate article page number &apos;Iterate article page number
articlePageNum = articlePageNum + 1 articlePageNum = articlePageNum + 1
&apos;GO TO NEXT PAGE &apos;GO TO NEXT PAGE
oViewCursor.jumpToNextPage() If Not oViewCursor.jumpToNextPage() Then
MsgBox &quot;setArticleUniqPageStyles failed&quot;
End
EndIf
curPageStyleName = getNextPageStyleName() curPageStyleName = getNextPageStyleName()
Loop Loop
@ -1130,248 +1136,278 @@ sub backspace
dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;) dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;)
dispatcher.executeDispatch(document, &quot;.uno:SwBackspace&quot;, &quot;&quot;, 0, Array()) dispatcher.executeDispatch(document, &quot;.uno:SwBackspace&quot;, &quot;&quot;, 0, Array())
end Sub end Sub
Sub shrinkPageContent
Dim oViewCursor As Object &apos;View cursor Sub configureCursorPositionForContentShrink()
Dim oTextCursor As Object &apos;Text cursor &apos; Globalscope.BasicLibraries.LoadLibrary(&quot;MRILib&quot;)
Dim oViewCurInitPosition As Object Dim oViewCursor As Object
Dim oSaveEndSelection &apos;Text cursor Dim oTextCursor As Object
Dim oEnum &apos;Cursor enumeration Dim curSelection As Object
Dim oPar &apos;Current paragraph Dim selectionTextRange As Object
Dim sTextContent$ &apos;Service name for text content. Dim nextChar As String
Dim scaleWidthShrinkValue As Integer Dim prefChar As String
Dim scaleCharHeight As Integer
Dim scaleIntervalHeight As Integer
Dim kernShrinkValue As Integer
Dim startOfPara As Boolean
&apos;saveCurrentVersion
kernShrinkValue = 8
scaleWidthShrinkValue = 7
scaleCharHeight = 2
scaleIntervalHeight = 3
sTextContent = &quot;com.sun.star.text.TextContent&quot;
oViewCursor = ThisComponent.CurrentController.getViewCursor() oViewCursor = ThisComponent.CurrentController.getViewCursor()
oViewCurInitPosition = oViewcursor.Text.createTextCursorByRange(oViewCursor) fixViewCursor()
&apos;Check if we are at start of paragraph go to the end of previous paragraph oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
If oViewCursor.Text.createTextCursorByRange(oViewCursor).isStartOfParagraph() Then &apos;At start of Para
oViewCursor.goLeft(1,false) oTextCursor.collapseToEnd()
If Len(oViewCursor.String) &lt;&gt; 1 Then If oTextCursor.isStartOfParagraph() AND NOT oTextCursor.isEndOfParagraph() Then
oViewCursor.goRight(1,false) oTextCursor.goLeft(1,false)
End If EndIf
End If oViewCursor.goToRange(oTextCursor,false)
End Sub
Sub fixViewCursor()
Dim oViewCursor As Object
Dim curSelection As Object
Dim selectionTextRange As Object
oViewCursor = ThisComponent.CurrentController.getViewCursor()
curSelection = ThisComponent.getCurrentSelection()
If Not curSelection.supportsService(&quot;com.sun.star.text.TextRanges&quot;) Then
selectionTextRange = curSelection.Anchor
oViewCursor.JumpToFirstPage(false)
oViewCursor.goToRange(selectionTextRange,false)
EndIf
End Sub
&apos;Move right to select left and right characters and save position to the right Function isContentPageChanged(initPosition As Object,initPageNum As String) As Boolean
oViewCursor.goRight(1,false) Dim oViewCursor As Object
oSaveEndSelection = oViewCursor.Text.createTextCursorByRange(oViewCursor) Dim oTextCursor As Object
&apos;Select last 2 characters isShrinkPageSucceded = false
oViewCursor.goLeft(2,true) oViewCursor = ThisComponent.CurrentController.getViewCursor()
If Len(oViewCursor.String) = 2 Then oViewCursor.goToRange(initPosition,false)
oLastChars = oViewCursor.Text.createTextCursorByRange(oViewCursor) If (oViewCursor.getPage &lt;&gt; initPageNum) Then
&apos;Insert hyphen if needed isContentPageChanged = true
insertHyphen(oLastChars,oViewCursor) EndIf
End If End Function
&apos;Return to initial position
oViewCursor.gotoRange(oSaveEndSelection,false) &apos;Go to end of text to check page changes
oViewCursor.goLeft(1,false)
&apos;Set saved position to initial state
oSaveEndSelection = oViewCursor.Text.createTextCursorByRange(oViewCursor)
Function breakParaAtCursor() As Object
Dim oViewCursor As Object
Dim oTextCursor As Object
Dim leftMargin As Long
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oTextCursor = oViewcursor.Text.createTextCursorByRange(oViewCursor)
If NOT oTextCursor.isEndOfParagraph() Then
oTextCursor.goLeft(1,false)
oTextCursor.goRight(2,true)
insertHyphen(oTextCursor)
oTextCursor.goLeft(1,false)
oViewCursor.goToRange(oTextCursor,false)
leftMargin = oViewCursor.ParaLeftMargin
insertPara
oViewCursor.ParaFirstLineIndent = leftMargin
oTextCursor.goLeft(1,false)
oViewCursor.goToRange(oTextCursor,false)
breakParaAtCursor = oViewcursor.Text.createTextCursorByRange(oViewCursor)
Else
&apos;oTextCursor.goRight(1,false)
&apos;oViewCursor.goToRange(oTextCursor,false)
&apos;oViewCursor.BreakType = com.sun.star.style.BreakType.PAGE_BEFORE
&apos;oTextCursor.goLeft(1,false)
&apos;oViewCursor.goToRange(oTextCursor,false)
breakParaAtCursor = oViewcursor.Text.createTextCursorByRange(oViewCursor)
EndIf
End Function
oViewCursor.jumpToPreviousPage() sub insertPara
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;)
dispatcher.executeDispatch(document, &quot;.uno:InsertPara&quot;, &quot;&quot;, 0, Array())
end sub
Function canShrinkContent() As Boolean
Dim oViewCursor As Object
Dim oTextCursor As Object
Dim oSavePosition As Object
Dim oStartPosition As Object
Dim initPageNum As Long
Dim startPageNum As Long
oViewCursor = ThisComponent.CurrentController.getViewCursor()
oSavePosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
canShrinkContent = true
&apos;In endntote footnote or table shrink is not possible
If oViewCursor.Text.supportsService(&quot;com.sun.star.text.Endnote&quot;) OR _
oViewCursor.Text.supportsService(&quot;com.sun.star.text.Footnote&quot;) OR _
oViewCursor.Text.supportsService(&quot;com.sun.star.text.CellProperties&quot;) Then
canShrinkContent = false
oViewCursor.goToRange(oSavePosition,false)
Exit Function
EndIf
initPageNum = oViewcursor.getPage()
oViewCursor.JumpToPreviousPage(false)
oViewCursor.jumpToStartOfPage() oViewCursor.jumpToStartOfPage()
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor) startPageNum = oViewcursor.getPage()
&apos;If one of textRanges is Footnote or Endnote we can&apos;t select them so it is better to exit now &apos;No previous page exists
If oTextCursor.Text.supportsService(&quot;com.sun.star.text.Endnote&quot;) OR oTextCursor.Text.supportsService(&quot;com.sun.star.text.Footnote&quot;) Or oTextCursor.Text.supportsService(&quot;com.sun.star.text.CellProperties&quot;) Then If startPageNum = initPageNum Then
shrinkPageContent = false oViewCursor.goToRange(oSavePosition,false)
oViewCursor.gotoRange(oViewCurInitPosition,false) canShrinkContent = false
Exit Sub Exit Function
EndIf EndIf
If oSaveEndSelection.Text.supportsService(&quot;com.sun.star.text.Endnote&quot;) OR oSaveEndSelection.Text.supportsService(&quot;com.sun.star.text.Footnote&quot;) Or oTextCursor.Text.supportsService(&quot;com.sun.star.text.CellProperties&quot;) Then &apos;If current paragraph has page break before
shrinkPageContent = false If oSavePosition.BreakType &lt;&gt; 0 Then
oViewCursor.gotoRange(oViewCurInitPosition,false) oTextCursor = oSavePosition.Text.createTextCursorByRange(oSavePosition)
Exit Sub oTextCursor.gotoStartOfParagraph(false)
oViewCursor.goToRange(oTextCursor,false)
If oViewCursor.getPage() = initPageNum Then
canShrinkContent = false
oViewCursor.goToRange(oSavePosition,false)
Exit Function
EndIf EndIf
oTextCursor.gotoRange(oSaveEndSelection,true) EndIf
oViewCursor.gotoRange(oSaveEndSelection,false) &apos;Go to end of text to check page changes oViewCursor.goToRange(oSavePosition,false)
If shrinkIntervalHeight(oTextCursor,oViewCursor,scaleIntervalHeight) Then
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor) oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
If oTextCursor.isEndOfParagraph() Then Do While oViewcursor.getPage() = initPageNum
pos1 = oViewCursor.getPage() oTextCursor.gotoPreviousParagraph(false)
oViewCursor.goRight(1,false) oViewCursor.goToRange(oTextCursor,false)
pos2 = oViewCursor.getPage() If oTextCursor.BreakType &lt;&gt; 0 AND oViewcursor.getPage() = initPageNum Then
&apos;If we moved right to the next para and page haven&apos;t changed insert pageBreak canShrinkContent = false
If pos1 = pos2 Then oViewCursor.goToRange(oSavePosition,false)
insertPageBreak Exit Function
End If EndIf
Else Loop
insertPageBreak oViewCursor.goToRange(oSavePosition,false)
If Not IsNull(oTextCursor.ParaFirstLineIndent) Then End Function
oTextCursor.ParaFirstLineIndent = 0
End If
End If
Exit Sub
End If
If shrinkCharHeight(oTextCursor,oViewCursor,scaleCharHeight) Then
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
If oTextCursor.isEndOfParagraph() Then
pos1 = oViewCursor.getPage()
oViewCursor.goRight(1,false)
pos2 = oViewCursor.getPage()
&apos;If we moved right to the next para and page haven&apos;t changed insert pageBreak
If pos1 = pos2 Then
insertPageBreak
End If
Else
insertPageBreak
If Not IsNull(oTextCursor.ParaFirstLineIndent) Then
oTextCursor.ParaFirstLineIndent = 0
End If
End If
Exit Sub
End If
If shrinkKern(oTextCursor,oViewCursor,kernShrinkValue) Then
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
If oTextCursor.isEndOfParagraph() Then
pos1 = oViewCursor.getPage()
oViewCursor.goRight(1,false)
pos2 = oViewCursor.getPage()
&apos;If we moved right to the next para and page haven&apos;t changed insert pageBreak
If pos1 = pos2 Then
insertPageBreak
End If
Else
insertPageBreak
If Not IsNull(oTextCursor.ParaFirstLineIndent) Then
oTextCursor.ParaFirstLineIndent = 0
End If
End If
Exit Sub
End If
End Sub Function shrinkPageContent() As Boolean
Dim oViewCursor As Object
Sub splitPages Dim oTextCursor As Object
Dim oViewCursor As Object &apos;View cursor Dim initPosition As Object
Dim oText &apos;Text object in current document Dim initPageNum As String
Dim oSaveEndSelection &apos;Text cursor Dim oSaveEndSelection As Object
&apos;saveCurrentVersion Dim oEnum As Variant
Dim oPar As Object
Dim startOfPara As Boolean
Dim targetContent() As Object
Dim delta As Double
Dim rounds As Integer
delta = 0.1
rounds = 3
Dim roundsLineHeight As Integer
roundsLineHeight = 3
Dim i As Integer
Dim j As Integer
shrinkPageContent = false
oViewCursor = ThisComponent.CurrentController.getViewCursor() oViewCursor = ThisComponent.CurrentController.getViewCursor()
Dim saveFirstLineIndent As Boolean
&apos;Check if we are at start of paragraph go to the end of previous paragraph configureCursorPositionForContentShrink()
If oViewCursor.Text.createTextCursorByRange(oViewCursor).isEndOfParagraph() Then If Not canShrinkContent() Then
oViewCursor.goRight(1,false) Exit Function
End If EndIf
If oViewCursor.Text.createTextCursorByRange(oViewCursor).isStartOfParagraph() Then initPageNum = oViewcursor.getPage()
saveFirstLineIndent = true initPosition = breakParaAtCursor()
Else oViewcursor.goToRange(initPosition,false)
saveFirstLineIndent = false oViewCursor.JumpToPreviousPage(false)
End If oViewCursor.jumpToStartOfPage()
startPosition = oViewCursor.Text.createTextCursorByRange(oViewCursor)
targetContent = selectContentToShrink(initPosition,startPosition)
For i = LBound(targetContent) To Ubound(targetContent)
shrinkContentSpacing(targetContent(i))
If isContentPageChanged(initPosition, initPageNum) Then
Exit Function
EndIf
Next i
&apos;TODO: Уменьшая отступы каждого параграфа от и до следующего
&apos; а также уменьшая кернинг, межстрочное расстояние и кегль
For j = 0 To rounds
For i = LBound(targetContent) To Ubound(targetContent)
If (j &gt; 0) Then
decreaseContentCharHeight(targetContent(i), delta)
EndIf
If shrinkContentWithKerning(targetContent(i)) Then
balanceContentTail(targetContent(i),false)
EndIf
If isContentPageChanged(initPosition, initPageNum) Then
Exit Function
EndIf
Next i
Next j
For j = 1 To roundsLineHeight
For i = LBound(targetContent) To Ubound(targetContent)
decreaseIntervalHeight(targetContent(i))
If isContentPageChanged(initPosition, initPageNum) Then
Exit Function
EndIf
Next i
Next j
For j = 1 To roundsLineHeight
For i = LBound(targetContent) To Ubound(targetContent)
increaseIntervalHeight(targetContent(i))
Next i
Next j
For i = LBound(targetContent) To Ubound(targetContent)
increaseContentCharHeight(targetContent(i), delta * rounds )
Next i
oViewCursor.goRight(1,false) End Function
oSaveEndSelection = oViewCursor.Text.createTextCursorByRange(oViewCursor)
&apos;Select last 2 characters
oViewCursor.goLeft(2,true)
If Len(oViewCursor.String) = 2 Then Function increaseIntervalHeight(oContent As Object) As Boolean
&apos;Insert hyphen if needed increaseIntervalHeight = false
oLastChars = oViewCursor.Text.createTextCursorByRange(oViewCursor) Dim oParEnum As Object
insertHyphen(oLastChars,oViewCursor) Dim oPar As Object
End If Dim oSecEnum As Object
&apos;Return to initial position Dim oParSection As Object
oViewCursor.gotoRange(oSaveEndSelection,false) &apos;Go to end of text to check page changes Dim pageNum As Integer
oViewCursor.goLeft(1,false) Dim lineSpacing As Object
insertPageBreak If Not IsMissing(oContent.ParaLineSpacing) Then
If Not saveFirstLineIndent Then lineSpacing = oContent.ParaLineSpacing
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor) If lineSpacing.Mode = 3 Then
If Not IsNull(oTextCursor.ParaFirstLineIndent) Then lineSpacing.Height = lineSpacing.Height / 0.98
oTextCursor.ParaFirstLineIndent = 0 oContent.ParaLineSpacing = lineSpacing
increaseIntervalHeight = true
End If End If
End If End If
End Function
Function decreaseIntervalHeight(oContent As Object) As Boolean
decreaseIntervalHeight = false
Dim oParEnum As Object
Dim oPar As Object
Dim oSecEnum As Object
Dim oParSection As Object
Dim pageNum As Integer
Dim lineSpacing As Object
If Not IsMissing(oContent.ParaLineSpacing) Then
lineSpacing = oContent.ParaLineSpacing
If lineSpacing.Mode = 3 Then
lineSpacing.Height = lineSpacing.Height * 0.98
oContent.ParaLineSpacing = lineSpacing
decreaseIntervalHeight = true
End If
EndIf
End Function
Sub decreaseContentCharHeight(oContent As Object, delta As double)
Dim contentEnum As Object&apos;paragraph enumeration
Dim textContentElement As Object&apos;current paragraph
Dim curHeight As Double
Dim oTextCursor As Object
contentEnum = oContent.createEnumeration()
Do While contentEnum.hasMoreElements()
textContentElement = contentEnum.nextElement()
oTextCursor = textContentElement.Text.createTextCursorByRange(textContentElement)
curHeight = oTextCursor.charHeight
oTextCursor.charHeight = roundHeight(curHeight) - delta
Loop
End Sub End Sub
Sub increaseContentCharHeight(oContent As Object, delta As double)
Dim contentEnum As Object&apos;paragraph enumeration
Dim textContentElement As Object&apos;current paragraph
Dim curHeight As Double
Function shrinkScaleWidth(oTextCursor,oViewCursor,iterations) As Boolean Dim oTextCursor As Object
Dim oParEnum &apos;paragraph enumeration contentEnum = oContent.createEnumeration()
Dim oPar &apos;current paragraph Do While contentEnum.hasMoreElements()
Dim oSecEnum &apos;sections enumeration textContentElement = contentEnum.nextElement()
Dim oParSection &apos;paragraph text section oTextCursor = textContentElement.Text.createTextCursorByRange(textContentElement)
Dim pageNum As Integer curHeight = oTextCursor.charHeight
pageNum = oViewCursor.getPage() oTextCursor.charHeight = roundHeight(curHeight) + delta
For i = 1 To iterations Step 1
oParEnum = oTextCursor.createEnumeration()
Do While oParEnum.hasMoreElements()
oPar = oParEnum.nextElement()
If oPar.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
oPar.charScaleWidth = 100 - i
If pageNum &lt;&gt; oViewCursor.getPage() Then
shrinkScaleWidth = true
Exit Function
End If
End If
Loop Loop
Next i End Sub
shrinkScaleWidth = false
End Function
Function shrinkKern(oTextCursor,oViewCursor,iterations) As Boolean Function roundHeight(nHeight) As Double
Dim oParEnum &apos;paragraph enumeration
Dim oPar &apos;current paragraph
Dim oSecEnum &apos;sections enumeration
Dim oParSection &apos;paragraph text section
Dim pageNum As Integer
pageNum = oViewCursor.getPage()
For i = 2 To iterations Step 2
oParEnum = oTextCursor.createEnumeration()
Do While oParEnum.hasMoreElements()
oPar = oParEnum.nextElement()
If oPar.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
oPar.CharKerning = 0 - i
If pageNum &lt;&gt; oViewCursor.getPage() Then
shrinkKern = true
Exit Function
End If
End If
Loop
Next i
shrinkKern = false
End Function
Function shrinkCharHeight(oTextCursor,oViewCursor,iterations) As Boolean
Dim oParEnum &apos;paragraph enumeration
Dim oPar &apos;current paragraph
Dim oSecEnum &apos;sections enumeration
Dim oParSection &apos;paragraph text section
Dim pageNum As Integer
pageNum = oViewCursor.getPage()
For i = 1 To iterations Step 1
oParEnum = oTextCursor.createEnumeration()
Do While oParEnum.hasMoreElements()
oPar = oParEnum.nextElement()
If oPar.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
oPar.charHeight = roundHeight(oPar.charHeight) - 0.1
If pageNum &lt;&gt; oViewCursor.getPage() Then
shrinkCharHeight = true
Exit Function
End If
End If
Loop
Next i
shrinkCharHeight = false
End Function
Function roundHeight(nHeight)
Dim lHeight As Double Dim lHeight As Double
Dim hHeight As Double Dim hHeight As Double
lHeight = Int(nHeight) lHeight = Int(nHeight)
@ -1387,127 +1423,74 @@ Function roundHeight(nHeight)
roundHeight=lHeight roundHeight=lHeight
End Function End Function
Function shrinkContentSpacing(oContent As Object) As Boolean
Function shrinkIntervalHeight(oTextCursor,oViewCursor,iterations) As Boolean &apos; Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; )
Dim oParEnum &apos;paragraph enumeration shrinkContentSpacing = false
Dim oPar &apos;current paragraph If oContent.ParaTopMargin &gt; MIN_SPACING_TO_SHRINK Then
Dim oSecEnum &apos;sections enumeration oContent.ParaTopMargin = 0
Dim oParSection &apos;paragraph text section EndIf
Dim pageNum As Integer If oContent.ParaBottomMargin &gt; MIN_SPACING_TO_SHRINK Then
Dim lineSpacing oContent.ParaTopMargin = 0
pageNum = oViewCursor.getPage() EndIf
For i = 1 To iterations Step 1
oParEnum = oTextCursor.createEnumeration()
Do While oParEnum.hasMoreElements()
oPar = oParEnum.nextElement()
If oPar.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then
lineSpacing = oPar.ParaLineSpacing
If lineSpacing.Mode = 3 Then
lineSpacing.Height = lineSpacing.Height * 0.98
oPar.ParaLineSpacing = lineSpacing
End If
If pageNum &lt;&gt; oViewCursor.getPage() Then
shrinkIntervalHeight = true
Exit Function
End If
End If
Loop
Next i
shrinkIntervalHeight = false
End Function End Function
Sub savecursor Function selectContentToShrink(initPosition As Object, startPosition As Object)
Dim oViewCursor As Object &apos;View cursor Dim oViewCursor As Object
Dim oTextCursor &apos;Text cursor Dim oTextCursor As Object
Dim oSaveEndSelection &apos;Text cursor Dim startPageNum As Long
Dim oEnum &apos;Cursor enumeration Dim prevPageNum As Long
Dim oText &apos;Text object in current document Dim savePosition As Object
Dim oPar &apos;Current paragraph Dim foundPrevPara As Boolean
Dim sTextContent$ &apos;Service name for text content. Dim targetContent() As Variant
sTextContent = &quot;com.sun.star.text.TextContent&quot;
oViewCursor = ThisComponent.CurrentController.getViewCursor() oViewCursor = ThisComponent.CurrentController.getViewCursor()
oSaveEndSelection = oViewCursor.Text.createTextCursorByRange(oViewCursor) oViewcursor.goToRange(startPosition,false)
REM oViewCursor.getText.insertString(oViewCursor.getStart(), CHR$(257), False) prevPageNum = oViewcursor.getPage()
&apos;If Not oViewCursor.jumpToPreviousPage() Then Exit Sub oViewcursor.goToRange(initPosition,false)
oViewCursor.jumpToPreviousPage() startPageNum = oViewcursor.getPage()
oViewCursor.jumpToStartOfPage()
&apos;oViewCursor.goUp(10,true)
&apos;oViewCursor.getPage()
oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor) oTextCursor = oViewCursor.Text.createTextCursorByRange(oViewCursor)
&apos;oTextCursor.gotoStart(false) Do While startPageNum = oViewcursor.getPage() OR prevPageNum = oViewcursor.getPage()
oTextCursor.gotoRange(oSaveEndSelection,true) savePosition = oTextCursor.getStart()
oTextCursor.gotoStartOfParagraph(true)
oParEnum = oTextCursor.createEnumeration() oViewCursor.goToRange(oTextCursor,false)
oViewCursor.collapseToStart()
Do While oParEnum.hasMoreElements() If Len(oTextCursor.String) &gt; 0 Then
Dim oSubSection If (startPageNum = oViewcursor.getPage() OR prevPageNum = oViewcursor.getPage()) Then
Dim oSecEnum AddToArray(targetContent,oTextCursor.Text.createTextCursorByRange(oTextCursor))
Else
Do While oParEnum.hasMoreElements() oTextCursor.goToRange(savePosition,false)
oPar = oParEnum.nextElement() oViewCursor.goToRange(oTextCursor,false)
oPar.charScaleWidth = oPar.charScaleWidth - 1 oViewCursor.JumpToStartOfPage(false)
Dim charHeight oTextCursor.goToRange(oViewCursor,true)
charHeight= oPar.charHeight AddToArray(targetContent,oTextCursor.Text.createTextCursorByRange(oTextCursor))
Dim lineSpacing EndIf
lineSpacing = oPar.ParaLineSpacing EndIf
MsgBox lineSpacing.Mode &amp; lineSpacing.Height foundPrevPara = oTextCursor.gotoPreviousParagraph(false)
If oPar.supportsService(&quot;com.sun.star.text.Paragraph&quot;) Then If (foundPrevPara = false) Then
nPars = nPars + 1 Exit Do
oSecEnum = oPar.createEnumeration() EndIf
s = s &amp; nPars &amp; &quot;:&quot; oTextCursor.gotoEndOfParagraph(false)
Do While oSecEnum.hasMoreElements() oViewCursor.goToRange(oTextCursor,false)
oParSection = oSecEnum.nextElement()
oParSection.charScaleWidth = oParSection.charScaleWidth - 1
oParSection.CharHeight = oParSection.CharHeight * 0.99
s = s &amp; oParSection.TextPortionType &amp; &quot; Scale &quot; &amp; oParSection.CharScaleWidth &amp; &quot; Scale &quot; &amp; oParSection.CharHeight &amp; &quot;:&quot;
Loop Loop
s = s &amp; CHR$(10) selectContentToShrink = targetContent
If nPars MOD 10 = 0 Then End Function
MsgBox s, 0, &quot;Paragraph Text Sections&quot;
s = &quot;&quot;
End If
End If
Loop
Loop
End Sub
Sub insertPageBreak
sub insertPageBreak
rem ----------------------------------------------------------------------
rem define variables
dim document as object dim document as object
dim dispatcher as object dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;) dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;)
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, &quot;.uno:InsertPagebreak&quot;, &quot;&quot;, 0, Array()) dispatcher.executeDispatch(document, &quot;.uno:InsertPagebreak&quot;, &quot;&quot;, 0, Array())
end sub
Sub insertHyphen(oTextCursor,oViewCursor)
Dim lastChars
&apos;lastChars = oTextCursor.getString()
replacementhyp
&apos;MsgBox lastChars
End Sub End Sub
sub replacementhyp Sub insertHyphen(twoCharactersToHyphen As Object)
rem ---------------------------------------------------------------------- Dim oViewCursor As Object
rem define variables Dim document as Object
dim document as object Dim dispatcher as Object
dim dispatcher as object oViewCursor = ThisComponent.CurrentController.getViewCursor()
rem ---------------------------------------------------------------------- oViewCursor.goToRange(twoCharactersToHyphen,false)
rem get access to the document
document = ThisComponent.CurrentController.Frame document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;) dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;)
rem ----------------------------------------------------------------------
dim args1(21) as new com.sun.star.beans.PropertyValue dim args1(21) as new com.sun.star.beans.PropertyValue
args1(0).Name = &quot;SearchItem.StyleFamily&quot; args1(0).Name = &quot;SearchItem.StyleFamily&quot;
args1(0).Value = 2 args1(0).Value = 2
@ -1534,6 +1517,7 @@ sub replacementhyp
args1(11).Name = &quot;SearchItem.SearchString&quot; args1(11).Name = &quot;SearchItem.SearchString&quot;
args1(11).Value = &quot;([a-zA-Zа-яА-Я])([a-zA-Zа-яА-Я])&quot; args1(11).Value = &quot;([a-zA-Zа-яА-Я])([a-zA-Zа-яА-Я])&quot;
args1(12).Name = &quot;SearchItem.ReplaceString&quot; args1(12).Name = &quot;SearchItem.ReplaceString&quot;
&apos; &quot;$1 U+00AD $2&quot;
args1(12).Value = &quot;$1­$2&quot; args1(12).Value = &quot;$1­$2&quot;
args1(13).Name = &quot;SearchItem.Locale&quot; args1(13).Name = &quot;SearchItem.Locale&quot;
args1(13).Value = 255 args1(13).Value = 255
@ -1614,6 +1598,8 @@ Function getPageNumber(cursor As Object) As String
oField.NumberingType = 4 oField.NumberingType = 4
oField.SubType = com.sun.star.text.PageNumberType.CURRENT oField.SubType = com.sun.star.text.PageNumberType.CURRENT
oTextCursor.Text.insertTextContent(oTextCursor, oField, False) oTextCursor.Text.insertTextContent(oTextCursor, oField, False)
oField.Anchor.CharHidden = False
oField.Anchor.CharHidden = True
getPageNumber = oField.getPresentation(false) getPageNumber = oField.getPresentation(false)
oTextCursor.Text.removeTextContent(oField) oTextCursor.Text.removeTextContent(oField)
End Function End Function

View file

@ -11,4 +11,5 @@
<library:element library:name="MakeUp"/> <library:element library:name="MakeUp"/>
<library:element library:name="PageStyles"/> <library:element library:name="PageStyles"/>
<library:element library:name="Translations"/> <library:element library:name="Translations"/>
<library:element library:name="Endnotes"/>
</library:library> </library:library>

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd">
<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="toc_links" dlg:left="74" dlg:top="15" dlg:width="346" dlg:height="284" dlg:closeable="true" dlg:moveable="true">
<dlg:bulletinboard>
<dlg:button dlg:id="Ok" dlg:tab-index="0" dlg:left="125" dlg:top="265" dlg:width="96" dlg:height="17" dlg:value="CommandButton1" dlg:button-type="ok"/>
<dlg:text dlg:id="message" dlg:tab-index="1" dlg:left="5" dlg:top="4" dlg:width="334" dlg:height="24" dlg:value="message" dlg:align="center" dlg:multiline="true"/>
</dlg:bulletinboard>
</dlg:window>

View file

@ -2,9 +2,9 @@
<description xmlns="http://openoffice.org/extensions/update/2006" <description xmlns="http://openoffice.org/extensions/update/2006"
xmlns:xlink="http://www.w3.org/1999/xlink"> xmlns:xlink="http://www.w3.org/1999/xlink">
<identifier value="pro.litvinovg.epublishing"/> <identifier value="pro.litvinovg.epublishing"/>
<version value="0.5.4" /> <version value="0.7.16" />
<update-download> <update-download>
<src xlink:href="https://dev.litvinovg.pro/litvinovg/epublishing/uploads/1e363c53d42b00c3501ef83225cf91ab/ePublishing.oxt" /> <src xlink:href="https://dev.litvinovg.pro/litvinovg/epublishing/uploads/9e6d9eaeb144d7a67e94c8460492a040/epublishing.oxt" />
</update-download> </update-download>
<release-notes> <release-notes>
<src xlink:href="https://dev.litvinovg.pro/litvinovg/epublishing/-/raw/master/releasenotes.txt" lang="en" /> <src xlink:href="https://dev.litvinovg.pro/litvinovg/epublishing/-/raw/master/releasenotes.txt" lang="en" />

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

263
icons/addon_icon.svg Normal file
View file

@ -0,0 +1,263 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="67.73333mm"
height="67.73333mm"
viewBox="0 0 67.73333 67.73333"
version="1.1"
id="svg8655"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="addon_icon.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview8657"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="2.0308884"
inkscape:cx="112.01994"
inkscape:cy="108.32697"
inkscape:window-width="1920"
inkscape:window-height="992"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
inkscape:snap-global="false" />
<defs
id="defs8652" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-104.6842,-132.32068)">
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
sodipodi:nodetypes="ccccccccccccccccccccc"
inkscape:connector-curvature="0"
d="m 132.37039,148.26988 h -2.07136 v -0.57304 h 2.07136 v -1.68816 h -1.38092 v -0.57303 h 1.38092 v -2.03656 h -4.83319 v 15.16484 h 4.83319 v -5.70978 h -2.07136 v -0.57304 h 2.07136 v -1.7191 h -1.38092 v -0.57303 h 1.38092 z"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.7;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="polygon2848-0-7"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
inkscape:connector-curvature="0"
d="m 123.12724,144.21435 h 1.30516 l -0.65258,-2.26642 z"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="polygon2850-4-7"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
inkscape:connector-curvature="0"
d="m 122.94511,145.10139 -1.08709,2.86162 h 3.88288 l -1.0871,-2.86162 z"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.714155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="polygon2854-3-4"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<rect
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.7;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
id="rect9098"
width="4.2093248"
height="8.8333616"
x="121.6905"
y="148.86641"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
id="path2860-2-0"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.7;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 117.70046,140.80732 -2.45727,5.17649 1.15636,3.65475 h 2.89147 l 1.15637,-3.65475 -2.45784,-5.17649 v 3.8386 a 0.57822907,0.91357072 0 1 1 -0.28909,0 z m -1.30091,9.28765 v 8.34889 h 2.89147 v -8.34889 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
id="path1875-1-2"
style="clip-rule:evenodd;fill:#b6b6b6;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round;stroke-linecap:round"
d="m 111.57969,157.82045 v 32.51431 h 2.7094 v -28.51764 c 0,-0.34404 0.26584,-0.6222 0.59428,-0.6222 h 23.37945 23.3748 c 0.32864,0 0.59428,0.27816 0.59428,0.6222 v 28.51764 h 2.70991 v -32.51431 z m 26.68313,33.75867 v 0 h -23.37945 -0.0145 -3.87884 -0.0196 -4.02818 v 2.9347 c 0,0.80971 0.31401,1.54308 0.82114,2.07428 0.51184,0.53145 1.21262,0.86506 1.98541,0.86506 h 57.02856 c 0.77299,0 1.47311,-0.33361 1.98024,-0.8599 0.50695,-0.53636 0.82114,-1.27024 0.82114,-2.07997 v -2.9347 h -4.02818 -0.015 -3.87884 -0.0191 z m -0.0944,0.86744 c 0.55085,0 1.04846,0.2331 1.41077,0.61238 0.35756,0.3797 0.58446,0.90046 0.58446,1.47743 0,0.57677 -0.2269,1.10308 -0.58446,1.47744 -0.36231,0.3797 -0.85992,0.61235 -1.41077,0.61235 -0.5506,0 -1.05288,-0.23265 -1.41025,-0.61235 l -0.0434,-0.0455 c -0.33828,-0.37436 -0.54105,-0.88053 -0.54105,-1.43195 0,-0.57697 0.22217,-1.09773 0.58446,-1.47743 0.35758,-0.37931 0.85965,-0.61238 1.41025,-0.61238 z m 0,1.24489 c -0.22217,0 -0.4249,0.0959 -0.57464,0.24755 -0.14505,0.15171 -0.23668,0.36443 -0.23668,0.59737 0,0.22262 0.0819,0.42498 0.21239,0.57153 l 0.0243,0.0254 c 0.14983,0.15661 0.35265,0.24805 0.57464,0.24805 0.22217,0 0.42495,-0.0914 0.56999,-0.24805 0.14484,-0.15214 0.23668,-0.36412 0.23668,-0.59685 0,-0.23273 -0.23668,-0.59687 -0.23668,-0.59687 v 0 c 0,0 -0.34759,-0.24755 -0.56999,-0.24755 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png"
sodipodi:nodetypes="cccsscsscccccccccccscsscsccccccccscsccscccccscsscssscc" />
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:#3a3a3a;fill-opacity:1;stroke:#3a3a3a;stroke-width:1.76822;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-5-5-5-6"
width="20.554724"
height="1.2916876"
x="123.94579"
y="168.00031"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:#3a3a3a;fill-opacity:1;stroke:#3a3a3a;stroke-width:1.76822;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-5-4"
width="25.511669"
height="1.2916876"
x="119.06848"
y="187.27496"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:#3a3a3a;fill-opacity:1;stroke:#3a3a3a;stroke-width:1.76822;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-5-8-5-1-9"
width="25.511669"
height="1.2916876"
x="118.98883"
y="172.7865"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:#3a3a3a;fill-opacity:1;stroke:#3a3a3a;stroke-width:1.76822;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-0-4-8-3-6-8"
width="25.511669"
height="1.2916876"
x="119.06848"
y="182.48865"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:#3a3a3a;fill-opacity:1;stroke:#3a3a3a;stroke-width:1.97035;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-0-0-6-3-0-4"
width="22.040318"
height="1.2916876"
x="119.06848"
y="177.70239"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<ellipse
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.639035;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="path3451-4-2"
cx="144.54961"
cy="158.14117"
rx="4.860126"
ry="4.6989589"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
id="path2846-4-4"
style="fill:#cecece;fill-opacity:1;stroke:#000000;stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 156.56806,135.84201 -0.40979,1.97146 a 11.102961,10.641572 0 0 0 -1.77767,0.4594 l -1.33894,-1.43245 a 13.045401,12.503294 0 0 0 -2.74298,1.53683 l 0.61908,1.80713 a 11.269889,10.801564 0 0 0 -1.3038,1.25005 l -1.88567,-0.59375 a 13.044093,12.50204 0 0 0 -1.60352,2.62929 l 1.49397,1.28313 a 11.097151,10.636004 0 0 0 -0.47904,1.70378 l -2.05673,0.39325 v 3.05356 l 2.05673,0.39325 a 11.095506,10.634428 0 0 0 0.39222,1.46399 l -0.73846,0.41032 a 6.8815349,6.5955698 0 0 0 -1.0976,-0.32917 l -0.64699,-1.45471 h -1.81591 l -0.64699,1.45471 a 6.8863609,6.6001955 0 0 0 -1.09761,0.32866 l -1.39319,-0.77411 a 8.1941513,7.8536402 0 0 0 -1.46968,1.00819 l 0.35553,1.48622 -0.67283,0.87177 -1.62109,0.14211 a 7.831057,7.5056343 0 0 0 -0.5674,1.61748 l 1.33687,1.01285 v 1.07953 l -1.33687,1.01338 a 7.8336105,7.5080817 0 0 0 0.5674,1.61695 l 1.62109,0.1421 0.67231,0.87181 -0.35501,1.48672 a 8.1953078,7.8547488 0 0 0 1.46916,1.00769 l 1.39371,-0.77412 a 6.8815349,6.5955698 0 0 0 1.09761,0.32867 l 0.64699,1.40509 h 1.81591 l 0.64699,-1.40509 a 6.8835862,6.5975361 0 0 0 1.0976,-0.32867 l 1.3932,0.77412 a 8.1941513,7.8536402 0 0 0 1.46968,-1.00769 l -0.35553,-1.48672 0.67282,-0.87128 1.62109,-0.14211 a 7.8318192,7.5063648 0 0 0 0.56741,-1.61747 l -0.50488,-0.38293 a 13.044718,12.502639 0 0 0 1.38441,0.66817 l 1.33842,-1.43245 a 11.105361,10.643874 0 0 0 1.77819,0.4594 l 0.40979,1.97146 h 3.18637 l 0.40979,-1.97146 a 11.10309,10.641698 0 0 0 1.77767,-0.4589 l 1.33894,1.43195 a 13.046811,12.504646 0 0 0 2.74298,-1.53685 l -0.61908,-1.80661 a 11.274289,10.805781 0 0 0 1.30431,-1.25058 l 1.88516,0.59378 a 13.044718,12.502639 0 0 0 1.60404,-2.62879 l -1.49449,-1.28363 a 11.105231,10.643748 0 0 0 0.47905,-1.70378 l 2.05723,-0.39325 v -3.05356 l -2.05723,-0.39275 a 11.097067,10.635923 0 0 0 -0.47905,-1.70428 l 1.49449,-1.28313 a 13.046811,12.504646 0 0 0 -1.60352,-2.62879 l -1.88568,0.59325 a 11.269889,10.801564 0 0 0 -1.30431,-1.25005 l 0.6196,-1.80713 a 13.044718,12.502639 0 0 0 -2.74298,-1.53683 l -1.33894,1.43245 a 11.105231,10.643748 0 0 0 -1.77819,-0.4594 l -0.40979,-1.97146 z m 1.53272,5.37229 a 7.4734009,7.1628407 0 0 1 7.53391,7.16287 7.4734009,7.1628407 0 0 1 -7.47344,7.16286 7.4734899,7.1629247 0 0 1 -0.0605,-14.32573 z m -0.16433,4.38269 a 2.7811034,2.6888794 0 0 0 -2.77606,2.68872 2.7811034,2.6888794 0 0 0 2.78071,2.68872 2.7811034,2.6888794 0 0 0 2.78123,-2.68872 2.7811034,2.6888794 0 0 0 -2.78123,-2.68872 2.7811034,2.6888794 0 0 0 -0.005,0 z m -13.79554,8.63409 a 4.0105414,3.8438817 0 1 1 -4.01061,3.84421 4.0105414,3.8438817 0 0 1 4.01061,-3.84421 z m 0.046,1.58647 a 2.2417849,2.1674453 0 0 0 -2.24172,2.16731 2.2417849,2.1674453 0 0 0 2.24172,2.16781 2.2417849,2.1674453 0 0 0 2.24173,-2.16781 2.2417849,2.1674453 0 0 0 -2.24173,-2.16731 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:connector-curvature="0"
d="m 149.99326,167.37867 v -2.09802"
id="path1537-6-4"
style="fill:#3a3a3a;fill-opacity:1;stroke:#2b2b2b;stroke-width:1.33272;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
d="m 149.99327,188.56219 -1e-5,-17.80174"
id="path1506-9-0"
style="fill:#3a3a3a;fill-opacity:1;stroke:#2b2b2b;stroke-width:1.33272;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<ellipse
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
cx="149.99326"
cy="169.06958"
id="path1512-6-3"
style="fill:#000000;fill-opacity:0;fill-rule:nonzero;stroke:#2b2b2b;stroke-width:1.33272;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
rx="1.6157811"
ry="1.6908911"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:connector-curvature="0"
d="m 154.3994,172.16728 v -6.88663"
id="path1530-8-2"
style="fill:#3a3a3a;fill-opacity:1;stroke:#2b2b2b;stroke-width:1.33272;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
d="m 154.39941,188.61138 -10e-6,-13.06231"
id="path1510-0-0"
style="fill:#3a3a3a;fill-opacity:1;stroke:#2b2b2b;stroke-width:1.33272;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<ellipse
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
cx="154.39941"
cy="173.85822"
id="circle1514-8-8"
style="fill:#000000;fill-opacity:0;fill-rule:nonzero;stroke:#2b2b2b;stroke-width:1.33272;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
rx="1.6157811"
ry="1.6908911"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:connector-curvature="0"
d="m 158.80553,168.86349 v -3.58284"
id="path1523-6-6"
style="fill:#3a3a3a;fill-opacity:1;stroke:#2b2b2b;stroke-width:1.33272;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
d="M 158.80554,188.60154 V 172.24526"
id="path1508-7-9"
style="fill:#3a3a3a;fill-opacity:1;stroke:#2b2b2b;stroke-width:1.33272;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<ellipse
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
cx="158.80553"
cy="170.55444"
id="circle1516-5-9"
style="fill:#000000;fill-opacity:0;fill-rule:nonzero;stroke:#2b2b2b;stroke-width:1.33272;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
rx="1.6157811"
ry="1.6908911"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<ellipse
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
ry="1.1019053"
rx="1.1396987"
cy="148.22153"
cx="157.88336"
id="path3451-5-6-3-46-3"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.05;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
<rect
style="fill:none;fill-opacity:1;stroke:none;stroke-width:0.25995;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect4991-5-0-5-8"
width="67.73333"
height="67.73333"
x="104.6842"
y="132.32068"
ry="0.089716367"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
inkscape:export-filename="/home/sveta/Desktop/addon_icon.png" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

97
icons/decChar.svg Normal file
View file

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="67.73336mm"
height="67.73333mm"
viewBox="0 0 67.73336 67.73333"
version="1.1"
id="svg8011"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="decchar.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview8013"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="1.436055"
inkscape:cx="145.88578"
inkscape:cy="80.080498"
inkscape:window-width="1920"
inkscape:window-height="992"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
showguides="true"
inkscape:guide-bbox="true">
<sodipodi:guide
position="49.561416,111.39896"
orientation="0,-1"
id="guide827" />
</sodipodi:namedview>
<defs
id="defs8008" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-105.05268,-164.01051)">
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.256;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect982-9-2-94-5-6-5"
width="67.73333"
height="67.73333"
x="104.9709"
y="163.94754" />
<g
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="font-size:19.7556px;line-height:125%;font-family:Sans;letter-spacing:-1.83084px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19042;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="flowRoot2434-2-1"
transform="matrix(5.3096471,0,0,5.1940957,-519.98047,-757.85626)"
aria-label="T">
<path
id="path2701-7"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.7556px;font-family:Alice;-inkscape-font-specification:'Alice Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:1.26894px;word-spacing:-0.00183084px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19042;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 129.52705,177.74929 -10.8888,0.0147 -0.004,3.38911 c 0,0.11729 0.0461,0.21508 0.13831,0.29325 0.10537,0.0652 0.21736,0.0978 0.3359,0.0978 0.15806,0 0.30957,-0.0326 0.45445,-0.0978 0.14489,-0.0651 0.22381,-0.14992 0.23701,-0.25417 0.0922,-0.63852 0.1976,-1.12713 0.31615,-1.46593 0.13172,-0.35185 0.31615,-0.6125 0.55324,-0.78189 0.25026,-0.1824 0.5993,-0.28009 1.04713,-0.29315 h 1.36326 v 9.32363 c -0.0132,0.32578 -0.0461,0.59298 -0.0988,0.80148 -0.0395,0.19546 -0.1515,0.3648 -0.3359,0.50814 -0.18441,0.13036 -0.46756,0.1955 -0.84954,0.1955 -0.18438,0 -0.30951,0.0196 -0.37541,0.0587 -0.0658,0.0391 -0.10536,0.15635 -0.11856,0.35182 0,0.11728 0.0263,0.22151 0.079,0.31274 0.0658,0.0782 0.15808,0.11734 0.27662,0.11734 v -1e-4 c 0.85615,-0.0391 1.67937,-0.0587 2.46967,-0.0587 0.71126,0 1.48837,0.0196 2.33135,0.0587 0.11856,0 0.20416,-0.0391 0.25687,-0.11724 0.0659,-0.0912 0.0988,-0.19546 0.0988,-0.31274 -0.0132,-0.18242 -0.0526,-0.29324 -0.11855,-0.33232 -0.0527,-0.0521 -0.13833,-0.0782 -0.25687,-0.0782 h -0.11855 c -0.38197,0 -0.66513,-0.0652 -0.84953,-0.1955 -0.18442,-0.14334 -0.30296,-0.31268 -0.35566,-0.50814 -0.0395,-0.2085 -0.0658,-0.4757 -0.079,-0.80148 v -9.32363 h 1.34351 c 0.44783,0.013 0.79696,0.11071 1.04722,0.29315 0.25026,0.16939 0.43461,0.42349 0.55315,0.7623 0.11854,0.3388 0.23053,0.83397 0.3359,1.48552 0.0132,0.10424 0.0856,0.18897 0.21735,0.25417 0.14489,0.0652 0.2963,0.0978 0.45436,0.0978 0.11854,0 0.23052,-0.0326 0.3359,-0.0978 0.10535,-0.0782 0.15807,-0.17596 0.15807,-0.29325 z"
inkscape:connector-curvature="0" />
</g>
<path
d="m 117.74779,192.69455 13.39438,13.53973 -13.39438,13.53997 -0.0596,-6.49361 h -12.05501 v -14.09253 h 12.05498 z"
id="path966-9-6-0-26"
inkscape:connector-curvature="0"
style="fill:#0200ff;fill-opacity:1;stroke-width:5.49326"
sodipodi:nodetypes="cccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
d="m 160.06694,192.69455 -13.39438,13.53973 13.39438,13.53997 0.0596,-6.49361 h 12.05501 v -14.09253 h -12.05498 z"
id="path966-9-6-0-26-3"
inkscape:connector-curvature="0"
style="fill:#0200ff;fill-opacity:1;stroke-width:5.49326"
sodipodi:nodetypes="cccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.256;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect982-9-2-9-7-3-5"
width="67.73333"
height="67.73333"
x="104.97087"
y="163.94754" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

90
icons/decKern.svg Normal file
View file

@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="67.73333mm"
height="67.73333mm"
viewBox="0 0 67.733329 67.73333"
version="1.1"
id="svg2477"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="decKern.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview2479"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="1.436055"
inkscape:cx="84.606788"
inkscape:cy="174.78439"
inkscape:window-width="1920"
inkscape:window-height="992"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
inkscape:snap-global="false" />
<defs
id="defs2474" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-53.01717,-69.4972)">
<rect
y="69.4972"
x="53.01717"
height="67.73333"
width="67.73333"
id="rect982-9-2-94-5-3-3-2"
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.256;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path7281-5-8"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.7556px;line-height:125%;font-family:Alice;-inkscape-font-specification:'Alice Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:-1.83084px;word-spacing:-0.00183084px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.792791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 54.72981,114.22729 q -0.47856,0 -0.69129,-0.39538 -0.26594,-0.46127 -0.26594,-1.05436 0.0534,-0.98848 0.31904,-1.18615 0.26595,-0.1978 0.63811,-0.1978 0.37223,0 0.47856,0 1.59525,0 2.33969,-0.98846 0.74444,-1.05436 1.16986,-2.30641 0.47858,-1.31796 0.63808,-1.77924 l 9.30559,-27.281567 q 0.31906,-0.988455 0.31906,-1.581525 0,-1.186153 -0.74445,-1.71335 -0.74446,-0.527164 -2.07384,-0.856665 -0.90394,-0.197785 -1.11666,-0.395394 -0.21264,-0.197808 -0.21264,-1.120235 0,-0.79079 0.31905,-1.054359 0.3722,-0.263527 1.11667,-0.263527 2.65874,0 4.20081,0.527141 1.59524,0.461325 2.76511,1.976953 1.16984,1.449745 2.18017,4.481039 l 8.93336,27.281549 q 0.79761,2.5041 1.54206,3.75617 0.74446,1.25202 2.23334,1.31795 h 0.31907 q 0.53171,0 0.74444,0.2635 0.21263,0.19782 0.26593,1.12028 0,0.59308 -0.26593,1.05436 -0.21265,0.39538 -0.6913,0.39538 -3.40321,-0.1978 -5.84921,-0.1978 -3.1905,0 -6.59368,0.1978 -0.47859,0 -0.74446,-0.39538 -0.21263,-0.46128 -0.21263,-1.05436 0.0533,-0.92256 0.26592,-1.12028 0.21265,-0.2635 0.74445,-0.2635 1.80793,0 2.5524,-0.39538 0.74445,-0.46128 0.74445,-1.58156 0,-0.85664 -0.63811,-3.09718 l -1.80795,-5.4695 h -13.1342 q -1.32936,4.08567 -1.54206,4.74465 -0.15959,0.65895 -0.15959,0.72485 -0.63811,2.5041 -0.63811,3.22897 0,1.12027 0.79761,1.51565 0.79764,0.32957 3.03097,0.32957 h 0.31905 q 0.53173,0 0.74442,0.26349 0.21264,0.19782 0.26595,1.12029 0,0.59309 -0.26595,1.05437 -0.21264,0.39536 -0.69124,0.39536 -3.4032,-0.19781 -5.79605,-0.19781 -1.7016,0 -5.15796,0.19781 z M 64.833,98.0165 H 75.99973 L 70.62906,81.08085 h -0.15961 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path7283-2-4"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.7556px;line-height:125%;font-family:Alice;-inkscape-font-specification:'Alice Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:-1.83084px;word-spacing:-0.00183084px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.626217px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 94.09436,116.08178 q -0.41432,0.13465 -0.8041,-0.0973 -0.38979,-0.23215 -0.58234,-0.73936 L 79.18886,71.864135 q -0.10865,-0.513438 0.16248,-1.002634 0.27115,-0.489207 0.72739,-0.626989 0.41431,-0.134653 0.80409,0.09753 0.43173,0.229052 0.62676,0.78825 l 13.43523,43.386948 q 0.10865,0.51346 -0.16498,0.9507 -0.22921,0.48613 -0.68545,0.62393 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path7285-1-6"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.7556px;line-height:125%;font-family:Alice;-inkscape-font-specification:'Alice Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:-1.83084px;word-spacing:-0.00183084px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.792791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 100.76564,114.62338 q -1.59528,-5.40359 -5.05163,-17.19925 -3.45634,-11.79562 -5.0516,-17.067432 -0.90394,-2.833595 -1.75475,-3.953885 -0.8508,-1.120234 -2.4992,-1.515642 -0.21264,-0.06602 -0.63811,-0.131701 -0.42539,-0.13168 -0.58491,-0.395373 -0.10629,-0.329556 -0.10629,-0.988477 0,-0.790746 0.31904,-1.054316 0.37224,-0.263537 1.1167,-0.263537 3.98811,0 6.06192,1.51565 2.0738,1.515653 3.29681,5.403609 l 7.71036,25.700004 h 0.15962 l 7.33809,-26.424888 q 0.31907,-1.120257 0.31907,-1.713338 0,-0.922537 -0.63811,-1.186152 -0.58489,-0.329568 -2.02061,-0.329568 h -0.31909 q -0.53171,0 -0.74439,-0.197797 -0.21266,-0.263515 -0.26597,-1.186152 0,-0.59308 0.21265,-0.988476 0.26594,-0.461279 0.69129,-0.461279 3.45636,0.197787 5.79601,0.197787 1.01034,0 3.88178,-0.13168 l 1.11666,-0.06602 q 0.47858,0 0.69128,0.46128 0.26593,0.395395 0.26593,0.988486 -0.0533,0.922559 -0.26593,1.186142 -0.21264,0.197808 -0.74445,0.197808 -2.28651,0 -3.50952,0.922571 -1.16986,0.922558 -2.02065,3.558478 -1.59525,5.403587 -5.15794,17.528728 -3.50955,12.05923 -5.10481,17.59463 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
d="m 101.68467,117.40379 -13.026836,9.55858 13.026836,9.55873 0.0275,-4.76566 h 18.65975 v -9.58604 h -18.65975 z"
id="path966-9-6-0-2-0-0-9-4-7-4-9"
inkscape:connector-curvature="0"
style="fill:#001bff;fill-opacity:1;stroke-width:3.13936"
sodipodi:nodetypes="cccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
d="m 72.381126,117.25351 13.02687,9.55858 -13.02687,9.55873 -0.0275,-4.76566 H 53.693883 v -9.58604 h 18.659743 z"
id="path966-9-6-0-2-0-0-9-4-7-4-9-4"
inkscape:connector-curvature="0"
style="fill:#001bff;fill-opacity:1;stroke-width:3.13936"
sodipodi:nodetypes="cccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.2 KiB

153
icons/endnotes.svg Normal file
View file

@ -0,0 +1,153 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="67.73333mm"
height="67.73333mm"
viewBox="0 0 67.73333 67.73333"
version="1.1"
id="svg2486"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="endnotes.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview2488"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="1.6903844"
inkscape:cx="83.708771"
inkscape:cy="81.638236"
inkscape:window-width="1920"
inkscape:window-height="992"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs2483" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-92.892647,-111.68544)">
<rect
inkscape:export-ydpi="96.000046"
inkscape:export-xdpi="96.000046"
y="111.68544"
x="92.892647"
height="67.73333"
width="67.73333"
id="rect3292"
style="fill:none;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<rect
y="135.49535"
x="95.049019"
height="5.0871596"
width="40.605831"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5-5-9-5-0-2-9"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.10395;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000046"
inkscape:export-ydpi="96.000046" />
<rect
inkscape:export-ydpi="96.000046"
inkscape:export-xdpi="96.000046"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.948985;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5-5-9-5-0-2-9-1"
width="8.2611904"
height="5.0871596"
x="150.44847"
y="135.49535" />
<path
inkscape:export-ydpi="96.000046"
inkscape:export-xdpi="96.000046"
sodipodi:nodetypes="cccccc"
style="fill:#ff6600;fill-opacity:1;stroke-width:3.89118"
inkscape:connector-curvature="0"
id="path966-9-6-0-2-0-37-2"
d="m 157.55297,151.61926 -13.85782,13.28552 -13.85804,-13.28552 9.21069,-0.0292 9.29454,-2e-5 z" />
<rect
y="127.10445"
x="150.46057"
height="5.0871596"
width="8.2611904"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5-5-9-5-0-2-9-1-4"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.948984;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000046"
inkscape:export-ydpi="96.000046" />
<rect
inkscape:export-ydpi="96.000046"
inkscape:export-xdpi="96.000046"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.10395;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5-5-9-5-0-2-9-2"
width="40.605831"
height="5.0871596"
x="95.057297"
y="127.22473" />
<rect
inkscape:export-ydpi="96.000046"
inkscape:export-xdpi="96.000046"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.948984;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5-5-9-5-0-2-9-1-4-1"
width="8.2611904"
height="5.0871596"
x="150.49835"
y="143.73186" />
<rect
y="143.93459"
x="95.058357"
height="5.0871596"
width="40.605831"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5-5-9-5-0-2-9-2-7"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.10395;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000046"
inkscape:export-ydpi="96.000046" />
<rect
y="167.01994"
x="101.8401"
height="3.5655646"
width="56.980888"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5-5-9-5-0-2-9-24-5"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.08656;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000046"
inkscape:export-ydpi="96.000046" />
<rect
inkscape:export-ydpi="96.000046"
inkscape:export-xdpi="96.000046"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.08656;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5-5-9-5-0-2-9-24-5-7"
width="56.980892"
height="3.5655646"
x="101.83765"
y="174.05339" />
<circle
inkscape:export-ydpi="96.000046"
inkscape:export-xdpi="96.000046"
r="2.3487535"
cy="168.64861"
cx="98.229622"
id="path3707"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:9.56849;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
inkscape:export-ydpi="96.000046"
inkscape:export-xdpi="96.000046"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:9.5685;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path3707-1"
cx="98.270699"
cy="175.60979"
r="2.3487535" />
<path
style="fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 94.786563,114.60607 h 40.431997 c 9.72673,0 12.52136,5.48131 12.52136,12.52137 v 25.97065 h -8.81151 v -24.64861 c 0,-3.02882 -0.65494,-5.90145 -6.22771,-6.06022 H 94.761584 Z"
id="path5209"
sodipodi:nodetypes="ccccccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

90
icons/incChar.svg Normal file
View file

@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="67.73336mm"
height="67.73333mm"
viewBox="0 0 67.73336 67.73333"
version="1.1"
id="svg7825"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="symbol_plus.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7827"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="1.0154442"
inkscape:cx="9.3555114"
inkscape:cy="35.452464"
inkscape:window-width="1920"
inkscape:window-height="992"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs7822" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-131.95218,-153.69289)">
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.256;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect982-9-2-94-5-6-5"
width="67.73333"
height="67.73333"
x="131.95221"
y="153.69289" />
<g
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="font-size:19.7556px;line-height:125%;font-family:Sans;letter-spacing:-1.83084px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19042;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="flowRoot2434-2-1"
transform="matrix(5.3096471,0,0,5.1940957,-492.99916,-768.11092)"
aria-label="T">
<path
id="path2701-7"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.7556px;font-family:Alice;-inkscape-font-specification:'Alice Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:1.26894px;word-spacing:-0.00183084px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.19042;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 129.52705,177.74929 -10.8888,0.0147 -0.004,3.38911 c 0,0.11729 0.0461,0.21508 0.13831,0.29325 0.10537,0.0652 0.21736,0.0978 0.3359,0.0978 0.15806,0 0.30957,-0.0326 0.45445,-0.0978 0.14489,-0.0651 0.22381,-0.14992 0.23701,-0.25417 0.0922,-0.63852 0.1976,-1.12713 0.31615,-1.46593 0.13172,-0.35185 0.31615,-0.6125 0.55324,-0.78189 0.25026,-0.1824 0.5993,-0.28009 1.04713,-0.29315 h 1.36326 v 9.32363 c -0.0132,0.32578 -0.0461,0.59298 -0.0988,0.80148 -0.0395,0.19546 -0.1515,0.3648 -0.3359,0.50814 -0.18441,0.13036 -0.46756,0.1955 -0.84954,0.1955 -0.18438,0 -0.30951,0.0196 -0.37541,0.0587 -0.0658,0.0391 -0.10536,0.15635 -0.11856,0.35182 0,0.11728 0.0263,0.22151 0.079,0.31274 0.0658,0.0782 0.15808,0.11734 0.27662,0.11734 v -1e-4 c 0.85615,-0.0391 1.67937,-0.0587 2.46967,-0.0587 0.71126,0 1.48837,0.0196 2.33135,0.0587 0.11856,0 0.20416,-0.0391 0.25687,-0.11724 0.0659,-0.0912 0.0988,-0.19546 0.0988,-0.31274 -0.0132,-0.18242 -0.0526,-0.29324 -0.11855,-0.33232 -0.0527,-0.0521 -0.13833,-0.0782 -0.25687,-0.0782 h -0.11855 c -0.38197,0 -0.66513,-0.0652 -0.84953,-0.1955 -0.18442,-0.14334 -0.30296,-0.31268 -0.35566,-0.50814 -0.0395,-0.2085 -0.0658,-0.4757 -0.079,-0.80148 v -9.32363 h 1.34351 c 0.44783,0.013 0.79696,0.11071 1.04722,0.29315 0.25026,0.16939 0.43461,0.42349 0.55315,0.7623 0.11854,0.3388 0.23053,0.83397 0.3359,1.48552 0.0132,0.10424 0.0856,0.18897 0.21735,0.25417 0.14489,0.0652 0.2963,0.0978 0.45436,0.0978 0.11854,0 0.23052,-0.0326 0.3359,-0.0978 0.10535,-0.0782 0.15807,-0.17596 0.15807,-0.29325 z"
inkscape:connector-curvature="0" />
</g>
<path
d="m 145.66063,182.43989 -13.39438,13.53973 13.39438,13.53997 0.0596,-6.49361 h 12.05501 v -14.09253 h -12.05498 z"
id="path966-9-6-0-26"
inkscape:connector-curvature="0"
style="fill:#ff0002;fill-opacity:1;stroke-width:5.49326"
sodipodi:nodetypes="cccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
d="m 185.76848,182.43989 13.39438,13.53973 -13.39438,13.53997 -0.0596,-6.49361 h -12.05501 v -14.09253 h 12.05498 z"
id="path966-9-6-0-26-3"
inkscape:connector-curvature="0"
style="fill:#ff0002;fill-opacity:1;stroke-width:5.49326"
sodipodi:nodetypes="cccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<rect
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.256;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect982-9-2-9-7-3-5"
width="67.73333"
height="67.73333"
x="131.95218"
y="153.69289" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

90
icons/incKern.svg Normal file
View file

@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="67.73336mm"
height="67.73333mm"
viewBox="0 0 67.73336 67.73333"
version="1.1"
id="svg2700"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="incKern.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview2702"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="2.0308884"
inkscape:cx="128.76138"
inkscape:cy="144.76423"
inkscape:window-width="1920"
inkscape:window-height="992"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
inkscape:snap-global="false" />
<defs
id="defs2697" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-114.87222,-84.436211)">
<rect
y="84.436211"
x="114.87222"
height="67.73333"
width="67.73333"
id="rect982-9-2-94-5-3-3-2"
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.256;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path7281-5"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.7556px;line-height:125%;font-family:Alice;-inkscape-font-specification:'Alice Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:-1.83084px;word-spacing:-0.00183084px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.792791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 116.58485,129.16631 q -0.47856,0 -0.69129,-0.39538 -0.26594,-0.46127 -0.26594,-1.05436 0.0534,-0.98848 0.31904,-1.18615 0.26595,-0.1978 0.63811,-0.1978 0.37223,0 0.47856,0 1.59525,0 2.33969,-0.98846 0.74444,-1.05436 1.16986,-2.30641 0.47858,-1.31796 0.63808,-1.77924 l 9.30559,-27.281577 q 0.31906,-0.988455 0.31906,-1.581525 0,-1.186153 -0.74445,-1.71335 -0.74446,-0.527164 -2.07384,-0.856665 -0.90394,-0.197785 -1.11666,-0.395394 -0.21264,-0.197808 -0.21264,-1.120235 0,-0.79079 0.31905,-1.054359 0.3722,-0.263527 1.11667,-0.263527 2.65874,0 4.20081,0.527141 1.59524,0.461325 2.76511,1.976953 1.16984,1.449745 2.18017,4.481039 l 8.93336,27.281559 q 0.79761,2.5041 1.54206,3.75617 0.74446,1.25202 2.23334,1.31795 h 0.31907 q 0.53171,0 0.74444,0.2635 0.21263,0.19782 0.26593,1.12028 0,0.59308 -0.26593,1.05436 -0.21265,0.39538 -0.6913,0.39538 -3.40321,-0.1978 -5.84921,-0.1978 -3.1905,0 -6.59368,0.1978 -0.47859,0 -0.74446,-0.39538 -0.21263,-0.46128 -0.21263,-1.05436 0.0533,-0.92256 0.26592,-1.12028 0.21265,-0.2635 0.74445,-0.2635 1.80793,0 2.5524,-0.39538 0.74445,-0.46128 0.74445,-1.58156 0,-0.85664 -0.63811,-3.09718 l -1.80795,-5.4695 h -13.1342 q -1.32936,4.08567 -1.54206,4.74465 -0.15959,0.65895 -0.15959,0.72485 -0.63811,2.5041 -0.63811,3.22897 0,1.12027 0.79761,1.51565 0.79764,0.32957 3.03097,0.32957 h 0.31905 q 0.53173,0 0.74442,0.26349 0.21264,0.19782 0.26595,1.12029 0,0.59309 -0.26595,1.05437 -0.21264,0.39536 -0.69124,0.39536 -3.4032,-0.19781 -5.79605,-0.19781 -1.7016,0 -5.15796,0.19781 z m 10.10319,-16.2108 h 11.16673 L 132.4841,96.01986 h -0.15961 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path7283-2"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.7556px;line-height:125%;font-family:Alice;-inkscape-font-specification:'Alice Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:-1.83084px;word-spacing:-0.00183084px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.626217px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 155.9494,131.0208 q -0.41432,0.13465 -0.8041,-0.0973 -0.38979,-0.23215 -0.58234,-0.73936 L 141.0439,86.803145 q -0.10865,-0.513438 0.16248,-1.002634 0.27115,-0.489207 0.72739,-0.626989 0.41431,-0.134653 0.80409,0.09753 0.43173,0.229052 0.62676,0.78825 l 13.43523,43.386958 q 0.10865,0.51346 -0.16498,0.9507 -0.22921,0.48613 -0.68545,0.62393 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="path7285-1-6"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.7556px;line-height:125%;font-family:Alice;-inkscape-font-specification:'Alice Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:-1.83084px;word-spacing:-0.00183084px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.792791px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 162.62067,129.5624 q -1.59527,-5.40359 -5.05162,-17.19926 -3.45634,-11.79562 -5.0516,-17.067432 -0.90394,-2.833595 -1.75475,-3.953885 -0.8508,-1.120234 -2.4992,-1.515642 -0.21264,-0.06602 -0.63811,-0.131701 -0.42539,-0.13168 -0.58491,-0.395373 -0.10629,-0.329556 -0.10629,-0.988477 0,-0.790746 0.31904,-1.054316 0.37224,-0.263537 1.1167,-0.263537 3.98811,0 6.06192,1.51565 2.0738,1.515653 3.29681,5.403609 l 7.71035,25.700014 h 0.15962 l 7.33809,-26.424898 q 0.31907,-1.120257 0.31907,-1.713338 0,-0.922537 -0.63811,-1.186152 -0.58489,-0.329568 -2.02061,-0.329568 h -0.31909 q -0.53171,0 -0.74439,-0.197797 -0.21266,-0.263515 -0.26597,-1.186152 0,-0.59308 0.21265,-0.988476 0.26594,-0.461279 0.69129,-0.461279 3.45636,0.197787 5.79601,0.197787 1.01034,0 3.88178,-0.13168 l 1.11667,-0.06602 q 0.47858,0 0.69128,0.46128 0.26593,0.395395 0.26593,0.988486 -0.0533,0.922559 -0.26593,1.186142 -0.21264,0.197808 -0.74445,0.197808 -2.28652,0 -3.50953,0.922571 -1.16986,0.922558 -2.02065,3.558478 -1.59525,5.403587 -5.15794,17.528728 -3.50955,12.05924 -5.10481,17.59464 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
d="m 169.20012,132.34281 13.02687,9.55857 -13.02687,9.55873 -0.0275,-4.76566 h -17.07224 v -9.58603 h 17.07224 z"
id="path966-9-6-0-2-0-0-9-4-7-4-9"
inkscape:connector-curvature="0"
style="fill:#e60002;fill-opacity:1;stroke-width:3.13936"
sodipodi:nodetypes="cccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
d="m 128.57579,132.19253 -13.02687,9.55857 13.02687,9.55873 0.0275,-4.76566 h 17.07224 v -9.58603 h -17.07224 z"
id="path966-9-6-0-2-0-0-9-4-7-4-9-4"
inkscape:connector-curvature="0"
style="fill:#e60002;fill-opacity:1;stroke-width:3.13936"
sodipodi:nodetypes="cccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

97
icons/links.svg Normal file
View file

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="67.73333mm"
height="67.73333mm"
viewBox="0 0 67.73333 67.73333"
version="1.1"
id="svg2924"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="links.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview2926"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="2.0308885"
inkscape:cx="80.506637"
inkscape:cy="128.02279"
inkscape:window-width="1920"
inkscape:window-height="992"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
inkscape:snap-global="false" />
<defs
id="defs2921" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-62.071301,-83.900757)">
<path
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-7-1-7-8-6-8"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.50924;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
d="m 63.288246,128.42133 v 4.5 h 12.83916 c 0.0967,-1.57265 2.4477,-3.09012 2.94527,-4.5 z m 41.145354,0 -3.50074,4.5 h 27.64836 v -4.5 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
sodipodi:nodetypes="cccccccccc"
inkscape:connector-curvature="0"
d="m 128.52123,106.7402 v -4.5 h -12.83916 c -0.0967,1.57263 -2.44771,3.09012 -2.94527,4.5 z m -41.145358,0 5.085514,-4.5 H 63.228252 v 4.5 z"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.50924;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-7-1-7-8-6" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
d="m 128.58843,97.727829 v -4.5 h -10.35091 c 0.6888,1.376399 0.15148,2.896634 0.41261,4.5 z m -31.934402,0 3.500762,-4.5 H 63.295448 v 4.5 z"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.50923;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-7-0-9-8-7-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccc" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
d="m 128.58362,89.074333 v -4.5 H 63.290647 v 4.5 h 40.157263 c 1.80892,-1.743618 3.99687,-2.687929 6.29866,-2.687929 h 10e-4 c 2.30145,8.18e-4 4.49043,0.944896 6.29965,2.687929 z"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.50922;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-7-0-7-6-2-6-6"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="cccccccccc"
inkscape:connector-curvature="0"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-7-0-9-8-7-2-9"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.50923;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
d="m 63.288246,137.46204 v 4.5 h 10.35091 c -0.6888,-1.37639 -0.15149,-2.89663 -0.41261,-4.5 z m 31.93439,0 -3.50076,4.5 h 36.859344 v -4.5 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:connector-curvature="0"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-7-0-7-6-2-6-6-8"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.50923;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
d="m 63.288246,146.17315 v 4.5 h 65.292974 v -4.5 H 88.423956 c -1.80893,1.74361 -3.99687,2.68793 -6.29866,2.68793 h -0.001 c -2.30146,-7.8e-4 -4.49044,-0.9449 -6.29965,-2.68793 z"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
inkscape:connector-curvature="0"
d="m 90.271426,114.39038 -16.2298,16.23069 c -2.05842,2.05665 -3.19117,4.79255 -3.19117,7.70296 0,2.91177 1.13409,5.64724 3.19161,7.70388 2.05707,2.05661 4.79344,3.19025 7.70296,3.19115 h 8.7e-4 c 2.90997,0 5.64499,-1.13364 7.70206,-3.19115 l 16.230714,-16.23117 c 3.34022,-3.34021 4.13332,-8.41483 2.041,-12.58073 l -3.56339,3.56381 c 0.44275,2.08296 -0.19771,4.27035 -1.70983,5.78291 l -16.638644,16.63731 -0.0116,-0.0109 c -1.18364,1.03365 -2.67833,1.59735 -4.25204,1.59735 -1.68172,0 -3.25587,-0.64851 -4.43504,-1.82634 -1.19657,-1.1961 -1.84328,-2.79347 -1.82676,-4.49795 0.0161,-1.5514 0.58065,-3.0229 1.59959,-4.19091 l -0.0104,-0.009 0.22806,-0.22985 c 0.0299,-0.0316 0.0611,-0.0642 0.0919,-0.0942 0.0104,-0.01 0.0192,-0.0197 0.0286,-0.0277 l 0.055,-0.0557 16.2298,-16.23071 c 1.19435,-1.193 2.78056,-1.84954 4.46673,-1.84954 0.43606,0 0.86899,0.0452 1.29388,0.13302 l 3.567384,-3.56831 c -1.49961,-0.74802 -3.167494,-1.13988 -4.859924,-1.13988 -2.90908,5.3e-4 -5.645,1.13364 -7.70252,3.19027 M 121.77679,97.012846 c 0,-2.90999 -1.13407,-5.645891 -3.19115,-7.702521 -2.0575,-2.05886 -4.79343,-3.19159 -7.70385,-3.19159 -2.90952,0 -5.64499,1.13318 -7.70207,3.19159 L 86.948586,105.53961 c -3.338,3.33755 -4.13288,8.40857 -2.04638,12.57271 l 3.41253,-3.41254 c -0.39141,-1.9495 0.15979,-4.00077 1.47954,-5.51467 l -0.0104,-0.01 0.22406,-0.22627 c 0.0286,-0.0299 0.0598,-0.0616 0.0897,-0.0921 0.0104,-0.009 0.0179,-0.0178 0.0276,-0.0267 l 0.0562,-0.0567 16.229374,-16.229834 c 1.19389,-1.19389 2.78099,-1.85087 4.4694,-1.85087 1.68885,0 3.27551,0.65698 4.4694,1.85087 2.46455,2.46412 2.46455,6.47604 0,8.938374 l -16.635504,16.63774 -0.0117,-0.0116 c -1.18541,1.0341 -2.67744,1.59825 -4.25161,1.59825 -0.42443,0 -0.84398,-0.0419 -1.25594,-0.12408 l -3.41207,3.41209 c 1.50364,0.75025 3.17198,1.1439 4.86795,1.1439 2.91134,0 5.646794,-1.1332 7.703874,-3.19028 l 16.23026,-16.23024 c 2.05751,-2.05887 3.19071,-4.794315 3.19071,-7.705205"
id="path1214-3-8-8"
style="fill:#0003ff;fill-opacity:1;stroke:#1c26ff;stroke-width:0.446;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

158
icons/paragraph.svg Normal file
View file

@ -0,0 +1,158 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="67.73333mm"
height="67.73333mm"
viewBox="0 0 67.73333 67.73333"
version="1.1"
id="svg9916"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="paragraph.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview9918"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:snap-global="false"
inkscape:zoom="2.0308884"
inkscape:cx="115.46671"
inkscape:cy="156.08932"
inkscape:window-width="1920"
inkscape:window-height="992"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs9913" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-92.524155,-109.47453)">
<rect
y="109.47453"
x="92.524155"
height="67.73333"
width="67.73333"
id="rect982-9-2-9-7-0"
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.256;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<path
id="rect847-2-0-2"
style="fill:none;stroke:#000000;stroke-width:1.99356;paint-order:stroke markers fill;stop-color:#000000"
d="m 124.78694,132.07734 v -20.799 h 32.55138 v 43.20213 l -28.57395,0"
sodipodi:nodetypes="ccccc" />
<rect
inkscape:export-ydpi="96.000023"
inkscape:export-xdpi="96.000023"
style="fill:#029c00;fill-opacity:1;stroke:none;stroke-width:1.47294;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-4"
width="21.80117"
height="4.6439242"
x="132.51495"
y="114.49986" />
<rect
y="124.22032"
x="128.09102"
height="4.6439242"
width="26.394829"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-0"
style="fill:#029c00;fill-opacity:1;stroke:none;stroke-width:1.62072;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<rect
inkscape:export-ydpi="96.000023"
inkscape:export-xdpi="96.000023"
style="fill:#029c00;fill-opacity:1;stroke:none;stroke-width:1.62072;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-9-80"
width="26.394829"
height="4.6439242"
x="128.12129"
y="133.61826" />
<path
id="path1659-3-4-3-2"
fill="#241F20"
d="m 147.82818,157.32917 8.99869,8.75745 h -3.83501 c -0.65909,7.11404 -5.34633,13.64931 -19.22877,8.60297 7.33777,0.27447 8.63092,-3.725 8.96976,-8.60294 h -4.36677 z"
inkscape:connector-curvature="0"
style="fill:#ff0e00;fill-opacity:1;stroke-width:0.593436"
inkscape:export-xdpi="96.000008"
inkscape:export-ydpi="96.000008"
sodipodi:nodetypes="ccccccc" />
<path
id="path1659-3-4-3-2-0"
fill="#241F20"
d="m 106.39267,129.95823 -8.998683,-9.02248 h 3.835003 c 0.65909,-7.32934 5.34633,-14.06239 19.22877,-8.86332 -7.33777,-0.28279 -8.63092,3.83772 -8.96976,8.86329 h 4.36677 z"
inkscape:connector-curvature="0"
style="fill:#ff0e00;fill-opacity:1;stroke-width:0.602349"
inkscape:export-xdpi="96.000008"
inkscape:export-ydpi="96.000008"
sodipodi:nodetypes="ccccccc" />
<rect
y="144.05806"
x="129.3343"
height="4.6439242"
width="25.151567"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-9-8-5"
style="fill:#029c00;fill-opacity:1;stroke:none;stroke-width:1.5821;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<rect
inkscape:export-ydpi="96.000023"
inkscape:export-xdpi="96.000023"
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.99141;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect847-2-0-1-0"
width="33.820812"
height="42.416"
x="95.032234"
y="132.36934"
ry="0" />
<rect
y="138.01369"
x="101.99397"
height="4.9674153"
width="24.004038"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.5985;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<rect
inkscape:export-ydpi="96.000023"
inkscape:export-xdpi="96.000023"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.72633;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3"
width="27.996544"
height="4.9674153"
x="98.001465"
y="147.7115" />
<rect
y="157.37741"
x="98.001472"
height="4.9674153"
width="27.996544"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-9"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.72633;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<rect
inkscape:export-ydpi="96.000023"
inkscape:export-xdpi="96.000023"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.72633;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-9-8"
width="27.996544"
height="4.9674153"
x="98.00148"
y="166.80212" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

96
icons/press_text.svg Normal file
View file

@ -0,0 +1,96 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="67.73333mm"
height="67.73333mm"
viewBox="0 0 67.73333 67.73333"
version="1.1"
id="svg2477"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="press_text.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview2479"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="2.0308884"
inkscape:cx="59.826033"
inkscape:cy="109.80416"
inkscape:window-width="1920"
inkscape:window-height="992"
inkscape:window-x="0"
inkscape:window-y="25"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
inkscape:lockguides="true" />
<defs
id="defs2474" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-44.252445,-77.047729)">
<rect
y="77.047729"
x="44.252445"
height="67.73333"
width="67.73333"
id="rect982-9-2-94-9-12"
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.256;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<rect
y="108.00449"
x="45.867519"
height="6.5124974"
width="64.078773"
id="rect851-8-3-8-3-37-8-5-8-6-0-2"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.99041;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<rect
inkscape:export-ydpi="96.000023"
inkscape:export-xdpi="96.000023"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.99041;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-37-8-5-8-6-0-0-46"
width="64.078773"
height="6.5124974"
x="45.6674"
y="95.987839" />
<rect
y="120.45139"
x="45.867519"
height="6.5124974"
width="64.078773"
id="rect851-8-3-8-3-37-8-5-8-6-0-0-4-0"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.99041;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<path
d="m 62.836441,77.914258 14.82678,14.252148 14.82704,-14.252148 z"
id="path966-9-6-0-2-7-3-4-34-6-9"
inkscape:connector-curvature="0"
style="fill:#e60002;fill-opacity:1;stroke-width:5.20472"
sodipodi:nodetypes="cccc"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<path
inkscape:export-ydpi="96.000023"
inkscape:export-xdpi="96.000023"
sodipodi:nodetypes="cccc"
style="fill:#e60002;fill-opacity:1;stroke-width:5.20826"
inkscape:connector-curvature="0"
id="path966-9-6-0-2-7-3-4-34-6-9-9"
d="m 63.55667,144.36014 14.82678,-14.27159 14.82704,14.27159 z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

108
icons/tail.svg Normal file
View file

@ -0,0 +1,108 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
sodipodi:docname="hvost.svg"
inkscape:version="1.0 (4035a4f, 2020-05-01)"
id="svg2650"
version="1.1"
viewBox="0 0 67.73333 67.73333"
height="67.73333mm"
width="67.73333mm">
<defs
id="defs2644" />
<sodipodi:namedview
inkscape:window-maximized="1"
inkscape:window-y="25"
inkscape:window-x="0"
inkscape:window-height="992"
inkscape:window-width="1920"
showgrid="false"
inkscape:document-rotation="0"
inkscape:current-layer="layer1"
inkscape:document-units="mm"
inkscape:cy="161.53655"
inkscape:cx="48.279563"
inkscape:zoom="0.98994949"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base" />
<metadata
id="metadata2647">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-94.593422,-56.778362)"
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
<rect
inkscape:export-ydpi="96.000023"
inkscape:export-xdpi="96.000023"
style="opacity:1;fill:#484848;fill-opacity:1;stroke:none;stroke-width:2.02445;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000;stop-opacity:1"
id="rect851-8-3-8-3-37-8-5-8-6-0-0-6"
width="18.675617"
height="10.240829"
x="96.890099"
y="108.6032" />
<path
d="m 148.55629,103.93948 11.61928,9.55377 -11.61928,9.55393 -0.0327,-6.34998 h -7.8785 v -6.4078 h 7.87849 z"
id="path966-9-6-0-2-0-0-9-4-7-4-8-3"
inkscape:connector-curvature="0"
style="opacity:1;fill:#e60002;fill-opacity:1;stroke-width:3.42818;stop-opacity:1"
sodipodi:nodetypes="cccccccc"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96" />
<path
inkscape:export-ydpi="96"
inkscape:export-xdpi="96"
sodipodi:nodetypes="cccccccc"
style="opacity:1;fill:#e60002;fill-opacity:1;stroke-width:3.42818;stop-opacity:1"
inkscape:connector-curvature="0"
id="path966-9-6-0-2-0-0-9-4-7-4-8-3-8"
d="m 128.61418,123.04712 -11.61928,-9.55377 11.61928,-9.55392 0.0327,6.34997 h 7.8785 v 6.4078 h -7.87849 z" />
<rect
y="91.483078"
x="96.890099"
height="10.240829"
width="62.825058"
id="rect851-8-3-8-3-37-8-5-8-6-0-0-6-2"
style="opacity:1;fill:#484848;fill-opacity:1;stroke:none;stroke-width:3.71308;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000;stop-opacity:1"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
<rect
inkscape:export-ydpi="96.000023"
inkscape:export-xdpi="96.000023"
style="opacity:1;fill:#484848;fill-opacity:1;stroke:none;stroke-width:3.71308;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000;stop-opacity:1"
id="rect851-8-3-8-3-37-8-5-8-6-0-0-6-2-8"
width="62.825058"
height="10.240829"
x="96.890099"
y="74.892128" />
<rect
y="59.359539"
x="96.890099"
height="10.240829"
width="62.825058"
id="rect851-8-3-8-3-37-8-5-8-6-0-0-6-2-8-3"
style="opacity:1;fill:#484848;fill-opacity:1;stroke:none;stroke-width:3.71308;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000;stop-opacity:1"
inkscape:export-xdpi="96.000023"
inkscape:export-ydpi="96.000023" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

View file

@ -1,3 +1,13 @@
0.7.2 Added conversion for endnotes to manual endontes and back
0.6.15 Increased limit of articles in issue to 50
0.6.14 Bugfix: Remove bookmark before creating another one with the same name
0.6.13 Forbid creating bidirectional links with empty text
0.6.6 Archive headings configuration function added
0.6.5 Improved archive conversion functions
0.6.4 French translations added
0.6.3 Croatian, Serbian and Bosnian translations added
0.6.1 Function to set unique page style to each page
0.5.6 Fixes for page config dialog
0.5.3 Help text to page styles dialog added 0.5.3 Help text to page styles dialog added
0.5.2 Page styles configuration dialog added 0.5.2 Page styles configuration dialog added
0.3.1 Icons improved 0.3.1 Icons improved

Binary file not shown.