Improving footnote/endnote configuration in progress

This commit is contained in:
Georgy Litvinov 2021-05-19 15:50:10 +02:00
parent 8087152c4a
commit 90207f01d0
4 changed files with 184 additions and 23 deletions

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="Footnotes" script:language="StarBasic" script:moduleType="normal">sub footMark1
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Footnotes" script:language="StarBasic" script:moduleType="normal">sub footMark2
End Sub
Sub openFootNotesDialog
@ -14,7 +14,17 @@ Sub openFootNotesDialog
dialog.getControl(&quot;configText3&quot;).setText(getTranslation(&quot;configText3&quot;))
dialog.getControl(&quot;configText4&quot;).setText(getTranslation(&quot;configText4&quot;))
dialog.getControl(&quot;configText5&quot;).setText(getTranslation(&quot;configText5&quot;))
dialog.getControl(&quot;notesTypeLabel&quot;).setText(getTranslation(&quot;FootnotesConfigDialogNotesTypeLabel&quot;))
dialog.getControl(&quot;PerPageRangeLabel&quot;).setText(getTranslation(&quot;FootnotesConfigDialogNotesPerPageRangeLabel&quot;))
dialog.getControl(&quot;groupByPages&quot;).Model.Label = getTranslation(&quot;FootnotesConfigDialogNotesPerPage&quot;)
dialog.getControl(&quot;groupByHeadings&quot;).Model.Label = getTranslation(&quot;FootnotesConfigDialogNotesByHeadingsLabel&quot;)
dialog.Title = getTranslation(&quot;footnotesConfigDialogTitle&quot;)
Dim nCount As Integer
nCount = dialog.getControl(&quot;lb_notes_types&quot;).getItemCount()
dialog.getControl(&quot;lb_notes_types&quot;).addItem( getTranslation(&quot;FootnotesConfigDialogFootnotesName&quot;), nCount )
dialog.getControl(&quot;lb_notes_types&quot;).addItem( getTranslation(&quot;FootnotesConfigDialogEndnotesName&quot;), nCount + 1 )
dialog.getControl(&quot;lb_notes_types&quot;).selectItemPos( 0, True )
dialog.setVisible(true)
Select Case dialog.Execute()
Case 1
@ -27,22 +37,36 @@ End Sub
Sub setFootnotesNumberingFrom(dialog)
Dim statusIndicator as Object
Dim targetLevel As Integer
Dim stringLevelInput As String
Dim stringPageRangeInput As String
Dim noteType As Integer
statusIndicator = ThisComponent.getCurrentController.statusIndicator
dialog.setVisible(false)
doNotTrack
targetLevel = dialog.getControl(&quot;level&quot;).Value
stringLevelInput = dialog.getControl(&quot;level&quot;).getText
stringPageRangeInput = dialog.getControl(&quot;pageRange&quot;).getText
noteType = dialog.getControl(&quot;lb_notes_types&quot;).getSelectedItemPos()
If (stringLevelInput &lt;&gt; &quot;&quot;) Then
targetLevel = CInt(stringLevelInput)
If targetLevel &gt; -1 AND targetLevel &lt; 11 Then
statusIndicator.Start(getTranslation(&quot;statusNumberingInProcess&quot;),100)
setFootnotesNumberingLevel(targetLevel,noteType)
Else
MsgBox getTranslation(&quot;numberingInputOutOfRange&quot;)
EndIf
EndIf
If targetLevel &gt; -1 AND targetLevel &lt; 11 Then
If (stringPageRangeInput &lt;&gt; &quot;&quot;) Then
statusIndicator.Start(getTranslation(&quot;statusNumberingInProcess&quot;),100)
setFootnotesNumberingLevel(targetLevel)
Else
MsgBox getTranslation(&quot;numberingInputOutOfRange&quot;)
setNotesPaginatedNumbering(noteType, pageArray)
EndIf
statusIndicator.end()
End Sub
Sub setFootnotesNumberingLevel(level)
Sub setFootnotesNumberingLevel(level As Integer,noteType As Integer)
Dim enum1Element As Object
Dim enum1 As Object
Dim enum2 As Object
@ -50,7 +74,7 @@ Sub setFootnotesNumberingLevel(level)
Dim curNum As Integer
Dim footnoteText As Object
Dim label As String
Dim labelNum As Integer
Dim labelNum As Long
Dim i As Integer
Dim cell As Object
Dim cellEnum As Object
@ -72,7 +96,8 @@ Sub setFootnotesNumberingLevel(level)
enum2 = enum1Element.createEnumeration
While enum2.hasMoreElements
thisPortion = enum2.nextElement
If thisPortion.TextPortionType = &quot;Footnote&quot; Then
If isTargetNote(thisPortion, noteType) Then
footnoteText = thisPortion.Footnote
label = footnoteText.getLabel
If label = &quot;&quot; Then
@ -81,7 +106,7 @@ Sub setFootnotesNumberingLevel(level)
curNum = curNum + 1
EndIf
Else
labelNum = CInt(label)
labelNum = CLng(label)
If labelNum &gt; 0 Then
If level &lt; 1 Then
footnoteText.setLabel(&quot;&quot;)
@ -107,7 +132,7 @@ Sub setFootnotesNumberingLevel(level)
cellEnum2 = cellEnumElement.createEnumeration
While cellEnum2.hasMoreElements
thisPortion = cellEnum2.nextElement
If thisPortion.TextPortionType = &quot;Footnote&quot; Then
If isTargetNote(thisPortion, noteType) Then
footnoteText = thisPortion.Footnote
label = footnoteText.getLabel
If label = &quot;&quot; Then
@ -116,7 +141,7 @@ Sub setFootnotesNumberingLevel(level)
curNum = curNum + 1
EndIf
Else
labelNum = CInt(label)
labelNum = CLng(label)
If labelNum &gt; 0 Then
If level &lt; 1 Then
footnoteText.setLabel(&quot;&quot;)
@ -137,6 +162,24 @@ Sub setFootnotesNumberingLevel(level)
MsgBox getTranslation(&quot;statusNumberingFinished&quot;)
End Sub
Function isTargetNote(portion As Object, noteType As Integer) As Boolean
If ( portion.TextPortionType = &quot;Footnote&quot; And isEndNote(portion) = CBool(noteType) ) Then
isTargetNote = true
Else
isTargetNote = false
EndIf
End Function
Function isEndNote(portion As Object) As Boolean
If (IsEmpty(portion.Start.EndNote)) Then
isEndNote = false
Else
isEndNote = true
EndIf
End Function
Private Sub doNotTrack
Dim dispatcher As Object
Dim document As Object