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