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