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="Currency" script:language="StarBasic">REM ***** BASIC ***** 24Option Explicit 25 26Dim bDoUnLoad as Boolean 27 28 29Sub Startup() 30Dim i as Integer 31Dim a as Integer 32Dim ListString as String 33Dim MarketListBoxControl as Object 34 Initialize(False) 35 MarketListBoxControl = DlgStartUp.GetControl("lstMarkets") 36 a = 0 37 For i = 0 To Ubound(sMarket(),1) 38 ListString = sMarket(i,0) 39 If sMarket(i,0) <> "" Then 40 If sMarket(i,3) = "" Then 41 ListString = ListString & " (" & sNoInternetUpdate & ")" 42 Else 43 ListString = ListString & " (" & sMarketplace & " " & sMarket(i,2) & ")" 44 End If 45 MarketListBoxControl.AddItem(ListString, a) 46 a = a + 1 47 End If 48 Next i 49 MarketListBoxControl.SelectItemPos(GlobListIndex, True) 50 DlgStartUp.Title = sDepotCurrency 51 DlgStartUp.Model.cmdGoOn.DefaultButton = True 52 DlgStartUp.GetControl("lstMarkets").SetFocus() 53 DlgStartUp.Execute() 54 DlgStartUp.Dispose() 55End Sub 56 57 58Sub EnableGoOnButton() 59 StartUpModel.cmdGoOn.Enabled = True 60 StartUpModel.cmdGoOn.DefaultButton = True 61End Sub 62 63 64Sub CloseStartUpDialog() 65 DlgStartUp.EndExecute() 66' oDocument.Dispose() 67End Sub 68 69 70Sub DisposeDocument() 71 If bDoUnload Then 72 oDocument.Dispose() 73 End If 74End Sub 75 76 77Sub ChooseMarket(Optional aEvent) 78Dim Index as Integer 79Dim bIsDocLanguage as Boolean 80Dim bIsDocCountry as Boolean 81 oInternetModel = GetControlModel(oDocument.Sheets(0), "CmdInternet") 82 If Not IsMissing(aEvent) Then 83 Index = StartupModel.lstMarkets.SelectedItems(0) 84 oInternetModel.Tag = Index 85 Else 86 Index = oInternetModel.Tag 87 End If 88 oMarketModel = GetControlModel(oDocument.Sheets(0), "CmdHistory") 89 sCurCurrency = sMarket(Index,1) 90 If Index = 0 Then 91 HistoryChartSource = sMarket(Index,4) 92 End If 93 sCurStockIDLabel = sMarket(Index,5) 94 sCurExtension = sMarket(Index,8) 95 iValueCol = Val(sMarket(Index,10) 96 If Instr(sCurExtension,";") <> 0 Then 97 ' Take the german extension as the stock place is Frankfurt 98 sCurExtension = "407" 99 End If 100 sCurChartSource = sMarket(Index,3) 101 bIsDocLanguage = Instr(1, sMarket(Index,6), sDocLanguage, SBBINARY) <> 0 102 bIsDocCountry = Instr(1, sMarket(Index,7), sDocCountry, SBBINARY) <> 0 OR SDocCountry = "" 103 sCurSeparator = sMarket(Index,9) 104 TransactModel.txtRate.CurrencySymbol = sCurCurrency 105 TransactModel.txtFix.CurrencySymbol = sCurCurrency 106 TransactModel.txtMinimum.CurrencySymbol = sCurCurrency 107 bEnableMarket = Index = 0 108 bEnableInternet = sCurChartSource <> "" 109 oMarketModel.Enabled = bEnableMarket 110 oInternetModel.Enabled = bEnableInternet 111 If Not IsMissing(aEvent) Then 112 ConvertStylesCurrencies() 113 bDoUnload = False 114 DlgStartUp.EndExecute() 115 End If 116End Sub 117 118 119Sub ConvertStylesCurrencies() 120Dim m as integer 121Dim aStyleFormat as Object 122Dim StyleName as String 123Dim bAddToList as Boolean 124Dim oStyle as Object 125Dim oStyles as Object 126 UnprotectSheets(oSheets) 127 oFirstSheet.GetCellByPosition(SBCOLUMNID1, SBROWHEADER1).SetString(sCurStockIDLabel) 128 oStyles = oDocument.StyleFamilies.GetbyIndex(0) 129 For m = 0 To oStyles.count-1 130 oStyle = oStyles.GetbyIndex(m) 131 StyleName = oStyle.Name 132 bAddToList = CheckFormatType(oStyle) 133 If bAddToList Then 134 SwitchNumberFormat(ostyle, oDocFormats, sCurCurrency, sCurExtension) 135 End If 136 Next m 137 ProtectSheets(oSheets) 138End Sub 139 140 141Sub SwitchNumberFormat(oObject as Object, oFormats as object, sNewSymbol as String, sNewExtension as String) 142Dim nFormatLanguage as Integer 143Dim nFormatDecimals as Integer 144Dim nFormatLeading as Integer 145Dim bFormatLeading as Integer 146Dim bFormatNegRed as Integer 147Dim bFormatThousands as Integer 148Dim aNewStr as String 149Dim iNumberFormat as Long 150Dim sSimpleStr as String 151Dim nSimpleKey as Long 152Dim aFormat() 153Dim oLocale as New com.sun.star.lang.Locale 154 ' Numberformat with the new Symbol as Base for new Format 155 sSimpleStr = "0 [$" & sNewSymbol & "-" & sNewExtension & "]" 156 nSimpleKey = Numberformat(oFormats, sSimpleStr, oDocLocale) 157 On Local Error Resume Next 158 iNumberFormat = oObject.NumberFormat 159 If Err <> 0 Then 160 Msgbox "Error Reading the Number Format" 161 Resume CLERROR 162 End If 163 164 On Local Error GoTo NOKEY 165 aFormat() = oFormats.getByKey(iNumberFormat) 166 On Local Error GoTo 0 167 ' set new currency format with according settings 168 nFormatDecimals = aFormat.Decimals 169 nFormatLeading = aFormat.LeadingZeros 170 bFormatNegRed = aFormat.NegativeRed 171 bFormatThousands = aFormat.ThousandsSeparator 172 oLocale = aFormat.Locale 173 aNewStr = oFormats.generateFormat(nSimpleKey, oLocale, bFormatThousands, bFormatNegRed, nFormatDecimals, nFormatLeading) 174 oObject.NumberFormat = Numberformat(oFormats, aNewStr, oLocale) 175 NOKEY: 176 If Err <> 0 Then 177 Resume CLERROR 178 End If 179 CLERROR: 180End Sub 181 182 183Function Numberformat( oFormats as Object, aFormatStr as String, oLocale as Variant ) 184Dim nRetkey 185 nRetKey = oFormats.queryKey(aFormatStr, oLocale, True) 186 If nRetKey = -1 Then 187 nRetKey = oFormats.addNew( aFormatStr, oLocale ) 188 If nRetKey = -1 Then nRetKey = 0 189 End If 190 Numberformat = nRetKey 191End Function 192 193 194Function CheckFormatType(oStyle as Object) 195Dim oFormatofObject as Object 196 oFormatofObject = oDocFormats.getByKey(oStyle.NumberFormat) 197 CheckFormatType = INT(oFormatOfObject.Type) AND com.sun.star.util.NumberFormat.CURRENCY 198End Function</script:module> 199