xref: /trunk/main/wizards/source/euro/Common.xba (revision cdf0e10c)
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
3<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Common" script:language="StarBasic"> REM  *****  BASIC  *****
4Public DialogModel as Object
5Public DialogConvert as Object
6Public DialogPassword as Object
7Public PasswordModel as Object
8
9Sub	RetrieveDocumentObjects()
10	CurMimeType = Tools.GetDocumentType(oDocument)
11	If Instr(1, CurMimeType, &quot;calc&quot;) &lt;&gt; 0 Then
12	    oSheets = oDocument.Sheets
13		oSheet = oDocument.Sheets.GetbyIndex(0)
14		oAddressRanges = oDocument.createInstance(&quot;com.sun.star.sheet.SheetCellRanges&quot;)
15	End If
16    &apos; Retrieve the indices for the cellformatations
17    oFormats = oDocument.NumberFormats
18End Sub
19
20
21Sub CancelTask()
22&apos;	If Not DocDisposed Then
23&apos;		ReprotectSheets()
24&apos;	End If
25	If DialogModel.Step = 3 And (Not bCancelTask) Then
26		If Msgbox(sMsgCancelConversion, 36, sMsgCancelTitle) = 6 Then
27			bCancelTask = True
28			DialogConvert.EndExecute
29		Else
30			bCancelTask = False
31		End If
32	Else
33		DialogConvert.EndExecute()
34	End If
35End Sub
36
37
38Function ConvertDocument()
39	GoOn = True
40&apos;	DocDisposed = True
41	InitializeProgressbar()
42	If Instr(1, CurMimeType, &quot;calc&quot;) &lt;&gt; 0 Then
43		bDocHasProtectedSheets = CheckSheetProtection(oSheets)
44		If bDocHasProtectedSheets Then
45			bDocHasProtectedSheets = UnprotectSheetsWithPassword(oSheets, bDoUnProtect)
46		End If
47		If Not bDocHasProtectedSheets Then
48			If Not bRangeListDefined Then
49				TotCellCount = 0
50				CreateRangeEnumeration(True)
51			Else
52				IncreaseStatusvalue(SBRelGet/3)
53			End If
54			RangeIndex = Ubound(RangeList())
55			If RangeIndex &gt; -1 Then
56				ConvertThehardWay(RangeList(), True, False)
57				MakeStyleEnumeration(True)
58				oDocument.calculateAll()
59			End If
60			ReprotectSheets()
61			bRangeListDefined = False
62		End If
63	Else
64		DialogModel.ProgressBar.ProgressValue = 10  &apos; oStatusline.SetValue(10)
65		ConvertTextFields()
66		DialogModel.ProgressBar.ProgressValue = 80  &apos; oStatusline.SetValue(80)
67		ConvertWriterTables()
68	End If
69	EndStatusLine()
70	On Local Error Goto 0
71End Function
72
73
74Sub SwitchNumberFormat(oObject as Object, oFormats as object)
75Dim nFormatLanguage as Integer
76Dim nFormatDecimals as Integer
77Dim nFormatLeading as Integer
78Dim bFormatLeading as Integer
79Dim bFormatNegRed as Integer
80Dim bFormatThousands as Integer
81Dim i as Integer
82Dim aNewStr as String
83Dim iNumberFormat as Long
84Dim AddToList as Boolean
85Dim sOldCurrSymbol as String
86	On Local Error Resume Next
87	iNumberFormat = oObject.NumberFormat
88	On Local Error GoTo NOKEY
89	aFormat() = oFormats.getByKey(iNumberFormat)
90	On Local Error GoTo 0
91	sOldCurrSymbol = aFormat.CurrencySymbol
92	If sOldCurrSymbol = CurrValue(CurrIndex,5) Then
93		aSimpleStr = &quot;0 [$EUR]&quot;
94	Else
95		aSimpleStr = &quot;0 [$&quot; &amp; sEuroSign &amp; aFormat.CurrencyExtension &amp; &quot;]&quot;
96	End If
97
98	nSimpleKey = Numberformat(oFormats, aSimpleStr, oLocale)
99	&apos; set new Currency format with according settings
100	nFormatDecimals = 2
101	nFormatLeading = aFormat.LeadingZeros
102	bFormatNegRed = aFormat.NegativeRed
103	bFormatThousands = aFormat.ThousandsSeparator
104	aNewStr = oFormats.generateFormat( nSimpleKey, aFormat.Locale, bFormatThousands, bFormatNegRed, nFormatDecimals, nFormatLeading)
105	oObject.NumberFormat = Numberformat(oFormats, aNewStr, aFormat.Locale)
106	NOKEY:
107	If Err &lt;&gt; 0 Then
108		Resume CLERROR
109	End If
110	CLERROR:
111End Sub
112
113
114Function Numberformat( oFormats as Object, aFormatStr as String, oLocale as Object)
115Dim nRetkey
116Dim l as String
117Dim c as String
118	nRetKey = oFormats.queryKey( aFormatStr, oLocale, True )
119	If nRetKey = -1 Then
120		l = oLocale.Language
121		c = oLocale.Country
122		nRetKey = oFormats.addNew( aFormatStr, oLocale )
123		If nRetKey = -1 Then nRetKey = 0
124	End If
125	Numberformat = nRetKey
126End Function
127
128
129Function CheckFormatType( FormatObject as object)
130Dim i as Integer
131Dim LocCurrIndex as Integer
132Dim nFormatFormatString as String
133Dim FormatLangID as Integer
134Dim sFormatCurrExt as String
135Dim oFormatofObject() as Object
136
137	&apos; Retrieve the Format of the Object
138	On Local Error GoTo NOKEY
139	oFormatofObject = oFormats.getByKey(FormatObject.NumberFormat)
140	On Local Error GoTo 0
141  	If NOT INT(oFormatofObject.Type) AND com.sun.star.util.NumberFormat.CURRENCY Then
142		CheckFormatType = False
143		Exit Function
144	End If
145	If FieldinArray(CurrSymbolList(),2,oFormatofObject.CurrencySymbol) Then
146		&apos; If the Currencysymbol of the object ist the one needed, then check the Currency extension
147		sFormatCurrExt = oFormatofObject.CurrencyExtension
148
149		If FieldInList(CurExtension(),2,sFormatCurrExt) Then
150			&apos; The Currency - extension also fits
151			CheckFormatType = True
152		Else
153			&apos; The Currency - symbol is Euro-conforming (like &apos;DEM&apos;), so there is no Currency-Extension
154			CheckFormatType = oFormatofObject.CurrencySymbol = CurrsymbolList(2)
155		End If
156	Else
157		&apos; The Currency Symbol of the object is not the desired one
158		If oFormatofObject.CurrencySymbol = &quot;&quot; Then
159			&apos; Format is &quot;automatic&quot;
160			CheckFormatType = CheckLocale(oFormatofObject.Locale)
161		Else
162			CheckFormatType = False
163		End If
164	End If
165
166	NOKEY:
167	If Err &lt;&gt; 0 Then
168		CheckFormatType = False
169		Resume CLERROR
170	End If
171	CLERROR:
172End Function
173
174
175Sub StartConversion()
176	GoOn = True
177	Select Case DialogModel.Step
178		Case 1
179			If DialogModel.chkComplete.State = 1 Then
180				ConvertWholeDocument()
181			Else
182				ConvertRangesorStylesofDocument()
183			End If
184		Case 2
185			bCancelTask = False
186			If InitializeThirdStep() Then
187				ConvertDocuments()
188				bCancelTask = True
189			End If
190		Case 3
191			DialogConvert.EndExecute()
192	End Select
193End Sub
194
195
196Sub IncreaseStatusValue(AddStatusValue as Integer)
197	StatusValue = Int(StatusValue + AddStatusValue)
198	If DialogModel.Step = 3 Then
199		DialogModel.ProgressBar.ProgressValue = StatusValue
200	Else
201		oStatusline.SetValue(StatusValue)
202	End If
203End Sub
204
205
206Sub SelectCurrency()
207Dim AddtoList as Boolean
208Dim NullList()
209Dim OldCurrIndex as Integer
210	bRangeListDefined = False
211	OldCurrIndex = CurrIndex
212	CurrIndex = DialogModel.lstCurrencies.SelectedItems(0)
213	If OldCurrIndex &lt;&gt; CurrIndex Then
214		InitializeCurrencyValues(CurrIndex)
215		CurExtension(0) = LangIDValue(CurrIndex,0,2)
216		CurExtension(1) = LangIDValue(CurrIndex,1,2)
217		CurExtension(2) = LangIDValue(CurrIndex,2,2)
218		If DialogModel.Step = 1 Then
219			EnableStep1DialogControls(False,False, False)
220			If DialogModel.optCellTemplates.State = 1 Then
221				EnableStep1DialogControls(False, False, False)
222				CreateStyleEnumeration()
223			ElseIf ((DialogModel.optSheetRanges.State = 1) OR (DialogModel.optDocRanges.State = 1)) AND (DialogModel.Step = 1) Then
224				CreateRangeEnumeration(False)
225				If Ubound(RangeList()) = -1 Then
226					DialogModel.lstSelection.StringItemList() = NullList()
227				End If
228			ElseIf DialogModel.optSelRange.State= 1 Then
229				&apos;Preselected Range
230			End If
231			EnableStep1DialogControls(True, True, True)
232		ElseIf DialogModel.Step = 2 Then
233			EnableStep2DialogControls(True)
234		End If
235	End If
236End Sub
237
238
239Sub FillUpCurrencyListbox()
240Dim i as Integer
241Dim MaxIndex as Integer
242	MaxIndex = Ubound(CurrValue(),1)
243	Dim LocList(MaxIndex) as String
244	For i = 0 To MaxIndex
245		LocList(i) = CurrValue(i,0)
246	Next i
247	DialogModel.lstCurrencies.StringItemList() = LocList()
248	If CurrIndex &gt; -1 Then
249		SelectListboxItem(DialogModel.lstCurrencies, CurrIndex)
250	End If
251End Sub
252
253
254Sub InitializeProgressbar()
255	CurCellCount = 0
256	If Not IsNull(oStatusLine) Then
257		oStatusline.Start(sStsPROGRESS, 100)
258	Else
259		DialogModel.ProgressBar.ProgressValue = 0
260	End If
261	StatusValue = 0
262End Sub
263
264
265Sub	EndStatusLine()
266	If Not IsNull(oStatusLine) Then
267		oStatusline.End
268	Else
269		DialogModel.ProgressBar.ProgressValue = 100
270	End If
271End Sub
272</script:module>