xref: /aoo4110/main/wizards/source/tools/UCB.xba (revision b1cdbd2c)
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="UCB" script:language="StarBasic">&apos;Option explicit
24*b1cdbd2cSJim JagielskiPublic oDocument
25*b1cdbd2cSJim JagielskiPublic oDocInfo as object
26*b1cdbd2cSJim JagielskiConst SBMAXDIRCOUNT = 10
27*b1cdbd2cSJim JagielskiDim CurDirMaxCount as Integer
28*b1cdbd2cSJim JagielskiDim sDirArray(SBMAXDIRCOUNT-1) as String
29*b1cdbd2cSJim JagielskiDim DirIndex As Integer
30*b1cdbd2cSJim JagielskiDim iDirCount as Integer
31*b1cdbd2cSJim JagielskiPublic bInterruptSearch as Boolean
32*b1cdbd2cSJim JagielskiPublic NoArgs()as New com.sun.star.beans.PropertyValue
33*b1cdbd2cSJim Jagielski
34*b1cdbd2cSJim JagielskiSub Main()
35*b1cdbd2cSJim JagielskiDim LocsfileContent(0) as String
36*b1cdbd2cSJim Jagielski	LocsfileContent(0) = &quot;*&quot;
37*b1cdbd2cSJim Jagielski	ReadDirectories(&quot;file:///space&quot;, LocsfileContent(), True, False, false)
38*b1cdbd2cSJim JagielskiEnd Sub
39*b1cdbd2cSJim Jagielski
40*b1cdbd2cSJim Jagielski&apos;        ReadDirectories(      sSourceDir,          bRecursive,          bCheckRealType, False, sFileContent(), sLocExtension)
41*b1cdbd2cSJim Jagielski
42*b1cdbd2cSJim JagielskiFunction ReadDirectories(ByVal AnchorDir As String, bRecursive as Boolean,  bcheckFileType as Boolean, bGetByTitle as Boolean, Optional sFileContent(), Optional sExtension as String)
43*b1cdbd2cSJim JagielskiDim i as integer
44*b1cdbd2cSJim JagielskiDim Status as Object
45*b1cdbd2cSJim JagielskiDim FileCountinDir as Integer
46*b1cdbd2cSJim JagielskiDim RealFileContent as String
47*b1cdbd2cSJim JagielskiDim FileName as string
48*b1cdbd2cSJim JagielskiDim oUcbObject as Object
49*b1cdbd2cSJim JagielskiDim DirContent()
50*b1cdbd2cSJim JagielskiDim CurIndex as Integer
51*b1cdbd2cSJim JagielskiDim MaxIndex as Integer
52*b1cdbd2cSJim JagielskiDim StartUbound as Integer
53*b1cdbd2cSJim JagielskiDim FileExtension as String
54*b1cdbd2cSJim Jagielski	StartUbound = 5
55*b1cdbd2cSJim Jagielski	MaxIndex = StartUBound
56*b1cdbd2cSJim Jagielski	CurDirMaxCount = SBMAXDIRCOUNT
57*b1cdbd2cSJim JagielskiDim sFileArray(StartUbound,1) as String
58*b1cdbd2cSJim Jagielski	On Local Error Goto FILESYSTEMPROBLEM:
59*b1cdbd2cSJim Jagielski	CurIndex = -1
60*b1cdbd2cSJim Jagielski	&apos; Todo: Is the last separator valid?
61*b1cdbd2cSJim Jagielski	DirIndex = 0
62*b1cdbd2cSJim Jagielski	sDirArray(iDirIndex) = AnchorDir
63*b1cdbd2cSJim Jagielski	iDirCount = 1
64*b1cdbd2cSJim Jagielski	oDocInfo = CreateUnoService(&quot;com.sun.star.document.DocumentProperties&quot;)
65*b1cdbd2cSJim Jagielski	oUcbObject = createUnoService(&quot;com.sun.star.ucb.SimpleFileAccess&quot;)
66*b1cdbd2cSJim Jagielski	If oUcbObject.Exists(AnchorDir) Then
67*b1cdbd2cSJim Jagielski		Do
68*b1cdbd2cSJim Jagielski			AnchorDir = sDirArray(DirIndex)
69*b1cdbd2cSJim Jagielski			On Local Error Resume Next
70*b1cdbd2cSJim Jagielski			DirContent() = oUcbObject.GetFolderContents(AnchorDir,True)
71*b1cdbd2cSJim Jagielski			DirIndex = DirIndex + 1
72*b1cdbd2cSJim Jagielski			On Local Error Goto 0
73*b1cdbd2cSJim Jagielski			On Local Error Goto FILESYSTEMPROBLEM:
74*b1cdbd2cSJim Jagielski			If Ubound(DirContent()) &lt;&gt; -1 Then
75*b1cdbd2cSJim Jagielski				FileCountinDir = Ubound(DirContent())+ 1
76*b1cdbd2cSJim Jagielski				For i = 0 to FilecountinDir -1
77*b1cdbd2cSJim Jagielski					If bInterruptSearch = True Then
78*b1cdbd2cSJim Jagielski						Exit Do
79*b1cdbd2cSJim Jagielski					End If
80*b1cdbd2cSJim Jagielski
81*b1cdbd2cSJim Jagielski					Filename = DirContent(i)
82*b1cdbd2cSJim Jagielski					If oUcbObject.IsFolder(FileName) Then
83*b1cdbd2cSJim Jagielski						If brecursive Then
84*b1cdbd2cSJim Jagielski							AddFoldertoList(FileName, DirIndex)
85*b1cdbd2cSJim Jagielski						End If
86*b1cdbd2cSJim Jagielski					Else
87*b1cdbd2cSJim Jagielski						If bcheckFileType Then
88*b1cdbd2cSJim Jagielski							RealFileContent = GetRealFileContent(FileName)
89*b1cdbd2cSJim Jagielski						Else
90*b1cdbd2cSJim Jagielski							RealFileContent = GetFileNameExtension(FileName)
91*b1cdbd2cSJim Jagielski						End If
92*b1cdbd2cSJim Jagielski						If RealFileContent &lt;&gt; &quot;&quot; Then
93*b1cdbd2cSJim Jagielski							&apos; Retrieve the Index in the Array, where a Filename is positioned
94*b1cdbd2cSJim Jagielski							If Not IsMissing(sFileContent()) Then
95*b1cdbd2cSJim Jagielski								If (FieldinArray(sFileContent(), Ubound(sFileContent), RealFileContent)) Then
96*b1cdbd2cSJim Jagielski									&apos; The extension of the current file passes the filter and is therefor admitted to the
97*b1cdbd2cSJim Jagielski									&apos; fileList
98*b1cdbd2cSJim Jagielski									If Not IsMissing(sExtension) Then
99*b1cdbd2cSJim Jagielski										If sExtension &lt;&gt; &quot;&quot; Then
100*b1cdbd2cSJim Jagielski											&apos; Consider that some Formats like old StarOffice Templates with the extension &quot;.vor&quot; can only be
101*b1cdbd2cSJim Jagielski											&apos; precisely identified by their mimetype and their extension
102*b1cdbd2cSJim Jagielski											FileExtension = GetFileNameExtension(FileName)
103*b1cdbd2cSJim Jagielski											If FileExtension = sExtension Then
104*b1cdbd2cSJim Jagielski												AddFileNameToList(sFileArray(), FileName, RealFileContent, bGetByTitle, CurIndex)
105*b1cdbd2cSJim Jagielski											End If
106*b1cdbd2cSJim Jagielski										Else
107*b1cdbd2cSJim Jagielski											AddFileNameToList(sFileArray(), FileName, RealFileContent, bGetByTitle, CurIndex)
108*b1cdbd2cSJim Jagielski										End If
109*b1cdbd2cSJim Jagielski									Else
110*b1cdbd2cSJim Jagielski										AddFileNameToList(sFileArray(), FileName, RealFileContent, bGetByTitle, CurIndex)
111*b1cdbd2cSJim Jagielski									End If
112*b1cdbd2cSJim Jagielski								End If
113*b1cdbd2cSJim Jagielski							Else
114*b1cdbd2cSJim Jagielski								AddFileNameToList(sFileArray(), FileName, RealFileContent, bGetByTitle, CurIndex)
115*b1cdbd2cSJim Jagielski							End If
116*b1cdbd2cSJim Jagielski							If CurIndex = MaxIndex Then
117*b1cdbd2cSJim Jagielski								MaxIndex = MaxIndex + StartUbound
118*b1cdbd2cSJim Jagielski								ReDim Preserve sFileArray(MaxIndex,1) as String
119*b1cdbd2cSJim Jagielski							End If
120*b1cdbd2cSJim Jagielski						End If
121*b1cdbd2cSJim Jagielski					End If
122*b1cdbd2cSJim Jagielski				Next i
123*b1cdbd2cSJim Jagielski			End If
124*b1cdbd2cSJim Jagielski		Loop Until DirIndex &gt;= iDirCount
125*b1cdbd2cSJim Jagielski		If CurIndex &gt; -1 Then
126*b1cdbd2cSJim Jagielski			ReDim Preserve sFileArray(CurIndex,1) as String
127*b1cdbd2cSJim Jagielski		Else
128*b1cdbd2cSJim Jagielski			ReDim sFileArray() as String
129*b1cdbd2cSJim Jagielski		End If
130*b1cdbd2cSJim Jagielski	Else
131*b1cdbd2cSJim Jagielski		Msgbox(&quot;Directory &apos;&quot; &amp; ConvertFromUrl(AnchorDir) &amp; &quot;&apos; does not exist!&quot;, 16, GetProductName())
132*b1cdbd2cSJim Jagielski	End If
133*b1cdbd2cSJim Jagielski	ReadDirectories() = sFileArray()
134*b1cdbd2cSJim Jagielski	Exit Function
135*b1cdbd2cSJim Jagielski
136*b1cdbd2cSJim Jagielski	FILESYSTEMPROBLEM:
137*b1cdbd2cSJim Jagielski	Msgbox(&quot;Sorry, Filesystem Problem&quot;)
138*b1cdbd2cSJim Jagielski	ReadDirectories() = sFileArray()
139*b1cdbd2cSJim Jagielski	Resume LEAVEPROC
140*b1cdbd2cSJim Jagielski	LEAVEPROC:
141*b1cdbd2cSJim JagielskiEnd Function
142*b1cdbd2cSJim Jagielski
143*b1cdbd2cSJim Jagielski
144*b1cdbd2cSJim JagielskiSub AddFoldertoList(sDirURL as String, iDirIndex)
145*b1cdbd2cSJim Jagielski	iDirCount = iDirCount + 1
146*b1cdbd2cSJim Jagielski	If iDirCount = CurDirMaxCount Then
147*b1cdbd2cSJim Jagielski		CurDirMaxCount = CurDirMaxCount + SBMAXDIRCOUNT
148*b1cdbd2cSJim Jagielski		ReDim Preserve sDirArray(CurDirMaxCount) as String
149*b1cdbd2cSJim Jagielski	End If
150*b1cdbd2cSJim Jagielski	sDirArray(iDirCount-1) = sDirURL
151*b1cdbd2cSJim JagielskiEnd Sub
152*b1cdbd2cSJim Jagielski
153*b1cdbd2cSJim Jagielski
154*b1cdbd2cSJim JagielskiSub AddFileNameToList(sFileArray(), FileName as String, FileContent as String, bGetByTitle as Boolean, CurIndex)
155*b1cdbd2cSJim JagielskiDim FileCount As Integer
156*b1cdbd2cSJim Jagielski	CurIndex = CurIndex + 1
157*b1cdbd2cSJim Jagielski	sFileArray(CurIndex,0) = FileName
158*b1cdbd2cSJim Jagielski	If bGetByTitle Then
159*b1cdbd2cSJim Jagielski		sFileArray(CurIndex,1) = RetrieveDocTitle(oDocInfo, FileName)
160*b1cdbd2cSJim Jagielski		&apos; Add the documenttitles to the Filearray
161*b1cdbd2cSJim Jagielski	Else
162*b1cdbd2cSJim Jagielski		sFileArray(CurIndex,1) = FileContent
163*b1cdbd2cSJim Jagielski	End If
164*b1cdbd2cSJim JagielskiEnd Sub
165*b1cdbd2cSJim Jagielski
166*b1cdbd2cSJim Jagielski
167*b1cdbd2cSJim JagielskiFunction RetrieveDocTitle(oDocProps as Object, sFileName as String) As String
168*b1cdbd2cSJim JagielskiDim sDocTitle as String
169*b1cdbd2cSJim Jagielski	On Local Error Goto NOFILE
170*b1cdbd2cSJim Jagielski	oDocProps.loadFromMedium(sFileName, NoArgs())
171*b1cdbd2cSJim Jagielski	sDocTitle = oDocProps.Title
172*b1cdbd2cSJim Jagielski	NOFILE:
173*b1cdbd2cSJim Jagielski	If Err &lt;&gt; 0 Then
174*b1cdbd2cSJim Jagielski		RetrieveDocTitle = &quot;&quot;
175*b1cdbd2cSJim Jagielski		RESUME CLR_ERROR
176*b1cdbd2cSJim Jagielski	End If
177*b1cdbd2cSJim Jagielski	CLR_ERROR:
178*b1cdbd2cSJim Jagielski	If sDocTitle = &quot;&quot; Then
179*b1cdbd2cSJim Jagielski		sDocTitle = GetFileNameWithoutExtension(sFilename, &quot;/&quot;)
180*b1cdbd2cSJim Jagielski	End If
181*b1cdbd2cSJim Jagielski	RetrieveDocTitle = sDocTitle
182*b1cdbd2cSJim JagielskiEnd Function
183*b1cdbd2cSJim Jagielski
184*b1cdbd2cSJim Jagielski
185*b1cdbd2cSJim Jagielski&apos; Retrieves The Filecontent of a Document by extracting the content
186*b1cdbd2cSJim Jagielski&apos; from the Header of the document
187*b1cdbd2cSJim JagielskiFunction GetRealFileContent(FileName as String) As String
188*b1cdbd2cSJim Jagielski	On Local Error Goto NOFILE
189*b1cdbd2cSJim Jagielski	oTypeDetect = createUnoService(&quot;com.sun.star.document.TypeDetection&quot;)
190*b1cdbd2cSJim Jagielski	GetRealFileContent = oTypeDetect.queryTypeByURL(FileName)
191*b1cdbd2cSJim Jagielski	NOFILE:
192*b1cdbd2cSJim Jagielski	If Err &lt;&gt; 0 Then
193*b1cdbd2cSJim Jagielski		GetRealFileContent = &quot;&quot;
194*b1cdbd2cSJim Jagielski		resume CLR_ERROR
195*b1cdbd2cSJim Jagielski	End If
196*b1cdbd2cSJim Jagielski	CLR_ERROR:
197*b1cdbd2cSJim JagielskiEnd Function
198*b1cdbd2cSJim Jagielski
199*b1cdbd2cSJim Jagielski
200*b1cdbd2cSJim JagielskiFunction CopyRecursively(SourceFilePath as String, SourceStemDir as String, TargetStemDir as String)
201*b1cdbd2cSJim JagielskiDim TargetDir as String
202*b1cdbd2cSJim JagielskiDim TargetFile as String
203*b1cdbd2cSJim Jagielski
204*b1cdbd2cSJim Jagielski	TargetFile= ReplaceString(SourceFilePath, TargetStemDir, SourceStemDir)
205*b1cdbd2cSJim Jagielski	TargetFileName = FileNameoutofPath(TargetFile,&quot;/&quot;)
206*b1cdbd2cSJim Jagielski	TargetDir = DeleteStr(TargetFile, TargetFileName)
207*b1cdbd2cSJim Jagielski	CreateFolder(TargetDir)
208*b1cdbd2cSJim Jagielski	CopyRecursively() = TargetFile
209*b1cdbd2cSJim JagielskiEnd Function
210*b1cdbd2cSJim Jagielski
211*b1cdbd2cSJim Jagielski
212*b1cdbd2cSJim Jagielski&apos; Opens a help url referenced by a Help ID that is retrieved from the calling button tag
213*b1cdbd2cSJim JagielskiSub ShowHelperDialog(aEvent)
214*b1cdbd2cSJim JagielskiDim oSystemNode as Object
215*b1cdbd2cSJim JagielskiDim sSystem as String
216*b1cdbd2cSJim JagielskiDim oLanguageNode as Object
217*b1cdbd2cSJim JagielskiDim sLocale as String
218*b1cdbd2cSJim JagielskiDim sLocaleList() as String
219*b1cdbd2cSJim JagielskiDim sLanguage as String
220*b1cdbd2cSJim JagielskiDim sHelpUrl as String
221*b1cdbd2cSJim JagielskiDim sDocType as String
222*b1cdbd2cSJim Jagielski	HelpID = aEvent.Source.Model.Tag
223*b1cdbd2cSJim Jagielski	oLocDocument = StarDesktop.ActiveFrame.Controller.Model
224*b1cdbd2cSJim Jagielski	sDocType = GetDocumentType(oLocDocument)
225*b1cdbd2cSJim Jagielski	oSystemNode = GetRegistryKeyContent(&quot;org.openoffice.Office.Common/Help&quot;)
226*b1cdbd2cSJim Jagielski	sSystem = oSystemNode.GetByName(&quot;System&quot;)
227*b1cdbd2cSJim Jagielski	oLanguageNode = GetRegistryKeyContent(&quot;org.openoffice.Setup/L10N/&quot;)
228*b1cdbd2cSJim Jagielski	sLocale = oLanguageNode.getByName(&quot;ooLocale&quot;)
229*b1cdbd2cSJim Jagielski	sLocaleList() = ArrayoutofString(sLocale, &quot;-&quot;)
230*b1cdbd2cSJim Jagielski	sLanguage = sLocaleList(0)
231*b1cdbd2cSJim Jagielski	sHelpUrl = &quot;vnd.sun.star.help://&quot; &amp; sDocType &amp; &quot;/&quot; &amp; HelpID &amp; &quot;?Language=&quot; &amp; sLanguage &amp; &quot;&amp;System=&quot; &amp; sSystem
232*b1cdbd2cSJim Jagielski	StarDesktop.LoadComponentfromUrl(sHelpUrl, &quot;OFFICE_HELP&quot;, 63, NoArgs())
233*b1cdbd2cSJim JagielskiEnd Sub
234*b1cdbd2cSJim Jagielski
235*b1cdbd2cSJim Jagielski
236*b1cdbd2cSJim JagielskiSub SaveDataToFile(FilePath as String, DataList())
237*b1cdbd2cSJim JagielskiDim FileChannel as Integer
238*b1cdbd2cSJim JagielskiDim i as Integer
239*b1cdbd2cSJim JagielskiDim oFile as Object
240*b1cdbd2cSJim JagielskiDim oOutputStream as Object
241*b1cdbd2cSJim JagielskiDim oStreamString as Object
242*b1cdbd2cSJim JagielskiDim oUcb as Object
243*b1cdbd2cSJim JagielskiDim sCRLF as String
244*b1cdbd2cSJim Jagielski
245*b1cdbd2cSJim Jagielski	sCRLF = CHR(13) &amp; CHR(10)
246*b1cdbd2cSJim Jagielski	oUcb = createUnoService(&quot;com.sun.star.ucb.SimpleFileAccess&quot;)
247*b1cdbd2cSJim Jagielski	oOutputStream = createUnoService(&quot;com.sun.star.io.TextOutputStream&quot;)
248*b1cdbd2cSJim Jagielski	If oUcb.Exists(FilePath) Then
249*b1cdbd2cSJim Jagielski		oUcb.Kill(FilePath)
250*b1cdbd2cSJim Jagielski	End If
251*b1cdbd2cSJim Jagielski	oFile = oUcb.OpenFileReadWrite(FilePath)
252*b1cdbd2cSJim Jagielski	oOutputStream.SetOutputStream(oFile.GetOutputStream)
253*b1cdbd2cSJim Jagielski	For i = 0 To Ubound(DataList())
254*b1cdbd2cSJim Jagielski		oOutputStream.WriteString(DataList(i) &amp; sCRLF)
255*b1cdbd2cSJim Jagielski	Next i
256*b1cdbd2cSJim Jagielski	oOutputStream.CloseOutput()
257*b1cdbd2cSJim JagielskiEnd Sub
258*b1cdbd2cSJim Jagielski
259*b1cdbd2cSJim Jagielski
260*b1cdbd2cSJim JagielskiFunction LoadDataFromFile(FilePath as String, DataList()) as Boolean
261*b1cdbd2cSJim JagielskiDim oInputStream as Object
262*b1cdbd2cSJim JagielskiDim i as Integer
263*b1cdbd2cSJim JagielskiDim oUcb as Object
264*b1cdbd2cSJim JagielskiDim oFile as Object
265*b1cdbd2cSJim JagielskiDim MaxIndex as Integer
266*b1cdbd2cSJim Jagielski	oUcb = createUnoService(&quot;com.sun.star.ucb.SimpleFileAccess&quot;)
267*b1cdbd2cSJim Jagielski	If oUcb.Exists(FilePath) Then
268*b1cdbd2cSJim Jagielski		MaxIndex = 10
269*b1cdbd2cSJim Jagielski		oInputStream = createUnoService(&quot;com.sun.star.io.TextInputStream&quot;)
270*b1cdbd2cSJim Jagielski		oFile = oUcb.OpenFileReadWrite(FilePath)
271*b1cdbd2cSJim Jagielski		oInputStream.SetInputStream(oFile.GetInputStream)
272*b1cdbd2cSJim Jagielski		i = -1
273*b1cdbd2cSJim Jagielski		Redim Preserve DataList(MaxIndex)
274*b1cdbd2cSJim Jagielski		While Not oInputStream.IsEOF
275*b1cdbd2cSJim Jagielski			i = i + 1
276*b1cdbd2cSJim Jagielski			If i &gt; MaxIndex Then
277*b1cdbd2cSJim Jagielski				MaxIndex = MaxIndex + 10
278*b1cdbd2cSJim Jagielski				Redim Preserve DataList(MaxIndex)
279*b1cdbd2cSJim Jagielski			End If
280*b1cdbd2cSJim Jagielski			DataList(i) = oInputStream.ReadLine
281*b1cdbd2cSJim Jagielski		Wend
282*b1cdbd2cSJim Jagielski		If i &gt; -1 And i &lt;&gt; MaxIndex Then
283*b1cdbd2cSJim Jagielski			Redim Preserve DataList(i)
284*b1cdbd2cSJim Jagielski		End If
285*b1cdbd2cSJim Jagielski		LoadDataFromFile() = True
286*b1cdbd2cSJim Jagielski		oInputStream.CloseInput()
287*b1cdbd2cSJim Jagielski	Else
288*b1cdbd2cSJim Jagielski		LoadDataFromFile() = False
289*b1cdbd2cSJim Jagielski	End If
290*b1cdbd2cSJim JagielskiEnd Function
291*b1cdbd2cSJim Jagielski
292*b1cdbd2cSJim Jagielski
293*b1cdbd2cSJim JagielskiFunction CreateFolder(sNewFolder) as Boolean
294*b1cdbd2cSJim JagielskiDim oUcb as Object
295*b1cdbd2cSJim Jagielski	oUcb = createUnoService(&quot;com.sun.star.ucb.SimpleFileAccess&quot;)
296*b1cdbd2cSJim Jagielski	On Local Error Goto NOSPACEONDRIVE
297*b1cdbd2cSJim Jagielski	If Not oUcb.Exists(sNewFolder) Then
298*b1cdbd2cSJim Jagielski		oUcb.CreateFolder(sNewFolder)
299*b1cdbd2cSJim Jagielski	End If
300*b1cdbd2cSJim Jagielski	CreateFolder = True
301*b1cdbd2cSJim JagielskiNOSPACEONDRIVE:
302*b1cdbd2cSJim Jagielski	If Err &lt;&gt; 0 Then
303*b1cdbd2cSJim Jagielski		If InitResources(&quot;&quot;, &quot;dbw&quot;) Then
304*b1cdbd2cSJim Jagielski			ErrMsg = GetResText(500)
305*b1cdbd2cSJim Jagielski			ErrMsg = ReplaceString(ErrMsg, chr(13), &quot;&lt;BR&gt;&quot;)
306*b1cdbd2cSJim Jagielski			ErrMsg = ReplaceString(ErrMsg, sNewFolder, &quot;%1&quot;)
307*b1cdbd2cSJim Jagielski			Msgbox(ErrMsg, 48, GetProductName())
308*b1cdbd2cSJim Jagielski		End If
309*b1cdbd2cSJim Jagielski		CreateFolder = False
310*b1cdbd2cSJim Jagielski		Resume GOON
311*b1cdbd2cSJim Jagielski	End If
312*b1cdbd2cSJim JagielskiGOON:
313*b1cdbd2cSJim JagielskiEnd Function
314*b1cdbd2cSJim Jagielski</script:module>
315