Compare commits

...

25 commits

Author SHA1 Message Date
1d95cee96c
chore: push new version 2021-12-19 17:11:47 +01:00
4d70244041 chore: new version 2021-12-19 17:10:35 +01:00
5e9a36bbfd
fix: improved template 2021-12-19 17:10:18 +01:00
7e8fd76cb3 Fix diacritic characters combination 2021-10-29 00:51:03 +02:00
3123de95c8 Fix for prev commit 2021-10-28 23:38:03 +02:00
8bef4474ae Fix diacritic characters 2021-10-28 20:54:54 +02:00
907c483775 Push new version 2021-10-25 21:08:07 +02:00
6100d5d40e chore: push new version 2021-10-25 16:14:18 +02:00
535e91d860 feat: added elenph article template 2021-10-20 15:50:37 +02:00
c0ecae410c Push new version 2021-10-05 14:02:45 +02:00
0736f72257 Configured article templates 2021-10-04 15:31:10 +02:00
2fa3ce3c86 feat: new template 2021-09-13 19:51:34 +02:00
fd074a02ab new release 2021-09-13 19:51:11 +02:00
c1d12fb739 fix: regexps for requent mistakes 2021-09-13 19:12:25 +02:00
bbe0157ea2 fix: missed configuration for prev commit 2021-08-29 17:05:55 +02:00
4c4b9221df feat: more templates added 2021-08-29 17:01:22 +02:00
d5b3b4c9e8 fix: Mistake in english license text 2021-08-03 21:08:25 +02:00
9e5a5efa59 fix: fixed expert cleaning dialog wrong variable 2021-08-03 21:05:24 +02:00
003e1d4033 feat: Added selected template info on cleaning dialogs 2021-08-02 12:27:23 +02:00
c98848aae4 feat: improved icons 2021-08-02 11:39:37 +02:00
0433a8423f fix: Configured dialogs, improved translations for prev commit 2021-07-29 12:23:25 +02:00
52e00175a2 feat: predefined templates provided 2021-07-29 11:43:13 +02:00
65dee0354c feat: added journal article tempates 2021-07-26 15:33:33 +02:00
d0bba1db42 Push new version 2021-07-26 12:58:33 +02:00
17dd694249 Fixed typo 2021-06-13 11:30:56 +02:00
41 changed files with 1383 additions and 235 deletions

View file

@ -115,7 +115,7 @@
</prop> </prop>
<node oor:name="UserDefinedImages"> <node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL"> <prop oor:name="ImageBigURL">
<value>%origin%/icons/clean.png</value> <value>%origin%/icons/clean.svg</value>
</prop> </prop>
</node> </node>
</node> </node>
@ -125,7 +125,7 @@
</prop> </prop>
<node oor:name="UserDefinedImages"> <node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL"> <prop oor:name="ImageBigURL">
<value>%origin%/icons/validate.png</value> <value>%origin%/icons/validate.svg</value>
</prop> </prop>
</node> </node>
</node> </node>
@ -135,7 +135,7 @@
</prop> </prop>
<node oor:name="UserDefinedImages"> <node oor:name="UserDefinedImages">
<prop oor:name="ImageBigURL"> <prop oor:name="ImageBigURL">
<value>%origin%/icons/report.png</value> <value>%origin%/icons/report.svg</value>
</prop> </prop>
</node> </node>
</node> </node>

View file

@ -2,5 +2,6 @@
<manifest:manifest> <manifest:manifest>
<manifest:file-entry manifest:full-path="Redaction/" manifest:media-type="application/vnd.sun.star.basic-library"/> <manifest:file-entry manifest:full-path="Redaction/" manifest:media-type="application/vnd.sun.star.basic-library"/>
<manifest:file-entry manifest:full-path="Addons.xcu" manifest:media-type="application/vnd.sun.star.configuration-data"/> <manifest:file-entry manifest:full-path="Addons.xcu" manifest:media-type="application/vnd.sun.star.configuration-data"/>
<manifest:file-entry manifest:full-path="Templates.xcu" manifest:media-type="application/vnd.sun.star.configuration-data"/>
<manifest:file-entry manifest:full-path="WriterWindowState.xcu" manifest:media-type="application/vnd.sun.star.configuration-data"/> <manifest:file-entry manifest:full-path="WriterWindowState.xcu" manifest:media-type="application/vnd.sun.star.configuration-data"/>
</manifest:manifest> </manifest:manifest>

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="Clean" script:language="StarBasic">Sub mark83 <script:module xmlns:script="http://openoffice.org/2000/script" script:name="Clean" script:language="StarBasic">Sub mark96
End Sub End Sub
@ -13,6 +13,9 @@ Sub cleanButton
MsgBox(getTranslation(&quot;documentIsReadOnly&quot;)) MsgBox(getTranslation(&quot;documentIsReadOnly&quot;))
Exit Sub Exit Sub
EndIf EndIf
If config.getPropertyValue(&quot;predefined_template&quot;) = &quot;false&quot; Then
configureStyleFileDialog()
EndIf
If config.getPropertyValue(&quot;complexity&quot;) = &quot;user&quot; then If config.getPropertyValue(&quot;complexity&quot;) = &quot;user&quot; then
quietStartDialog() quietStartDialog()
Else Else
@ -20,44 +23,46 @@ Sub cleanButton
EndIf EndIf
End Sub End Sub
Dim advancedCleaningDialog As Object
Private Sub makerUpMenu Private Sub makerUpMenu
Dim dialog As Object
DialogLibraries.LoadLibrary(&quot;Redaction&quot;) DialogLibraries.LoadLibrary(&quot;Redaction&quot;)
dialog = CreateUnoDialog(DialogLibraries.Redaction.CleaningDialog) advancedCleaningDialog = CreateUnoDialog(DialogLibraries.Redaction.CleaningDialog)
advancedCleaningDialog.getControl(&quot;fontsInStyles&quot;).Label = getTranslation(&quot;advancedMenuReplaceFontsInStyles&quot;)
dialog.getControl(&quot;fontsInStyles&quot;).Label = getTranslation(&quot;advancedMenuReplaceFontsInStyles&quot;) advancedCleaningDialog.getControl(&quot;symbolsConversion&quot;).Label = getTranslation(&quot;advancedMenuSymbolsConversion&quot;)
dialog.getControl(&quot;symbolsConversion&quot;).Label = getTranslation(&quot;advancedMenuSymbolsConversion&quot;) advancedCleaningDialog.getControl(&quot;cleanFormatting&quot;).Label = getTranslation(&quot;advancedMenuCleanFormatting&quot;)
dialog.getControl(&quot;cleanFormatting&quot;).Label = getTranslation(&quot;advancedMenuCleanFormatting&quot;) advancedCleaningDialog.getControl(&quot;replaceWhiteBackground&quot;).Label = getTranslation(&quot;advancedMenuReplaceWhiteBackground&quot;)
dialog.getControl(&quot;replaceWhiteBackground&quot;).Label = getTranslation(&quot;advancedMenuReplaceWhiteBackground&quot;) advancedCleaningDialog.getControl(&quot;removeUnusedStyles&quot;).Label = getTranslation(&quot;advancedMenuRemoveUnusedStyles&quot;)
dialog.getControl(&quot;removeUnusedStyles&quot;).Label = getTranslation(&quot;advancedMenuRemoveUnusedStyles&quot;) advancedCleaningDialog.getControl(&quot;removeLinks&quot;).Label = getTranslation(&quot;advancedMenuRemoveLinks&quot;)
dialog.getControl(&quot;removeLinks&quot;).Label = getTranslation(&quot;advancedMenuRemoveLinks&quot;) advancedCleaningDialog.getControl(&quot;removeAllFields&quot;).Label = getTranslation(&quot;advancedMenuRemoveAllFields&quot;)
dialog.getControl(&quot;removeAllFields&quot;).Label = getTranslation(&quot;advancedMenuRemoveAllFields&quot;) advancedCleaningDialog.getControl(&quot;removeBookmarks&quot;).Label = getTranslation(&quot;advancedMenuRemoveBookmarks&quot;)
dialog.getControl(&quot;removeBookmarks&quot;).Label = getTranslation(&quot;advancedMenuRemoveBookmarks&quot;) advancedCleaningDialog.getControl(&quot;configTables&quot;).Label = getTranslation(&quot;advancedMenuConfigTables&quot;)
dialog.getControl(&quot;configTables&quot;).Label = getTranslation(&quot;advancedMenuConfigTables&quot;) advancedCleaningDialog.getControl(&quot;configAnchors&quot;).Label = getTranslation(&quot;advancedMenuConfigAnchors&quot;)
dialog.getControl(&quot;configAnchors&quot;).Label = getTranslation(&quot;advancedMenuConfigAnchors&quot;) advancedCleaningDialog.getControl(&quot;fixMistakes&quot;).Label = getTranslation(&quot;advancedMenuFixMistakes&quot;)
dialog.getControl(&quot;fixMistakes&quot;).Label = getTranslation(&quot;advancedMenuFixMistakes&quot;) advancedCleaningDialog.getControl(&quot;fixDOI&quot;).Label = getTranslation(&quot;advancedMenuFixDOI&quot;)
dialog.getControl(&quot;fixDOI&quot;).Label = getTranslation(&quot;advancedMenuFixDOI&quot;) advancedCleaningDialog.getControl(&quot;replaceNumHyphen&quot;).Label = getTranslation(&quot;replaceNumHyphen&quot;)
dialog.getControl(&quot;replaceNumHyphen&quot;).Label = getTranslation(&quot;replaceNumHyphen&quot;) advancedCleaningDialog.getControl(&quot;removeInitPageBreak&quot;).Label = getTranslation(&quot;advancedMenuRemoveInitPageBreak&quot;)
dialog.getControl(&quot;removeInitPageBreak&quot;).Label = getTranslation(&quot;advancedMenuRemoveInitPageBreak&quot;) advancedCleaningDialog.getControl(&quot;removePageStyles&quot;).Label = getTranslation(&quot;advancedMenuRemovePageStyles&quot;)
dialog.getControl(&quot;removePageStyles&quot;).Label = getTranslation(&quot;advancedMenuRemovePageStyles&quot;) advancedCleaningDialog.getControl(&quot;loadStandardStyles&quot;).Label = getTranslation(&quot;advancedMenuLoadStandardStyles&quot;)
dialog.getControl(&quot;loadStandardStyles&quot;).Label = getTranslation(&quot;advancedMenuLoadStandardStyles&quot;) advancedCleaningDialog.getControl(&quot;removeManualPageBreaks&quot;).Label = getTranslation(&quot;advancedMenuRemoveManualPageBreaks&quot;)
dialog.getControl(&quot;removeManualPageBreaks&quot;).Label = getTranslation(&quot;advancedMenuRemoveManualPageBreaks&quot;) advancedCleaningDialog.getControl(&quot;removeBasic&quot;).Label = getTranslation(&quot;advancedMenuRemoveBasic&quot;)
dialog.getControl(&quot;removeBasic&quot;).Label = getTranslation(&quot;advancedMenuRemoveBasic&quot;) advancedCleaningDialog.getControl(&quot;resetChapterNumberingRules&quot;).Label = getTranslation(&quot;advancedMenuResetChapterNumberingRules&quot;)
dialog.getControl(&quot;resetChapterNumberingRules&quot;).Label = getTranslation(&quot;advancedMenuResetChapterNumberingRules&quot;) advancedCleaningDialog.getControl(&quot;convertFontsToCharStyles&quot;).Label = getTranslation(&quot;advancedMenuconvertFontsToCharStyles&quot;)
dialog.getControl(&quot;convertFontsToCharStyles&quot;).Label = getTranslation(&quot;advancedMenuconvertFontsToCharStyles&quot;) advancedCleaningDialog.getControl(&quot;fixBrokenCharBackTransparent&quot;).Label = getTranslation(&quot;fixBrokenCharBackTransparentMenuItem&quot;)
dialog.getControl(&quot;fixBrokenCharBackTransparent&quot;).Label = getTranslation(&quot;fixBrokenCharBackTransparentMenuItem&quot;) advancedCleaningDialog.getControl(&quot;removeNotTransparentBackgrounds&quot;).Label = getTranslation(&quot;removeNotTransparentBackgrounds&quot;)
dialog.getControl(&quot;removeNotTransparentBackgrounds&quot;).Label = getTranslation(&quot;removeNotTransparentBackgrounds&quot;) advancedCleaningDialog.getControl(&quot;fixDiacriticKerning&quot;).Label = getTranslation(&quot;fixDiacriticKerning&quot;)
dialog.getControl(&quot;Cancel&quot;).Label = getTranslation(&quot;buttonCancel&quot;) advancedCleaningDialog.getControl(&quot;Cancel&quot;).Label = getTranslation(&quot;buttonCancel&quot;)
dialog.getControl(&quot;OK&quot;).Label = getTranslation(&quot;buttonOK&quot;) advancedCleaningDialog.getControl(&quot;OK&quot;).Label = getTranslation(&quot;buttonOK&quot;)
dialog.getControl(&quot;buttonLoad&quot;).Label = getTranslation(&quot;buttonLoad&quot;) advancedCleaningDialog.getControl(&quot;buttonLoad&quot;).Label = getTranslation(&quot;buttonLoad&quot;)
dialog.Title = getTranslation(&quot;advancedMenuDialogTitle&quot;) advancedCleaningDialog.Title = getTranslation(&quot;advancedMenuDialogTitle&quot;)
dialog.setVisible(true) setAdvancedDialogDescription()
Select Case dialog.Execute() advancedCleaningDialog.setVisible(true)
Select Case advancedCleaningDialog.Execute()
Case 1 Case 1
cleanAccordingTo(dialog) cleanAccordingTo(advancedCleaningDialog)
Case 0 Case 0
End Select End Select
dialog.dispose() advancedCleaningDialog.dispose()
Exit sub Exit sub
End Sub End Sub
@ -160,7 +165,9 @@ Private Sub cleanAccordingTo(dialog As Object)
If dialog.getControl(&quot;removeNotTransparentBackgrounds&quot;).state = 1 Then If dialog.getControl(&quot;removeNotTransparentBackgrounds&quot;).state = 1 Then
fixColoredBackgroundInDoc() fixColoredBackgroundInDoc()
EndIf EndIf
If dialog.getControl(&quot;fixDiacriticKerning&quot;).state = 1 Then
fixDiacriticKerning()
EndIf
statusIndicator.end() statusIndicator.end()
saveAndreload() saveAndreload()
@ -199,6 +206,8 @@ Private Sub quietCleaning
saveAndreload() saveAndreload()
statusIndicator = ThisComponent.getCurrentController.statusIndicator statusIndicator = ThisComponent.getCurrentController.statusIndicator
unicodeSymbolsConversion unicodeSymbolsConversion
statusIndicator.Start(getTranslation(&quot;statusFixingDiacriticCharactersKerning&quot;),100)
fixDiacriticKerning
statusIndicator.Start(getTranslation(&quot;statusCleaningManualFormatting&quot;),100) statusIndicator.Start(getTranslation(&quot;statusCleaningManualFormatting&quot;),100)
cleanFormatting cleanFormatting
statusIndicator.Start(getTranslation(&quot;statusReplaceWhiteBackground&quot;),100) statusIndicator.Start(getTranslation(&quot;statusReplaceWhiteBackground&quot;),100)
@ -325,12 +334,18 @@ Private Sub unicodeSymbolsConversion
&apos;Extended latin-1 0080—00FF &apos;Extended latin-1 0080—00FF
&apos;Cyrillic unicode block range \u0400-\u04FF &apos;Cyrillic unicode block range \u0400-\u04FF
&apos;Basic Latin \u0020-\u007E &apos;Basic Latin \u0020-\u007E
&apos;Combining diacritical marks 0301 0304 0323 032e 0331 035f &apos;Combining diacritical marks 0301 0304 0303 0323 032e 0331 035f
combiningDiacritic_Astra = &quot;\u0301\u0303\u0304\u0308\u0323\u032e\u0331\u0341\u035f&quot;
Dim extendedLatinA_Astra As String
extendedLatinA_Astra = &quot;\u1e15\u1e17\u1e53\u0129\u0169&quot;
&apos;
&apos;
&apos;
&apos;General Punctuation \u2000-\u206f &apos;General Punctuation \u2000-\u206f
&apos;Latin Extended A \u0100-\u017f &apos;Latin Extended A \u0100-\u017f
&apos;\u02bb Modifier Letter Turned Comma is in IPH Astra &apos;\u02bb Modifier Letter Turned Comma is in IPH Astra
&apos; unicodeConversionEverywhere(&quot;[\u0020-\u007F]+&quot;,RAtts) &apos; unicodeConversionEverywhere(&quot;[\u0020-\u007F]+&quot;,RAtts)
unicodeConversionEverywhere(&quot;[\u0020-\u007f\u0080-\u00ff\u0400-\u04ff\u2000-\u206f\u2100-\u214f\u0301\u0304\u0323\u032e\u0331\u0341\u035f\u02bb\u0100-\u017f]+&quot;,RAtts) unicodeConversionEverywhere(&quot;[\u0020-\u007f\u0080-\u00ff\u0400-\u04ff\u2000-\u206f\u2100-\u214f\u02bb\u0100-\u017f&quot; &amp; combiningDiacritic_Astra &amp; extendedLatinA_Astra &amp;&quot;]+&quot;,RAtts)
&apos;Arabic Scheherazade &apos;Arabic Scheherazade
&apos;Arabic Presentation Forms-A fb50-fdff &apos;Arabic Presentation Forms-A fb50-fdff
&apos;Arabic Presentation Forms-B fe70-feff &apos;Arabic Presentation Forms-B fe70-feff
@ -455,15 +470,24 @@ Sub removeAllFields()
field = fieldEnum.nextElement() field = fieldEnum.nextElement()
field.dispose() field.dispose()
Wend Wend
End sub End Sub
Public Const RX_Greek_letters = &quot;\u0388-\u03ce&quot;
Public Const RX_Latin_up_alphabet = &quot;\u0041-\u005a&quot;
Public Const RX_Latin_low_alphabet = &quot;\u0061-\u007a&quot;
Public Const RX_Cyrillic_alphabet = &quot;\u0410-\u044f&quot;
Public Const RX_Comma = &quot;\u002c&quot;
Public Const RX_Digits = &quot;\u0030-\u0039&quot;
Public Const RX_Roman_numbers = &quot;MDCLXVI&quot;
Public Const RX_Letters_Dash = &quot;[&quot; &amp; RX_Latin_up_alphabet &amp; RX_Latin_low_alphabet &amp; RX_Cyrillic_alphabet &amp; RX_Greek_letters &amp; &quot;]&quot;
Public Const RX_Letters = &quot;[&quot; &amp; RX_Latin_up_alphabet &amp; RX_Latin_low_alphabet &amp; RX_Cyrillic_alphabet &amp; RX_Greek_letters &amp; &quot;]&quot;
Private Sub fixFrequentMistakes Private Sub fixFrequentMistakes
Dim config As Object Dim config As Object
config = initRedactionConfiguration() config = initRedactionConfiguration()
Dim NBSP As String Dim NBSP As String
Dim space As String Dim space As String
Dim latinPlusCyrillicLettersRegExp As String
latinPlusCyrillicLettersRegExp = &quot;[\u0041-\u005a\u0061-\u007a\u0410-\u044f]&quot;
NBSP = &quot; &quot; NBSP = &quot; &quot;
space = &quot; &quot; space = &quot; &quot;
&apos;Не должно быть символов табуляции &apos;Не должно быть символов табуляции
@ -480,19 +504,21 @@ Private Sub fixFrequentMistakes
AskAndReplace(&quot;[:space:]+(?=[\.,;:?!\)\]\}»¡¿”’])&quot;,&quot;&quot;) AskAndReplace(&quot;[:space:]+(?=[\.,;:?!\)\]\}»¡¿”’])&quot;,&quot;&quot;)
&apos;Не должно быть пробелов после скобок [({ и кавычек «„ &apos;Не должно быть пробелов после скобок [({ и кавычек «„
AskAndReplace(&quot;(?&lt;=[\(\[\{«„])[:space:]&quot;,&quot;&quot;) AskAndReplace(&quot;(?&lt;=[\(\[\{«„])[:space:]&quot;,&quot;&quot;)
&apos;Между буквами среднее тире должно обрамляться пробелами &apos;Между буквами среднее или длинное тире должно быть замененено на среднее и обрамлено пробелами
AskAndReplace(&quot;(?&lt;=&quot; &amp; latinPlusCyrillicLettersRegExp &amp; &quot;)(?=&quot; &amp; latinPlusCyrillicLettersRegExp &amp; &quot;)&quot;,NBSP &amp; &quot;&quot; &amp; NBSP) AskAndReplace(&quot;(?&lt;=&quot; &amp; RX_Letters_Dash &amp; &quot;)[—–]+(?=.)&quot;,NBSP &amp; &quot;&quot; &amp; NBSP)
&apos;Между буквами дефис-минус, цифровое тире и длинное тире заменяется на среднее тире AskAndReplace(&quot;(?&lt;=.)[—–]+(?=&quot; &amp; RX_Letters_Dash &amp; &quot;)&quot;,NBSP &amp; &quot;&quot; &amp; NBSP)
AskAndReplace(&quot;(?&lt;=&quot; &amp; latinPlusCyrillicLettersRegExp &amp; &quot;[:space:])[-‒—−](?=[:space:]&quot; &amp; latinPlusCyrillicLettersRegExp &amp; &quot;)&quot;,&quot;&quot;) &apos;Между буквами дефисы-минусы, цифровые тире, средние тире и длинные тире заменяются на одно среднее тире
AskAndReplace(&quot;(?&lt;=&quot; &amp; RX_Letters_Dash &amp; &quot;[:space:])[-‒—−–]+(?=[:space:].)&quot;,&quot;&quot;)
AskAndReplace(&quot;(?&lt;=.[:space:])[-‒—−–]+(?=[:space:]&quot; &amp; RX_Letters_Dash &amp; &quot;)&quot;,&quot;&quot;)
&apos;Между двумя цифрами и тире не долнжо быть пробелов. А также тире должно быть цифровым. &apos;Между двумя цифрами и тире не долнжо быть пробелов. А также тире должно быть цифровым.
&apos;Также проверяем, что перед искомым тире нет DOI &apos;Также проверяем, что перед искомым тире нет DOI
&apos;&apos;&apos;&apos;&apos;AskAndReplace(&quot;(?&lt;!DOI[0-9. /XVI:-‒–—−-]{1,50})(?&lt;=[:digit:])(?:[:space:])?[-‒–—−](?:[:space:])?(?=[:digit:])&quot;,&quot;&quot;) &apos;&apos;&apos;&apos;&apos;AskAndReplace(&quot;(?&lt;!DOI[0-9. /XVI:-‒–—−-]{1,50})(?&lt;=[:digit:])(?:[:space:])?[-‒–—−](?:[:space:])?(?=[:digit:])&quot;,&quot;&quot;)
&apos;Между двумя римскими цифрами и тире между ними не долнжо быть пробелов. А также тире должно быть средним &apos;Между двумя римскими цифрами и тире между ними не долнжо быть пробелов. А также тире должно быть средним
AskAndReplace(&quot;(?&lt;=[MDCLXVI])(?:[:space:])?[-‒–—−](?:[:space:])?(?=[MDCLXVI])&quot;,&quot;&quot;) AskAndReplace(&quot;(?&lt;=[&quot; &amp; RX_Roman_numbers &amp; &quot;])(?:[:space:])?[-‒–—−]+(?:[:space:])?(?=[&quot; &amp; RX_Roman_numbers &amp; &quot;])&quot;,&quot;&quot;)
&apos;Между буквой и угловой открывающейся скобкой должен быть пробел &apos;Между буквой и угловой открывающейся скобкой должен быть пробел
AskAndReplace(&quot;(?&lt;=&quot; &amp; latinPlusCyrillicLettersRegExp &amp; &quot;)&lt;(?=…&gt;)&quot;,space &amp; &quot;&lt;&quot;) AskAndReplace(&quot;(?&lt;=&quot; &amp; RX_Letters &amp; &quot;)&lt;(?=…&gt;)&quot;,space &amp; &quot;&lt;&quot;)
&apos;Между угловой закрывающейся скобкой и буквой должен быть пробел &apos;Между угловой закрывающейся скобкой и буквой должен быть пробел
AskAndReplace(&quot;(?&lt;=&lt;…)&gt;(?=&quot; &amp; latinPlusCyrillicLettersRegExp &amp; &quot;)&quot;,&quot;&gt;&quot; &amp; space) AskAndReplace(&quot;(?&lt;=&lt;…)&gt;(?=&quot; &amp; RX_Letters &amp; &quot;)&quot;,&quot;&gt;&quot; &amp; space)
If config.getPropertyValue(&quot;fixes_russian_iph&quot;) = &quot;true&quot; Then If config.getPropertyValue(&quot;fixes_russian_iph&quot;) = &quot;true&quot; Then
&apos;между N. Y. не должно быть пробела &apos;между N. Y. не должно быть пробела
@ -531,17 +557,17 @@ Private Sub loadArticleStyles
Dim dispatcher As Object Dim dispatcher As Object
Dim filePath As String Dim filePath As String
Dim fileTest As Object Dim fileTest As Object
Dim fileName As String Dim predefined As String
Dim aArgs(0) As New com.sun.star.beans.PropertyValue Dim aArgs(0) As New com.sun.star.beans.PropertyValue
Dim config As Object Dim config As Object
config = initRedactionConfiguration() config = initRedactionConfiguration()
fileName = config.getPropertyValue(&quot;defaultTemplate&quot;) predefined = config.getPropertyValue(&quot;predefined_template&quot;)
filePath = getTemplatePath() &amp; &quot;/&quot; &amp; fileName filePath = getTemplateFile(predefined)
fileTest = CreateUnoService(&quot;com.sun.star.ucb.SimpleFileAccess&quot;) fileTest = CreateUnoService(&quot;com.sun.star.ucb.SimpleFileAccess&quot;)
If NOT fileTest.exists(filePath) Then If NOT fileTest.exists(filePath) Then
noStylesFileDialog() configureStyleFileDialog()
fileName = config.getPropertyValue(&quot;defaultTemplate&quot;) predefined = config.getPropertyValue(&quot;predefined_template&quot;)
filePath = getTemplatePath() &amp; &quot;/&quot; &amp; fileName filePath = getTemplateFile(predefined)
If NOT fileTest.exists(filePath) Then If NOT fileTest.exists(filePath) Then
&apos;MsgBox &quot;Файл стилей &quot; &amp; fileName &amp; &quot; не добавлен в Мои шаблоны. Не могу загрузить стили в текущий файл.&quot; &apos;MsgBox &quot;Файл стилей &quot; &amp; fileName &amp; &quot; не добавлен в Мои шаблоны. Не могу загрузить стили в текущий файл.&quot;
Exit Sub Exit Sub
@ -1992,7 +2018,7 @@ Sub replaceNumHyphenRegExp
End sub End sub
Sub fixBrokenCharBackTransparent Sub fixBrokenCharBackTransparent
Dim foonNotes As Object Dim footNotes As Object
Dim endNotes As Object Dim endNotes As Object
Dim i As Integer Dim i As Integer
Dim oStyles As Object Dim oStyles As Object
@ -2097,4 +2123,67 @@ Function fixColoredBackgroundInDoc() As Boolean
EndIf EndIf
End Function End Function
Sub fixDiacriticKerning
Dim oSearch As Object
Dim oFound As Object
Dim oPara As Object
oSearch = ThisComponent.createSearchDescriptor()
oSearch.SearchString = &quot;[\u0300-\u036F]&quot;
oSearch.SearchRegularExpression=True
oSearch.searchAll=True
oFound = ThisComponent.findFirst(oSearch)
Do While Not IsNull(oFound)
oPara = oFound.TextParagraph
fixDiacriticKerningInPara(oPara)
oFound = ThisComponent.findNext(oFound.End, oSearch)
Loop
End Sub
Sub fixDiacriticKerningInPara(oPara As Object)
Dim paraEnum As Object
Dim portion As Object
Dim prevPortion As Object
paraEnum = oPara.createEnumeration
If paraEnum.hasMoreElements Then
prevPortion = paraEnum.nextElement
While paraEnum.hasMoreElements
portion = paraEnum.nextElement
While isFirstCharDiacritic(portion)
moveFirstCharacter(portion, prevPortion)
Wend
prevPortion = portion
Wend
EndIf
End Sub
Function isFirstCharDiacritic(portion As Object) As Boolean
isFirstCharDiacritic = false
Dim portionText As String
Dim diaLowBound As Long
Dim diaHighBound As Long
Dim charNum As Long
diaLowBound = 768
diaHighBound = 879
portionText = portion.String
If Len(portionText) = 0 Then
Exit Function
EndIf
charNum = Asc(portionText)
If charNum &gt;= diaLowBound And charNum &lt;= diaHighBound Then
isFirstCharDiacritic = true
EndIf
End Function
Sub moveFirstCharacter(portion As Object, prevPortion As Object)
Dim prevEnd As Object
Dim nextStart As Object
prevEnd = prevPortion.getEnd()
prevEnd.String = Left(portion.String,1)
nextStart = portion.Text.createTextCursorByRange(portion.Start)
nextStart.goRight(1,true)
nextStart.setString(&quot;&quot;)
End Sub
</script:module> </script:module>

View file

@ -1,10 +1,10 @@
<?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="CleaningDialog" dlg:left="107" dlg:top="22" dlg:width="237" dlg:height="247" dlg:help-text="&amp;21.CleaningDialog.HelpText" dlg:closeable="true" dlg:moveable="true" dlg:title="&amp;22.CleaningDialog.Title"> <dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="CleaningDialog" dlg:left="107" dlg:top="22" dlg:width="237" dlg:height="285" dlg:help-text="&amp;21.CleaningDialog.HelpText" dlg:closeable="true" dlg:moveable="true" dlg:title="&amp;22.CleaningDialog.Title">
<dlg:bulletinboard> <dlg:bulletinboard>
<dlg:button dlg:id="Cancel" dlg:tab-index="0" dlg:left="28" dlg:top="232" dlg:width="40" dlg:height="12" dlg:value="Отмена" dlg:button-type="cancel"/> <dlg:button dlg:id="Cancel" dlg:tab-index="0" dlg:left="28" dlg:top="271" dlg:width="40" dlg:height="12" dlg:value="Отмена" dlg:button-type="cancel"/>
<dlg:button dlg:id="CommandButton1" dlg:tab-index="1" dlg:left="24" dlg:top="180" dlg:width="2" dlg:height="0" dlg:value="CommandButton1"/> <dlg:button dlg:id="CommandButton1" dlg:tab-index="1" dlg:left="24" dlg:top="180" dlg:width="2" dlg:height="0" dlg:value="CommandButton1"/>
<dlg:button dlg:id="OK" dlg:tab-index="2" dlg:left="92" dlg:top="232" dlg:width="40" dlg:height="12" dlg:value="OK" dlg:button-type="ok"/> <dlg:button dlg:id="OK" dlg:tab-index="2" dlg:left="92" dlg:top="271" dlg:width="40" dlg:height="12" dlg:value="OK" dlg:button-type="ok"/>
<dlg:checkbox dlg:id="fontsInStyles" dlg:tab-index="3" dlg:left="11" dlg:top="10" dlg:width="218" dlg:height="7" dlg:value="Заменить названия шрифтов в стилях" dlg:checked="false"/> <dlg:checkbox dlg:id="fontsInStyles" dlg:tab-index="3" dlg:left="11" dlg:top="10" dlg:width="218" dlg:height="7" dlg:value="Заменить названия шрифтов в стилях" dlg:checked="false"/>
<dlg:checkbox dlg:id="removeLinks" dlg:tab-index="6" dlg:left="11" dlg:top="60" dlg:width="218" dlg:height="7" dlg:value="Удалить гиперссылки" dlg:checked="false"/> <dlg:checkbox dlg:id="removeLinks" dlg:tab-index="6" dlg:left="11" dlg:top="60" dlg:width="218" dlg:height="7" dlg:value="Удалить гиперссылки" dlg:checked="false"/>
<dlg:checkbox dlg:id="cleanFormatting" dlg:tab-index="5" dlg:left="11" dlg:top="30" dlg:width="218" dlg:height="7" dlg:value="Очистить форматирование" dlg:checked="false"/> <dlg:checkbox dlg:id="cleanFormatting" dlg:tab-index="5" dlg:left="11" dlg:top="30" dlg:width="218" dlg:height="7" dlg:value="Очистить форматирование" dlg:checked="false"/>
@ -20,8 +20,8 @@
<dlg:checkbox dlg:id="removeManualPageBreaks" dlg:tab-index="15" dlg:left="11" dlg:top="160" dlg:width="218" dlg:height="7" dlg:value="Удалить все разрывы страниц" dlg:checked="false"/> <dlg:checkbox dlg:id="removeManualPageBreaks" dlg:tab-index="15" dlg:left="11" dlg:top="160" dlg:width="218" dlg:height="7" dlg:value="Удалить все разрывы страниц" dlg:checked="false"/>
<dlg:checkbox dlg:id="replaceWhiteBackground" dlg:tab-index="16" dlg:left="11" dlg:top="40" dlg:width="218" dlg:height="7" dlg:value="Заменить белый фон символов на прозрачный" dlg:checked="false"/> <dlg:checkbox dlg:id="replaceWhiteBackground" dlg:tab-index="16" dlg:left="11" dlg:top="40" dlg:width="218" dlg:height="7" dlg:value="Заменить белый фон символов на прозрачный" dlg:checked="false"/>
<dlg:checkbox dlg:id="removeBasic" dlg:tab-index="17" dlg:left="11" dlg:top="170" dlg:width="218" dlg:height="7" dlg:value="Удалить макросы" dlg:checked="false"/> <dlg:checkbox dlg:id="removeBasic" dlg:tab-index="17" dlg:left="11" dlg:top="170" dlg:width="218" dlg:height="7" dlg:value="Удалить макросы" dlg:checked="false"/>
<dlg:button dlg:id="buttonLoad" dlg:tab-index="18" dlg:left="158" dlg:top="232" dlg:width="52" dlg:height="12" dlg:value="loadTemplate"> <dlg:button dlg:id="buttonLoad" dlg:tab-index="18" dlg:left="158" dlg:top="271" dlg:width="65" dlg:height="12" dlg:value="loadTemplate">
<script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:Redaction.Configuration.setDeafultTemplate?language=Basic&amp;location=application" script:language="Script"/> <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:Redaction.Configuration.configureStyleFileDialog?language=Basic&amp;location=application" script:language="Script"/>
</dlg:button> </dlg:button>
<dlg:checkbox dlg:id="removeAllFields" dlg:tab-index="19" dlg:left="11" dlg:top="180" dlg:width="218" dlg:height="7" dlg:value="Удалить все поля" dlg:checked="false"/> <dlg:checkbox dlg:id="removeAllFields" dlg:tab-index="19" dlg:left="11" dlg:top="180" dlg:width="218" dlg:height="7" dlg:value="Удалить все поля" dlg:checked="false"/>
<dlg:checkbox dlg:id="fixDOI" dlg:tab-index="20" dlg:left="11" dlg:top="110" dlg:width="218" dlg:height="7" dlg:value="Исправить DOI" dlg:checked="false"/> <dlg:checkbox dlg:id="fixDOI" dlg:tab-index="20" dlg:left="11" dlg:top="110" dlg:width="218" dlg:height="7" dlg:value="Исправить DOI" dlg:checked="false"/>
@ -30,5 +30,7 @@
<dlg:checkbox dlg:id="convertFontsToCharStyles" dlg:tab-index="23" dlg:left="11" dlg:top="210" dlg:width="218" dlg:height="7" dlg:value="Конвертировать шрифты в стили символов" dlg:checked="false"/> <dlg:checkbox dlg:id="convertFontsToCharStyles" dlg:tab-index="23" dlg:left="11" dlg:top="210" dlg:width="218" dlg:height="7" dlg:value="Конвертировать шрифты в стили символов" dlg:checked="false"/>
<dlg:checkbox dlg:id="fixBrokenCharBackTransparent" dlg:tab-index="24" dlg:left="11" dlg:top="220" dlg:width="218" dlg:height="7" dlg:value="fixBrokenCharBackTransparent" dlg:checked="false"/> <dlg:checkbox dlg:id="fixBrokenCharBackTransparent" dlg:tab-index="24" dlg:left="11" dlg:top="220" dlg:width="218" dlg:height="7" dlg:value="fixBrokenCharBackTransparent" dlg:checked="false"/>
<dlg:checkbox dlg:id="removeNotTransparentBackgrounds" dlg:tab-index="25" dlg:left="11" dlg:top="50" dlg:width="218" dlg:height="7" dlg:value="Удалить непрозрачные фоны в тексте" dlg:checked="false"/> <dlg:checkbox dlg:id="removeNotTransparentBackgrounds" dlg:tab-index="25" dlg:left="11" dlg:top="50" dlg:width="218" dlg:height="7" dlg:value="Удалить непрозрачные фоны в тексте" dlg:checked="false"/>
<dlg:text dlg:id="description" dlg:tab-index="26" dlg:left="11" dlg:top="251" dlg:width="217" dlg:height="16" dlg:value="Label1" dlg:multiline="true"/>
<dlg:checkbox dlg:id="fixDiacriticKerning" dlg:tab-index="27" dlg:left="11" dlg:top="230" dlg:width="218" dlg:height="7" dlg:value="Fix diacritic kerning" dlg:checked="false"/>
</dlg:bulletinboard> </dlg:bulletinboard>
</dlg:window> </dlg:window>

View file

@ -1,7 +1,23 @@
<?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="Configuration" script:language="StarBasic" script:moduleType="normal">Public Const redactionExtensionName As String = &quot;cleanAndValidate&quot; <script:module xmlns:script="http://openoffice.org/2000/script" script:name="Configuration" script:language="StarBasic" script:moduleType="normal">Public Const redactionExtensionName = &quot;cleanAndValidate&quot;
Public Const redactionExtensionVersion = &quot;0.9.30&quot; Public Const redactionExtensionVersion = &quot;0.10.11&quot;
Public Const template_name_monography = &quot;Монография&quot;
Public Const template_name_pj = &quot;Философский журнал&quot;
Public Const template_name_pq = &quot;Вопросы философии&quot;
Public Const template_name_hp = &quot;История философии&quot;
Public Const template_name_hpe = &quot;Историко-философский ежегодник&quot;
Public Const template_name_pr = &quot;Философия религии&quot;
Public Const template_name_fnit = &quot;Философия науки и техники&quot;
Public Const template_name_pa = &quot;Философская антропология&quot;
Public Const template_name_pcr = &quot;Проблемы цивилизационного развития&quot;
Public Const template_name_eifn = &quot;Эпистемология и философия науки&quot;
Public Const template_name_et = &quot;Этическая мысль&quot;
Public Const template_name_ephe = &quot;Электронная философская энциклопедия&quot;
Public Const template_name_iph_big = &quot;Большой формат издания&quot;
Public Const template_manual = &quot;custom_selected_template&quot;
Public Const articles_path = &quot;/templates/articles/&quot;
Function initRedactionConfiguration() Function initRedactionConfiguration()
On Error Goto exceptionHandler On Error Goto exceptionHandler
Dim regFactory As Object Dim regFactory As Object
@ -21,6 +37,9 @@ Function initRedactionConfiguration()
EndIf EndIf
If Not propSetInfo.hasPropertyByName(&quot;fixes_russian_iph&quot;) Then If Not propSetInfo.hasPropertyByName(&quot;fixes_russian_iph&quot;) Then
redactionProps.addProperty(&quot;fixes_russian_iph&quot;, 128, &quot;true&quot;) redactionProps.addProperty(&quot;fixes_russian_iph&quot;, 128, &quot;true&quot;)
EndIf
If Not propSetInfo.hasPropertyByName(&quot;predefined_template&quot;) Then
redactionProps.addProperty(&quot;predefined_template&quot;, 128, &quot;false&quot;)
EndIf EndIf
If Not propSetInfo.hasPropertyByName(&quot;complexity&quot;) Then If Not propSetInfo.hasPropertyByName(&quot;complexity&quot;) Then
redactionProps.addProperty(&quot;complexity&quot;, 128, &quot;user&quot;) redactionProps.addProperty(&quot;complexity&quot;, 128, &quot;user&quot;)
@ -30,7 +49,10 @@ Function initRedactionConfiguration()
On Error Goto exceptionHandler2 On Error Goto exceptionHandler2
If Not propSetInfo.hasPropertyByName(&quot;defaultTemplate&quot;) Then If Not propSetInfo.hasPropertyByName(&quot;defaultTemplate&quot;) Then
redactionProps.addProperty(&quot;defaultTemplate&quot;, 128, &quot;Статья.ott&quot;) redactionProps.addProperty(&quot;defaultTemplate&quot;, 128, &quot;Статья.ott&quot;)
EndIf EndIf
If Not propSetInfo.hasPropertyByName(&quot;predefined_template&quot;) Then
redactionProps.addProperty(&quot;predefined_template&quot;, 128, &quot;false&quot;)
EndIf
exceptionHandler2: exceptionHandler2:
Resume Next Resume Next
initRedactionConfiguration = redactionProps initRedactionConfiguration = redactionProps
@ -104,71 +126,152 @@ Private Sub configurationDialog
Exit sub Exit sub
End Sub End Sub
Dim queitCleaningDialog As Object
Private Sub quietStartDialog Private Sub quietStartDialog
Dim dialog As Object
DialogLibraries.LoadLibrary(&quot;Redaction&quot;) DialogLibraries.LoadLibrary(&quot;Redaction&quot;)
dialog = CreateUnoDialog(DialogLibraries.Redaction.StartQuietCleaning) queitCleaningDialog = CreateUnoDialog(DialogLibraries.Redaction.StartQuietCleaning)
Dim description As String
Dim buttonNameOk As String Dim buttonNameOk As String
Dim buttonNameStop As String Dim buttonNameStop As String
Dim buttonNameLoad As String Dim buttonNameLoad As String
Dim dialogTitle As String Dim dialogTitle As String
description = getTranslation(&quot;startQuietCleaningDescription&quot;)
buttonNameOk = getTranslation(&quot;buttonYes&quot;) buttonNameOk = getTranslation(&quot;buttonYes&quot;)
buttonNameStop = getTranslation(&quot;buttonStop&quot;) buttonNameStop = getTranslation(&quot;buttonStop&quot;)
buttonNameLoad = getTranslation(&quot;buttonLoad&quot;) buttonNameLoad = getTranslation(&quot;buttonLoad&quot;)
dialogTitle = getTranslation(&quot;quietStartCleaningTitle&quot;) dialogTitle = getTranslation(&quot;quietStartCleaningTitle&quot;)
dialog.Title = dialogTitle queitCleaningDialog.Title = dialogTitle
dialog.getControl(&quot;Description&quot;).setText(description) setQuietDialogDescription()
dialog.getControl(&quot;buttonOk&quot;).Label = buttonNameOk queitCleaningDialog.getControl(&quot;buttonOk&quot;).Label = buttonNameOk
dialog.getControl(&quot;buttonStop&quot;).Label = buttonNameStop queitCleaningDialog.getControl(&quot;buttonStop&quot;).Label = buttonNameStop
dialog.getControl(&quot;buttonLoad&quot;).Label = buttonNameLoad queitCleaningDialog.getControl(&quot;buttonLoad&quot;).Label = buttonNameLoad
dialog.setVisible(true) queitCleaningDialog.setVisible(true)
Select Case dialog.Execute() Select Case queitCleaningDialog.Execute()
Case 1 Case 1
dialog.setVisible(false) queitCleaningDialog.setVisible(false)
dialog.dispose() queitCleaningDialog.dispose()
quietCleaning quietCleaning
Case 0 Case 0
dialog.setVisible(false) queitCleaningDialog.setVisible(false)
dialog.dispose() queitCleaningDialog.dispose()
End Select End Select
Exit sub Exit sub
End Sub End Sub
Private Sub noStylesFileDialog Function setAdvancedDialogDescription()
If IsNull(advancedCleaningDialog) Then
Exit Function
EndIf
Dim config As Object
Dim description As String
Dim predefined As String
Dim customFile As String
config = initRedactionConfiguration()
predefined = config.getPropertyValue(&quot;predefined_template&quot;)
customFile = config.getPropertyValue(&quot;defaultTemplate&quot;)
If predefined = &quot;false&quot; Then
description = getTranslation(&quot;templateNotSelected&quot;)
ElseIf predefined = template_manual Then
description = getTranslation(&quot;templateChosen&quot;) &amp; &quot; «&quot; &amp; customFile &amp; &quot;»&quot;
Else
description = getTranslation(&quot;templateChosen&quot;) &amp; &quot; «&quot; &amp; predefined &amp; &quot;»&quot;
EndIf
advancedCleaningDialog.getControl(&quot;description&quot;).setText(description)
End Function
Function setQuietDialogDescription()
If IsNull(queitCleaningDialog) Then
Exit Function
EndIf
Dim config As Object
Dim description As String
Dim predefined As String
Dim customFile As String
config = initRedactionConfiguration()
predefined = config.getPropertyValue(&quot;predefined_template&quot;)
customFile = config.getPropertyValue(&quot;defaultTemplate&quot;)
If predefined = &quot;false&quot; Then
description = getTranslation(&quot;startQuietCleaningDescription1&quot;) &amp; &quot; &quot; &amp; getTranslation(&quot;startQuietCleaningDescription2&quot;)
ElseIf predefined = template_manual Then
description = getTranslation(&quot;startQuietCleaningDescription1&quot;) &amp; &quot; «&quot; &amp; customFile &amp; &quot;» &quot; &amp; getTranslation(&quot;startQuietCleaningDescription2&quot;)
Else
description = getTranslation(&quot;startQuietCleaningDescription1&quot;) &amp; &quot; «&quot; &amp; predefined &amp; &quot;» &quot; &amp; getTranslation(&quot;startQuietCleaningDescription2&quot;)
EndIf
queitCleaningDialog.getControl(&quot;Description&quot;).setText(description)
End Function
Dim styleFileDialog As Object
Private Sub configureStyleFileDialog
&apos;Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; ) &apos;Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; )
Dim config As Object
Dim dialog As Object
Dim predefined As String
Dim description As String
Dim customFile As String
DialogLibraries.LoadLibrary(&quot;Redaction&quot;)
styleFileDialog = CreateUnoDialog(DialogLibraries.Redaction.NoStyleFile)
config = initRedactionConfiguration()
predefined = config.getPropertyValue(&quot;predefined_template&quot;)
customFile = config.getPropertyValue(&quot;defaultTemplate&quot;)
If predefined = &quot;false&quot; Then
description = getTranslation(&quot;noFileWithStylesFound&quot;)
ElseIf predefined = template_manual Then
description = getTranslation(&quot;manualStyleFileSet&quot;) &amp; &quot; «&quot; &amp; customFile &amp; &quot;»&quot;
Else
description = getTranslation(&quot;predefiendTemplateSelected&quot;) &amp; &quot; «&quot; &amp; predefined &amp; &quot;»&quot;
EndIf
styleFileDialog.Title = getTranslation(&quot;noStylesFileDialogTitle&quot;)
styleFileDialog.getControl(&quot;Description&quot;).setText(description)
styleFileDialog.getControl(&quot;FileSelection&quot;).Label = getTranslation(&quot;buttonNameToSelectFileWithStyles&quot;)
styleFileDialog.getControl(&quot;buttonOk&quot;).Label = getTranslation(&quot;buttonTemplateNotFoundSkip&quot;)
styleFileDialog.setVisible(true)
Select Case styleFileDialog.Execute()
Case 0
End Select
setQuietDialogDescription()
setAdvancedDialogDescription()
styleFileDialog.setVisible(false)
styleFileDialog.dispose()
End Sub
Sub selectTemplateDialog()
Dim config As Object
Dim description As String
Dim templateName As String
Dim templateNames() As String
Dim i As Integer
Dim listComponent As Object
config = initRedactionConfiguration()
Dim dialog As Object Dim dialog As Object
DialogLibraries.LoadLibrary(&quot;Redaction&quot;) DialogLibraries.LoadLibrary(&quot;Redaction&quot;)
dialog = CreateUnoDialog(DialogLibraries.Redaction.NoStyleFile) dialog = CreateUnoDialog(DialogLibraries.Redaction.SelectTemplate)
Dim description As String listComponent = dialog.getControl(&quot;ListBox&quot;)
Dim buttonName As String dialog.getControl(&quot;buttonOk&quot;).Label = getTranslation(&quot;buttonYes&quot;)
Dim dialogTitle As String dialog.getControl(&quot;buttonStop&quot;).Label = getTranslation(&quot;buttonStop&quot;)
Dim buttonTemplateNotFoundSkip As String dialog.Title = getTranslation(&quot;selectTemplateDialogTitle&quot;)
dialogTitle = getTranslation(&quot;noStylesFileDialogTitle&quot;) templateNames = getTemplateNames()
description = getTranslation(&quot;noFileWithStylesFound&quot;) listComponent.addItems(templateNames , 0)
buttonName = getTranslation(&quot;buttonNameToSelectFileWithStyles&quot;) dialog.setVisible(true)
buttonTemplateNotFoundSkip = getTranslation(&quot;buttonTemplateNotFoundSkip&quot;)
dialog.Title = dialogTitle
dialog.getControl(&quot;Description&quot;).setText(description)
dialog.getControl(&quot;FileSelection&quot;).Label = buttonName
dialog.getControl(&quot;buttonOk&quot;).Label = buttonTemplateNotFoundSkip
dialog.setVisible(true)
Select Case dialog.Execute() Select Case dialog.Execute()
Case 1 Case 1
setDeafultTemplate() templateName = listComponent.SelectedItem
If NOT (templateName=&quot;0&quot; or templateName=&quot;&quot;) Then
config.setPropertyValue(&quot;predefined_template&quot;, templateName)
description = getTranslation(&quot;predefiendTemplateSelected&quot;) &amp; &quot; «&quot; &amp; templateName &amp; &quot;»&quot;
styleFileDialog.getControl(&quot;Description&quot;).setText(description)
EndIf
Case 0 Case 0
End Select End Select
dialog.setVisible(false) dialog.setVisible(false)
dialog.dispose() dialog.dispose()
Exit sub
End Sub End Sub
Sub setManualTemplate()
Dim description As String
Sub setDeafultTemplate()
Dim selectedTemplate As String Dim selectedTemplate As String
selectedTemplate = getFileURLDialog() selectedTemplate = getFileURLDialog()
oSimpleFileAccess = CreateUnoService( &quot;com.sun.star.ucb.SimpleFileAccess&quot; ) oSimpleFileAccess = CreateUnoService( &quot;com.sun.star.ucb.SimpleFileAccess&quot; )
@ -180,13 +283,16 @@ Sub setDeafultTemplate()
config = initRedactionConfiguration() config = initRedactionConfiguration()
fileName = Dir(selectedTemplate) fileName = Dir(selectedTemplate)
config.setPropertyValue(&quot;defaultTemplate&quot;,fileName) config.setPropertyValue(&quot;defaultTemplate&quot;,fileName)
config.setPropertyValue(&quot;predefined_template&quot;, template_manual)
Dim templatePath As String Dim templatePath As String
templatePath = getTemplatePath() templatePath = getTemplatePath()
MkDir(templatePath) MkDir(templatePath)
FileCopy(selectedTemplate, templatePath &amp; &quot;/&quot; &amp; fileName) FileCopy(selectedTemplate, templatePath &amp; &quot;/&quot; &amp; fileName)
description = getTranslation(&quot;manualStyleFileSet&quot;) &amp; &quot; «&quot; &amp; fileName &amp; &quot;»&quot;
styleFileDialog.getControl(&quot;Description&quot;).setText(description)
End Sub End Sub
Function getFileURLDialog() As String Function getFileURLDialog() As String
Dim oFilePicker As Object, oSimpleFileAccess As Object Dim oFilePicker As Object, oSimpleFileAccess As Object
Dim oSettings As Object, oPathSettings As Object Dim oSettings As Object, oPathSettings As Object
Dim oTextField As Object, oTextFieldModel As Object Dim oTextField As Object, oTextFieldModel As Object
@ -215,5 +321,81 @@ End Sub
End If End If
End If End If
getFileURLDialog = &quot;&quot; getFileURLDialog = &quot;&quot;
End Function End Function
Function getTemplateNames() As Variant
Dim names() As String
&apos; AddToArray(names, template_name_monography)
AddToArray(names, template_name_pq)
AddToArray(names, template_name_hp)
AddToArray(names, template_name_hpe)
AddToArray(names, template_name_pr)
AddToArray(names, template_name_fnit)
AddToArray(names, template_name_pa)
AddToArray(names, template_name_pj)
AddToArray(names, template_name_pcr)
AddToArray(names, template_name_eifn)
AddToArray(names, template_name_et)
AddToArray(names, template_name_ephe)
AddToArray(names, template_name_iph_big)
getTemplateNames = names
End Function
Function extensionPath() As String
Dim oPackageInfoProvider As Object
oPackageInfoProvider = GetDefaultContext.getByName(&quot;/singletons/com.sun.star.deployment.PackageInformationProvider&quot;)
extensionPath = oPackageInfoProvider.getPackageLocation(&quot;pro.litvinovg.Redaction&quot;)
End Function
Function getTemplateFile(templateName As String) As String
Dim config As Object
Dim fileName As String
Select Case templateName
Case template_manual
config = initRedactionConfiguration()
fileName = config.getPropertyValue(&quot;defaultTemplate&quot;)
getTemplateFile = getTemplatePath() &amp; &quot;/&quot; &amp; fileName
Exit Function
Case template_name_eifn
getTemplateFile = extensionPath() &amp; articles_path &amp; &quot;статья_эифн.ott&quot;
Exit Function
Case template_name_fnit
getTemplateFile = extensionPath() &amp; articles_path &amp; &quot;статья_фнит.ott&quot;
Exit Function
Case template_name_pa
getTemplateFile = extensionPath() &amp; articles_path &amp; &quot;статья_фа.ott&quot;
Exit Function
Case template_name_pj
getTemplateFile = extensionPath() &amp; articles_path &amp; &quot;статья_фж.ott&quot;
Exit Function
Case template_name_et
getTemplateFile = extensionPath() &amp; articles_path &amp; &quot;статья_эм.ott&quot;
Exit Function
Case template_name_pq
getTemplateFile = extensionPath() &amp; articles_path &amp; &quot;статья_вф.ott&quot;
Exit Function
Case template_name_pr
getTemplateFile = extensionPath() &amp; articles_path &amp; &quot;статья_фр.ott&quot;
Exit Function
Case template_name_pcr
getTemplateFile = extensionPath() &amp; articles_path &amp; &quot;статья_пцр.ott&quot;
Exit Function
Case template_name_hp
getTemplateFile = extensionPath() &amp; articles_path &amp; &quot;статья_иф.ott&quot;
Exit Function
Case template_name_hpe
getTemplateFile = extensionPath() &amp; articles_path &amp; &quot;статья_ифе.ott&quot;
Exit Function
Case template_name_ephe
getTemplateFile = extensionPath() &amp; articles_path &amp; &quot;статья_эфэ.ott&quot;
Exit Function
Case template_name_iph_big
getTemplateFile = extensionPath() &amp; &quot;/templates/books/большой_формат_для_архива.ott&quot;
Exit Function
Case Else
getTemplateFile = extensionPath() &amp; articles_path &amp; &quot;статья.ott&quot;
Exit Function
End Select
End Function
</script:module> </script:module>

View file

@ -1,10 +1,15 @@
<?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="NoStyleFile" dlg:left="140" dlg:top="101" dlg:width="239" dlg:height="98" dlg:help-text="&amp;5.NoStyleFile.HelpText" dlg:closeable="true" dlg:moveable="true" dlg:title="&amp;6.NoStyleFile.Title"> <dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="NoStyleFile" dlg:left="140" dlg:top="101" dlg:width="243" dlg:height="98" dlg:help-text="&amp;5.NoStyleFile.HelpText" dlg:closeable="true" dlg:moveable="true" dlg:title="&amp;6.NoStyleFile.Title">
<dlg:bulletinboard> <dlg:bulletinboard>
<dlg:button dlg:id="CommandButton2" dlg:tab-index="1" dlg:left="167" dlg:top="139" dlg:width="1" dlg:height="0" dlg:help-text="&amp;15.NoStyleFile.CommandButton2.HelpText" dlg:value="&amp;16.NoStyleFile.CommandButton2.Label"/> <dlg:button dlg:id="CommandButton2" dlg:tab-index="2" dlg:left="167" dlg:top="139" dlg:width="1" dlg:height="0" dlg:help-text="&amp;15.NoStyleFile.CommandButton2.HelpText" dlg:value="&amp;16.NoStyleFile.CommandButton2.Label"/>
<dlg:button dlg:id="FileSelection" dlg:tab-index="2" dlg:left="46" dlg:top="75" dlg:width="60" dlg:height="13" dlg:help-text="&amp;19.NoStyleFile.FileSelection.HelpText" dlg:value="&amp;20.NoStyleFile.FileSelection.Label" dlg:button-type="ok"/> <dlg:button dlg:id="FileSelection" dlg:tab-index="3" dlg:left="12" dlg:top="75" dlg:width="65" dlg:height="13" dlg:help-text="&amp;19.NoStyleFile.FileSelection.HelpText" dlg:value="&amp;20.NoStyleFile.FileSelection.Label">
<dlg:text dlg:id="Description" dlg:tab-index="3" dlg:left="23" dlg:top="13" dlg:width="192" dlg:height="52" dlg:help-text="&amp;27.NoStyleFile.Description.HelpText" dlg:value="&amp;28.NoStyleFile.Description.Label"/> <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:Redaction.Configuration.setManualTemplate?language=Basic&amp;location=application" script:language="Script"/>
<dlg:button dlg:id="buttonOk" dlg:tab-index="0" dlg:left="138" dlg:top="75" dlg:width="60" dlg:height="13" dlg:help-text="&amp;13.NoStyleFile.CommandButton1.HelpText" dlg:value="ok" dlg:button-type="cancel"/> </dlg:button>
<dlg:text dlg:id="Description" dlg:tab-index="4" dlg:left="12" dlg:top="13" dlg:width="219" dlg:height="52" dlg:help-text="&amp;27.NoStyleFile.Description.HelpText" dlg:value="&amp;28.NoStyleFile.Description.Label" dlg:multiline="true"/>
<dlg:button dlg:id="buttonOk" dlg:tab-index="0" dlg:left="166" dlg:top="75" dlg:width="65" dlg:height="13" dlg:help-text="&amp;13.NoStyleFile.CommandButton1.HelpText" dlg:value="ok" dlg:button-type="cancel"/>
<dlg:button dlg:id="ListSelection" dlg:tab-index="1" dlg:left="89" dlg:top="75" dlg:width="65" dlg:height="13" dlg:help-text="&amp;19.NoStyleFile.FileSelection.HelpText" dlg:value="Выбрать из списка">
<script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:Redaction.Configuration.selectTemplateDialog?language=Basic&amp;location=application" script:language="Script"/>
</dlg:button>
</dlg:bulletinboard> </dlg:bulletinboard>
</dlg:window> </dlg:window>

View file

@ -0,0 +1,9 @@
<?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="SelectTemplate" dlg:left="146" dlg:top="89" dlg:width="220" dlg:height="202" dlg:closeable="true" dlg:moveable="true" dlg:title="Choose template with styles">
<dlg:bulletinboard>
<dlg:menulist dlg:id="ListBox" dlg:tab-index="0" dlg:left="1" dlg:top="3" dlg:width="218" dlg:height="175"/>
<dlg:button dlg:id="buttonOk" dlg:tab-index="1" dlg:left="26" dlg:top="185" dlg:width="65" dlg:height="13" dlg:value="Ok" dlg:button-type="ok"/>
<dlg:button dlg:id="buttonStop" dlg:tab-index="2" dlg:left="126" dlg:top="185" dlg:width="65" dlg:height="13" dlg:value="Cancel" dlg:button-type="cancel"/>
</dlg:bulletinboard>
</dlg:window>

View file

@ -2,11 +2,11 @@
<!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="StartQuietCleaning" dlg:left="124" dlg:top="101" dlg:width="222" dlg:height="96" dlg:help-text="&amp;29.StartQuietCleaning.HelpText" dlg:closeable="true" dlg:moveable="true" dlg:title="&amp;30.StartQuietCleaning.Title"> <dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="StartQuietCleaning" dlg:left="124" dlg:top="101" dlg:width="222" dlg:height="96" dlg:help-text="&amp;29.StartQuietCleaning.HelpText" dlg:closeable="true" dlg:moveable="true" dlg:title="&amp;30.StartQuietCleaning.Title">
<dlg:bulletinboard> <dlg:bulletinboard>
<dlg:text dlg:id="Description" dlg:tab-index="0" dlg:left="15" dlg:top="18" dlg:width="194" dlg:height="40" dlg:help-text="&amp;33.StartQuietCleaning.Description.HelpText" dlg:value="&amp;34.StartQuietCleaning.Description.Label"/> <dlg:text dlg:id="Description" dlg:tab-index="1" dlg:left="15" dlg:top="8" dlg:width="194" dlg:height="56" dlg:help-text="&amp;33.StartQuietCleaning.Description.HelpText" dlg:value="&amp;34.StartQuietCleaning.Description.Label" dlg:multiline="true"/>
<dlg:button dlg:id="buttonOk" dlg:tab-index="1" dlg:left="15" dlg:top="71" dlg:width="52" dlg:height="17" dlg:help-text="&amp;55.StartQuietCleaning.buttonOk.HelpText" dlg:value="&amp;56.StartQuietCleaning.buttonOk.Label" dlg:button-type="ok"/> <dlg:button dlg:id="buttonOk" dlg:tab-index="0" dlg:left="15" dlg:top="71" dlg:width="60" dlg:height="17" dlg:help-text="&amp;55.StartQuietCleaning.buttonOk.HelpText" dlg:value="&amp;56.StartQuietCleaning.buttonOk.Label" dlg:button-type="ok"/>
<dlg:button dlg:id="buttonStop" dlg:tab-index="3" dlg:left="84" dlg:top="71" dlg:width="52" dlg:height="17" dlg:help-text="&amp;57.StartQuietCleaning.buttonStop.HelpText" dlg:value="&amp;58.StartQuietCleaning.buttonStop.Label" dlg:button-type="cancel"/> <dlg:button dlg:id="buttonStop" dlg:tab-index="3" dlg:left="83" dlg:top="71" dlg:width="60" dlg:height="17" dlg:help-text="&amp;57.StartQuietCleaning.buttonStop.HelpText" dlg:value="&amp;58.StartQuietCleaning.buttonStop.Label" dlg:button-type="cancel"/>
<dlg:button dlg:id="buttonLoad" dlg:tab-index="2" dlg:left="156" dlg:top="71" dlg:width="52" dlg:height="17" dlg:help-text="&amp;59.StartQuietCleaning.buttonLoad.HelpText" dlg:value="&amp;60.StartQuietCleaning.buttonLoad.Label"> <dlg:button dlg:id="buttonLoad" dlg:tab-index="2" dlg:left="149" dlg:top="71" dlg:width="60" dlg:height="17" dlg:help-text="&amp;59.StartQuietCleaning.buttonLoad.HelpText" dlg:value="&amp;60.StartQuietCleaning.buttonLoad.Label">
<script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:Redaction.Configuration.setDeafultTemplate?language=Basic&amp;location=application" script:language="Script"/> <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:Redaction.Configuration.configureStyleFileDialog?language=Basic&amp;location=application" script:language="Script"/>
</dlg:button> </dlg:button>
</dlg:bulletinboard> </dlg:bulletinboard>
</dlg:window> </dlg:window>

View file

@ -27,10 +27,13 @@ End Function
Function getRussian(identifier As String) As String Function getRussian(identifier As String) As String
Select Case identifier Select Case identifier
Case &quot;noFileWithStylesFound&quot; Case &quot;noFileWithStylesFound&quot;
getRussian = &quot;Файл-шаблон, содержащий стили для загрузки в документ не был задан. &quot; &amp; chr(10) &amp;&quot;Вы можете выбрать новый файл-шаблон. &quot; &amp; chr(10) &amp; &quot;Если файл-шаблон не будет выбран, то данный этап чистки будет пропущен.&quot; getRussian = &quot;Файл-шаблон, содержащий стили для загрузки в документ не был задан. &quot; &amp; chr(10) &amp;&quot;Вы можете выбрать новый файл-шаблон. &quot; &amp; chr(10) &amp; &quot;Если файл-шаблон не будет выбран, то загрузка стилей из шаблона при чистке не будет выполняться.&quot;
Exit Function Exit Function
Case &quot;startQuietCleaningDescription&quot; Case &quot;startQuietCleaningDescription1&quot;
getRussian = &quot;Вы хотите запустить чистку документа? &quot; &amp; chr(10) &amp; &quot;Здесь Вы можете также указать новый файл-шаблон.&quot; &amp; chr(10) &amp; &quot;Стили из шаблона будут загружены в документ.&quot; getRussian = &quot;Вы хотите запустить чистку документа? &quot; &amp; chr(10) &amp; &quot;Вы можете также указать новый файл-шаблон.&quot; &amp; chr(10) &amp; &quot;Стили из шаблона &quot;
Exit Function
Case &quot;startQuietCleaningDescription2&quot;
getRussian = &quot;будут загружены в документ.&quot;
Exit Function Exit Function
Case &quot;buttonYes&quot; Case &quot;buttonYes&quot;
getRussian = &quot;Да&quot; getRussian = &quot;Да&quot;
@ -39,7 +42,7 @@ Function getRussian(identifier As String) As String
getRussian = &quot;Подтверждение запуска чистки&quot; getRussian = &quot;Подтверждение запуска чистки&quot;
Exit Function Exit Function
Case &quot;noStylesFileDialogTitle&quot; Case &quot;noStylesFileDialogTitle&quot;
getRussian = &quot;Файл со стилями не найден&quot; getRussian = &quot;Выбор файла со стилями&quot;
Exit Function Exit Function
Case &quot;buttonTemplateNotFoundSkip&quot; Case &quot;buttonTemplateNotFoundSkip&quot;
getRussian = &quot;Продолжить&quot; getRussian = &quot;Продолжить&quot;
@ -48,7 +51,7 @@ Function getRussian(identifier As String) As String
getRussian = &quot;Нет&quot; getRussian = &quot;Нет&quot;
Exit Function Exit Function
Case &quot;buttonLoad&quot; Case &quot;buttonLoad&quot;
getRussian = &quot;Указать шаблон&quot; getRussian = &quot;Выбрать шаблон&quot;
Exit Function Exit Function
Case &quot;buttonNameToSelectFileWithStyles&quot; Case &quot;buttonNameToSelectFileWithStyles&quot;
getRussian = &quot;Указать файл&quot; getRussian = &quot;Указать файл&quot;
@ -326,6 +329,27 @@ Function getRussian(identifier As String) As String
Case &quot;removeNotTransparentBackgrounds&quot; Case &quot;removeNotTransparentBackgrounds&quot;
getRussian = &quot;Удалить непрозрачные фоны в тексте&quot; getRussian = &quot;Удалить непрозрачные фоны в тексте&quot;
Exit Function Exit Function
Case &quot;manualStyleFileSet&quot;
getRussian = &quot;При чистке будет использоваться указанный вручную шаблон&quot;
Exit Function
Case &quot;predefiendTemplateSelected&quot;
getRussian = &quot;При чистке будет использоваться выбранный из списка шаблон&quot;
Exit Function
Case &quot;selectTemplateDialogTitle&quot;
getRussian = &quot;Выберите шаблон из списка&quot;
Exit Function
Case &quot;templateNotSelected&quot;
getRussian = &quot;Шаблон не выбран&quot;
Exit Function
Case &quot;templateChosen&quot;
getRussian = &quot;Выбран шаблон&quot;
Exit Function
Case &quot;statusFixingDiacriticCharactersKerning&quot;
getRussian = &quot;Исправляем комбинирование с диакритическими символами&quot;
Exit Function
Case &quot;fixDiacriticKerning&quot;
getRussian = &quot;Исправить комбинирование с диакритическими символами&quot;
Exit Function
Case Else Case Else
getRussian = &quot;Перевод не найден&quot; getRussian = &quot;Перевод не найден&quot;
End Select End Select
@ -337,8 +361,11 @@ Function getEnglish(identifier As String) As String
Case &quot;noFileWithStylesFound&quot; Case &quot;noFileWithStylesFound&quot;
getEnglish = &quot;Template with styles wasn&apos;t found. You can choose template on your computer.&quot; &amp; chr(10) &amp;&quot; This stage of cleaning will be skipped if no file chosen.&quot; getEnglish = &quot;Template with styles wasn&apos;t found. You can choose template on your computer.&quot; &amp; chr(10) &amp;&quot; This stage of cleaning will be skipped if no file chosen.&quot;
Exit Function Exit Function
Case &quot;startQuietCleaningDescription&quot; Case &quot;startQuietCleaningDescription1&quot;
getEnglish = &quot;Do you want to start document cleaning?&quot; &amp; chr(10) &amp; &quot;You can choose template with styles.&quot; &amp; chr(10) &amp; &quot;Styles will be loaded in process of cleaning.&quot; &amp; chr(10) &amp; &quot;&quot; getEnglish = &quot;Do you want to start document cleaning?&quot; &amp; chr(10) &amp; &quot;You can choose template with styles.&quot; &amp; chr(10) &amp; &quot;Styles from template &quot;
Exit Function
Case &quot;startQuietCleaningDescription2&quot;
getEnglish = &quot;will be loaded in process of cleaning.&quot; &amp; chr(10) &amp; &quot;&quot;
Exit Function Exit Function
Case &quot;buttonYes&quot; Case &quot;buttonYes&quot;
getEnglish = &quot;Ok&quot; getEnglish = &quot;Ok&quot;
@ -347,7 +374,7 @@ Function getEnglish(identifier As String) As String
getEnglish = &quot;Confirmation&quot; getEnglish = &quot;Confirmation&quot;
Exit Function Exit Function
Case &quot;noStylesFileDialogTitle&quot; Case &quot;noStylesFileDialogTitle&quot;
getEnglish = &quot;Template file not found&quot; getEnglish = &quot;Configure a style file&quot;
Exit Function Exit Function
Case &quot;buttonTemplateNotFoundSkip&quot; Case &quot;buttonTemplateNotFoundSkip&quot;
getEnglish = &quot;Proceed&quot; getEnglish = &quot;Proceed&quot;
@ -634,6 +661,27 @@ Function getEnglish(identifier As String) As String
Case &quot;removeNotTransparentBackgrounds&quot; Case &quot;removeNotTransparentBackgrounds&quot;
getEnglish = &quot;Remove not transparent backgrounds in text&quot; getEnglish = &quot;Remove not transparent backgrounds in text&quot;
Exit Function Exit Function
Case &quot;manualStyleFileSet&quot;
getEnglish = &quot;For cleaning will be used manually specified template &quot;
Exit Function
Case &quot;predefiendTemplateSelected&quot;
getEnglish = &quot;For cleaning will be used template selected from the list&quot;
Exit Function
Case &quot;selectTemplateDialogTitle&quot;
getEnglish = &quot;Select a template from the list &quot;
Exit Function
Case &quot;templateNotSelected&quot;
getEnglish = &quot;Template not selected&quot;
Exit Function
Case &quot;templateChosen&quot;
getEnglish = &quot;Selected template&quot;
Exit Function
Case &quot;statusFixingDiacriticCharactersKerning&quot;
getEnglish = &quot;Fixing the combination with diacritics &quot;
Exit Function
Case &quot;fixDiacriticKerning&quot;
getEnglish = &quot;Fix combining with diacritic characters&quot;
Exit Function
Case Else Case Else
getEnglish = &quot;No translation&quot; getEnglish = &quot;No translation&quot;
End Select End Select
@ -644,8 +692,11 @@ Function getCroatian(identifier As String) As String
Case &quot;noFileWithStylesFound&quot; Case &quot;noFileWithStylesFound&quot;
getCroatian = &quot;Datoteka šablona koja sadrži stilove za učitavanje u dokument nije navedena. &quot; &amp; chr(10) &amp;&quot;Možete izabrati novi šablon na računaru. &quot; &amp; chr(10) &amp; &quot;Ako datoteka šablona nije izabrana, ovaj korak čišćenja će se preskočiti.&quot; getCroatian = &quot;Datoteka šablona koja sadrži stilove za učitavanje u dokument nije navedena. &quot; &amp; chr(10) &amp;&quot;Možete izabrati novi šablon na računaru. &quot; &amp; chr(10) &amp; &quot;Ako datoteka šablona nije izabrana, ovaj korak čišćenja će se preskočiti.&quot;
Exit Function Exit Function
Case &quot;startQuietCleaningDescription&quot; Case &quot;startQuietCleaningDescription1&quot;
getCroatian = &quot;Da li želite da počnete sa čišćenjem dokumenta?&quot; &amp; chr(10) &amp; &quot;Ovde možete da odredite i novu datoteku šablona.&quot; &amp; chr(10) &amp; &quot;Stilovi iz šablona biće učitani u dokument.&quot; getCroatian = &quot;Da li želite da počnete sa čišćenjem dokumenta?&quot; &amp; chr(10) &amp; &quot;Ovde možete da odredite i novu datoteku šablona.&quot; &amp; chr(10) &amp; &quot;Stilovi iz šablona &quot;
Exit Function
Case &quot;startQuietCleaningDescription2&quot;
getCroatian = &quot;biće učitani u dokument.&quot;
Exit Function Exit Function
Case &quot;buttonYes&quot; Case &quot;buttonYes&quot;
getCroatian = &quot;Da&quot; getCroatian = &quot;Da&quot;
@ -654,7 +705,7 @@ Function getCroatian(identifier As String) As String
getCroatian = &quot;Potvrda pokretanja čišćenja&quot; getCroatian = &quot;Potvrda pokretanja čišćenja&quot;
Exit Function Exit Function
Case &quot;noStylesFileDialogTitle&quot; Case &quot;noStylesFileDialogTitle&quot;
getCroatian = &quot;Šablon sa stilovima nije pronađen&quot; getCroatian = &quot;Konfigurišite datoteku stila&quot;
Exit Function Exit Function
Case &quot;buttonTemplateNotFoundSkip&quot; Case &quot;buttonTemplateNotFoundSkip&quot;
getCroatian = &quot;Nastavite&quot; getCroatian = &quot;Nastavite&quot;
@ -941,6 +992,27 @@ Function getCroatian(identifier As String) As String
Case &quot;removeNotTransparentBackgrounds&quot; Case &quot;removeNotTransparentBackgrounds&quot;
getCroatian = &quot;Uklonite netransparentne pozadine u tekstu&quot; getCroatian = &quot;Uklonite netransparentne pozadine u tekstu&quot;
Exit Function Exit Function
Case &quot;manualStyleFileSet&quot;
getCroatian = &quot;Prilikom čišćenja koristit će se ručno naveden predložak&quot;
Exit Function
Case &quot;predefiendTemplateSelected&quot;
getCroatian = &quot;Prilikom čišćenja koristit će se predložak odabran s popisa&quot;
Exit Function
Case &quot;selectTemplateDialogTitle&quot;
getCroatian = &quot;Izaberite obrazac sa liste&quot;
Exit Function
Case &quot;templateNotSelected&quot;
getCroatian = &quot;Šablon nije izabran&quot;
Exit Function
Case &quot;templateChosen&quot;
getCroatian = &quot;Izabrani šablon&quot;
Exit Function
Case &quot;statusFixingDiacriticCharactersKerning&quot;
getCroatian = &quot;Popravljanje kombinacije s dijakritičkim znakovima&quot;
Exit Function
Case &quot;fixDiacriticKerning&quot;
getCroatian = &quot;Ispravite kombiniranje s naglašenim likovima&quot;
Exit Function
Case Else Case Else
getCroatian = &quot;No translation&quot; getCroatian = &quot;No translation&quot;
End Select End Select
@ -951,8 +1023,11 @@ Function getSerbian(identifier As String) As String
Case &quot;noFileWithStylesFound&quot; Case &quot;noFileWithStylesFound&quot;
getSerbian = &quot;Датотека шаблона која садржи стилове за учитавање у документ није наведена.&quot; &amp; chr(10) &amp;&quot;Можете изабрати нови šablon на рачунару. &quot; &amp; chr(10) &amp; &quot;Ако датотека шаблона није изабрана, овај корак чишћења ће се прескочити.&quot; getSerbian = &quot;Датотека шаблона која садржи стилове за учитавање у документ није наведена.&quot; &amp; chr(10) &amp;&quot;Можете изабрати нови šablon на рачунару. &quot; &amp; chr(10) &amp; &quot;Ако датотека шаблона није изабрана, овај корак чишћења ће се прескочити.&quot;
Exit Function Exit Function
Case &quot;startQuietCleaningDescription&quot; Case &quot;startQuietCleaningDescription1&quot;
getSerbian = &quot;Да ли желите да почнете са чишћењем документа?&quot; &amp; chr(10) &amp; &quot;Овде можете да одредите и нову датотеку шаблона.&quot; &amp; chr(10) &amp; &quot;Стилови из шаблона биће учитани у документ.&quot; getSerbian = &quot;Да ли желите да почнете са чишћењем документа?&quot; &amp; chr(10) &amp; &quot;Овде можете да одредите и нову датотеку шаблона.&quot; &amp; chr(10) &amp; &quot;Стилови из шаблона &quot;
Exit Function
Case &quot;startQuietCleaningDescription2&quot;
getSerbian = &quot;биће учитани у документ.&quot;
Exit Function Exit Function
Case &quot;buttonYes&quot; Case &quot;buttonYes&quot;
getSerbian = &quot;Да&quot; getSerbian = &quot;Да&quot;
@ -961,7 +1036,7 @@ Function getSerbian(identifier As String) As String
getSerbian = &quot;Потврда покретања чишћења&quot; getSerbian = &quot;Потврда покретања чишћења&quot;
Exit Function Exit Function
Case &quot;noStylesFileDialogTitle&quot; Case &quot;noStylesFileDialogTitle&quot;
getSerbian = &quot;Šablon са стиловима није пронађен&quot; getSerbian = &quot;Конфигуришите датотеку стила&quot;
Exit Function Exit Function
Case &quot;buttonTemplateNotFoundSkip&quot; Case &quot;buttonTemplateNotFoundSkip&quot;
getSerbian = &quot;Наставите&quot; getSerbian = &quot;Наставите&quot;
@ -1248,6 +1323,27 @@ Function getSerbian(identifier As String) As String
Case &quot;removeNotTransparentBackgrounds&quot; Case &quot;removeNotTransparentBackgrounds&quot;
getSerbian = &quot;Уклоните нетранспарентне позадине у тексту&quot; getSerbian = &quot;Уклоните нетранспарентне позадине у тексту&quot;
Exit Function Exit Function
Case &quot;manualStyleFileSet&quot;
getSerbian = &quot;Приликом чишћења користиће се ручно наведен шаблон&quot;
Exit Function
Case &quot;predefiendTemplateSelected&quot;
getSerbian = &quot;Приликом чишћења користиће се шаблон изабран са листе&quot;
Exit Function
Case &quot;selectTemplateDialogTitle&quot;
getSerbian = &quot;Изаберите образац са листе&quot;
Exit Function
Case &quot;templateNotSelected&quot;
getSerbian = &quot;Шаблон није изабран&quot;
Exit Function
Case &quot;templateChosen&quot;
getSerbian = &quot;Изабрани шаблон&quot;
Exit Function
Case &quot;statusFixingDiacriticCharactersKerning&quot;
getSerbian = &quot;Ispravljanje kombinacije sa dijakritičkim znacima &quot;
Exit Function
Case &quot;fixDiacriticKerning&quot;
getSerbian = &quot;Ispravite kombiniranje s naglašenim likovima&quot;
Exit Function
Case Else Case Else
getSerbian = &quot;No translation&quot; getSerbian = &quot;No translation&quot;
End Select End Select
@ -1258,8 +1354,11 @@ Function getBosnian(identifier As String) As String
Case &quot;noFileWithStylesFound&quot; Case &quot;noFileWithStylesFound&quot;
getBosnian = &quot;Datoteka predloška koja sadrži stilove za učitavanje u dokument nije navedena.&quot; &amp; chr(10) &amp;&quot; Na računaru možete odabrati novi predložak. &quot; &amp; chr(10) &amp;&quot;Ako datoteka predloška nije odabrana, ovaj korak čišćenja će se preskočiti.&quot; getBosnian = &quot;Datoteka predloška koja sadrži stilove za učitavanje u dokument nije navedena.&quot; &amp; chr(10) &amp;&quot; Na računaru možete odabrati novi predložak. &quot; &amp; chr(10) &amp;&quot;Ako datoteka predloška nije odabrana, ovaj korak čišćenja će se preskočiti.&quot;
Exit Function Exit Function
Case &quot;startQuietCleaningDescription&quot; Case &quot;startQuietCleaningDescription1&quot;
getBosnian = &quot;Želite li započeti s čišćenjem dokumenta?&quot; &amp; chr(10) &amp; &quot;Ovdje možete odrediti i novu datoteku predloška.&quot; &amp; chr(10) &amp; &quot;Stilovi iz predloška bit će učitani u dokument.&quot; getBosnian = &quot;Želite li započeti s čišćenjem dokumenta?&quot; &amp; chr(10) &amp; &quot;Ovdje možete odrediti i novu datoteku predloška.&quot; &amp; chr(10) &amp; &quot;Stilovi iz predloška&quot;
Exit Function
Case &quot;startQuietCleaningDescription2&quot;
getBosnian = &quot; bit će učitani u dokument.&quot;
Exit Function Exit Function
Case &quot;buttonYes&quot; Case &quot;buttonYes&quot;
getBosnian = &quot;Da&quot; getBosnian = &quot;Da&quot;
@ -1268,7 +1367,7 @@ Function getBosnian(identifier As String) As String
getBosnian = &quot;Potvrda čišćenja&quot; getBosnian = &quot;Potvrda čišćenja&quot;
Exit Function Exit Function
Case &quot;noStylesFileDialogTitle&quot; Case &quot;noStylesFileDialogTitle&quot;
getBosnian = &quot;Datoteka predloška nije pronađena&quot; getBosnian = &quot;Konfigurišite datoteku stila&quot;
Exit Function Exit Function
Case &quot;buttonTemplateNotFoundSkip&quot; Case &quot;buttonTemplateNotFoundSkip&quot;
getBosnian = &quot;Nastavite&quot; getBosnian = &quot;Nastavite&quot;
@ -1555,6 +1654,27 @@ Function getBosnian(identifier As String) As String
Case &quot;removeNotTransparentBackgrounds&quot; Case &quot;removeNotTransparentBackgrounds&quot;
getBosnian = &quot;Uklonite netransparentne pozadine u tekstu&quot; getBosnian = &quot;Uklonite netransparentne pozadine u tekstu&quot;
Exit Function Exit Function
Case &quot;manualStyleFileSet&quot;
getBosnian = &quot;Prilikom čišćenja koristit će se ručno naveden predložak&quot;
Exit Function
Case &quot;predefiendTemplateSelected&quot;
getBosnian = &quot;Prilikom čišćenja koristit će se predložak odabran s popisa&quot;
Exit Function
Case &quot;selectTemplateDialogTitle&quot;
getBosnian = &quot;Изаберите образац са листе&quot;
Exit Function
Case &quot;templateNotSelected&quot;
getBosnian = &quot;Šablon nije izabran&quot;
Exit Function
Case &quot;templateChosen&quot;
getBosnian = &quot;Izabrani šablon&quot;
Exit Function
Case &quot;statusFixingDiacriticCharactersKerning&quot;
getBosnian = &quot;Popravljanje kombinacije s dijakritičkim znakovima&quot;
Exit Function
Case &quot;fixDiacriticKerning&quot;
getBosnian = &quot;Ispravite kombiniranje s naglašenim likovima&quot;
Exit Function
Case Else Case Else
getBosnian = &quot;No translation&quot; getBosnian = &quot;No translation&quot;
End Select End Select

View file

@ -1,7 +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="Validation" script:language="StarBasic">Sub markval30 <script:module xmlns:script="http://openoffice.org/2000/script" script:name="Validation" script:language="StarBasic">Sub markval31
End Sub End Sub
@ -495,20 +494,20 @@ Function hasBrokenCharBackTransparent As Boolean
Dim oStyles As Object Dim oStyles As Object
Dim pageStyles As Object Dim pageStyles As Object
Dim pageStyle As Object Dim pageStyle As Object
hasBrokenCharBackTransparent = isBackColorInText(ThisComponent.Text) hasBrokenCharBackTransparent = isManualCharBackTransparentInTextParas(ThisComponent.Text)
If (hasBrokenCharBackTransparent) Then If (hasBrokenCharBackTransparent) Then
Exit Function Exit Function
EndIf EndIf
footNotes = ThisComponent.FootNotes footNotes = ThisComponent.FootNotes
For i = 0 to footNotes.getCount - 1 For i = 0 to footNotes.getCount - 1
hasBrokenCharBackTransparent = isBackColorInText(footNotes.getByIndex(i).Text) hasBrokenCharBackTransparent = isManualCharBackTransparentInTextParas(footNotes.getByIndex(i).Text)
If (hasBrokenCharBackTransparent) Then If (hasBrokenCharBackTransparent) Then
Exit Function Exit Function
EndIf EndIf
Next i Next i
endNotes = thisComponent.footNotes endNotes = thisComponent.footNotes
For i = 0 to footNotes.Count -1 For i = 0 to footNotes.Count -1
hasBrokenCharBackTransparent = isBackColorInText(endNotes.getByIndex(i).Text) hasBrokenCharBackTransparent = isManualCharBackTransparentInTextParas(endNotes.getByIndex(i).Text)
If (hasBrokenCharBackTransparent) Then If (hasBrokenCharBackTransparent) Then
Exit Function Exit Function
EndIf EndIf
@ -518,49 +517,49 @@ Function hasBrokenCharBackTransparent As Boolean
For i = 0 to pageStyles.Count -1 For i = 0 to pageStyles.Count -1
pageStyle = pageStyles.getByIndex(i) pageStyle = pageStyles.getByIndex(i)
If Not IsEmpty(pageStyle.FooterText) Then If Not IsEmpty(pageStyle.FooterText) Then
hasBrokenCharBackTransparent = isBackColorInText(pageStyle.FooterText) hasBrokenCharBackTransparent = isManualCharBackTransparentInTextParas(pageStyle.FooterText)
If (hasBrokenCharBackTransparent) Then If (hasBrokenCharBackTransparent) Then
Exit Function Exit Function
EndIf EndIf
EndIf EndIf
If Not IsEmpty(pageStyle.FooterTextFirst) Then If Not IsEmpty(pageStyle.FooterTextFirst) Then
hasBrokenCharBackTransparent = isBackColorInText(pageStyle.FooterTextFirst) hasBrokenCharBackTransparent = isManualCharBackTransparentInTextParas(pageStyle.FooterTextFirst)
If (hasBrokenCharBackTransparent) Then If (hasBrokenCharBackTransparent) Then
Exit Function Exit Function
EndIf EndIf
EndIf EndIf
If Not IsEmpty(pageStyle.FooterTextRight) Then If Not IsEmpty(pageStyle.FooterTextRight) Then
hasBrokenCharBackTransparent = isBackColorInText(pageStyle.FooterTextRight) hasBrokenCharBackTransparent = isManualCharBackTransparentInTextParas(pageStyle.FooterTextRight)
If (hasBrokenCharBackTransparent) Then If (hasBrokenCharBackTransparent) Then
Exit Function Exit Function
EndIf EndIf
EndIf EndIf
If Not IsEmpty(pageStyle.FooterTextLeft) Then If Not IsEmpty(pageStyle.FooterTextLeft) Then
hasBrokenCharBackTransparent = isBackColorInText(pageStyle.FooterTextLeft) hasBrokenCharBackTransparent = isManualCharBackTransparentInTextParas(pageStyle.FooterTextLeft)
If (hasBrokenCharBackTransparent) Then If (hasBrokenCharBackTransparent) Then
Exit Function Exit Function
EndIf EndIf
EndIf EndIf
If Not IsEmpty(pageStyle.HeaderText) Then If Not IsEmpty(pageStyle.HeaderText) Then
hasBrokenCharBackTransparent = isBackColorInText(pageStyle.HeaderText) hasBrokenCharBackTransparent = isManualCharBackTransparentInTextParas(pageStyle.HeaderText)
If (hasBrokenCharBackTransparent) Then If (hasBrokenCharBackTransparent) Then
Exit Function Exit Function
EndIf EndIf
EndIf EndIf
If Not IsEmpty(pageStyle.HeaderTextFirst) Then If Not IsEmpty(pageStyle.HeaderTextFirst) Then
hasBrokenCharBackTransparent = isBackColorInText(pageStyle.HeaderTextFirst) hasBrokenCharBackTransparent = isManualCharBackTransparentInTextParas(pageStyle.HeaderTextFirst)
If (hasBrokenCharBackTransparent) Then If (hasBrokenCharBackTransparent) Then
Exit Function Exit Function
EndIf EndIf
EndIf EndIf
If Not IsEmpty(pageStyle.HeaderTextRight) Then If Not IsEmpty(pageStyle.HeaderTextRight) Then
hasBrokenCharBackTransparent = isBackColorInText(pageStyle.HeaderTextRight) hasBrokenCharBackTransparent = isManualCharBackTransparentInTextParas(pageStyle.HeaderTextRight)
If (hasBrokenCharBackTransparent) Then If (hasBrokenCharBackTransparent) Then
Exit Function Exit Function
EndIf EndIf
EndIf EndIf
If Not IsEmpty(pageStyle.HeaderTextLeft) Then If Not IsEmpty(pageStyle.HeaderTextLeft) Then
hasBrokenCharBackTransparent = isBackColorInText(pageStyle.HeaderTextLeft) hasBrokenCharBackTransparent = isManualCharBackTransparentInTextParas(pageStyle.HeaderTextLeft)
If (hasBrokenCharBackTransparent) Then If (hasBrokenCharBackTransparent) Then
Exit Function Exit Function
EndIf EndIf
@ -568,9 +567,21 @@ Function hasBrokenCharBackTransparent As Boolean
Next i Next i
End Function End Function
Function isManualCharBackTransparent(para As Object) As Boolean
Dim styleName As String
Dim paraStyles As Object
isManualCharBackTransparent = false
If para.CharBackTransparent = false Then
styleName = para.ParaStyleName
paraStyles = ThisComponent.StyleFamilies.getByName(&quot;ParagraphStyles&quot;)
paraStyle = paraStyles.GetByName(styleName)
If paraStyle.CharBackTransparent = true Then
isManualCharBackTransparent = true
EndIf
EndIf
End Function
Function isManualCharBackTransparentInTextParas(oText As Object) As Boolean
Function isBackColorInText(oText As Object) As Boolean
Dim enum1Element As Object Dim enum1Element As Object
Dim enum1 As Object Dim enum1 As Object
Dim enum2 As Object Dim enum2 As Object
@ -587,8 +598,8 @@ Function isBackColorInText(oText As Object) As Boolean
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.CharBackTransparent = false Then If isManualCharBackTransparent(enum1Element) Then
isBackColorInText = true isManualCharBackTransparentInTextParas = true
Exit Function Exit Function
EndIf EndIf
ElseIf enum1Element.supportsService(&quot;com.sun.star.text.TextTable&quot;) Then ElseIf enum1Element.supportsService(&quot;com.sun.star.text.TextTable&quot;) Then
@ -596,14 +607,14 @@ Function isBackColorInText(oText As Object) As Boolean
For i = LBound(cellNames) To Ubound(cellNames) For i = LBound(cellNames) To Ubound(cellNames)
cell = enum1Element.getCellByName(cellNames(i)) cell = enum1Element.getCellByName(cellNames(i))
cellText = cell.getText() cellText = cell.getText()
If isBackColorInText(cellText) Then If isManualCharBackTransparentInTextParas(cellText) Then
isBackColorInText = true isManualCharBackTransparentInTextParas = true
Exit Function Exit Function
EndIf EndIf
Next i Next i
EndIf EndIf
Wend Wend
isBackColorInText = false isManualCharBackTransparentInTextParas = false
End Function End Function
@ -758,11 +769,9 @@ Sub fontReportButton
Exit sub Exit sub
EndIf EndIf
Dim FileName As String Dim FileName As String
FileName = getCharsInFont(targetFontName) getCharsInFont(targetFontName)
statusIndicator.end() statusIndicator.end()
If FileName &lt;&gt; &quot;&quot; Then
openReport(FileName)
EndIf
End Sub End Sub
Sub onSelectFont(oEvent) Sub onSelectFont(oEvent)
@ -902,7 +911,7 @@ Sub addToArray(xArray(),vNextElement)
xArray(iUB) = vNextElement xArray(iUB) = vNextElement
End Sub End Sub
Function getCharsInFont(fontName As String) As String Sub getCharsInFont(fontName As String)
Dim resultArray() As String Dim resultArray() As String
Dim pageNums() As Long Dim pageNums() As Long
Dim firstPages() As Long Dim firstPages() As Long
@ -988,43 +997,30 @@ Function getCharsInFont(fontName As String) As String
EndIf EndIf
Next j Next j
Next i Next i
resultString = &quot;&quot;
For i = LBound(resultArray) To UBound(resultArray)
resultString = resultString &amp; &quot;&lt;a href=&apos;https://unicode-table.com/ru/&quot; &amp; resultArray(i) &amp; &quot;&apos;&quot; &amp; &quot;&gt;https://unicode-table.com/ru/&quot; &amp; resultArray(i) &amp; &quot;&lt;/a&gt; &quot; &amp; getTranslation(&quot;charFirstPage&quot;) &amp; &quot; &quot; &amp; pageNums(i) &amp; &quot;&lt;br&gt;&quot; &amp; Chr(10)
Next i
If resultString &lt;&gt; &quot;&quot; Then If resultString &lt;&gt; &quot;&quot; Then
&apos;MsgBox &quot;Символы в шрифте &quot;&amp; fontName &amp;Chr(10)&amp;resultString Dim newDocCursor As Object
Dim FileName As String &apos;Holds the file name Dim newDoc As Object
Dim n As Integer &apos;Holds the file number newDoc = starDesktop.loadComponentFromURL(&quot;private:factory/swriter&quot;, &quot;_blank&quot;, 0, Array())
Dim f As Integer &apos;Index variable newDocCursor = newDoc.getCurrentController().getViewCursor()
Dim s As String &apos;Temporary string for input newDocCursor.String = getTranslation(&quot;symbolsInFontHeading&quot;) &amp; &quot; &quot; &amp; fontName
Dim fileaccess As Object newDocCursor.ParaStyleName = &quot;Heading 1&quot;
Dim outtextstream As Object newDocCursor.collapseToEnd()
Dim out As Object newDocCursor.Text.insertControlCharacter(newDocCursor.End,com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK,False)
For i = LBound(resultArray) To UBound(resultArray)
Dim sTemp$ newDocCursor.ParaStyleName = &quot;Text body&quot;
GlobalScope.BasicLibraries.loadLibrary(&quot;Tools&quot;) newDocCursor.String = &quot;https://unicode-table.com/ru/&quot; &amp; resultArray(i)
path=DirectoryNameoutofPath(ThisComponent.getURL(),&quot;/&quot;) newDocCursor.HyperLinkURL = &quot;https://unicode-table.com/ru/&quot; &amp; resultArray(i)
FileName = path &amp; &quot;/symbolsInFont&quot; &amp; fontName &amp; &quot;.html&quot; newDocCursor.collapseToEnd()
&apos;n = FreeFile() &apos;Next free file number newDocCursor.String = &quot; &quot; &amp; getTranslation(&quot;charFirstPage&quot;) &amp; &quot; &quot; &amp; pageNums(i)
&apos;Open FileName For Output Access Read Write As #n &apos;Open for read/write newDocCursor.collapseToEnd()
fileaccess = createUnoService (&quot;com.sun.star.ucb.SimpleFileAccess&quot;) newDocCursor.Text.insertControlCharacter(newDocCursor.End,com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK,False)
outtextstream = createUnoService (&quot;com.sun.star.io.TextOutputStream&quot;) Next i
outtextstream.setEncoding( &quot;UTF-8&quot; ) Exit Sub
out = fileaccess.openFileWrite( FileName )
outtextstream.setOutputStream( out )
outtextstream.writeString( &quot;&lt;html&gt;&lt;head&gt;&lt;title&gt;&quot; &amp; getTranslation(&quot;symbolsInFontHeading&quot;) &amp; &quot; &quot;&amp; fontName &amp; &quot;&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;h2&gt;&quot; &amp; getTranslation(&quot;symbolsInFontHeading&quot;) &amp; &quot; &quot;&amp; fontName &amp;&quot;:&lt;/h2&gt;&quot;&amp;resultString &amp;&quot;&lt;/body&gt;&lt;/html&gt;&quot; )
outtextstream.closeOutput()
getCharsInFont = FileName
Exit Function
Else Else
MsgBox getTranslation(&quot;symbolsInFontNotFound1&quot;) &amp; &quot; &quot; &amp; fontName &amp; &quot; &quot; &amp; getTranslation(&quot;symbolsInFontNotFound2&quot;) MsgBox getTranslation(&quot;symbolsInFontNotFound1&quot;) &amp; &quot; &quot; &amp; fontName &amp; &quot; &quot; &amp; getTranslation(&quot;symbolsInFontNotFound2&quot;)
getCharsInFont = &quot;&quot;
Exit Function
EndIf EndIf
End Function End Sub
Function findBadCharacters() As Boolean Function findBadCharacters() As Boolean

View file

@ -7,4 +7,5 @@
<library:element library:name="StartQuietCleaning"/> <library:element library:name="StartQuietCleaning"/>
<library:element library:name="ChooseFontname"/> <library:element library:name="ChooseFontname"/>
<library:element library:name="Navigator"/> <library:element library:name="Navigator"/>
<library:element library:name="SelectTemplate"/>
</library:library> </library:library>

12
Templates.xcu Normal file
View file

@ -0,0 +1,12 @@
<?xml version='1.0' encoding='UTF-8'?>
<oor:component-data oor:package="org.openoffice.Office" oor:name="Paths" xmlns:install="http://openoffice.org/2004/installation" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<node oor:name="Paths">
<node oor:name="Template" oor:op="fuse">
<node oor:name="InternalPaths">
<node oor:name="%origin%/templates" oor:op="fuse"/>
</node>
</node>
</node>
</oor:component-data>

View file

@ -1,6 +1,8 @@
apply plugin: 'java'
task oxt(type: Zip) { task oxt(type: Zip) {
dependsOn = [ 'setVersion','setVersionInBasicCode' ] dependsOn = [ 'setVersion','setVersionInBasicCode' ]
archiveName 'cleanAndValidate.oxt' archiveFileName = 'cleanAndValidate.oxt'
destinationDirectory = file("./")
from './' from './'
include '*' include '*'
include '*/*' include '*/*'

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.Redaction"/> <identifier value="pro.litvinovg.Redaction"/>
<version value="0.9.35" /> <version value="0.10.11" />
<update-download> <update-download>
<src xlink:href="https://dev.litvinovg.pro/litvinovg/cleanandvalidate/uploads/54bd5f32ac58a76d2208780b9d90b857/cleanAndValidate.oxt" /> <src xlink:href="https://dev.litvinovg.pro/litvinovg/cleanandvalidate/uploads/330066acb026243a8a0eab002de1a1f3/cleanAndValidate.oxt" />
</update-download> </update-download>
<release-notes> <release-notes>
<src xlink:href="https://dev.litvinovg.pro/litvinovg/cleanandvalidate/-/raw/master/releasenotes.txt" lang="en" /> <src xlink:href="https://dev.litvinovg.pro/litvinovg/cleanandvalidate/-/raw/master/releasenotes.txt" lang="en" />

View file

@ -1,205 +1,375 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<description xmlns="http://openoffice.org/extensions/description/2006" xmlns:dep="http://openoffice.org/extensions/description/2006" xmlns:xlink="http://www.w3.org/1999/xlink"> <description xmlns="http://openoffice.org/extensions/description/2006" xmlns:dep="http://openoffice.org/extensions/description/2006" xmlns:xlink="http://www.w3.org/1999/xlink">
<identifier value="pro.litvinovg.Redaction"/> <identifier value="pro.litvinovg.Redaction"/>
<version value="0.10.11"/>
<version value="0.9.30"/>
<platform value="all"/> <platform value="all"/>
<display-name> <display-name>
<name lang="en">Cleaning and validation documents for publishing in html and epub with pagination</name> <name lang="en">Cleaning and validation documents for publishing in html and epub with pagination</name>
<name lang="ru">Чистка и проверка документов для издания в html и epub с сохранением пагинации</name> <name lang="ru">Чистка и проверка документов для издания в html и epub с сохранением пагинации</name>
</display-name> </display-name>
<registration> <registration>
<simple-license accept-by="admin" suppress-if-required="true" suppress-on-update="true"> <simple-license accept-by="admin" suppress-if-required="true" suppress-on-update="true">
<license-text lang="en" xlink:href="license_en.txt"/> <license-text lang="en" xlink:href="license_en.txt"/>
<license-text lang="ru" xlink:href="license_ru.txt"/> <license-text lang="ru" xlink:href="license_ru.txt"/>
</simple-license> </simple-license>
</registration> </registration>
<dependencies> <dependencies>
<OpenOffice.org-minimal-version dep:name="OpenOffice.org, LibreOffice 4.1 or later" value="4.1"/> <OpenOffice.org-minimal-version dep:name="OpenOffice.org, LibreOffice 4.1 or later" value="4.1"/>
</dependencies> </dependencies>
<update-information> <update-information>
<src xlink:href="https://dev.litvinovg.pro/litvinovg/cleanandvalidate/-/raw/master/cleanandvalidate.update.xml"/> <src xlink:href="https://dev.litvinovg.pro/litvinovg/cleanandvalidate/-/raw/master/cleanandvalidate.update.xml"/>
</update-information> </update-information>
<publisher> <publisher>
<name lang="en" xlink:href="mailto:public@litvinovg.pro">Georgy Litvinov</name> <name lang="en" xlink:href="mailto:public@litvinovg.pro">Georgy Litvinov</name>
</publisher> </publisher>
<release-notes> <release-notes>
<src lang="en" xlink:href="releasenotes.txt"/> <src lang="en" xlink:href="releasenotes.txt"/>
</release-notes> </release-notes>
<extension-description> <extension-description>
<src lang="ru" xlink:href="description/description_ru.txt"/> <src lang="ru" xlink:href="description/description_ru.txt"/>
<src lang="en" xlink:href="description/description_en.txt"/> <src lang="en" xlink:href="description/description_en.txt"/>
</extension-description> </extension-description>
<icon> <icon>
<default xlink:href="icons/addon_icon.png"/>
<high-contrast xlink:href="icons/addon_icon.png"/>
<default xlink:href="icons/addon_icon.svg"/>
<high-contrast xlink:href="icons/addon_icon.svg"/>
</icon> </icon>

View file

@ -1 +1 @@
version=0.9.36 version=0.10.11

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

218
icons/addon_icon.svg Normal file
View file

@ -0,0 +1,218 @@
<?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="svg2491"
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="namedview2493"
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.7097423"
inkscape:cx="46.498235"
inkscape:cy="81.883685"
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-bbox="true" />
<defs
id="defs2488" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-124.58785,-103.92953)">
<rect
inkscape:export-ydpi="96.000008"
inkscape:export-xdpi="96.000008"
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-6-3"
width="67.73333"
height="67.73333"
x="124.58785"
y="103.92953" />
<path
id="rect847-2-7"
style="fill:none;stroke:#000000;stroke-width:2.3;stroke-miterlimit:4;stroke-dasharray:none;paint-order:stroke markers fill;stop-color:#000000"
d="m 174.05313,111.06933 h 3.30422 c 1.64718,0 2.97325,1.32607 2.97325,2.97325 v 52.56149 c 0,1.64718 -1.32607,2.97325 -2.97325,2.97325 h -39.79621 c -1.64718,0 -2.97325,-1.32607 -2.97325,-2.97325 v -52.56149 c 0,-1.64718 1.32607,-2.97325 2.97325,-2.97325 h 3.40135"
sodipodi:nodetypes="cssssssssc" />
<path
inkscape:export-ydpi="96.000008"
inkscape:export-xdpi="96.000008"
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.15297;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 143.595,108.66362 c 0,0 8.43592,-0.0564 9.54623,-0.0201 0.98089,0.032 -0.31228,-1.88491 0.52045,-2.93611 0.83273,-1.05121 7.02607,-0.84307 7.82409,0.20813 0.79803,1.05121 -0.59786,2.79113 0.83273,2.79113 1.56136,0 9.23834,-0.0144 9.23834,-0.0144 0,0 7.11288,5.6185 4.75349,5.58225 -2.3594,-0.0362 -34.61591,0.12319 -37.35696,0.12319 -2.74106,0 4.64163,-5.73404 4.64163,-5.73404 z"
id="path849-4-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cszzsczzc" />
<rect
inkscape:export-ydpi="96.000008"
inkscape:export-xdpi="96.000008"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.955;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-8-9"
width="25.510099"
height="1.667425"
x="150.37207"
y="122.91363" />
<rect
inkscape:export-ydpi="96.000008"
inkscape:export-xdpi="96.000008"
y="126.75371"
x="150.33884"
height="1.667425"
width="23.316961"
id="rect851-8-3-8-3-3-30-4"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.91277;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000" />
<rect
inkscape:export-ydpi="96.000008"
inkscape:export-xdpi="96.000008"
y="134.61259"
x="150.4086"
height="1.667425"
width="23.055033"
id="rect851-8-3-8-3-38-1-2"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.908;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000" />
<rect
inkscape:export-ydpi="96.000008"
inkscape:export-xdpi="96.000008"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.875376;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-3-0-78-9"
width="21.445341"
height="1.667425"
x="150.37537"
y="138.45267" />
<rect
inkscape:export-ydpi="96.000008"
inkscape:export-xdpi="96.000008"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.907172;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-38-4-9-3"
width="23.031563"
height="1.667425"
x="150.27731"
y="146.49648" />
<rect
inkscape:export-ydpi="96.000008"
inkscape:export-xdpi="96.000008"
y="158.23125"
x="150.21875"
height="1.667425"
width="20.915848"
id="rect851-8-3-8-3-38-4-6-5-2"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.864499;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000" />
<rect
inkscape:export-ydpi="96.000008"
inkscape:export-xdpi="96.000008"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.870552;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
id="rect851-8-3-8-3-3-0-7-8-4-4"
width="21.209816"
height="1.667425"
x="150.27002"
y="162.0713" />
<path
inkscape:export-ydpi="96.000008"
inkscape:export-xdpi="96.000008"
sodipodi:nodetypes="ccc"
inkscape:connector-curvature="0"
id="path1299-5"
d="m 138.85426,125.48045 2.40288,3.17924 5.00275,-6.17076"
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:export-ydpi="96.000008"
inkscape:export-xdpi="96.000008"
id="path1339-4"
fill="#455A64"
d="m 188.68913,118.31403 -5.08071,-2.32201 -14.12346,43.13492 -0.0211,0.0643 5.10355,1.9512 13.24168,-40.44187 0.85059,0.3252 -5.41705,16.5444 0.54964,1.24433 5.71801,-17.46354 c 0.33224,-1.01472 -0.0359,-2.3748 -0.82118,-3.03698 z"
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;stroke-width:0.937911" />
<polygon
inkscape:export-ydpi="96.000008"
inkscape:export-xdpi="96.000008"
transform="matrix(0.85059099,0.3251984,-0.3009474,0.91913342,148.53775,97.412814)"
id="polygon1341-3"
points="43,52 49,52 46,61 "
fill="#455A64"
style="fill:#000000;fill-opacity:1" />
<polygon
inkscape:export-ydpi="96.000008"
inkscape:export-xdpi="96.000008"
transform="matrix(0.85059099,0.3251984,-0.3009474,0.91913342,148.53775,97.412814)"
id="polygon1343-2"
points="44,52 45,52 46,61 "
fill="#999999" />
<rect
y="150.20065"
x="150.27731"
height="1.667425"
width="23.031563"
id="rect851-8-3-8-3-38-4-9-3-0"
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.907172;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000008"
inkscape:export-ydpi="96.000008" />
<polygon
inkscape:export-ydpi="96.000008"
inkscape:export-xdpi="96.000008"
transform="matrix(0.85059099,0.3251984,-0.3009474,0.91913342,148.53775,97.412814)"
id="polygon1345-2"
points="49,52 49,28 49,8 49,5.34 43,4 43,51.93 43,52 "
fill="#ff7043" />
<path
inkscape:export-ydpi="96.000008"
inkscape:export-xdpi="96.000008"
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 139.14199,160.1588 2.40288,3.17925 5.00277,-6.17076"
id="path1299-8-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
inkscape:export-ydpi="96.000008"
inkscape:export-xdpi="96.000008"
sodipodi:nodetypes="ccc"
inkscape:connector-curvature="0"
id="path1299-8-1-1"
d="m 138.93861,136.75912 2.40288,3.17925 5.00277,-6.17077"
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#00a319;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:export-ydpi="96.000008"
inkscape:export-xdpi="96.000008"
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#00a319;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 139.05033,149.51085 2.40288,3.17925 5.00277,-6.17076"
id="path1299-8-1-9-6"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<polygon
inkscape:export-ydpi="96.000008"
inkscape:export-xdpi="96.000008"
transform="matrix(0.85059099,0.3251984,-0.3009474,0.91913342,148.53775,97.412814)"
id="polygon1347-4"
points="45,52 45,4.447 44,4.223 44,52 "
fill="#ff8a65" />
<rect
inkscape:export-ydpi="96.000008"
inkscape:export-xdpi="96.000008"
transform="matrix(0.93406194,0.35711104,-0.31116989,0.9503543,0,0)"
id="rect1349-7"
y="62.168976"
x="210.8367"
width="5.4638195"
height="0.96714818"
fill="#455A64"
style="fill:#000000;fill-opacity:1;stroke-width:0.938467" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

113
icons/clean.svg Normal file
View file

@ -0,0 +1,113 @@
<?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="svg2491"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="clean.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="namedview2493"
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.4172662"
inkscape:cx="91.21875"
inkscape:cy="129.07143"
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="defs2488" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-120.95491,-106.68899)">
<rect
inkscape:export-ydpi="96.000015"
inkscape:export-xdpi="96.000015"
y="106.68899"
x="120.95491"
height="67.73333"
width="67.73333"
id="rect982-3"
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" />
<path
id="rect847-0-1-7"
style="fill:none;stroke:#000000;stroke-width:2.5;stroke-miterlimit:4;stroke-dasharray:none;paint-order:stroke markers fill;stop-color:#000000"
d="m 168.8468,113.40557 h 3.593 c 1.60065,0 2.88926,1.28861 2.88926,2.88926 v 29.05344 m -22.83699,24.91257 h -23.15672 c -1.60066,0 -2.88927,-1.28861 -2.88927,-2.88926 v -51.07675 c 0,-1.60065 1.28861,-2.88926 2.88927,-2.88926 h 3.79406"
sodipodi:nodetypes="cssccssssc" />
<rect
y="135.81468"
x="131.28925"
height="5.8349214"
width="38.979149"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5-7-68"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.20769;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000015"
inkscape:export-ydpi="96.000015" />
<path
sodipodi:nodetypes="cszzsczzc"
inkscape:connector-curvature="0"
id="path849-6-6-9"
d="m 135.63756,111.55797 c 0,0 9.22154,-0.0555 10.43524,-0.0198 1.07225,0.0315 -0.34135,-1.85587 0.56893,-2.89087 0.91027,-1.03501 7.68039,-0.83008 8.55274,0.20492 0.87235,1.03501 -0.65354,2.74812 0.91028,2.74812 1.70677,0 10.0987,-0.0142 10.0987,-0.0142 0,0 7.77528,5.53192 5.19616,5.49623 -2.57912,-0.0357 -37.83963,0.1213 -40.83596,0.1213 -2.99634,0 5.07391,-5.64568 5.07391,-5.64568 z"
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-xdpi="96.000015"
inkscape:export-ydpi="96.000015" />
<rect
inkscape:export-ydpi="96.000015"
inkscape:export-xdpi="96.000015"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.20769;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-7-6-9"
width="38.979149"
height="5.8349214"
x="131.18256"
y="147.67714" />
<path
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5-7-6-4-7"
style="stroke-width:2.20769;paint-order:stroke markers fill;stop-color:#000000"
d="m 131.14584,159.24664 23.89289,0 -1.22168,5.83492 -22.67121,0 z"
sodipodi:nodetypes="ccccc" />
<rect
inkscape:export-ydpi="96.000015"
inkscape:export-xdpi="96.000015"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.20769;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"
width="38.979149"
height="5.8349214"
x="131.21593"
y="124.478" />
<path
inkscape:export-ydpi="96.000015"
inkscape:export-xdpi="96.000015"
sodipodi:nodetypes="ccccccccccccczcc"
inkscape:connector-curvature="0"
id="path1016-3"
d="m 156.84912,152.8902 c 0,0 -4.64317,17.25076 -4.79965,17.91698 0.22379,1.03041 2.12987,1.1969 3.07746,-0.0513 0.99308,1.70103 2.66154,0.69791 3.02532,0 0.5362,1.22214 2.35102,1.3643 3.02531,0.10249 0.20864,1.33245 1.92993,1.3837 2.86882,0 0.29334,1.4372 2.27544,0.85843 2.50371,-0.0513 1.64759,1.8746 2.72183,0.29919 2.97315,0.15374 0.15648,0.92247 2.13858,1.33245 2.71234,-0.20499 0.76572,1.46441 2.15627,1.27169 2.81667,0.20499 1.4556,1.48105 2.64821,0.56314 2.92099,-0.10249 1.52216,1.64931 2.74807,0.56617 2.86883,-0.20499 0.64839,1.35445 2.56158,1.63022 2.76451,-0.0513 0.15648,0.46123 2.87947,1.96442 2.81666,-0.0512 -0.0628,-2.01568 -4.26345,-17.38961 -4.26345,-17.38961 z"
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:export-ydpi="96.000015"
inkscape:export-xdpi="96.000015"
sodipodi:nodetypes="czzccccccc"
inkscape:connector-curvature="0"
id="path1014-4"
d="m 167.27385,140.09677 c 0,0 -0.11785,-4.0209 -0.0124,-8.12606 0.10542,-4.10517 4.92663,-3.61493 4.7746,0.104 -0.15202,3.71893 -0.0937,7.91956 -0.0937,7.91956 1.94457,0.4322 2.04458,2.83951 2.85658,5.80684 4.0456,1.51275 6.03838,2.73984 7.21754,7.17762 l -25.00864,-0.10637 c 1.11511,-2.50829 1.69674,-5.41689 7.35684,-7.16064 0.52807,-1.53828 0.50796,-5.49057 2.90923,-5.61495 z"
style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4 KiB

101
icons/report.svg Normal file
View file

@ -0,0 +1,101 @@
<?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="svg2491"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="report.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="namedview2493"
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="80.428674"
inkscape:cy="68.242512"
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="defs2488" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-120.95491,-106.68899)">
<rect
inkscape:export-ydpi="96.000015"
inkscape:export-xdpi="96.000015"
y="106.68899"
x="120.95491"
height="67.73333"
width="67.73333"
id="rect982-3"
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" />
<path
id="rect847-0-1-3"
style="fill:none;stroke:#000000;stroke-width:2.48942;stroke-miterlimit:4;stroke-dasharray:none;paint-order:stroke markers fill;stop-color:#000000"
d="m 173.02817,114.19 h 3.71042 c 1.63134,0 2.94465,1.30222 2.94465,2.91977 v 51.61604 c 0,1.61756 -1.31331,2.91977 -2.94465,2.91977 h -42.99368 c -1.63133,0 -2.94465,-1.30221 -2.94465,-2.91977 v -51.61604 c 0,-1.61755 1.31332,-2.91977 2.94465,-2.91977 h 3.25326"
sodipodi:nodetypes="cssssssssc" />
<rect
y="136.53908"
x="135.34975"
height="5.9467759"
width="39.835781"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5-7-8"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.25311;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="95.562637"
inkscape:export-ydpi="95.562637" />
<path
sodipodi:nodetypes="cszzsczzc"
inkscape:connector-curvature="0"
id="path849-6-6-5"
d="m 139.99174,112.01511 c 0,0 9.22154,-0.0566 10.43524,-0.0202 1.07225,0.0321 -0.34135,-1.89145 0.56892,-2.9463 0.91028,-1.05484 7.6804,-0.84598 8.55275,0.20886 0.87235,1.05485 -0.65354,2.8008 0.91028,2.8008 1.70677,0 10.09869,-0.0145 10.09869,-0.0145 0,0 7.77529,5.63796 5.19617,5.60158 -2.57912,-0.0364 -37.83963,0.12362 -40.83596,0.12362 -2.99633,0 5.07391,-5.7539 5.07391,-5.7539 z"
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:export-xdpi="95.562637"
inkscape:export-ydpi="95.562637" />
<rect
inkscape:export-ydpi="95.562637"
inkscape:export-xdpi="95.562637"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.25311;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-7-6-2"
width="39.835781"
height="5.9467759"
x="135.24069"
y="148.62894" />
<rect
y="160.42023"
x="135.2032"
height="5.9467759"
width="39.835781"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5-7-6-4-22"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.25311;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="95.562637"
inkscape:export-ydpi="95.562637" />
<rect
inkscape:export-ydpi="95.562637"
inkscape:export-xdpi="95.562637"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.25311;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-70"
width="39.835785"
height="5.9467759"
x="135.27483"
y="124.98509" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

125
icons/validate.svg Normal file
View file

@ -0,0 +1,125 @@
<?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="svg2491"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="validate.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="namedview2493"
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="0.7180275"
inkscape:cx="244.41961"
inkscape:cy="206.12024"
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="defs2488" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-124.61893,-103.22372)">
<rect
inkscape:export-ydpi="96.000015"
inkscape:export-xdpi="96.000015"
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-8"
width="67.73333"
height="67.73333"
x="124.61893"
y="103.22372" />
<path
id="rect847-0-1"
style="fill:none;stroke:#000000;stroke-width:2.5;paint-order:stroke markers fill;stop-color:#000000"
d="m 169.66551,109.92162 h 4.14995 c 1.63133,0 2.94465,1.31332 2.94465,2.94465 v 52.05588 c 0,1.63133 -1.31332,2.94465 -2.94465,2.94465 h -42.99368 c -1.63134,0 -2.94465,-1.31332 -2.94465,-2.94465 v -52.05588 c 0,-1.63133 1.31331,-2.94465 2.94465,-2.94465 h 4.52474"
sodipodi:nodetypes="cssssssssc" />
<rect
inkscape:export-ydpi="96.000015"
inkscape:export-xdpi="96.000015"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.23676;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-7"
width="39.25959"
height="5.9467759"
x="133.00279"
y="132.7603" />
<path
inkscape:export-ydpi="96.000015"
inkscape:export-xdpi="96.000015"
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 137.06861,108.33894 c 0,0 9.22153,-0.0566 10.43524,-0.0202 1.07224,0.0321 -0.34136,-1.89145 0.56892,-2.94629 0.91028,-1.05485 7.6804,-0.84599 8.55275,0.20886 0.87235,1.05484 -0.65354,2.80079 0.91028,2.80079 1.70677,0 10.09869,-0.0145 10.09869,-0.0145 0,0 7.77529,5.63797 5.19617,5.60159 -2.57912,-0.0364 -37.83964,0.12363 -40.83597,0.12363 -2.99633,-1e-5 5.07392,-5.75391 5.07392,-5.75391 z"
id="path849-6-6"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cszzsczzc" />
<rect
y="144.85016"
x="132.89534"
height="5.9467759"
width="39.25959"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5-7-6"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.23676;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000015"
inkscape:export-ydpi="96.000015" />
<rect
inkscape:export-ydpi="96.000015"
inkscape:export-xdpi="96.000015"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.23676;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-7-6-4"
width="39.25959"
height="5.9467759"
x="132.85837"
y="156.64145" />
<rect
y="121.20631"
x="132.92896"
height="5.9467759"
width="39.259594"
id="rect851-8-3-8-3-37-8-1-4-7-8-1-9-2-3-5"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.23676;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
inkscape:export-xdpi="96.000015"
inkscape:export-ydpi="96.000015" />
<path
id="rect1186-4"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.889025;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
d="m 160.26757,134.88947 h 22.27055 c 3.42763,0 6.18706,2.54612 6.18706,5.70879 v 20.67999 c 0,3.16267 0.40717,5.62643 -4.07613,5.63922 l -24.38148,0.0696 c -3.42761,0.01 -6.18705,-2.54612 -6.18705,-5.70879 V 140.5983 c 0,-3.16267 2.75943,-5.70879 6.18705,-5.70879 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sssssssss"
inkscape:export-xdpi="96.000015"
inkscape:export-ydpi="96.000015" />
<path
inkscape:export-ydpi="96.000015"
inkscape:export-xdpi="96.000015"
sodipodi:nodetypes="cssssssc"
id="path1170-7"
d="m 188.50413,149.14281 v 14.92431 c 0,2.08279 -1.68738,3.77123 -3.76888,3.77123 h -26.38209 c -2.08149,0 -3.76887,-1.68844 -3.76887,-3.77123 v -26.39859 c 0,-2.08279 1.68738,-3.77122 3.76887,-3.77122 h 23.60203"
inkscape:connector-curvature="0"
style="fill:none;stroke:#000000;stroke-width:2.68422;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none" />
<path
id="polyline1168-0"
style="fill:none;stroke:#099c00;stroke-width:7.24438;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 162.58302,150.28058 8.58283,7.04191 15.43985,-17.93997"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc"
inkscape:export-xdpi="96.000015"
inkscape:export-ydpi="96.000015" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.1 KiB

View file

@ -1,8 +1,6 @@
The author of this extension is: The author of this extension is:
Georgy Litvinov (public@litvinovg.pro) Georgy Litvinov (public@litvinovg.pro)
Copyright 2019. Copyright 2021 redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 3 of the License.
This library is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 3 of the License.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

View file

@ -1,6 +1,6 @@
Автор расширения: Автор расширения:
Георгий Литвинов (public@litvinovg.pro) Георгий Литвинов (public@litvinovg.pro)
Copyright 2019. Copyright 2021.
Это расширение является свободным программным обеспечением, вы можете распространять и/или модифицировать его в соответствии с лицензией GNU Lesser General Public License версии 3.0, опубликованной Free Software Foundation. Это расширение является свободным программным обеспечением, вы можете распространять и/или модифицировать его в соответствии с лицензией GNU Lesser General Public License версии 3.0, опубликованной Free Software Foundation.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<groupuinames:template-group-list xmlns:groupuinames="http://openoffice.org/2006/groupuinames">
<groupuinames:template-group groupuinames:name="articles" groupuinames:default-ui-name="Articles" />
</groupuinames:template-group-list>

Binary file not shown.