xref: /AOO41X/main/wizards/source/euro/ConvertRun.xba (revision 83137a03adbb58b5b3bdafefefa1e93de35e0011)
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="ConvertRun" script:language="StarBasic">Option Explicit
24
25Public oPreSelRange as Object
26
27Sub Main()
28    BasicLibraries.LoadLibrary(&quot;Tools&quot;)
29    If InitResources(&quot;Euro Converter&quot;, &quot;eur&quot;) Then
30        bDoUnProtect = False
31        bPreSelected = True
32        oDocument = ThisComponent
33        RetrieveDocumentObjects()                                           &apos; Statusline, SheetsCollection etc.
34        InitializeConverter(oDocument.CharLocale, 1)
35        GetPreSelectedRange()
36        If GoOn Then
37            DialogModel.lstCurrencies.TabIndex = 2
38            DialogConvert.GetControl(&quot;chkComplete&quot;).SetFocus()
39            DialogConvert.Execute
40        End If
41        DialogConvert.Dispose
42    End If
43End Sub
44
45
46Sub SelectListItem()
47Dim Listbox as Object
48Dim oListSheet as Object
49Dim CurStyleName as String
50Dim oCursheet as Object
51Dim oTempRanges as Object
52Dim sCurSheetName as String
53Dim RangeName as String
54Dim oSheetRanges as Object
55Dim ListIndex as Integer
56Dim a as Integer
57Dim i as Integer
58Dim n as Integer
59Dim m as Integer
60Dim MaxIndex as Integer
61    Listbox = DialogModel.lstSelection
62    If Ubound(Listbox.SelectedItems()) &gt; -1 Then
63        EnableStep1DialogControls(False, False, False)
64        oSelRanges = oDocument.createInstance(&quot;com.sun.star.sheet.SheetCellRanges&quot;)
65
66        &apos; Is the sheet the basis, then the sheetobject has to be created
67        If DialogModel.optDocRanges.State = 1 Then
68            &apos; Document is the basis for the conversion
69            ListIndex = Listbox.SelectedItems(0)
70            oCurSheet = RetrieveSheetoutofRangeName(Listbox.StringItemList(ListIndex))
71            oDocument.CurrentController.SetActiveSheet(oCurSheet)
72        Else
73            oCurSheet = oDocument.CurrentController.ActiveSheet
74        End If
75        sCurSheetName = oCurSheet.Name
76        If DialogModel.optCellTemplates.State = 1 Then
77            Dim CurIndex as Integer
78            For i = 0 To Ubound(Listbox.SelectedItems())
79                CurIndex = Listbox.SelectedItems(i)
80                CurStylename = Listbox.StringItemList(CurIndex)
81                oSheetRanges = oCursheet.CellFormatRanges.createEnumeration
82                While oSheetRanges.hasMoreElements
83                    oRange = oSheetRanges.NextElement
84                    If oRange.getPropertyState(&quot;NumberFormat&quot;) = 1 Then
85                        If oRange.CellStyle = CurStyleName Then
86                            oSelRanges.InsertbyName(&quot;&quot;,oRange)
87                        End If
88                    End If
89                Wend
90            Next i
91        Else
92            &apos; Hard Formatation is selected
93            a = -1
94            For n = 0 To Ubound(Listbox.SelectedItems())
95                m = Listbox.SelectedItems(n)
96                RangeName = Listbox.StringItemList(m)
97                oListSheet = RetrieveSheetoutofRangeName(RangeName)
98                a = a + 1
99                MaxIndex = Ubound(SelRangeList())
100                If a &gt; MaxIndex Then
101                    Redim Preserve SelRangeList(MaxIndex + SBRANGEUBOUND)
102                End If
103                SelRangeList(a) = RangeName
104                If oListSheet.Name = sCurSheetName Then
105                    oRange = RetrieveRangeoutofRangeName(RangeName)
106                    oSelRanges.InsertbyName(&quot;&quot;,oRange)
107                End If
108            Next n
109        End If
110        If a &gt; -1 Then
111            ReDim Preserve SelRangeList(a)
112        Else
113            ReDim SelRangeList()
114        End If
115        oDocument.CurrentController.Select(oSelRanges)
116        EnableStep1DialogControls(True, True, True)
117    End If
118End Sub
119
120
121&apos; Procedure that is called by an event
122Sub RetrieveEnableValue()
123Dim EnableValue as Boolean
124    EnableValue = Not DialogModel.lstSelection.Enabled
125    EnableStep1DialogControls(True, EnableValue, True)
126End Sub
127
128
129Sub EnableStep1DialogControls(bCurrEnabled as Boolean, bFrameEnabled as Boolean, bButtonsEnabled as Boolean)
130Dim bCurrIsSelected as Boolean
131Dim bObjectIsSelected as Boolean
132Dim bConvertWholeDoc as Boolean
133Dim bDoEnableFrame as Boolean
134    bConvertWholeDoc  = DialogModel.chkComplete.State = 1
135    bDoEnableFrame = bFrameEnabled And (NOT bConvertWholeDoc)
136
137    &apos; Controls around the Selection Listbox
138    With DialogModel
139        .lblCurrencies.Enabled = bCurrEnabled
140        .lstCurrencies.Enabled = bCurrEnabled
141        .lstSelection.Enabled = bDoEnableFrame
142        .lblSelection.Enabled = bDoEnableFrame
143        .hlnSelection.Enabled = bDoEnableFrame
144        .optCellTemplates.Enabled = bDoEnableFrame
145        .optSheetRanges.Enabled = bDoEnableFrame
146        .optDocRanges.Enabled = bDoEnableFrame
147        .optSelRange.Enabled = bDoEnableFrame
148    End With
149    &apos; The CheckBox has the Value &apos;1&apos; when the Controls in the Frame are disabled
150    If bButtonsEnabled Then
151        bCurrIsSelected = Ubound(DialogModel.lstCurrencies.SelectedItems()) &lt;&gt; -1
152        &apos; Enable GoOnButton only when Currency is selected
153        DialogModel.cmdGoOn.Enabled =  bCurrIsSelected
154        DialogModel.chkComplete.Enabled = bCurrIsSelected
155        If bDoEnableFrame AND DialogModel.cmdGoOn.Enabled Then
156            &apos; If FrameControls are enabled, check if Listbox is Empty
157            bObjectIsSelected = Ubound(DialogModel.lstSelection.SelectedItems()) &lt;&gt; -1
158            DialogModel.cmdGoOn.Enabled = bObjectIsSelected
159        End If
160    Else
161        DialogModel.cmdGoOn.Enabled = False
162        DialogModel.chkComplete.Enabled = False
163    End If
164End Sub
165
166
167Sub ConvertRangesOrStylesOfDocument()
168Dim i as Integer
169Dim ItemName as String
170Dim SelList() as String
171Dim oSheetRanges as Object
172
173    bDocHasProtectedSheets = CheckSheetProtection(oSheets)
174    If bDocHasProtectedSheets Then
175        bDocHasProtectedSheets = UnprotectSheetsWithPassWord(oSheets, bDoUnProtect)
176        DialogModel.cmdGoOn.Enabled = False
177    End If
178    If Not bDocHasProtectedSheets Then
179        EnableStep1DialogControls(False, False, False)
180        InitializeProgressBar()
181        If DialogModel.optSelRange.State = 1 Then
182            SelectListItem()
183        End If
184        SelList() =  DialogConvert.GetControl(&quot;lstSelection&quot;).SelectedItems()
185        If DialogModel.optCellTemplates.State = 1 Then
186            &apos; Option &apos;Soft&apos; Formatation is selected
187            AssignRangestoStyle(DialogModel.lstSelection.StringItemList(), SelList())
188            ConverttheSoftWay(SelList(), True)
189        ElseIf DialogModel.optSelRange.State = 1 Then
190            oSheetRanges = oPreSelRange.CellFormatRanges.createEnumeration
191            While oSheetRanges.hasMoreElements
192                oRange = oSheetRanges.NextElement
193                If CheckFormatType(oRange) Then
194                    ConvertCellCurrencies(oRange)
195                    SwitchNumberFormat(oRange, oFormats, sEuroSign)
196                End If
197            Wend
198        Else
199            ConverttheHardWay(SelList(), False, True)
200        End If
201        oStatusline.End
202        EnableStep1DialogControls(True, False, True)
203        DialogModel.cmdGoOn.Enabled = True
204        oDocument.CurrentController.Select(oSelRanges)
205    End If
206End Sub
207
208
209Sub ConvertWholeDocument()
210Dim s as Integer
211    DialogModel.cmdGoOn.Enabled = False
212    DialogModel.chkComplete.Enabled = False
213    GoOn = ConvertDocument()
214    EmptyListbox(DialogModel.lstSelection())
215    EnableStep1DialogControls(True, True, True)
216End Sub
217
218
219&apos; Everything previously selected will be deselected
220Sub EmptySelection()
221Dim RangeName as String
222Dim i as Integer
223Dim MaxIndex as Integer
224Dim EmptySelRangeList() as String
225
226    If Not IsNull(oSelRanges) Then
227        If oSelRanges.HasElements Then
228            EmptySelRangeList() = ArrayOutofString(oSelRanges.RangeAddressesasString, &quot;;&quot;, MaxIndex)
229            For i = 0 To MaxIndex
230                oSelRanges.RemovebyName(EmptySelRangeList(i))
231            Next i
232        End If
233        oDocument.CurrentController.Select(oSelRanges)
234    Else
235        oSelRanges = oDocument.createInstance(&quot;com.sun.star.sheet.SheetCellRanges&quot;)
236    End If
237End Sub
238
239
240Function AddSelectedRangeToSelRangesEnum() as Object
241Dim oLocRange as Object
242    osheet = oDocument.CurrentController.GetActiveSheet
243    oSelRanges = oDocument.createInstance(&quot;com.sun.star.sheet.SheetCellRanges&quot;)
244    &apos; Check if a Currency-Range has been selected
245    oLocRange = oDocument.CurrentController.Selection
246    bPreSelected = oLocRange.SupportsService(&quot;com.sun.star.sheet.SheetCellRange&quot;)
247    If bPreSelected Then
248        oSelRanges.InsertbyName(&quot;&quot;,oLocRange)
249        AddSelectedRangeToSelRangesEnum() = oLocRange
250    End If
251End Function
252
253
254Sub GetPreSelectedRange()
255Dim i as Integer
256Dim OldCurrSymbolList(2) as String
257Dim OldCurrIndex as Integer
258Dim OldCurExtension(2) as String
259    oPreSelRange = AddSelectedRangeToSelRangesEnum()
260
261    DialogModel.chkComplete.State = Abs(Not(bPreSelected))
262    If bPreSelected Then
263        DialogModel.optSelRange.State = 1
264        AddRangeToListbox(oPreSelRange)
265    Else
266        DialogModel.optCellTemplates.State  = 1
267        CreateStyleEnumeration()
268    End If
269    EnableStep1DialogControls(True, bPreSelected, True)
270    DialogModel.optSelRange.Enabled = bPreSelected
271End Sub
272
273
274Sub AddRangeToListbox(oLocRange as Object)
275    EmptyListBox(DialogModel.lstSelection)
276    PreName = RetrieveRangeNamefromAddress(oLocRange)
277    AddSingleItemToListbox(DialogModel.lstSelection, Prename)&apos;, 0)
278    SelectListboxItem(DialogModel.lstCurrencies, CurrIndex)
279    TotCellCount = CountRangeCells(oLocRange)
280End Sub
281
282
283Sub CheckRangeSelection(Optional oEvent)
284    EmptySelection()
285    AddRangeToListbox(oPreSelRange)
286    oPreSelRange = AddSelectedRangeToSelRangesEnum()
287End Sub
288
289
290&apos; Checks if a Field (LocField) is already defined in an Array
291&apos; Returns &apos;True&apos; or &apos;False&apos;
292Function FieldinList(LocList(), MaxIndex as integer, ByVal LocField ) As Boolean
293Dim i as integer
294    LocField = Ucase(LocField)
295    For i = Lbound(LocList()) to MaxIndex
296        If Ucase(LocList(i)) = LocField  then
297            FieldInList = True
298            Exit Function
299        End if
300    Next
301    FieldInList = False
302End Function
303
304
305Function CheckLocale(oLocale) as Boolean
306Dim i as Integer
307Dim LocCountry as String
308Dim LocLanguage as String
309    LocCountry = oLocale.Country
310    LocLanguage = oLocale.Language
311    For i = 0 To 1
312        If LocLanguage = LangIDValue(CurrIndex,i,0) AND LocCountry = LangIDValue(CurrIndex,i,1) Then
313            CheckLocale = True
314            Exit Function
315        End If
316    Next i
317    CheckLocale = False
318End Function
319
320
321Sub SetOptionValuestoNull()
322    With DialogModel
323        .optCellTemplates.State = 0
324        .optSheetRanges.State = 0
325        .optDocRanges.State = 0
326        .optSelRange.State = 0
327    End With
328End Sub
329
330
331
332Sub SetStatusLineText(sStsREPROTECT as String)
333    If Not IsNull(oStatusLine) Then
334        oStatusline.SetText(sStsREPROTECT)
335    End If
336End Sub
337</script:module>
338