| <?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="Bullets" script:language="StarBasic">REM ***** BASIC ***** |
| Option Explicit |
| |
| |
| Sub SetBulletGraphics(sBulletUrl as String) |
| Dim i as Integer |
| Dim oBookMarkCursor as Object |
| oBookmarks = oBaseDocument.BookMarks |
| For i = 0 To oBookmarks.Count - 1 |
| oBookMark = oBookmarks.GetbyIndex(i) |
| oBookMarkCursor = oBookMark.Anchor.Text.CreateTextCursorByRange(oBookMark.Anchor) |
| If oBookMarkCursor.PropertySetInfo.HasPropertybyName("NumberingRules") Then |
| ChangeBulletURL(sBulletUrl, oBookMarkCursor) |
| End If |
| Next i |
| End Sub |
| |
| |
| Sub ChangeBulletURL(sBulletUrl as String, oBookMarkCursor as Object) |
| Dim n, m as Integer |
| Dim oLevel() |
| Dim oRules |
| Dim bDoReplace as Boolean |
| Dim oSize as New com.sun.star.awt.Size |
| Dim oNumberingBuffer(0) as New com.sun.star.beans.PropertyValue |
| Dim oNewBuffer(0) as New com.sun.star.beans.PropertyValue |
| oRules = oBookMarkCursor.NumberingRules |
| If Vartype(oRules()) = 9 Then |
| oNumberingBuffer(0).Name = "NumberingType" |
| oNumberingBuffer(0).Value = com.sun.star.style.NumberingType.BITMAP |
| For n = 0 To oRules.Count - 1 |
| oLevel() = oRules.GetByIndex(n) |
| bDoReplace = ModifyPropertyValue(oLevel(), oNumberingBuffer()) |
| If bDoReplace Then |
| oRules.ReplaceByIndex(n, oNumberingBuffer()) |
| End If |
| Next n |
| oBookmarkCursor.NumberingRules = oRules |
| oNewBuffer(0).Name = "GraphicURL" |
| oNewBuffer(0).Value = sBulletUrl |
| For n = 0 To oRules.Count - 1 |
| oLevel() = oRules.GetByIndex(0) |
| bDoReplace = ModifyPropertyValue(oLevel(), oNewBuffer()) |
| If bDoReplace Then |
| oRules.ReplaceByIndex(n, oNewBuffer()) |
| End If |
| Next n |
| oBookmarkCursor.NumberingRules = oRules |
| End If |
| End Sub |
| |
| |
| Sub BulletUrlsToSavePath(SavePath as String) |
| Dim n as Integer |
| Dim m as Integer |
| Dim i as Integer |
| Dim sNewBulletUrl as String |
| Dim oLevel() |
| Dim oRules |
| Dim bIsFirstRun as Boolean |
| Dim oNewBuffer()' as New com.sun.star.beans.PropertyValue |
| Dim bDoReplace as Boolean |
| Dim oBookmarkCursor as Object |
| bIsFirstRun = True |
| oBookmarks = oBaseDocument.BookMarks |
| For i = 0 To oBookmarks.Count - 1 |
| oBookMark = oBookmarks.GetbyIndex(i) |
| oBookMarkCursor = oBookMark.Anchor.Text.CreateTextCursorByRange(oBookMark.Anchor) |
| If oBookMarkCursor.PropertySetInfo.HasPropertybyName("NumberingRules") Then |
| oRules = oBookMarkCursor.NumberingRules |
| If Vartype(oRules()) = 9 Then |
| For n = 0 To oRules.Count - 1 |
| oLevel() = oRules.GetByIndex(n) |
| oNewBuffer() = ChangeBulletUrlToSavePath(SavePath, oLevel(), bIsFirstRun, bDoReplace) |
| If bDoReplace Then |
| bIsFirstRun = False |
| oRules.ReplaceByIndex(n, oNewBuffer()) |
| End If |
| Next n |
| oBookmarkCursor.NumberingRules = oRules |
| End If |
| End If |
| Next i |
| End Sub |
| |
| |
| Function ChangeBulletUrlToSavePath(SavePath as String, oLevel(), bIsFirstRun as Boolean, bDoReplace as Boolean) |
| Dim MaxIndex as Integer |
| Dim i as Integer |
| Dim BulletName as String |
| Dim oSize as New com.sun.star.awt.Size |
| MaxIndex = Ubound(oLevel()) |
| Dim oNewBuffer(MaxIndex) as New com.sun.star.beans.PropertyValue |
| For i = 0 To MaxIndex |
| oNewBuffer(i).Name = oLevel(i).Name |
| If oLevel(i).Name = "GraphicURL" Then |
| bDoReplace = True |
| BulletName = FileNameoutofPath(oLevel(i).Value) |
| If bIsFirstRun Then |
| If oUcb.exists(SavePath & Bulletname) Then |
| FileCopy(oLevel(i).Value, SavePath & BulletName) |
| End If |
| End If |
| oNewBuffer(i).Value = BulletName |
| ' ElseIf oLevel(i).Name = "GraphicSize" Then |
| '' Todo: Get the original Size of the Bullet (see Bug #86196) |
| ' oSize.Height = 300 |
| ' oSize.Width = 300 |
| ' oNewBuffer(i).Value = oSize |
| Else |
| oNewBuffer(i).Value = oLevel(i).Value |
| End If |
| Next i |
| ChangeBulletUrlToSavePath() = oNewBuffer() |
| End Function</script:module> |