xref: /aoo41x/main/wizards/source/euro/Hard.xba (revision 3e02b54d)
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="Hard" script:language="StarBasic">REM  *****  BASIC  *****
24cdf0e10cSrcweirOption Explicit
25cdf0e10cSrcweir
26cdf0e10cSrcweir
27cdf0e10cSrcweirSub CreateRangeList()
28cdf0e10cSrcweirDim MaxIndex as Integer
29cdf0e10cSrcweir	MaxIndex = -1
30cdf0e10cSrcweir	EnableStep1DialogControls(False, False, False)
31cdf0e10cSrcweir	EmptySelection()
32cdf0e10cSrcweir	DialogModel.lblSelection.Label = sCURRRANGES
33cdf0e10cSrcweir	EmptyListbox(DialogModel.lstSelection)
34cdf0e10cSrcweir	oDocument.CurrentController.Select(oSelRanges)
35cdf0e10cSrcweir	If (DialogModel.optSheetRanges.State = 1) AND (DialogModel.chkComplete.State &lt;&gt; 1) Then
36cdf0e10cSrcweir		&apos; Conversion on a sheet?
37cdf0e10cSrcweir		SetStatusLineText(sStsRELRANGES)
38cdf0e10cSrcweir		osheet = oDocument.CurrentController.GetActiveSheet
39cdf0e10cSrcweir		oRanges = osheet.CellFormatRanges.createEnumeration()
40cdf0e10cSrcweir		MaxIndex = AddSheetRanges(oRanges, MaxIndex, oSheet, False)
41cdf0e10cSrcweir		If MaxIndex &gt; -1 Then
42cdf0e10cSrcweir			ReDim Preserve RangeList(MaxIndex)
43cdf0e10cSrcweir		End If
44cdf0e10cSrcweir	Else
45cdf0e10cSrcweir		CreateRangeEnumeration(False)
46cdf0e10cSrcweir		bRangeListDefined = True
47cdf0e10cSrcweir	End If
48cdf0e10cSrcweir	EnableStep1DialogControls(True, True, True)
49cdf0e10cSrcweir	SetStatusLineText(&quot;&quot;)
50cdf0e10cSrcweirEnd Sub
51cdf0e10cSrcweir
52cdf0e10cSrcweir
53cdf0e10cSrcweirSub CreateRangeEnumeration(bAutopilot as Boolean)
54cdf0e10cSrcweirDim i as Integer
55cdf0e10cSrcweirDim MaxIndex as integer
56cdf0e10cSrcweirDim sStatustext as String
57cdf0e10cSrcweir	MaxIndex = -1
58cdf0e10cSrcweir	If Not bRangeListDefined Then
59cdf0e10cSrcweir		&apos; Cellranges are not yet defined
60cdf0e10cSrcweir		oSheets = oDocument.Sheets
61cdf0e10cSrcweir		For i = 0 To oSheets.Count-1
62cdf0e10cSrcweir			oSheet = oSheets.GetbyIndex(i)
63cdf0e10cSrcweir			If bAutopilot Then
64cdf0e10cSrcweir				IncreaseStatusValue(SBRELGET/osheets.Count)
65cdf0e10cSrcweir			Else
66cdf0e10cSrcweir				sStatustext = ReplaceString(sStsRELSHEETRANGES,Str(i+1),&quot;%1Number%1&quot;)
67cdf0e10cSrcweir				sStatustext = ReplaceString(sStatusText,oSheets.Count,&quot;%2TotPageCount%2&quot;)
68cdf0e10cSrcweir				SetStatusLineText(sStatusText)
69cdf0e10cSrcweir			End If
70cdf0e10cSrcweir			oRanges = osheet.CellFormatRanges.createEnumeration
71cdf0e10cSrcweir			MaxIndex = AddSheetRanges(oRanges, MaxIndex, oSheet, bAutopilot)
72cdf0e10cSrcweir		Next i
73cdf0e10cSrcweir	Else
74cdf0e10cSrcweir		If Not bAutoPilot Then
75cdf0e10cSrcweir			SetStatusLineText(sStsRELRANGES)
76cdf0e10cSrcweir			&apos; cellranges already defined
77cdf0e10cSrcweir			For i = 0 To Ubound(RangeList())
78cdf0e10cSrcweir				If RangeList(i) &lt;&gt; &quot;&quot; Then
79cdf0e10cSrcweir					AddSingleItemToListBox(DialogModel.lstSelection, RangeList(i))
80cdf0e10cSrcweir				End If
81cdf0e10cSrcweir			Next
82cdf0e10cSrcweir		End If
83cdf0e10cSrcweir	End If
84cdf0e10cSrcweir	If MaxIndex &gt; -1 Then
85cdf0e10cSrcweir		ReDim Preserve RangeList(MaxIndex)
86cdf0e10cSrcweir	Else
87cdf0e10cSrcweir		ReDim RangeList()
88cdf0e10cSrcweir	End If
89cdf0e10cSrcweir	Rangeindex = MaxIndex
90cdf0e10cSrcweirEnd Sub
91cdf0e10cSrcweir
92cdf0e10cSrcweir
93cdf0e10cSrcweirFunction AddSheetRanges(oRanges as Object, r as Integer, oSheet as Object, bAutopilot)
94cdf0e10cSrcweirDim RangeName as String
95cdf0e10cSrcweirDim AddtoList as Boolean
96cdf0e10cSrcweirDim iCurStep as Integer
97cdf0e10cSrcweirDim MaxIndex as Integer
98cdf0e10cSrcweir	iCurStep = DialogModel.Step
99cdf0e10cSrcweir	While oRanges.hasMoreElements
100cdf0e10cSrcweir		oRange = oRanges.NextElement
101cdf0e10cSrcweir		AddToList = CheckFormatType(oRange)
102cdf0e10cSrcweir		If AddToList Then
103cdf0e10cSrcweir			RangeName = RetrieveRangeNamefromAddress(oRange)
104cdf0e10cSrcweir			TotCellCount = TotCellCount + CountRangeCells(oRange)
105cdf0e10cSrcweir			If Not bAutoPilot Then
106cdf0e10cSrcweir				AddSingleItemToListbox(DialogModel.lstSelection, RangeName)
107cdf0e10cSrcweir			End If
108cdf0e10cSrcweir			&apos; The Ranges are only passed to an Array when the whole Document is the basis
109cdf0e10cSrcweir			&apos; Redimension the RangeList Array if necessary
110cdf0e10cSrcweir			MaxIndex = Ubound(RangeList())
111cdf0e10cSrcweir			r = r + 1
112cdf0e10cSrcweir			If r &gt; MaxIndex Then
113cdf0e10cSrcweir				MaxIndex = MaxIndex + SBRANGEUBOUND
114cdf0e10cSrcweir				ReDim Preserve RangeList(MaxIndex)
115cdf0e10cSrcweir			End If
116cdf0e10cSrcweir			RangeList(r) = RangeName
117cdf0e10cSrcweir		End If
118cdf0e10cSrcweir	Wend
119cdf0e10cSrcweir	AddSheetRanges = r
120cdf0e10cSrcweirEnd Function
121cdf0e10cSrcweir
122cdf0e10cSrcweir
123cdf0e10cSrcweir&apos; adds a section to the collection
124cdf0e10cSrcweirSub SelectRange()
125cdf0e10cSrcweirDim i as Integer
126cdf0e10cSrcweirDim RangeName as String
127cdf0e10cSrcweirDim SelItem as String
128cdf0e10cSrcweirDim CurRange as String
129cdf0e10cSrcweirDim SheetRangeName as String
130cdf0e10cSrcweirDim DescriptionList() as String
131cdf0e10cSrcweirDim MaxRangeIndex as Integer
132cdf0e10cSrcweirDim StatusValue as Integer
133cdf0e10cSrcweir	StatusValue = 0
134cdf0e10cSrcweir	MaxRangeIndex = Ubound(SelRangeList())
135cdf0e10cSrcweir	CurSheetName = oSheet.Name
136cdf0e10cSrcweir	For i = 0 To MaxRangeIndex
137cdf0e10cSrcweir		SelItem = SelRangeList(i)
138cdf0e10cSrcweir		&apos; Is the Range already included in the collection?
139cdf0e10cSrcweir		oRange = RetrieveRangeoutOfRangename(SelItem)
140cdf0e10cSrcweir		TotCellCount = TotCellCount + CountRangeCells(oRange)
141cdf0e10cSrcweir		DescriptionList() = ArrayOutofString(SelItem,&quot;.&quot;,1)
142cdf0e10cSrcweir		SheetRangeName = DeleteStr(DescriptionList(0),&quot;&apos;&quot;)
143cdf0e10cSrcweir		If SheetRangeName = CurSheetName Then
144cdf0e10cSrcweir			oSelRanges.InsertbyName(&quot;&quot;,oRange)
145cdf0e10cSrcweir		End If
146cdf0e10cSrcweir		IncreaseStatusValue(SBRELGET/MaxRangeIndex)
147cdf0e10cSrcweir	Next i
148cdf0e10cSrcweirEnd Sub
149cdf0e10cSrcweir
150cdf0e10cSrcweir
151cdf0e10cSrcweirSub ConvertThehardWay(ListboxList(), SwitchFormat as Boolean, bRemove as Boolean)
152cdf0e10cSrcweirDim i as Integer
153cdf0e10cSrcweirDim AddCells as Long
154cdf0e10cSrcweirDim OldStatusValue as Single
155cdf0e10cSrcweirDim RangeName as String
156cdf0e10cSrcweirDim LastIndex as Integer
157cdf0e10cSrcweirDim oSelListbox as Object
158cdf0e10cSrcweir
159cdf0e10cSrcweir	oSelListbox = DialogConvert.GetControl(&quot;lstSelection&quot;)
160cdf0e10cSrcweir	Lastindex = Ubound(ListboxList())
161cdf0e10cSrcweir	If TotCellCount &gt; 0 Then
162cdf0e10cSrcweir		OldStatusValue = StatusValue
163cdf0e10cSrcweir		&apos; hard format
164cdf0e10cSrcweir		For i = 0 To LastIndex
165cdf0e10cSrcweir			RangeName = ListboxList(i)
166cdf0e10cSrcweir			oRange = RetrieveRangeoutofRangeName(RangeName)
167cdf0e10cSrcweir			ConvertCellCurrencies(oRange)
168cdf0e10cSrcweir			If bRemove Then
169cdf0e10cSrcweir				If oSelRanges.HasbyName(RangeName) Then
170cdf0e10cSrcweir					oSelRanges.RemovebyName(RangeName)
171cdf0e10cSrcweir					oDocument.CurrentController.Select(oSelRanges)
172cdf0e10cSrcweir				End If
173cdf0e10cSrcweir			End If
174cdf0e10cSrcweir			If SwitchFormat Then
175cdf0e10cSrcweir				If oRange.getPropertyState(&quot;NumberFormat&quot;) &lt;&gt; 1 Then
176cdf0e10cSrcweir					&apos; Range is hard formatted
177cdf0e10cSrcweir					SwitchNumberFormat(oRange, oFormats, sEuroSign)
178cdf0e10cSrcweir				End If
179cdf0e10cSrcweir			Else
180cdf0e10cSrcweir				SwitchNumberFormat(oRange, oFormats, sEuroSign)
181cdf0e10cSrcweir			End If
182cdf0e10cSrcweir			AddCells = CountRangeCells(oRange)
183cdf0e10cSrcweir			CurCellCount = AddCells
184cdf0e10cSrcweir			IncreaseStatusValue((CurCellCount/TotCellCount)*(100-OldStatusValue))
185cdf0e10cSrcweir			If bRemove Then
186cdf0e10cSrcweir				RemoveListBoxItemByName(oSelListbox.Model,Rangename)
187cdf0e10cSrcweir			End If
188cdf0e10cSrcweir		Next
189cdf0e10cSrcweir	End If
190cdf0e10cSrcweirEnd Sub
191cdf0e10cSrcweir
192cdf0e10cSrcweir
193cdf0e10cSrcweirSub ConvertCellCurrencies(oRange as Object)
194cdf0e10cSrcweirDim oValues as Object
195cdf0e10cSrcweirDim oCells as Object
196cdf0e10cSrcweirDim oCell as Object
197cdf0e10cSrcweir  	oValues = oRange.queryContentCells(com.sun.star.sheet.CellFlags.VALUE)
198cdf0e10cSrcweir	If (oValues.Count &gt; 0) Then
199cdf0e10cSrcweir		oCells = oValues.Cells.createEnumeration
200cdf0e10cSrcweir		While oCells.hasMoreElements
201cdf0e10cSrcweir			oCell = oCells.nextElement
202cdf0e10cSrcweir			ModifyObjectValuewithCurrFactor(oCell)
203cdf0e10cSrcweir		Wend
204cdf0e10cSrcweir	End If
205cdf0e10cSrcweirEnd Sub
206cdf0e10cSrcweir
207cdf0e10cSrcweir
208cdf0e10cSrcweirSub ModifyObjectValuewithCurrFactor(oDocObject as Object)
209cdf0e10cSrcweirDim oDocObjectValue as double
210cdf0e10cSrcweir	oDocObjectValue = oDocObject.Value
211cdf0e10cSrcweir	oDocObject.Value = Round(oDocObjectValue/CurrFactor, 2)
212cdf0e10cSrcweirEnd Sub
213cdf0e10cSrcweir
214cdf0e10cSrcweir
215cdf0e10cSrcweirFunction CheckIfRangeisCurrency(FormatObject as Object)
216cdf0e10cSrcweirDim oFormatofObject() as Object
217cdf0e10cSrcweir	&apos; Retrieve the Format of the Object
218cdf0e10cSrcweir	On Local Error GoTo NOKEY
219cdf0e10cSrcweir	oFormatofObject() = oFormats.getByKey(FormatObject.NumberFormat)
220cdf0e10cSrcweir	On Local Error GoTo 0
221cdf0e10cSrcweir	CheckIfRangeIsCurrency = INT(oFormatofObject.Type) AND com.sun.star.util.NumberFormat.CURRENCY
222cdf0e10cSrcweir	Exit Function
223cdf0e10cSrcweirNOKEY:
224cdf0e10cSrcweir	CheckIfRangeisCurrency = False
225cdf0e10cSrcweir	Resume CLERROR
226cdf0e10cSrcweir	CLERROR:
227cdf0e10cSrcweirEnd Function
228cdf0e10cSrcweir
229cdf0e10cSrcweir
230cdf0e10cSrcweirFunction CountColumnsForRow(IndexArray() as String, Row as Integer)
231cdf0e10cSrcweirDim i as Integer
232cdf0e10cSrcweirDim NoNulls as Boolean
233cdf0e10cSrcweir	For i = 1 To Ubound(IndexArray,2)
234cdf0e10cSrcweir		If IndexArray(Row,i)= &quot;&quot; Then
235cdf0e10cSrcweir			NoNulls = False
236cdf0e10cSrcweir			Exit For
237cdf0e10cSrcweir		End If
238cdf0e10cSrcweir	Next
239cdf0e10cSrcweir	CountColumnsForRow = i
240cdf0e10cSrcweirEnd Function
241cdf0e10cSrcweir
242cdf0e10cSrcweir
243cdf0e10cSrcweirFunction CountRangeCells(oRange as Object) As Long
244cdf0e10cSrcweirDim oRangeAddress as Object
245cdf0e10cSrcweirDim LocCellCount as Long
246cdf0e10cSrcweir	oRangeAddress = oRange.RangeAddress
247cdf0e10cSrcweir	LocCellCount = (oRangeAddress.EndColumn - oRangeAddress.StartColumn + 1) * (oRangeAddress.EndRow - oRangeAddress.StartRow + 1)
248cdf0e10cSrcweir	CountRangeCells = LocCellCount
249*3e02b54dSAndrew RistEnd Function</script:module>
250