Use arrays as input for navigator dialog

This commit is contained in:
Georgy Litvinov 2021-06-07 01:49:50 +02:00
parent 3d07310e8a
commit 42682e4331

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="Validation" script:language="StarBasic">Sub markval26 <script:module xmlns:script="http://openoffice.org/2000/script" script:name="Validation" script:language="StarBasic">Sub markval27
End Sub End Sub
@ -953,11 +953,13 @@ End Function
Function findBadCharacters() As Boolean Function findBadCharacters() As Boolean
Dim founds As Object Dim founds As Object
Dim foundObjects() As Object
founds = findInDoc(&quot;[\uE000-\uF8FF]+&quot;) founds = findInDoc(&quot;[\uE000-\uF8FF]+&quot;)
findBadCharacters = false findBadCharacters = false
If founds.count &lt;&gt; 0 Then If founds.count &lt;&gt; 0 Then
MsgBox getTranslation(&quot;validationBadSymbolsNotification&quot;) MsgBox getTranslation(&quot;validationBadSymbolsNotification&quot;)
startNavigatorDialog(getTranslation(&quot;badSymbols&quot;),founds) foundObjects = convertXIndexAccessToArray(founds)
startNavigatorDialog(getTranslation(&quot;badSymbols&quot;),foundObjects)
findBadCharacters = true findBadCharacters = true
EndIf EndIf
@ -966,6 +968,7 @@ End Function
Function findColoredBackgroundInDoc() As Boolean Function findColoredBackgroundInDoc() As Boolean
Dim founds As Object Dim founds As Object
Dim sDesc As Object Dim sDesc As Object
Dim foundObjects() As Object
Dim SrchAttributes(0) as new com.sun.star.beans.PropertyValue Dim SrchAttributes(0) as new com.sun.star.beans.PropertyValue
SrchAttributes(0).Name = &quot;CharBackTransparent&quot; SrchAttributes(0).Name = &quot;CharBackTransparent&quot;
SrchAttributes(0).Value = False SrchAttributes(0).Value = False
@ -979,14 +982,15 @@ Function findColoredBackgroundInDoc() As Boolean
findColoredBackgroundInDoc = false findColoredBackgroundInDoc = false
If founds.count &lt;&gt; 0 Then If founds.count &lt;&gt; 0 Then
MsgBox getTranslation(&quot;foundColoredTextMessage&quot;) MsgBox getTranslation(&quot;foundColoredTextMessage&quot;)
startNavigatorDialog(getTranslation(&quot;coloredTextDescription&quot;),founds) foundObjects = convertXIndexAccessToArray(founds)
startNavigatorDialog(getTranslation(&quot;coloredTextDescription&quot;),foundObjects)
findColoredBackgroundInDoc = true findColoredBackgroundInDoc = true
EndIf EndIf
End Function End Function
Sub startNavigatorDialog(objectsDescription As String,founds As Object) Sub startNavigatorDialog(objectsDescription As String,foundObjects() As Object)
Dim dialog As Object Dim dialog As Object
Dim leftImageURL As String Dim leftImageURL As String
Dim rightImageURL As String Dim rightImageURL As String
@ -994,15 +998,13 @@ Sub startNavigatorDialog(objectsDescription As String,founds As Object)
Dim maxNum As Long Dim maxNum As Long
Dim found As Object Dim found As Object
Dim oViewCursor As Object Dim oViewCursor As Object
&apos;Globalscope.BasicLibraries.LoadLibrary( &quot;MRILib&quot; )
&apos;Mri founds
oViewCursor = ThisComponent.CurrentController.getViewCursor() oViewCursor = ThisComponent.CurrentController.getViewCursor()
waitingForDialog = true waitingForDialog = true
maxNum = founds.count - 1 maxNum = UBound(foundObjects)
dialog = notModalDialog(&quot;Navigator&quot;) dialog = notModalDialog(&quot;Navigator&quot;)
dialog.getControl(&quot;found&quot;).SetText(getTranslation(&quot;navigatorFound&quot;) &amp; CStr(maxNum+1)) dialog.getControl(&quot;found&quot;).SetText(getTranslation(&quot;navigatorFound&quot;) &amp; CStr(maxNum+1))
curNum = 0 curNum = 0
found = founds.getByIndex(curNum) found = foundObjects(curNum)
dialog.getControl(&quot;current&quot;).SetText(CStr(curNum+1)) dialog.getControl(&quot;current&quot;).SetText(CStr(curNum+1))
dialog.getControl(&quot;description&quot;).SetText(objectsDescription) dialog.getControl(&quot;description&quot;).SetText(objectsDescription)
@ -1022,14 +1024,14 @@ Sub startNavigatorDialog(objectsDescription As String,founds As Object)
EndIf EndIf
If dialog.getControl(&quot;prev&quot;).model.state = 1 then If dialog.getControl(&quot;prev&quot;).model.state = 1 then
curNum = getPrevFound(curNum, maxNum) curNum = getPrevFound(curNum, maxNum)
found = founds.getByIndex(curNum) found = foundObjects(curNum)
oViewCursor.goToRange(found,false) oViewCursor.goToRange(found,false)
dialog.getControl(&quot;current&quot;).SetText(CStr(curNum+1)) dialog.getControl(&quot;current&quot;).SetText(CStr(curNum+1))
dialog.getControl(&quot;prev&quot;).model.state = 0 dialog.getControl(&quot;prev&quot;).model.state = 0
EndIf EndIf
If dialog.getControl(&quot;next&quot;).model.state = 1 then If dialog.getControl(&quot;next&quot;).model.state = 1 then
curNum = getNextFound(curNum, maxNum) curNum = getNextFound(curNum, maxNum)
found = founds.getByIndex(curNum) found = foundObjects(curNum)
oViewCursor.goToRange(found,false) oViewCursor.goToRange(found,false)
dialog.getControl(&quot;current&quot;).SetText(CStr(curNum+1)) dialog.getControl(&quot;current&quot;).SetText(CStr(curNum+1))
dialog.getControl(&quot;next&quot;).model.state = 0 dialog.getControl(&quot;next&quot;).model.state = 0
@ -1040,6 +1042,18 @@ Sub startNavigatorDialog(objectsDescription As String,founds As Object)
dialog.dispose dialog.dispose
End Sub End Sub
Function convertXIndexAccessToArray(founds As Object) As Variant
Dim i As Integer
Dim maxNum As Integer
Dim arrayOfObjects() As Object
maxNum = founds.count - 1
For i = 0 To maxNum
addToArray(arrayOfObjects,founds.getByIndex(i))
Next i
convertXIndexAccessToArray = arrayOfObjects
End Function
Function getNextFound(curNum As Long, max As Long) As Long Function getNextFound(curNum As Long, max As Long) As Long
If curNum &lt; max Then If curNum &lt; max Then
getNextFound = curNum + 1 getNextFound = curNum + 1