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