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="ModuleControls" script:language="StarBasic">Option Explicit
24*b1cdbd2cSJim Jagielski
25*b1cdbd2cSJim JagielskiPublic DlgOverwrite as Object
26*b1cdbd2cSJim JagielskiPublic Const SBOVERWRITEUNDEFINED as Integer = 0
27*b1cdbd2cSJim JagielskiPublic Const SBOVERWRITECANCEL as Integer = 2
28*b1cdbd2cSJim JagielskiPublic Const SBOVERWRITEQUERY as Integer = 7
29*b1cdbd2cSJim JagielskiPublic Const SBOVERWRITEALWAYS as Integer = 6
30*b1cdbd2cSJim JagielskiPublic Const SBOVERWRITENEVER as Integer = 8
31*b1cdbd2cSJim JagielskiPublic iGeneralOverwrite as Integer
32*b1cdbd2cSJim Jagielski
33*b1cdbd2cSJim Jagielski
34*b1cdbd2cSJim Jagielski
35*b1cdbd2cSJim Jagielski&apos; Accepts the name of a control and returns the respective control model as object
36*b1cdbd2cSJim Jagielski&apos; The Container can either be a whole document or a specific sheet of a Calc-Document
37*b1cdbd2cSJim Jagielski&apos; &apos;CName&apos; is the name of the Control
38*b1cdbd2cSJim JagielskiFunction getControlModel(oContainer as Object, CName as String)
39*b1cdbd2cSJim JagielskiDim aForm, oForms as Object
40*b1cdbd2cSJim JagielskiDim i as Integer
41*b1cdbd2cSJim Jagielski	oForms = oContainer.Drawpage.GetForms
42*b1cdbd2cSJim Jagielski	For i = 0 To oForms.Count-1
43*b1cdbd2cSJim Jagielski		aForm = oForms.GetbyIndex(i)
44*b1cdbd2cSJim Jagielski		If aForm.HasByName(CName) Then
45*b1cdbd2cSJim Jagielski			GetControlModel = aForm.GetbyName(CName)
46*b1cdbd2cSJim Jagielski			Exit Function
47*b1cdbd2cSJim Jagielski		End If
48*b1cdbd2cSJim Jagielski	Next i
49*b1cdbd2cSJim Jagielski	Msgbox(&quot;No Control with the name &apos;&quot; &amp; CName &amp; &quot;&apos; found&quot; , 16, GetProductName())
50*b1cdbd2cSJim JagielskiEnd Function
51*b1cdbd2cSJim Jagielski
52*b1cdbd2cSJim Jagielski
53*b1cdbd2cSJim Jagielski
54*b1cdbd2cSJim Jagielski&apos; Gets the Shape of a Control( e. g. to reset the size or Position of the control
55*b1cdbd2cSJim Jagielski&apos; Parameters:
56*b1cdbd2cSJim Jagielski&apos; The &apos;oContainer&apos; is the Document or a specific sheet of a Calc - Document
57*b1cdbd2cSJim Jagielski&apos; &apos;CName&apos; is the Name of the Control
58*b1cdbd2cSJim JagielskiFunction GetControlShape(oContainer as Object,CName as String)
59*b1cdbd2cSJim JagielskiDim i as integer
60*b1cdbd2cSJim JagielskiDim aShape as Object
61*b1cdbd2cSJim Jagielski	For i = 0 to oContainer.DrawPage.Count-1
62*b1cdbd2cSJim Jagielski		aShape = oContainer.DrawPage(i)
63*b1cdbd2cSJim Jagielski		If HasUnoInterfaces(aShape, &quot;com.sun.star.drawing.XControlShape&quot;) then
64*b1cdbd2cSJim Jagielski			If ashape.Control.Name = CName then
65*b1cdbd2cSJim Jagielski				GetControlShape = aShape
66*b1cdbd2cSJim Jagielski				exit Function
67*b1cdbd2cSJim Jagielski			End If
68*b1cdbd2cSJim Jagielski		End If
69*b1cdbd2cSJim Jagielski	Next
70*b1cdbd2cSJim JagielskiEnd Function
71*b1cdbd2cSJim Jagielski
72*b1cdbd2cSJim Jagielski
73*b1cdbd2cSJim Jagielski&apos; Returns the View of a Control
74*b1cdbd2cSJim Jagielski&apos; Parameters:
75*b1cdbd2cSJim Jagielski&apos; The &apos;oContainer&apos; is the Document or a specific sheet of a Calc - Document
76*b1cdbd2cSJim Jagielski&apos; The &apos;oController&apos; is always directly attached to the Document
77*b1cdbd2cSJim Jagielski&apos; &apos;CName&apos; is the Name of the Control
78*b1cdbd2cSJim JagielskiFunction getControlView(oContainer , oController as Object, CName as String) as Object
79*b1cdbd2cSJim JagielskiDim aForm, oForms, oControlModel as Object
80*b1cdbd2cSJim JagielskiDim i as Integer
81*b1cdbd2cSJim Jagielski	oForms = oContainer.DrawPage.Forms
82*b1cdbd2cSJim Jagielski	For i = 0 To oForms.Count-1
83*b1cdbd2cSJim Jagielski		aForm = oforms.GetbyIndex(i)
84*b1cdbd2cSJim Jagielski		If aForm.HasByName(CName) Then
85*b1cdbd2cSJim Jagielski			oControlModel = aForm.GetbyName(CName)
86*b1cdbd2cSJim Jagielski			GetControlView = oController.GetControl(oControlModel)
87*b1cdbd2cSJim Jagielski			Exit Function
88*b1cdbd2cSJim Jagielski		End If
89*b1cdbd2cSJim Jagielski	Next i
90*b1cdbd2cSJim Jagielski	Msgbox(&quot;No Control with the name &apos;&quot; &amp; CName &amp; &quot;&apos; found&quot; , 16, GetProductName())
91*b1cdbd2cSJim JagielskiEnd Function
92*b1cdbd2cSJim Jagielski
93*b1cdbd2cSJim Jagielski
94*b1cdbd2cSJim Jagielski
95*b1cdbd2cSJim Jagielski&apos; Parameters:
96*b1cdbd2cSJim Jagielski&apos; The &apos;oContainer&apos; is the Document or a specific sheet of a Calc - Document
97*b1cdbd2cSJim Jagielski&apos; &apos;CName&apos; is the Name of the Control
98*b1cdbd2cSJim JagielskiFunction DisposeControl(oContainer as Object, CName as String) as Boolean
99*b1cdbd2cSJim JagielskiDim aControl as Object
100*b1cdbd2cSJim Jagielski
101*b1cdbd2cSJim Jagielski	aControl = GetControlModel(oContainer,CName)
102*b1cdbd2cSJim Jagielski	If not IsNull(aControl) Then
103*b1cdbd2cSJim Jagielski		aControl.Dispose()
104*b1cdbd2cSJim Jagielski		DisposeControl = True
105*b1cdbd2cSJim Jagielski	Else
106*b1cdbd2cSJim Jagielski		DisposeControl = False
107*b1cdbd2cSJim Jagielski	End If
108*b1cdbd2cSJim JagielskiEnd Function
109*b1cdbd2cSJim Jagielski
110*b1cdbd2cSJim Jagielski
111*b1cdbd2cSJim Jagielski&apos; Returns a sequence of a group of controls like option buttons or checkboxes
112*b1cdbd2cSJim Jagielski&apos; The &apos;oContainer&apos; is the Document or a specific sheet of a Calc - Document
113*b1cdbd2cSJim Jagielski&apos; &apos;sGroupName&apos; is the Name of the Controlgroup
114*b1cdbd2cSJim JagielskiFunction GetControlGroupModel(oContainer as Object, sGroupName as String )
115*b1cdbd2cSJim JagielskiDim aForm, oForms As Object
116*b1cdbd2cSJim JagielskiDim aControlModel() As Object
117*b1cdbd2cSJim JagielskiDim i as integer
118*b1cdbd2cSJim Jagielski
119*b1cdbd2cSJim Jagielski	oForms = oContainer.DrawPage.Forms
120*b1cdbd2cSJim Jagielski	For i = 0 To oForms.Count-1
121*b1cdbd2cSJim Jagielski		aForm = oForms(i)
122*b1cdbd2cSJim Jagielski		If aForm.HasbyName(sGroupName) Then
123*b1cdbd2cSJim Jagielski			aForm.GetGroupbyName(sGroupName,aControlModel)
124*b1cdbd2cSJim Jagielski			GetControlGroupModel = aControlModel
125*b1cdbd2cSJim Jagielski			Exit Function
126*b1cdbd2cSJim Jagielski		End If
127*b1cdbd2cSJim Jagielski	Next i
128*b1cdbd2cSJim Jagielski	Msgbox(&quot;No Controlgroup with the name &apos;&quot; &amp; sGroupName &amp; &quot;&apos; found&quot; , 16, GetProductName())
129*b1cdbd2cSJim JagielskiEnd Function
130*b1cdbd2cSJim Jagielski
131*b1cdbd2cSJim Jagielski
132*b1cdbd2cSJim Jagielski&apos; Returns the Referencevalue of a group of e.g. option buttons or check boxes
133*b1cdbd2cSJim Jagielski&apos; &apos;oControlGroup&apos; is a sequence of the Control objects
134*b1cdbd2cSJim JagielskiFunction GetRefValue(oControlGroup() as Object)
135*b1cdbd2cSJim JagielskiDim i as Integer
136*b1cdbd2cSJim Jagielski	For i = 0 To Ubound(oControlGroup())
137*b1cdbd2cSJim Jagielski&apos;		oControlGroup(i).DefaultState = oControlGroup(i).State
138*b1cdbd2cSJim Jagielski		If oControlGroup(i).State Then
139*b1cdbd2cSJim Jagielski			GetRefValue = oControlGroup(i).RefValue
140*b1cdbd2cSJim Jagielski			exit Function
141*b1cdbd2cSJim Jagielski		End If
142*b1cdbd2cSJim Jagielski	Next
143*b1cdbd2cSJim Jagielski	GetRefValue() = -1
144*b1cdbd2cSJim JagielskiEnd Function
145*b1cdbd2cSJim Jagielski
146*b1cdbd2cSJim Jagielski
147*b1cdbd2cSJim JagielskiFunction GetRefValueOfControlGroup(oContainer as Object, GroupName as String)
148*b1cdbd2cSJim JagielskiDim oOptGroup() as Object
149*b1cdbd2cSJim JagielskiDim iRef as Integer
150*b1cdbd2cSJim Jagielski	oOptGroup() = GetControlGroupModel(oContainer, GroupName)
151*b1cdbd2cSJim Jagielski	iRef = GetRefValue(oOptGroup())
152*b1cdbd2cSJim Jagielski	GetRefValueofControlGroup = iRef
153*b1cdbd2cSJim JagielskiEnd Function
154*b1cdbd2cSJim Jagielski
155*b1cdbd2cSJim Jagielski
156*b1cdbd2cSJim JagielskiFunction GetOptionGroupValue(oContainer as Object, OptGroupName as String) as Boolean
157*b1cdbd2cSJim JagielskiDim oRulesOptions() as Object
158*b1cdbd2cSJim Jagielski	oRulesOptions() = GetControlGroupModel(oContainer, OptGroupName)
159*b1cdbd2cSJim Jagielski	GetOptionGroupValue = oRulesOptions(0).State
160*b1cdbd2cSJim JagielskiEnd Function
161*b1cdbd2cSJim Jagielski
162*b1cdbd2cSJim Jagielski
163*b1cdbd2cSJim Jagielski
164*b1cdbd2cSJim JagielskiFunction WriteOptValueToCell(oSheet as Object, OptGroupName as String, iCol as Integer, iRow as Integer) as Boolean
165*b1cdbd2cSJim JagielskiDim bOptValue as Boolean
166*b1cdbd2cSJim JagielskiDim oCell as Object
167*b1cdbd2cSJim Jagielski	bOptValue = GetOptionGroupValue(oSheet, OptGroupName)
168*b1cdbd2cSJim Jagielski	oCell = oSheet.GetCellByPosition(iCol, iRow)
169*b1cdbd2cSJim Jagielski	oCell.SetValue(ABS(CInt(bOptValue)))
170*b1cdbd2cSJim Jagielski	WriteOptValueToCell() = bOptValue
171*b1cdbd2cSJim JagielskiEnd Function
172*b1cdbd2cSJim Jagielski
173*b1cdbd2cSJim Jagielski
174*b1cdbd2cSJim JagielskiFunction LoadDialog(Libname as String, DialogName as String, Optional oLibContainer)
175*b1cdbd2cSJim JagielskiDim oLib as Object
176*b1cdbd2cSJim JagielskiDim oLibDialog as Object
177*b1cdbd2cSJim JagielskiDim oRuntimeDialog as Object
178*b1cdbd2cSJim Jagielski	If IsMissing(oLibContainer ) then
179*b1cdbd2cSJim Jagielski		oLibContainer = DialogLibraries
180*b1cdbd2cSJim Jagielski	End If
181*b1cdbd2cSJim Jagielski	oLibContainer.LoadLibrary(LibName)
182*b1cdbd2cSJim Jagielski	oLib = oLibContainer.GetByName(Libname)
183*b1cdbd2cSJim Jagielski	oLibDialog = oLib.GetByName(DialogName)
184*b1cdbd2cSJim Jagielski	oRuntimeDialog = CreateUnoDialog(oLibDialog)
185*b1cdbd2cSJim Jagielski	LoadDialog() = oRuntimeDialog
186*b1cdbd2cSJim JagielskiEnd Function
187*b1cdbd2cSJim Jagielski
188*b1cdbd2cSJim Jagielski
189*b1cdbd2cSJim JagielskiSub GetFolderName(oRefModel as Object)
190*b1cdbd2cSJim JagielskiDim oFolderDialog as Object
191*b1cdbd2cSJim JagielskiDim iAccept as Integer
192*b1cdbd2cSJim JagielskiDim sPath as String
193*b1cdbd2cSJim JagielskiDim InitPath as String
194*b1cdbd2cSJim JagielskiDim RefControlName as String
195*b1cdbd2cSJim JagielskiDim oUcb as object
196*b1cdbd2cSJim Jagielski	&apos;Note: The following services have to be called in the following order
197*b1cdbd2cSJim Jagielski	&apos; because otherwise Basic does not remove the FileDialog Service
198*b1cdbd2cSJim Jagielski	oFolderDialog = CreateUnoService(&quot;com.sun.star.ui.dialogs.FolderPicker&quot;)
199*b1cdbd2cSJim Jagielski	oUcb = createUnoService(&quot;com.sun.star.ucb.SimpleFileAccess&quot;)
200*b1cdbd2cSJim Jagielski	InitPath = ConvertToUrl(oRefModel.Text)
201*b1cdbd2cSJim Jagielski	If InitPath = &quot;&quot; Then
202*b1cdbd2cSJim Jagielski		InitPath = GetPathSettings(&quot;Work&quot;)
203*b1cdbd2cSJim Jagielski	End If
204*b1cdbd2cSJim Jagielski	If oUcb.Exists(InitPath) Then
205*b1cdbd2cSJim Jagielski		oFolderDialog.SetDisplayDirectory(InitPath)
206*b1cdbd2cSJim Jagielski	End If
207*b1cdbd2cSJim Jagielski	iAccept = oFolderDialog.Execute()
208*b1cdbd2cSJim Jagielski	If iAccept = 1 Then
209*b1cdbd2cSJim Jagielski		sPath = oFolderDialog.GetDirectory()
210*b1cdbd2cSJim Jagielski		If oUcb.Exists(sPath) Then
211*b1cdbd2cSJim Jagielski			oRefModel.Text = ConvertFromUrl(sPath)
212*b1cdbd2cSJim Jagielski		End If
213*b1cdbd2cSJim Jagielski	End If
214*b1cdbd2cSJim JagielskiEnd Sub
215*b1cdbd2cSJim Jagielski
216*b1cdbd2cSJim Jagielski
217*b1cdbd2cSJim JagielskiSub GetFileName(oRefModel as Object, Filternames())
218*b1cdbd2cSJim JagielskiDim oFileDialog as Object
219*b1cdbd2cSJim JagielskiDim iAccept as Integer
220*b1cdbd2cSJim JagielskiDim sPath as String
221*b1cdbd2cSJim JagielskiDim InitPath as String
222*b1cdbd2cSJim JagielskiDim RefControlName as String
223*b1cdbd2cSJim JagielskiDim oUcb as object
224*b1cdbd2cSJim Jagielski&apos;Dim ListAny(0)
225*b1cdbd2cSJim Jagielski	&apos;Note: The following services have to be called in the following order
226*b1cdbd2cSJim Jagielski	&apos; because otherwise Basic does not remove the FileDialog Service
227*b1cdbd2cSJim Jagielski	oFileDialog = CreateUnoService(&quot;com.sun.star.ui.dialogs.FilePicker&quot;)
228*b1cdbd2cSJim Jagielski	oUcb = createUnoService(&quot;com.sun.star.ucb.SimpleFileAccess&quot;)
229*b1cdbd2cSJim Jagielski	&apos;ListAny(0) = com.sun.star.ui.dialogs.TemplateDescription.FILEOPEN_SIMPLE
230*b1cdbd2cSJim Jagielski	&apos;oFileDialog.initialize(ListAny())
231*b1cdbd2cSJim Jagielski	AddFiltersToDialog(FilterNames(), oFileDialog)
232*b1cdbd2cSJim Jagielski	InitPath = ConvertToUrl(oRefModel.Text)
233*b1cdbd2cSJim Jagielski	If InitPath = &quot;&quot; Then
234*b1cdbd2cSJim Jagielski		InitPath = GetPathSettings(&quot;Work&quot;)
235*b1cdbd2cSJim Jagielski	End If
236*b1cdbd2cSJim Jagielski	If oUcb.Exists(InitPath) Then
237*b1cdbd2cSJim Jagielski		oFileDialog.SetDisplayDirectory(InitPath)
238*b1cdbd2cSJim Jagielski	End If
239*b1cdbd2cSJim Jagielski	iAccept = oFileDialog.Execute()
240*b1cdbd2cSJim Jagielski	If iAccept = 1 Then
241*b1cdbd2cSJim Jagielski		sPath = oFileDialog.Files(0)
242*b1cdbd2cSJim Jagielski		If oUcb.Exists(sPath) Then
243*b1cdbd2cSJim Jagielski			oRefModel.Text = ConvertFromUrl(sPath)
244*b1cdbd2cSJim Jagielski		End If
245*b1cdbd2cSJim Jagielski	End If
246*b1cdbd2cSJim Jagielski	oFileDialog.Dispose()
247*b1cdbd2cSJim JagielskiEnd Sub
248*b1cdbd2cSJim Jagielski
249*b1cdbd2cSJim Jagielski
250*b1cdbd2cSJim JagielskiFunction StoreDocument(oDocument as Object, FilterNames() as String, DefaultName as String, DisplayDirectory as String, Optional iAddProcedure as Integer) as String
251*b1cdbd2cSJim JagielskiDim NoArgs() as New com.sun.star.beans.PropertyValue
252*b1cdbd2cSJim JagielskiDim oStoreProperties(0) as New com.sun.star.beans.PropertyValue
253*b1cdbd2cSJim JagielskiDim oStoreDialog as Object
254*b1cdbd2cSJim JagielskiDim iAccept as Integer
255*b1cdbd2cSJim JagielskiDim sPath as String
256*b1cdbd2cSJim JagielskiDim ListAny(0) as Long
257*b1cdbd2cSJim JagielskiDim UIFilterName as String
258*b1cdbd2cSJim JagielskiDim FilterName as String
259*b1cdbd2cSJim JagielskiDim FilterIndex as Integer
260*b1cdbd2cSJim Jagielski	ListAny(0) = com.sun.star.ui.dialogs.TemplateDescription.FILESAVE_AUTOEXTENSION_PASSWORD
261*b1cdbd2cSJim Jagielski	oStoreDialog = CreateUnoService(&quot;com.sun.star.ui.dialogs.FilePicker&quot;)
262*b1cdbd2cSJim Jagielski	oStoreDialog.Initialize(ListAny())
263*b1cdbd2cSJim Jagielski	AddFiltersToDialog(FilterNames(), oStoreDialog)
264*b1cdbd2cSJim Jagielski	oStoreDialog.SetDisplayDirectory(DisplayDirectory)
265*b1cdbd2cSJim Jagielski	oStoreDialog.SetDefaultName(DefaultName)
266*b1cdbd2cSJim Jagielski	oStoreDialog.setValue(com.sun.star.ui.dialogs.ExtendedFilePickerElementIds.CHECKBOX_AUTOEXTENSION,0, true)
267*b1cdbd2cSJim Jagielski
268*b1cdbd2cSJim Jagielski	iAccept = oStoreDialog.Execute()
269*b1cdbd2cSJim Jagielski	If iAccept = 1 Then
270*b1cdbd2cSJim Jagielski		sPath = oStoreDialog.Files(0)
271*b1cdbd2cSJim Jagielski		UIFilterName = oStoreDialog.GetCurrentFilter()
272*b1cdbd2cSJim Jagielski		FilterIndex = IndexInArray(UIFilterName, FilterNames())
273*b1cdbd2cSJim Jagielski		FilterName = FilterNames(FilterIndex,2)
274*b1cdbd2cSJim Jagielski		If Not IsMissing(iAddProcedure) Then
275*b1cdbd2cSJim Jagielski			Select Case iAddProcedure
276*b1cdbd2cSJim Jagielski				Case 1
277*b1cdbd2cSJim Jagielski					CommitLastDocumentChanges(sPath)
278*b1cdbd2cSJim Jagielski			End Select
279*b1cdbd2cSJim Jagielski		End If
280*b1cdbd2cSJim Jagielski		On Local Error Goto NOSAVING
281*b1cdbd2cSJim Jagielski		If FilterName = &quot;&quot;  Then
282*b1cdbd2cSJim Jagielski			&apos; Todo: Catch the case that a document that has to be overwritten is writeportected (e.g. it is open)
283*b1cdbd2cSJim Jagielski			oDocument.StoreAsUrl(sPath, NoArgs())
284*b1cdbd2cSJim Jagielski		Else
285*b1cdbd2cSJim Jagielski			oStoreProperties(0).Name = &quot;FilterName&quot;
286*b1cdbd2cSJim Jagielski			oStoreProperties(0).Value = FilterName
287*b1cdbd2cSJim Jagielski			oDocument.StoreAsUrl(sPath, oStoreProperties())
288*b1cdbd2cSJim Jagielski		End If
289*b1cdbd2cSJim Jagielski	End If
290*b1cdbd2cSJim Jagielski	oStoreDialog.dispose()
291*b1cdbd2cSJim Jagielski	StoreDocument() = sPath
292*b1cdbd2cSJim Jagielski	Exit Function
293*b1cdbd2cSJim JagielskiNOSAVING:
294*b1cdbd2cSJim Jagielski	If Err &lt;&gt; 0 Then
295*b1cdbd2cSJim Jagielski&apos;		Msgbox(&quot;Document cannot be saved under &apos;&quot; &amp; ConvertFromUrl(sPath) &amp; &quot;&apos;&quot;, 48, GetProductName())
296*b1cdbd2cSJim Jagielski		sPath = &quot;&quot;
297*b1cdbd2cSJim Jagielski		oStoreDialog.dispose()
298*b1cdbd2cSJim Jagielski		Resume NOERROR
299*b1cdbd2cSJim Jagielski		NOERROR:
300*b1cdbd2cSJim Jagielski	End If
301*b1cdbd2cSJim JagielskiEnd Function
302*b1cdbd2cSJim Jagielski
303*b1cdbd2cSJim Jagielski
304*b1cdbd2cSJim JagielskiSub AddFiltersToDialog(FilterNames() as String, oDialog as Object)
305*b1cdbd2cSJim JagielskiDim i as Integer
306*b1cdbd2cSJim JagielskiDim MaxIndex as Integer
307*b1cdbd2cSJim JagielskiDim ViewFiltername as String
308*b1cdbd2cSJim JagielskiDim oProdNameAccess as Object
309*b1cdbd2cSJim JagielskiDim sProdName as String
310*b1cdbd2cSJim Jagielski	oProdNameAccess = GetRegistryKeyContent(&quot;org.openoffice.Setup/Product&quot;)
311*b1cdbd2cSJim Jagielski	sProdName = oProdNameAccess.getByName(&quot;ooName&quot;)
312*b1cdbd2cSJim Jagielski	MaxIndex = Ubound(FilterNames(), 1)
313*b1cdbd2cSJim Jagielski	For i = 0 To MaxIndex
314*b1cdbd2cSJim Jagielski		Filternames(i,0) = ReplaceString(Filternames(i,0), sProdName,&quot;%productname%&quot;)
315*b1cdbd2cSJim Jagielski		oDialog.AppendFilter(FilterNames(i,0), FilterNames(i,1))
316*b1cdbd2cSJim Jagielski	Next i
317*b1cdbd2cSJim Jagielski	oDialog.SetCurrentFilter(FilterNames(0,0)
318*b1cdbd2cSJim JagielskiEnd Sub
319*b1cdbd2cSJim Jagielski
320*b1cdbd2cSJim Jagielski
321*b1cdbd2cSJim JagielskiSub SwitchMousePointer(oWindowPeer as Object, bDoEnable as Boolean)
322*b1cdbd2cSJim JagielskiDim oWindowPointer as Object
323*b1cdbd2cSJim Jagielski	oWindowPointer = CreateUnoService(&quot;com.sun.star.awt.Pointer&quot;)
324*b1cdbd2cSJim Jagielski	If bDoEnable Then
325*b1cdbd2cSJim Jagielski		oWindowPointer.SetType(com.sun.star.awt.SystemPointer.ARROW)
326*b1cdbd2cSJim Jagielski	Else
327*b1cdbd2cSJim Jagielski		oWindowPointer.SetType(com.sun.star.awt.SystemPointer.WAIT)
328*b1cdbd2cSJim Jagielski	End If
329*b1cdbd2cSJim Jagielski	oWindowPeer.SetPointer(oWindowPointer)
330*b1cdbd2cSJim JagielskiEnd Sub
331*b1cdbd2cSJim Jagielski
332*b1cdbd2cSJim Jagielski
333*b1cdbd2cSJim JagielskiSub ShowOverwriteAllDialog(FilePath as String, sTitle as String)
334*b1cdbd2cSJim JagielskiDim QueryString as String
335*b1cdbd2cSJim JagielskiDim LocRetValue as Integer
336*b1cdbd2cSJim JagielskiDim lblYes as String
337*b1cdbd2cSJim JagielskiDim lblNo as String
338*b1cdbd2cSJim JagielskiDim lblYesToAll as String
339*b1cdbd2cSJim JagielskiDim lblCancel as String
340*b1cdbd2cSJim JagielskiDim OverwriteModel as Object
341*b1cdbd2cSJim Jagielski	If InitResources(GetProductName(), &quot;dbw&quot;) Then
342*b1cdbd2cSJim Jagielski		QueryString = GetResText(507)
343*b1cdbd2cSJim Jagielski		QueryString = ReplaceString(QueryString, ConvertFromUrl(FilePath), &quot;&lt;PATH&gt;&quot;)
344*b1cdbd2cSJim Jagielski		If Len(QueryString) &gt; 190 Then
345*b1cdbd2cSJim Jagielski			QueryString = DeleteStr(QueryString, &quot;.&lt;BR&gt;&quot;)
346*b1cdbd2cSJim Jagielski		End If
347*b1cdbd2cSJim Jagielski		QueryString = ReplaceString(QueryString, chr(13), &quot;&lt;BR&gt;&quot;)
348*b1cdbd2cSJim Jagielski		lblYes = GetResText(508)
349*b1cdbd2cSJim Jagielski		lblYesToAll = GetResText(509)
350*b1cdbd2cSJim Jagielski		lblNo = GetResText(510)
351*b1cdbd2cSJim Jagielski		lblCancel = GetResText(511)
352*b1cdbd2cSJim Jagielski		DlgOverwrite = LoadDialog(&quot;Tools&quot;, &quot;DlgOverwriteAll&quot;)
353*b1cdbd2cSJim Jagielski		DlgOverwrite.Title = sTitle
354*b1cdbd2cSJim Jagielski		OverwriteModel = DlgOverwrite.Model
355*b1cdbd2cSJim Jagielski		OverwriteModel.cmdYes.Label = lblYes
356*b1cdbd2cSJim Jagielski		OverwriteModel.cmdYesToAll.Label = lblYesToAll
357*b1cdbd2cSJim Jagielski		OverwriteModel.cmdNo.Label = lblNo
358*b1cdbd2cSJim Jagielski		OverwriteModel.cmdCancel.Label = lblCancel
359*b1cdbd2cSJim Jagielski		OverwriteModel.lblQueryforSave.Label = QueryString
360*b1cdbd2cSJim Jagielski		OverwriteModel.cmdNo.DefaultButton = True
361*b1cdbd2cSJim Jagielski		DlgOverwrite.GetControl(&quot;cmdNo&quot;).SetFocus()
362*b1cdbd2cSJim Jagielski		iGeneralOverwrite = 999
363*b1cdbd2cSJim Jagielski		LocRetValue = DlgOverwrite.execute()
364*b1cdbd2cSJim Jagielski		If iGeneralOverwrite = 999 Then
365*b1cdbd2cSJim Jagielski			iGeneralOverwrite = SBOVERWRITECANCEL
366*b1cdbd2cSJim Jagielski		End If
367*b1cdbd2cSJim Jagielski		DlgOverwrite.dispose()
368*b1cdbd2cSJim Jagielski	Else
369*b1cdbd2cSJim Jagielski		iGeneralOverwrite = SBOVERWRITECANCEL
370*b1cdbd2cSJim Jagielski	End If
371*b1cdbd2cSJim JagielskiEnd Sub
372*b1cdbd2cSJim Jagielski
373*b1cdbd2cSJim Jagielski
374*b1cdbd2cSJim JagielskiSub SetOVERWRITEToQuery()
375*b1cdbd2cSJim Jagielski	iGeneralOverwrite = SBOVERWRITEQUERY
376*b1cdbd2cSJim Jagielski	DlgOverwrite.EndExecute()
377*b1cdbd2cSJim JagielskiEnd Sub
378*b1cdbd2cSJim Jagielski
379*b1cdbd2cSJim Jagielski
380*b1cdbd2cSJim JagielskiSub SetOVERWRITEToAlways()
381*b1cdbd2cSJim Jagielski	iGeneralOverwrite = SBOVERWRITEALWAYS
382*b1cdbd2cSJim Jagielski	DlgOverwrite.EndExecute()
383*b1cdbd2cSJim JagielskiEnd Sub
384*b1cdbd2cSJim Jagielski
385*b1cdbd2cSJim Jagielski
386*b1cdbd2cSJim JagielskiSub SetOVERWRITEToNever()
387*b1cdbd2cSJim Jagielski	iGeneralOverwrite = SBOVERWRITENEVER
388*b1cdbd2cSJim Jagielski	DlgOverwrite.EndExecute()
389*b1cdbd2cSJim JagielskiEnd Sub
390*b1cdbd2cSJim Jagielski</script:module>
391