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