blob: 4d982037774a233a606011610a7f9b55ddfbd16f [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<!--***********************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
***********************************************************-->
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="TOC" script:language="StarBasic">REM ***** BASIC *****
Dim oDialog AS Object
Dim document AS Object
Sub Main
document = StarDesktop.CurrentComponent
BasicLibraries.LoadLibrary(&quot;HelpAuthoring&quot;)
oDialog = LoadDialog(&quot;HelpAuthoring&quot;, &quot;dlgTOC&quot;)
oDialogModel = oDialog.Model
ocbAddTag = oDialog.GetControl(&quot;cbAddTag&quot;)
&apos; Check if bookmarks are allowed here
If IsInList Then
msgbox &quot;No Bookmarks allowed inside a list.&quot;, 48, &quot;D&apos;oh!&quot;
Exit Sub
End If
nBookmarkType = IsInBookmark
If nBookmarkType = 3 Then &apos; inside TOC bookmark
ocbAddTag.State = 0
End If
If oDialog.Execute() = 1 Then
&apos; Insert the bookmark construction
olbTOC = oDialog.GetControl(&quot;lbTOC&quot;)
If nBookmarkType = 0 Then&apos; not in a bookmark, always add parent tags
bmid = CreateID
&apos; now check if we are in a para with text (this wouldn&apos;t be valid)
If Not(ParaIsEmpty) Then
CR
End If
InsertTag(&quot;BOOKMARK_&quot;,&quot;&lt;BOOKMARK branch=&quot;&quot;contents&quot;&quot; id=&quot;&quot;bm_id&quot; + bmid + &quot;&quot;&quot;&gt;&quot;,&quot;hlp_aux_bookmark&quot;)
For i=0 to ubound(olbTOC.Items)
LF
InsertTag(&quot;BOOKMARKVALUE_&quot;,&quot;&lt;BOOKMARKVALUE&gt;&quot;)
InsertField(&quot;BOOKMARKVALUE&quot;,olbTOC.Items(i))
InsertTag(&quot;_BOOKMARKVALUE&quot;,&quot;&lt;/BOOKMARKVALUE&gt;&quot;)
Next i
LF
InsertTagCR(&quot;_BOOKMARK&quot;,&quot;&lt;/BOOKMARK&gt;&quot;,&quot;hlp_aux_bookmark&quot;)
ElseIf nBookmarkType = 3 Then &apos; correct bookmark type
If ocbAddTag.State = 1 Then
bmid = CreateID
&apos; now check if we are in a para with text (this wouldn&apos;t be valid)
If Not(ParaIsEmpty) Then
CR
End If
InsertTag(&quot;BOOKMARK_&quot;,&quot;&lt;BOOKMARK branch=&quot;&quot;contents&quot;&quot; id=&quot;&quot;bm_id&quot; + bmid + &quot;&quot;&quot;&gt;&quot;,&quot;hlp_aux_bookmark&quot;)
End If
For i=0 to ubound(olbTOC.Items)
LF
InsertTag(&quot;BOOKMARKVALUE_&quot;,&quot;&lt;BOOKMARKVALUE&gt;&quot;)
InsertField(&quot;BOOKMARKVALUE&quot;,olbTOC.Items(i))
InsertTag(&quot;_BOOKMARKVALUE&quot;,&quot;&lt;/BOOKMARKVALUE&gt;&quot;)
Next i
If ocbAddTag.State = 1 Then
LF
InsertTagCR(&quot;_BOOKMARK&quot;,&quot;&lt;/BOOKMARK&gt;&quot;,&quot;hlp_aux_bookmark&quot;)
End If
Else &apos; wrong bookmark type
bmid = CreateID
&apos; now check if we are in a para with text (this wouldn&apos;t be valid)
If Not(ParaIsEmpty) Then
CR
End If
InsertTag(&quot;BOOKMARK_&quot;,&quot;&lt;BOOKMARK branch=&quot;&quot;contents&quot;&quot; id=&quot;&quot;bm_id&quot; + bmid + &quot;&quot;&quot;&gt;&quot;,&quot;hlp_aux_bookmark&quot;)
For i=0 to ubound(olbTOC.Items)
LF
InsertTag(&quot;BOOKMARKVALUE_&quot;,&quot;&lt;BOOKMARKVALUE&gt;&quot;)
InsertField(&quot;BOOKMARKVALUE&quot;,olbTOC.Items(i))
InsertTag(&quot;_BOOKMARKVALUE&quot;,&quot;&lt;/BOOKMARKVALUE&gt;&quot;)
Next i
LF
InsertTagCR(&quot;_BOOKMARK&quot;,&quot;&lt;/BOOKMARK&gt;&quot;,&quot;hlp_aux_bookmark&quot;)
End If
End If
oDialog.dispose
End Sub
Sub RemoveKeyStroke(Event As Object)
Select Case Event.KeyCode
Case com.sun.star.awt.Key.RETURN
RemoveIndexEntry
Case com.sun.star.awt.Key.SPACE
RemoveIndexEntry
End Select
End Sub
Sub RemoveTOCEntry
olbTOC = oDialog.GetControl(&quot;lbTOC&quot;)
ItemsPos = olbTOC.getSelectedItemsPos
For i=0 to ubound(ItemsPos)
olbTOC.removeItems(ItemsPos(i)-i,1)
Next i
End Sub
Sub KeyPressedRemove(Event As Object)
Select Case Event.KeyCode
Case com.sun.star.awt.Key.DELETE
RemoveTOCEntry
End Select
End Sub
Sub AddKeyStroke(Event As Object)
Select Case Event.KeyCode
Case com.sun.star.awt.Key.RETURN
AddTOCEntry
Case com.sun.star.awt.Key.SPACE
AddTOCEntry
End Select
End Sub
Sub AddTOCEntry
oTxtTOC = oDialog.GetControl(&quot;txtTOC&quot;)
If (oTxtTOC.Text = &quot;&quot;) Then
msgbox &quot;Enter a TOC entry first.&quot;
Else
&apos; Insert the index entry into the list
olbTOC = oDialog.GetControl(&quot;lbTOC&quot;)
olbTOC.addItem(oTxtTOC.Text,0)
End If
End Sub
</script:module>