1<?xml version="1.0" encoding="UTF-8"?> 2<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> 3<!--*********************************************************** 4 * 5 * Licensed to the Apache Software Foundation (ASF) under one 6 * or more contributor license agreements. See the NOTICE file 7 * distributed with this work for additional information 8 * regarding copyright ownership. The ASF licenses this file 9 * to you under the Apache License, Version 2.0 (the 10 * "License"); you may not use this file except in compliance 11 * with the License. You may obtain a copy of the License at 12 * 13 * http://www.apache.org/licenses/LICENSE-2.0 14 * 15 * Unless required by applicable law or agreed to in writing, 16 * software distributed under the License is distributed on an 17 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 18 * KIND, either express or implied. See the License for the 19 * specific language governing permissions and limitations 20 * under the License. 21 * 22 ***********************************************************--> 23<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Bullets" script:language="StarBasic">REM ***** BASIC ***** 24Option Explicit 25 26 27Sub SetBulletGraphics(sBulletUrl as String) 28Dim i as Integer 29Dim oBookMarkCursor as Object 30 oBookmarks = oBaseDocument.BookMarks 31 For i = 0 To oBookmarks.Count - 1 32 oBookMark = oBookmarks.GetbyIndex(i) 33 oBookMarkCursor = oBookMark.Anchor.Text.CreateTextCursorByRange(oBookMark.Anchor) 34 If oBookMarkCursor.PropertySetInfo.HasPropertybyName("NumberingRules") Then 35 ChangeBulletURL(sBulletUrl, oBookMarkCursor) 36 End If 37 Next i 38End Sub 39 40 41Sub ChangeBulletURL(sBulletUrl as String, oBookMarkCursor as Object) 42Dim n, m as Integer 43Dim oLevel() 44Dim oRules 45Dim bDoReplace as Boolean 46Dim oSize as New com.sun.star.awt.Size 47Dim oNumberingBuffer(0) as New com.sun.star.beans.PropertyValue 48Dim oNewBuffer(0) as New com.sun.star.beans.PropertyValue 49 oRules = oBookMarkCursor.NumberingRules 50 If Vartype(oRules()) = 9 Then 51 oNumberingBuffer(0).Name = "NumberingType" 52 oNumberingBuffer(0).Value = com.sun.star.style.NumberingType.BITMAP 53 For n = 0 To oRules.Count - 1 54 oLevel() = oRules.GetByIndex(n) 55 bDoReplace = ModifyPropertyValue(oLevel(), oNumberingBuffer()) 56 If bDoReplace Then 57 oRules.ReplaceByIndex(n, oNumberingBuffer()) 58 End If 59 Next n 60 oBookmarkCursor.NumberingRules = oRules 61 oNewBuffer(0).Name = "GraphicURL" 62 oNewBuffer(0).Value = sBulletUrl 63 For n = 0 To oRules.Count - 1 64 oLevel() = oRules.GetByIndex(0) 65 bDoReplace = ModifyPropertyValue(oLevel(), oNewBuffer()) 66 If bDoReplace Then 67 oRules.ReplaceByIndex(n, oNewBuffer()) 68 End If 69 Next n 70 oBookmarkCursor.NumberingRules = oRules 71 End If 72End Sub 73 74 75Sub BulletUrlsToSavePath(SavePath as String) 76Dim n as Integer 77Dim m as Integer 78Dim i as Integer 79Dim sNewBulletUrl as String 80Dim oLevel() 81Dim oRules 82Dim bIsFirstRun as Boolean 83Dim oNewBuffer()' as New com.sun.star.beans.PropertyValue 84Dim bDoReplace as Boolean 85Dim oBookmarkCursor as Object 86 bIsFirstRun = True 87 oBookmarks = oBaseDocument.BookMarks 88 For i = 0 To oBookmarks.Count - 1 89 oBookMark = oBookmarks.GetbyIndex(i) 90 oBookMarkCursor = oBookMark.Anchor.Text.CreateTextCursorByRange(oBookMark.Anchor) 91 If oBookMarkCursor.PropertySetInfo.HasPropertybyName("NumberingRules") Then 92 oRules = oBookMarkCursor.NumberingRules 93 If Vartype(oRules()) = 9 Then 94 For n = 0 To oRules.Count - 1 95 oLevel() = oRules.GetByIndex(n) 96 oNewBuffer() = ChangeBulletUrlToSavePath(SavePath, oLevel(), bIsFirstRun, bDoReplace) 97 If bDoReplace Then 98 bIsFirstRun = False 99 oRules.ReplaceByIndex(n, oNewBuffer()) 100 End If 101 Next n 102 oBookmarkCursor.NumberingRules = oRules 103 End If 104 End If 105 Next i 106End Sub 107 108 109Function ChangeBulletUrlToSavePath(SavePath as String, oLevel(), bIsFirstRun as Boolean, bDoReplace as Boolean) 110Dim MaxIndex as Integer 111Dim i as Integer 112Dim BulletName as String 113Dim oSize as New com.sun.star.awt.Size 114 MaxIndex = Ubound(oLevel()) 115 Dim oNewBuffer(MaxIndex) as New com.sun.star.beans.PropertyValue 116 For i = 0 To MaxIndex 117 oNewBuffer(i).Name = oLevel(i).Name 118 If oLevel(i).Name = "GraphicURL" Then 119 bDoReplace = True 120 BulletName = FileNameoutofPath(oLevel(i).Value) 121 If bIsFirstRun Then 122 If oUcb.exists(SavePath & Bulletname) Then 123 FileCopy(oLevel(i).Value, SavePath & BulletName) 124 End If 125 End If 126 oNewBuffer(i).Value = BulletName 127' ElseIf oLevel(i).Name = "GraphicSize" Then 128'' Todo: Get the original Size of the Bullet (see Bug #86196) 129' oSize.Height = 300 130' oSize.Width = 300 131' oNewBuffer(i).Value = oSize 132 Else 133 oNewBuffer(i).Value = oLevel(i).Value 134 End If 135 Next i 136 ChangeBulletUrlToSavePath() = oNewBuffer() 137End Function</script:module> 138