| <?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("HelpAuthoring") |
| oDialog = LoadDialog("HelpAuthoring", "dlgTOC") |
| oDialogModel = oDialog.Model |
| |
| ocbAddTag = oDialog.GetControl("cbAddTag") |
| |
| ' Check if bookmarks are allowed here |
| If IsInList Then |
| msgbox "No Bookmarks allowed inside a list.", 48, "D'oh!" |
| Exit Sub |
| End If |
| |
| nBookmarkType = IsInBookmark |
| If nBookmarkType = 3 Then ' inside TOC bookmark |
| ocbAddTag.State = 0 |
| End If |
| |
| If oDialog.Execute() = 1 Then |
| ' Insert the bookmark construction |
| olbTOC = oDialog.GetControl("lbTOC") |
| |
| If nBookmarkType = 0 Then' not in a bookmark, always add parent tags |
| bmid = CreateID |
| ' now check if we are in a para with text (this wouldn't be valid) |
| If Not(ParaIsEmpty) Then |
| CR |
| End If |
| InsertTag("BOOKMARK_","<BOOKMARK branch=""contents"" id=""bm_id" + bmid + """>","hlp_aux_bookmark") |
| For i=0 to ubound(olbTOC.Items) |
| LF |
| InsertTag("BOOKMARKVALUE_","<BOOKMARKVALUE>") |
| InsertField("BOOKMARKVALUE",olbTOC.Items(i)) |
| InsertTag("_BOOKMARKVALUE","</BOOKMARKVALUE>") |
| Next i |
| LF |
| InsertTagCR("_BOOKMARK","</BOOKMARK>","hlp_aux_bookmark") |
| |
| ElseIf nBookmarkType = 3 Then ' correct bookmark type |
| If ocbAddTag.State = 1 Then |
| bmid = CreateID |
| ' now check if we are in a para with text (this wouldn't be valid) |
| If Not(ParaIsEmpty) Then |
| CR |
| End If |
| InsertTag("BOOKMARK_","<BOOKMARK branch=""contents"" id=""bm_id" + bmid + """>","hlp_aux_bookmark") |
| End If |
| For i=0 to ubound(olbTOC.Items) |
| LF |
| InsertTag("BOOKMARKVALUE_","<BOOKMARKVALUE>") |
| InsertField("BOOKMARKVALUE",olbTOC.Items(i)) |
| InsertTag("_BOOKMARKVALUE","</BOOKMARKVALUE>") |
| Next i |
| If ocbAddTag.State = 1 Then |
| LF |
| InsertTagCR("_BOOKMARK","</BOOKMARK>","hlp_aux_bookmark") |
| End If |
| Else ' wrong bookmark type |
| bmid = CreateID |
| ' now check if we are in a para with text (this wouldn't be valid) |
| If Not(ParaIsEmpty) Then |
| CR |
| End If |
| InsertTag("BOOKMARK_","<BOOKMARK branch=""contents"" id=""bm_id" + bmid + """>","hlp_aux_bookmark") |
| For i=0 to ubound(olbTOC.Items) |
| LF |
| InsertTag("BOOKMARKVALUE_","<BOOKMARKVALUE>") |
| InsertField("BOOKMARKVALUE",olbTOC.Items(i)) |
| InsertTag("_BOOKMARKVALUE","</BOOKMARKVALUE>") |
| Next i |
| LF |
| InsertTagCR("_BOOKMARK","</BOOKMARK>","hlp_aux_bookmark") |
| 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("lbTOC") |
| 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("txtTOC") |
| If (oTxtTOC.Text = "") Then |
| msgbox "Enter a TOC entry first." |
| Else |
| ' Insert the index entry into the list |
| olbTOC = oDialog.GetControl("lbTOC") |
| olbTOC.addItem(oTxtTOC.Text,0) |
| End If |
| |
| End Sub |
| |
| |
| </script:module> |